Forum: Mikrocontroller und Digitale Elektronik ATMEGA16 Bufferproblem


von Streff John (Gast)


Lesenswert?

Hallo ich habe ein Programm geschrieben für den ATMEGA16L
Ich lese den String bis LF ein. Das LF wird richtig erkannt.
Was mir ein Rätsel ist: bei "print buffer" wird das LF nicht mit
aus-
gegeben, kommt aber beim nächsten "print string" als erstes Zeichen.
Wenn mir jemand weiter helfen könnte, wäre ich sehr dankbar.

MfG John

dim buffer as string * 30

do

buffer=""

wait rec:
if usr.7=0 then
goto waitrec
endif


if udr<>10 then          ' LF
buffer=buffer+chr(udr)
goto waitrec
else
buffer=buffer+chr(udr)
endif

print buffer;

loop

end

von mthomas (Gast)


Lesenswert?

das ";" nach "print buffer" weglassen?
(Mein Basic-know-how ist allerdings etwas eingerostet)

von Streff John (Gast)


Lesenswert?

Hab ich auch versucht. Das empfangene String endet mit CR LF.
wenn ich z.B. als letzte Zeichen !* sende und LF mit * wechsle. wird
bis ! ausgegeben. Der * erscheint wieder beim nächsten gelesenen string
als erstes Zeichen.

von andré (Gast)


Lesenswert?

Ist mir heut auch aufgefallen. Irgendwie komisch. Hab mir dann noch ne
sub gebastelt, die rxc wieder resettet und damit dann den buffer
loescht. Seitdem gehts:


sub udrflush
dim dummy as byte
    do
      dummy=udr
    loop until ucsra=0
end sub

von andré (Gast)


Lesenswert?

Ahrg, ich meinte natuerlich loop until ucsra.rxc =0

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.