UART Komm. zwischen µC und RPi

Gast #3892120
Lesenswert?

Hallo,

ich möchte 32bit Werte zwischen dem ATmega88 und dem Raspebrry Pi über 
den UART austauschen (in der Sprache C).

Dazu habe ich grundsätzlich ein paar Fragen:

Mit open() öffne ich eine Datei, aus welcher ich die empfangenen UART 
Nachrichten abfrage.
Mit read() lesen ich eine bestimme Anzahl von Zeichen aus der Datei.

- Werden die gelesenen Bytes aus der Datei gelöscht?
- Wird die Datei immer größer wenn viele Daten eingehen und nicht 
abgerufen werden? Grenze?
- Kann ich die Datei leeren?

Ich habe das nämlich das Problem das am Pi zwar die Daten ankommen, aber 
als stream, d.h. ich kann keine klaren Nachrichten abgrenzen.

Ist es deshalb sinnvoll innerhalb der Daten Start und End Zeichen zu 
definieren, sodass ich weiß, der dazwischenliegende Teil sind die Daten?
Oder sollte ich lieber jedesmal alle Puffer leeren?

Landen im dem File auch andere Nachrichten?
Schicke ich vom µC 32 an den Pi und lese 32 Byte ein, tauchen Zeichen 
auf, welche ich nicht verschickt habe.

Versteh den ganzen Zyklus im Pi anscheinend noch nicht. Bzw. was mit den 
Nachrichten vom µC im Pi passiert...
Gast #3892126
Lesenswert?

qwertz schrieb:
> Mit open() öffne ich eine Datei, aus welcher ich die empfangenen UART

du meinst bestimmt eine Device ( /dev/ttyS0 oder so )?

> Werden die gelesenen Bytes aus der Datei gelöscht?
wenn es ein device ist, ja

- Wird die Datei immer größer wenn viele Daten eingehen und nicht
abgerufen werden? Grenze?
es wird keine Datei sein, damit hat es auch keine größe. Es gibt intern 
eine Puffer dieser kann überlaufen

- Kann ich die Datei leeren?
ja, ich glaube mit fflush

> Ich habe das nämlich das Problem das am Pi zwar die Daten ankommen, aber
> als stream, d.h. ich kann keine klaren Nachrichten abgrenzen.
Serial ist nun einnmal ein stream und genauso kommt es an.

> Ist es deshalb sinnvoll innerhalb der Daten Start und End Zeichen zu
> definieren, sodass ich weiß, der dazwischenliegende Teil sind die Daten?
ja, das nennt sich Protokoll und man braucht es bei jeder 
Datenübertragung

> Landen im dem File auch andere Nachrichten?
eigentlich nicht

> Schicke ich vom µC 32 an den Pi und lese 32 Byte ein, tauchen Zeichen
> auf, welche ich nicht verschickt habe.
dann hast du keine Saubere Verbindung. Vermutlich ein Hardware Problem.

> Versteh den ganzen Zyklus im Pi anscheinend noch nicht. Bzw. was mit den
> Nachrichten vom µC im Pi passiert...
das kommt auch dein Programm an, was mit den Daten gemacht wird

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