Forum: Mikrocontroller und Digitale Elektronik ATMega8 UART RX Interrupt


von Thorsten (Gast)


Lesenswert?

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

von Andreas W. (Gast)


Lesenswert?

Hi,

probiere mal:

SIGNAL(SIG_UART_RECV)
{
  ...
}

SIG_UART_DATA wird aufgerufen wenn das UDR-Register leer ist.

Gruß
Andreas

von Thorsten (Gast)


Lesenswert?

Super,

es rennt ;-)

Vielen Dank!

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
Noch kein Account? Hier anmelden.