Gast
#651934
Guten morgen,
ich habe ein Problem mit USART. Ich benutze einen ATmega48 und möchte
per USART mit dem PC kommunizieren (senden und empfangen). Das senden
klappt auch schon ganz gut aber empfangen kann ich leider nichts. Ich
hoffe ihr könnt mir weiterhelfen. Wäre echt super...
void Init_USART(void)
{
unsigned char x; //Hilfsvariable
UBRR0 = 51; //Baudrate = 9600
UCSR0B |= (1<<RXEN0) | (1<<TXEN0); //enable Transmitter &
Receiver
UCSR0C |= (1<< UCSZ00) | (1<<UCSZ01); //8 Bits, ein Stroppbit
x = UDR0; //Empfänger leeren
}
void USART_Transmit(void)
{
unsigned char Data = 100; //Daten die gesendet werden sollen
while(!(UCSR0A & (1<<UDRE0))) //warte bis Empfangsbuffer leer
{
}
UDR0 = Data; //put data into buffer, sends the
data
}
unsigned char USART_Receive(void)
{
while(!(UCSR0A & (1<<UDRE0))) //warte auf die Daten die übertragen
werden sollen
{
}
return UDR0; //get and return data
}
void main(void)
{
DDRD |= (1<<DDD1); //PD1 output
DDRD &= ~(1<<DDD0); //PD0 input
unsigned char Data = 0; //Hilfsvariable
Init_USART(); //initialisiere USART
while(1)
{
USART_Transmit(); //USART senden
Data = USART_Receive(); //USART empfangen
}
}
Danke schon mal im Vorraus!!
Gruß Roland