printf aus einer Interruptroutine ausführen

Gast #304341
Lesenswert?
• ▲
▼
@all,

ich schreibe gerade an einem Programm und habe nun das Problem,dass ich
mir gerne einen Wert mittels printf() auf dem Bildschirm ausgeben
möchte.
Ich möchte dies nur zu Testzwecken einsetzten.
Wenn ich nun printf() einfüge kommt
Multible Call to Segment
Segment ?PR?PRINTf...
Caller hier nun der Name der Interruptroutine.

Nun meine Frage.
Ist es nicht moglich einen printf in einer ISR auszuführen oder ist da
noch etwas zu beachten?

Verwende Keil uvision2 und einen 80C517A.

Danke

TOM
Gast #304342
Lesenswert?
• ▲
▼
Der Fehler kommt daher, dass du PrintF sowohl im Interrupt Kontext
als auch von Main aus aufrufst. Das geht normalerweise nicht.
Die Warning bekommst du auch nicht weg.

Generell solltest du dir sowiso was überlegen. Printf im Interrupt
geht normalerweise in die Hose weil zu lang...

Abhilfe:
Flags in der Interuptroutine setzten und in main() ausgeben.
oder
bei jedem printf() deinen Interupt sperren und hinterher
wieder einschalten.
Im zweiten Fall bleibt zwar die Warning, es ist aber zumindest
kontextsicher.

Thomas
Gast #304343
Lesenswert?
• ▲
▼
das ist auch gut so !

richtig definierst du eine Globale variable char meldung []="ok"
Deine ISR setzt meldung = errorsting
alternativ kannst du auch ne int variable nutzen

wenn diese nicht "" (leer) ist sollte main pintf aufrufen und den
zeiger auf *meldung übergeben. so wird der irq nicht unnötig lang und
du hast deine meldung.

Antwort schreiben

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.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.