Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- int main (void)
- {
- board_init();
- init();
- sei();//enable interrupt
- while (1)
- {
- }
- }
- void init()
- {
- USARTInit(0,true);
- }
- //UART receiver interrupt routine
- ISR (USART_RXC_vect)
- {
- char status, ch;
- status = UCSRA;
- ch = UDR;
- //Check if error
- if((status & (_BV(FE) | _BV(DOR))) != 0)
- return;
- //send back to PC
- uart_send_char(ch);
- }
- void USARTInit(uint16_t ubrr_value, bool first)
- {
- //Set Baud rate
- UBRRL = ubrr_value;
- UBRRH = (ubrr_value>>8);
- /*Set Frame Format
- >> Asynchronous mode
- >> No Parity
- >> 1 StopBit
- >> char size 8
- */
- if (first)
- {
- UCSRA = (1<<U2X);//double usart transmission speed
- }
- UCSRC=(1<<URSEL)|(3<<UCSZ0);
- //Enable The receiver and transmitter
- UCSRB=(1<<RXEN)|(1<<TXEN);
- }
- void uart_send_char(unsigned char ch)
- {
- UDR = ch;
- //Wait for empty transfer buffer
- while(!(UCSRA & _BV(UDRE)));
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement