bascom software uart waitkey abbrechen

Gast #2542085
Lesenswert?

Hallo,

ich muss mit dem SW-UART per WAITKEY Daten einlesen.
Das Problem ist, das nicht immer Daten anliegen und sich dann das 
Programm "aufhängt". INKEY kann ich nicht ohne weiteres verwenden, da 
die Abfrage und Auswertung zu umfangreich wird.

Beim HW-UART setzte ich einfach in einem Timerinterrupt Ucsra.rxc = 1 
und das Progamm läuft nach WAITKEY weiter. Gibt es beim SW-UART eine 
Variable die anzeigt das ein BYTE eingelesen wurde?

dani
Gast #2542088
Lesenswert?

Nein. Beim Software-UART mußt du pollen. Daß heißt, du must ständig 
nachschauen, ob ein Byte empfangen wurde. Besser wäre es, eine eigene 
Interruptroutine zu schreiben, wenn du mit der implementierten nicht 
zufrieden bist.
Gast #2542096
Lesenswert?

Hab ich mir schon gedacht. Die Schwierigkeit ist, das ich an das Layout 
und den µC (Mega8) gebunden bin und ohne die Routine schon bei 98% 
Speicherauslastung bin .... ich befürchte eine Routine zum "Pollen" und 
Auswerten passt nicht mehr rein ...
Ich hab auch schon versucht im Timerinterrupt Daten auf die UART zu 
schreiben, damit WAITKEY was zu lesen hat, funktioniert leider nicht.
Gast #2542142
Lesenswert?

Versuch mal, dein Problem in C zu formulieren. Ich denke, der GCC 
(AVR-Studio) ist ein wenig effizienter als BASCOM. Vielleicht passt es 
dann ja noch in den ATmega8. Hast du in BASCOM die Option "Optimize 
code" mit einem Häkchen versehen?
Gast #2543329
Lesenswert?

Danke für die Antworten.

"optimize code" ist mir bisher nie aufgefallen ... werde ich mal 
probieren.

Mein SW-UART liegt sogar schon auf INT0.

Du meinst  das Auslesen mit INKEY durch eine negative Flanke initiieren?

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren