mikrocontroller.net

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


Autor: David (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Lothar Miller (lkmiller) (Moderator) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht 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.

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.