PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : RS 232 bockig, unerklärlich!



Lus
10.12.2008, 12:03
Halli Hallo

Vielleicht kann mir jemand helfen... ich habe ein RS 232 Problem und komme einfach nicht dahinter...

Also, ich habe 2 ATmega8, einer soll etwas messen und über RS 232 senden, der andere soll es auf einem LCDisplay anzeigen.

Der "Messchip macht folgendes:

warten auf einen Befehl: Befehl = waitkey()

wenn er ein c erhält, schickt er ein C zurück (Kommunikationskontrolle)
wenn er ein t erhält, misst er die Temperatur und schickt zurück:

print "T" ; temp

temp ist vom Format string * 6

beim emulator funktioniert das, es kommt z.B. T123456 zurück.


Chip2
sendet c, wenn C zurückkommt geht das Programm einen schritt weiter. Das geht.

Dann kommen die Zeilen

print "t"
Input Wert Noecho
Lcd Wert

"wert" ist von der dimension string * 7
wenn ich das im simulator oder im emulator (mit "print wert" statt "lcd wert") mache, dann sendet der chip richtig "c", sobald "C" zurückkommt sendet er "t" und dann gibt er "T123456" aus. (wenn ich das im Emulator tippe)

Wenn ich aber die beiden Chips zusammenschliesse, dann gibt der anzeigechip nicht "T123456" aus, sondern "CC T123" also wie wenn die Variable "wert" zuerst noch mit alten Zeichen gefüllt würde.

Und ich komme nicht drauf wieso!
Ich habe keinen Serialbuffer aktiviert, Baudrate 9600, Parity None, Databits 8, Stopbits 1.
Beide Chips auf 8Mhz interner RC-Oszi, Kabellänge des RS 232 20m, weder verdrillt noch abgeschirmt. Ich denke das sollte aber nicht das Problem sein, denn die Buchstaben kommen ja sauber an.

Danke an alle Mitdenker... Grinsend

lorcan
10.12.2008, 18:18
Moin,
kann es sein, dass du eine switch-Anweisung benutzt und das Break vergessen hast?!?!
Gruß
Lorcan

PicNick
10.12.2008, 19:54
Wenn man Waitkey(), print und input gemischt verwendet, kann man wegen der CRLF-Zeichen manchmal spass haben.
Die solltest deine zwei Programm herzeigen. Computer sind pingelig, da geht's oft um Details