Forum: Mikrocontroller und Digitale Elektronik RS232 Protokoll nur mit TXD und RXD


von Michael (Gast)


Lesenswert?

Hallo,

ich möchte gern eine Kommunikation zwischen Computer und µC realisieren.
Auf der PC Seite habe ich ein C Programm welches eine Datei laden und 
diese zum µC schicken kann. Ich möchte immer einen Integer schicken dann 
über den µC auf einem Flashspeicher speichern und dann irgendwie ein OK 
vom Controller zurückbekommen und dann den nächsten Integer usw. Ich 
habe aber nur die Leitungen RXD und TXD zur verfügung. Gibt es da 
fertige Protokolle. Wie macht man soetwas am besten? Ich brauche nur ein 
paar Denkanstöße.

Danke

von mIcHa (Gast)


Lesenswert?

Empfehlenswert wär zB. das Intel-Hex Protokoll.
Da kann auf der Gegenstelle gleich auf Fehler in der Übertragung 
überprüft werden.
Siehe hier:

http://www.cs.net/lucid/intel.htm

mfg mIcHa

von Martin (Gast)


Lesenswert?

Ich wurde es so machen. Den Integer, also 2 oder 4 Bytes zum MC 
schicken. Ist der Integer abgespeichert, schickt der MC ein Byte zum PC 
(RxD aus PC sicht) mit einem Wert, den du festlegst. Hat der PC diesen 
Wert empfangen, schickt der PC den nächsten Integer. Und dann immer so 
weiter.

von Ralf (Gast)


Lesenswert?

Wenn der vom PC stammende Wert nicht in ASCII gesendet wird, würde sich 
vielleicht das ACK-Zeichen (Acknowledge) anbieten. Nur für den Fall, 
dass das Protokoll später mal erweitert wird. Wenn der µC z.B. nicht 
"einverstanden" ist mit dem Wert, dann gibts ein NAK (NoAcknowledge). 
Ist aber nur so n Gedanke.

Ralf

von Frank (Gast)


Lesenswert?

Jo, der letzte Ansatz ist schon OK, am Besten den Datensatz noch in STX 
und ETX verpacken, dann hat man schon ein ganz anständiges ACOP. Gab 
übrigens grad neulich schonmal nen Thread zu diesem Thema. -> 
Suchfunktion

bye

Frank

von Michael (Gast)


Lesenswert?

Hallo

@Martin,Ralf

Ja, so hat ich mir das auch gedacht. Ist bestimmt die einfachste Lösung.

@Frank

Was heisst in STX und ETX verpacken?

von Karl H. (kbuchegg)


Lesenswert?

STX = Start of Text
ETX = End of Text

Einfach mal in eine ASCII Tabelle schauen.

Der µC ignoriert alle Zeiczhen von der UART bis ein
STX Zeichen auftaucht. Danach interpretiert und verarbeitet
er alles was von der UART kommt, bis ein ETX auftaucht.
Danach ignoriert er wieder.

Auf diese Art kann man in eine laufende Übertragung einsteigen,
ohne das es zu Fehlinterpretationen kommt. Kennst du doch
sicher: Du unterhälts dich mit einem Freund. Plötzlich
kommt noch jemand dazu, schnappt 2 Wörter auf und meint
mitreden zu müssen obwohl er keine Ahnung hat worum es
überhaupt im laufenden Satz geht.

von Michael (Gast)


Lesenswert?

Hallo Heinz,

ja das kenn ich, danke für die gute Erklärung.

Vielen Dank euch allen

von manuete (Gast)


Lesenswert?

hi Michael, stehe auch zur Zeit vor diesem Problem eine Kommunikation 
zwischen Computer und µC realisieren mit einem Protokoll....

STX = Start of Text  0x02
ETX = End of Text    0x03
CS = Checksumme/Prüfsumme

hast du schon rausgefunden wie es im Programm aussieht mit dem STX und 
ETX und eventuell mit der Prüfsumme

grüssle

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.