@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
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
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.
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.