www.mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik printf aus einer Interruptroutine ausführen


Autor: Tom (Gast)
Datum:

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

Autor: Thomas (Gast)
Datum:

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

Autor: Winne (Gast)
Datum:

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

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.