Forum: Compiler & IDEs AT90S4433 Uart-Interrupt mit avrgcc


von Peter Bauer (Gast)


Lesenswert?

hallo,
möchte gerne irgendein byte über den uart schicken, und wenn es
angekommen ist, dann soll die interrupt routine jedesmal den PortB
invertieren.
Die Led die dort angeschlossen ist blinkt dem entsprechend.
ohne interrupt un  in assembler läuft dieses.

was mache ich falsch?? avrgcc neuling!! hier mein quellcode:

#include <avr/io.h>
#include <avr/sfr_defs.h>
#include <avr/signal.h>
#include <avr/interrupt.h>


INTERRUPT (SIG_UART_RECV)
{
  PORTB=~PORTB;


}


/************************************************/
void uartreceive_ini (unsigned char data)
{
  UBRR=data;

  UCSRB  |= (1<<RXEN)|(1<<TXEN)|(1<<RXCIE);
}
/************************************************/
int main (void)
{
  uartreceive_ini(25);


  DDRB=0xFF;
  PORTB=0x00;
  sei();
  while(1)
    {

    }

  return 0;
}

danke schon einmal
peter bauer

von Rahul (Gast)


Lesenswert?

lies einfach das empfangene Byte aus (temp = udr).
Dadurch wird das Interrupt-Flag gelöscht.
Sonst wird dauernd das RECV-Interrupt ausgelöst, und deinb Port B
blinkt...

von Jamal Müller (Gast)


Lesenswert?

super vielen dank, das war der fehler!!

schönes wochenende

jamal

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.