Hey,
die Geschichte passiert schon bevor ich versuche zu empfangen.
Sobald ttyAMA0 auf die korrekte Baudrate eingestellt ist werden empfangene Zeichen zurückgeschickt.
Hier die Test Datei auf dem Atmega 32, die wenn ich sie starte fröhlich blinkt.
Code:
atmega 32
usart initialisierung
UCSRC |= (1<<URSEL)|(1<<UCSZ0)|(1<<UCSZ1); // Asynchron, 8N1
UBRRH=(uint8_t)(UART_BAUD_CALC>>8); // Baudrate wählen
UBRRL=(uint8_t)UART_BAUD_CALC;
UCSRB |= (1 << TXEN); // UART TX (senden) einschalten
UCSRB |= (1 << RXEN); // UART RX (empfangen) einschalten
usart funktionen:
void usart_putc(unsigned char c) // Ein Zeichen senden
{
while(!(UCSRA & (1 << UDRE))); // warte, bis UDR bereit
UDR = c; // sende Zeichen
}
int16_t usart_getc_nowait (void)
{
// Liefert das empfangene Zeichen, falls etwas empfangen wurde; -1 sonst
return (UCSRA & (1 << RXC)) ? (int) UDR : -1;
}
testprogramm:
while(1)
{
empfangen=usart_getc_nowait();
if(empfangen=='B')
{
if (!z_led_links)
{
led_links(gelb);
z_led_links=1;
}
else
{
led_links(aus);
z_led_links=0;
}
}
if(kontroll_zaehler>=50) // Sekunde
{
led_rechts(gruen);
usart_putc ('B');
kontroll_zaehler=0;
}
}
Lesezeichen