Hallo Ich möchte ein LCD über die serielle Schnittstelle meines PC betreiben (9600 Baud),dazu habe ich einen AT90S2313 mit MAX232 an Com2 angeschlossen. Da das LCD bei bestimmten Befehlen (Display Clear = 5 mS) braucht, werden beim Polling des Uart Zeichen überlesen,in meinem Fall 4-5. Ok, dachte ich mir machst nen Puffer im SRam von $60-$7f, das sind 32 Bytes und schreibst die Daten im Interrupt in den Puffer. Das Programm in Anhang läuft auch Wunderbar, allerdings nur im Simulator. Im AVR kommen nach einigen Korrekten Zeichen willkürlich 0 Bytes zurück, obwohl das eigentlich garnicht möglich sein sollte. Ich hab das Programm schon x-mal durch den Simulator laufen lassen(Studio4). Das müsste laufen. Weiss jemand Rat ?
so ganz habe ich es nicht verstanden, aber auf jeden Fall solltest du in der ISR erstmal das SREG sichern. Ansonsten macht es die ganze Verwaltung des Puffers einfacher, wenn du eine Zählvariable mitlaufen lässt, bei jedem empfangenen Byte wird die incrementiert, bei jedem Lesen decrementiert. Lesen aus dem Puffer kannst du immer dann, wenn diese Variable >0 ist.
THX Das war Tatsächlich da Statusregister *schäm läuft jetzt alles Super. Vielen dank. Da ich keine 0-Bytes zum LCD sende habe ich einfach die Null als nix da deklariert und spar mir so die Zählvariable.
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.