Forum: Mikrocontroller und Digitale Elektronik Puffer für UART 2313


von Jürgen Woetzel (Gast)


Angehängte Dateien:

Lesenswert?

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 ?

von crazy horse (Gast)


Lesenswert?

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.

von Jürgen Woetzel (Gast)


Lesenswert?

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
Noch kein Account? Hier anmelden.