USART-Loopback
/*
* USART-Loopback
* Einfacher Code, der den UART initialisiert und die
* empfangen Bytes wieder zuruecksendet (Interruptbasiert)
* Als Baudrate wird 9600Bd eingestellt
* https://www.eHaJo.de
* (C) Hannes Jochriem, 2013
*/
#define F_CPU 8000000UL /* 8MHz */
#include <avr/io.h>
#include <util/delay.h>
#include <avr/interrupt.h>
// Interrupt Serviceroutine für "Byte am USART empfangen"
ISR(USART_RXC_vect)
{
uint8_t temp;
// Empfangens Byte in den Speicher schreiben:
temp = UDR;
// gespeichertes Byte wieder senden
UDR = temp;
}
int main()
{
// Receive-Interrupt einschalten, RX und TX einschalten
UCSRB |= (1<<RXCIE) | (1<<RXEN) | (1<<TXEN);
// 8 Bit Daten:
UCSRC |= (1<<UCSZ0) | (1<<UCSZ1);
// Baudrate auf 9600Bd einstellen:
UBRRH = 0;
UBRRL = 51;
// Globales Interruptflag einschalten:
sei();
while(1)
{
// nichts machen, der Code findet in der ISR statt
}
return 0;
}
Keine Kommentare