simon schrieb:
> Irgendwie verzweifel ich grad. Ich versuche für meinen ATMega2560 mit
> dem Entwicklungboard Arduino MEGAAdk mein USART1 mit einem Receive
> Interrupt zu konfigurieren.
Hast du es denn ohne Interrupt schon mal probiert.
Und da am besten mal einfach nur Senden lassen, damit du am PC siehst ob
und wenn ja was am PC ankommt (sprich ob die ganze Taktung inkl Baudrate
stimmt)
> Analog beim ATmega 8 klappt es...
Gewöhn dich an die Vorstellung, dass man Code nicht einfach von einem µC
auf einen anderen übernehmen kann. Man kann die Grundidee und Codeteile
übernehmen, aber dann behandelt man den Code so, wie wenn man ihn neu
schreiben müsste. D.h. ALLES wird mit dem Datenblatt kontrolliert.
Insofern ist es irrelevant, ob das mit dem Mega8 funktioniert hat oder
nicht. Das ist ein neues Programm und das soll auf einem 2560 laufen.
Und nur das zählt.
> void setup()
> {
> USART_init_();
> // SetINT_init();
> // sei();
>
> }
OHne freigegbenen Interrupts wirds aber nichts mit dem Receive Interrupt
> void USART_init_(void) {
> UCSR1B = (1 << RXEN1) | (1 << TXEN1) | (1 << RXCIE1) | (1 << TXCIE1);
> //Enable Receiver and Transmitter 1, RX Complete Interrupt Enable 1, TX
> Complete Interrupt Enable 1
> UCSR2B = (1 << RXEN2) | (1 << TXEN2) | (1 << RXCIE2) | (1 << TXCIE2);
> //Enable Receiver and Transmitter 2, RX Complete Interrupt Enable 2, TX
> Complete Interrupt Enable 2
> UCSR3B = (1 << RXEN3) | (1 << TXEN3) | (1 << RXCIE3) | (1 << TXCIE3);
> //Enable Receiver and Transmitter 3, RX Complete Interrupt Enable 3, TX
> Complete Interrupt Enable 3
Es ist keine so gute Idee, alle Interrupts auf Verdacht freizugeben. Vor
allen Dingen dann nicht, wenn man keine ISR dazu hat. Denn wenn der
Interrupt auftritt, und es keine ISR dafür gibt, dann wird das mit einem
Prozessor-Reset quittiert. Insofern hast du zwar den Transmit Complete
Interrupt freigegeben, aber keine ISR dafür. Ergo ....