Hi, ich verwende einen Mega128, gcc und die Libs von Pascal Stang. Speziell davon die timer128 und uart Funktionen. Nun habe ich folgendes Problem: Ich kann über den HW Uart, printf-Messages an die Console von meinem PC senden. Klappt sehr gut. Wenn ich allerdings eine solche printf Message aus einer TimerInterrupt Funktion aufrufe, "stürzt" der Mega ab. Wenn ich keine printf Message aufrufe läuft das Ding wunderbar. Mach dort nun schon seit 3 Tagen(eigentlich Nächten) dran rum und seh kein Land. Vielleicht hatte ja schon jemand das Problem und kann mir helfen. Wäre super cu+thx flinkflash SourceCode: void timer_func(void) { rprintf("Hallo2\r\n"); //Wenn diese Zeile raus ist läuft der Mega ohne Probleme } int main(void) { timerInit(); timerAttach(TIMER2OVERFLOW_INT, timer_func); uartInit(); uartSetBaudRate(9600); rprintfInit(uartSendByte); while(1) { rprintf("Hallo1\r\n"); } return(0); }
was passiert eigentlich, wenn der controller 2 printf gleichzeitig auszuführen versucht? beeinflussen die sich irgendwo (vars im ram)?
Hi, hab eben mal die printf Message in der while Schleife rausgenommen. Führt allerdings zu keinem besseren Ergebnis. Leider.
Hallo Zusammen, stehe gerade vor dem gleichen Problem wie flinkflash! Möchte mit rprintf in einem Timerinterrupt etwas über uart ausgeben. Leider kommt es dann beim Interrupt zum "Absturz" des Avr. Verwende auch die Libs von Pascal Stang mit dem ATmega32. Gibts dafür schon eine Lösung? Viele Grüße Manu
Manu wrote:
> Gibts dafür schon eine Lösung?
Ja, sich klarzumachen, daß jede Routine Ausführungszeit benötigt.
Die UART gehört mit zu den großen Zeitfressern, kann ja nur so schnell
senden, wie die Baudrate eingestellt ist.
Und wenn der Timerinterrupt schneller kommt, läuft irgendwann der
UART-Puffer über -> Krach Peng Bum.
UART und printf gehören generell nicht in Interrupts.
Und daß 2 Instanzen von printf nen wunderschönen Zeichensalat ergeben,
sollte auch klar sein.
Peter
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.