Forum: Mikrocontroller und Digitale Elektronik Attiny2313 aus ISR(INT0_vect) UART Daten senden?


von David (Gast)


Lesenswert?

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

von Lothar M. (Firma: Titel) (lkmiller) (Moderator) Benutzerseite


Lesenswert?

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
Noch kein Account? Hier anmelden.