PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Daten von PC an uC übertragen



sebi87
11.05.2010, 19:57
Hallo,
wie im Titel schon steht möchte ich Daten (vorallem Steuersignale) vom PC an den uC übertragen.

Zu den Randdaten:

uC: ATMega32 + FT232
-> Uart ist implementiert und Funktioniert

PC-Seite: Delphi

Was mir jetzt noch fehlt ist ein Protokoll zur Dateninterpretierung.
Gibt es hierzu Beispiele oder könnt ihr mir Tips geben wie ich das am besten angehe?


Grüße Sebastian

veit
11.05.2010, 23:03
ich hab mir ein start- und endbyte definiert und berechne eine checksumme

sebi87
12.05.2010, 06:06
Kann jemand ein Stück Code poasten.
Ich kann mir das gar nicht vorstellen wie ich da anehen muss.

the_Ghost666
12.05.2010, 06:31
die meisten Protokolle bestehen aus einer Präambel, also einem abgesprochenen Teil aus meist 1-3 Bytes. Damit soll das Paket identifiziert werden. Es folgt dann z.B. ein Byte, was den Typ des Pakets angibt. Beim IP-Protokol z.B. ob es ein TCP oder UDP oder sonstwas Paket ist. Wenn du nur einen Typ hast, brauchst du das aber nicht. Dann könnte die Länge des gesamten Packets oder der Daten des Pakets als ein Byte folgen. Ab da folgen dann eine bestimmte Anzahl Datenbytes, z.B. Zustand des PortB. Im Anschluss noch eine berechnete Zahl, die sagt, dass das Paket ok ist, CRC8 zum Beispiel. Und dann noch ein Schlusszeichen.

sebi87
12.05.2010, 16:27
Das prinzip istmir jetzt prinzipiell klar.

Hat jemand ein Code-Beispiel?

BastelWastel
12.05.2010, 19:19
@the_Ghost666: Die Päambel Bytes indentifizieren das Paket nicht, eigentlich dienten sie mal der Synchronisation. Das darauf folgende Byte ist in der Regel das Start-Byte..(bei Ethernet z.b. das SFD 'Start Frame Delimiter' Byte)

@sebi87: Für was willst du denn ein 'Code-Beispiel'?
Für den uC oder PC Delphi? uC in C, Basic?
Willst du wissen wie man den ankommenden Byte-Array splittet, auswertet oder wie man Prüfsummen berechnet?
Oder willst du einfach nur ein fertiges Protokoll zum C&P'n? :wink:

sebi87
12.05.2010, 20:51
Hmm.... verstehe ich sollte das besser spezifizieren.

Also ich weiß wie ich die Daten von Delphi aus sende. Ich kann auch per uC Bytes senden und empfangen. Nur hänge ich gerade an den Problem das ich nicht weiß wie ich den "Frame" im uC auswerte, bzw. wie ich die Daten verarbeite.

Es geht mir also quasie nur um den uC.

Grüße

Besserwessi
12.05.2010, 21:05
Bei der Auswertung am µC hat man 2 Möglichkeiten:
1) Man wartet auf das Signalbyte für den Anfang eines Datensatzes und fängt dann den darauf folgenden Datensatz zu interpretieren.

2) Man schreibt die Daten in einen Puffer, bis das Signalbyte für das Ende eines Datenpaketes gefunden wird. Erst dann interpretiert man die Daten aus dem Puffer, von hinten ausgehend.

Das 2 te Verfahren hat Vorteile, wenn der µC während der Übertragung noch was tun soll. Das schreiben in den Puffer kann man in einer ISR machen, und beim Auswerten hat man dann alle Daten ohne Wartezeit zusammen. Man kann dafür ggf. auch eine passende Stelle in der Hauptschleife abwarten. Dafür hat man Probleme wenn eine Datenpaket sehr lang sein kann, denn die Daten müssen ertmal in den Puffer.

sebi87
13.05.2010, 15:34
Hat das wie es Beserwessi unter Punkt 2 schreibt schon mal jemand programmiert der bereit wäre den Code für die Auswertung zu posten?

Wäre super lieb. Ich bekomme es einfach net hin