Gast
#262883
Hallo, ich steige zur Zeit von codevision auf winavr um. Mir reicht in der codevision Demoversion die 2k flash nicht mehr aus. Im nachhinein muss ich sagen, dass der automatische Codegenerator gewisse Probleme bereitet. Ich bin gerade dabei Interrupts in winavr zu testen. Benutze gerade einen AT90S4433. Meine beiden Interrupt0 und Interrupt1 funktionieren wie sie sollen. Mit dem UART Interrupt (für RXC) klappt es leider nicht so. Könnte mir jemand villeicht sagen, wo der Fehler liegt? (Habe schon im makefile geschaut, aber da muss man bei mir keine Baudrate angeben, wie im Tutorial beschrieben). In der io4433.h sind 3 Interrupt Vektoren (SIG_UART_RECV, SIG_UART_DATA, SIG_UART_TRANS). Wofür wird denn der UART_DATA benötigt? Hier mein Programmcode: #include <avr/io.h> #include <avr/io4433.h> #include <avr/interrupt.h> #include <avr/signal.h> SIGNAL (SIG_UART_RECV) { unsigned char temp; temp = UDR; PORTB = temp; } SIGNAL (SIG_INTERRUPT0) { PORTB = 0x01; } SIGNAL (SIG_INTERRUPT1) { PORTB = 0x02; } int main(void) { PORTB=0x00; DDRB=0x3F; PORTD=0x00; DDRD=0x00; // UART initialization // Communication Parameters: 8 Data, 1 Stop, No Parity // UART Receiver: On // UART Transmitter: On // RXCIE Interrupt: On // UART Baud rate: 19200 UCSRB=0x98; UBRR=0x0C; // External Interrupt(s) initialization // INT0: On // INT0 Mode: Any change // INT1: On // INT1 Mode: Any change GIMSK=0xC0; MCUCR=0x05; GIFR=0xC0; sei (); } Vielen Dank für die freundliche Unterstützung! Sarah Heimbach