Hallo, ich möchte aus der ISR(INT0_vect) Uart Daten senden, wenn ich ein char ausgebe in der ISR so wir die ISR beeinflußt -> es tut nicht mehr was es tun soll, LOL. Aber sobald ich die sendemethode raus nehme geht es wieder. Wie löst mann sowas am Besten. Danke. Gruß, David
David schrieb: > wenn ich ein char ausgebe in der ISR so wir die ISR beeinflußt -> > es tut nicht mehr was es tun soll, LOL. Du darfst natürlich nicht warten, bis das letzte Zeichen gesendet ist, weil in einer ISR überhaupt nicht auf irgendwas gewartet wird. Ein Interrupt ist ja eine Unterbrechung des Programmablaufs wegen irgendeines Ereignisses. Nehmen wir mal an, du sitzt ja auch nicht am Tich und liest Zeitung (das ist dein Hauptprogramm). Dann kommt ein Interrupt (INT0) vom Paketdienst über die Türklingel. Du gehst hin und nimmst ein Päckchen entgegen, das du und deine Kumpels brauchen. Jetzt bleibst du aber nicht an der Tür stehen und rufst von dort aus zusammen mit dem Paketzusteller (= der INT0) alle deine Kumpels an, sondern du gehst erst mal zurück an den Tisch, liest die Zeitung fertig, und wenn du dann mal Zeit hast, rufst du alle nacheinander an. Währenddessen können dann über die Türklingel problemlos neue (INT0-)Interrupts kommen... > Aber sobald ich die sendemethode raus nehme geht es > wieder. Wie löst mann sowas am Besten. Danke. Man startet das Senden in der ISR INT0 und sendet dann den String weiter über den TX-Complete. Oder man nimmt eine Senderoutine mit Fifo (z.B. in der UART-Lib von P. Fleury), schreibt die Daten in den Fifo und lässt der Software die weitere Arbeit.
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.