AT90CAN128-16AE ATMEL Corporation, AT90CAN128-16AE Datasheet - Page 182

no-image

AT90CAN128-16AE

Manufacturer Part Number
AT90CAN128-16AE
Description
8-bit Avr Microcontroller With 128K Bytes of Isp Flash And CAN Controller.flash (Kbytes) 128 Vcc (V) 2.7-5.5 EEPROM (Kbytes) 4 SRAM (bytes) 4K CAN (mess. Obj.) 15
Manufacturer
ATMEL Corporation
Datasheet
182
AT90CAN128
The following code example shows a simple USART0 receive function that handles both
nine bit characters and the status bits.
Note:
The receive function example reads all the I/O Registers into the Register File before
any computation is done. This gives an optimal receive buffer utilization since the buffer
location read will be free to accept new data as early as possible.
Assembly Code Example
C Code Example
USART0_Receive:
USART0_ReceiveNoError:
unsigned int USART0_Receive( void )
{
}
; Wait for data to be received
lds
sbrs r18, RXC0
rjmp USART0_Receive
; Get status and 9th bit, then data from buffer
lds
lds
; If error, return -1
andi r18, (1<<FE0) | (1<<DOR0) | (1<<UPE0)
breq USART0_ReceiveNoError
ldi
ldi
; Filter the 9th bit, then return
lsr
andi r17, 0x01
ret
unsigned char status, resh, resl;
/* Wait for data to be received */
while ( ! (UCSR0A & (1<<RXC0)))
/* Get status and 9th bit, then data */
/* from buffer */
status = UCSR0A;
resh = UCSR0B;
resl = UDR0;
/* If error, return -1 */
if ( status & (1<<FE0)|(1<<DOR0)|(1<<UPE0) )
/* Filter the 9th bit, then return */
resh = (resh >> 1) & 0x01;
return ((resh << 8) | resl);
1. The example code assumes that the part specific header file is included.
return -1;
r18, UCSR0A
r17, UCSR0B
r16, UDR0
r17, HIGH(-1)
r16, LOW(-1)
r17
;
(1)
(1)
4250C–CAN–03/04

Related parts for AT90CAN128-16AE