Goldi schrieb:
>>Zu dem Zweck einen INT zu nehmen halte ich aber für wenig sinnvoll, denn
>>ich denke mal wenn die Ausgabe hängt muss das Hauptprogramm eh warten.
>
> Wie meinst du das?
wenn du schon in einer Endlosschleife wartest, bis ein Signal vom Timer
kommt, dann macht dein Programm doch in der Zwischenzeit sowiso nichts
anderes. Also würde es auch ein Delay und ein Zähler tun.
> Hast du eine Idee wo sich das Programm immer aufhängt. Ich finde es
> komisch dass nicht mehr einmal das Interrupt ausgeführt wird.
was ist denn die letzte Meldung von PortB ??
>
> Die Idee war, wenn das Programm ins getchar() kommt soll der Timer0 als
> Stoppuhr eingeschaltet werden. Wenn die Zeit vorbei ist soll das
> Programm das getchar() und die do{}while; Schleife im wait_ack()
> abbrechen.
zur ACK-Abfrage mehrmals getChar aufzurufen ist doch eigentlich Unsinn,
das Display schickt entweder:
kein Byte - Befehl unvollständig, es wartet weiter
EIN Byte 0x06 - Befehl verarbeitet
EIN Byte 0x15 - Befehl unbekannt
d.h. wenn beim 1. Aufruf von getChar ein Byte zurück kommt, und das ist
nicht 0x06, dann kommt auch nichts weiter nach bis du den nächsten
Befehl gesendet hast.
Die Funktion ist nicht mit der Busy-Bit-Abfrage der gebräuchlichen LCD's
zu verwechseln, bei denen du immer den aktuellen Wert abholen mußt. Und
das solange bis das Display fertig ist.
deshalb siehe mein Beispiel, eine begrenzte Zeit auf EIN Byte warten.
Sascha