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.