Forum: Mikrocontroller und Digitale Elektronik UART Komm. zwischen µC und RPi


von qwertz (Gast)


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...

von Peter II (Gast)


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

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.