Moin,
kennt sich jemand mit dem RX-Interrupt beim AT-Mega8 aus ?
Der Controller hängt sich auf, sobald er ein Zeichen empfängt ...
Hier ein paar Codeschnipsel (aus der Testphase ;-) :
SIGNAL(SIG_UART_DATA)
{
char tmp;
tmp=UDR;
delay_ms(20);
UDR=66;
}
int main()
{
bit_off(UCSRC, UMSEL); //Asynchronous Transmission
bit_off(UCSRC, UPM0); //No parity
bit_off(UCSRC, UPM1);
bit_off(UCSRC, USBS); // 1 Stop
bit_off(UCSRC, UCSZ0); //Char-Size 8Bit
bit_off(UCSRC, UCSZ1);
bit_off(UCSRC, UCSZ2);
UBRRH = 0x00;
UBRRL = 0x19;
bit_on(UCSRB, RXEN); //Receiver enable
bit_on(UCSRB, TXEN); //Transmitter enable
bit_on(UCSRB, RXCIE); //RX INT enable
sei();
...
}
Vielen Dank!
Greetz,
thorsten
www.lasertechnix.de
Hi,
probiere mal:
SIGNAL(SIG_UART_RECV)
{
...
}
SIG_UART_DATA wird aufgerufen wenn das UDR-Register leer ist.
Gruß
Andreas
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.