serielle Schnittstelle

Gast #575749
Lesenswert?

hallo,

mein µC besitzt eine serielle Schnittstelle wie z.B. I²C oder TWI, über 
die kontinuierlich daten gestreamt werden; zwischendurch möchte ich gern 
noch andere daten rüberschicken, die ich aber speziell weiterverarbeiten 
muss. Wie kann ich diese Bits dem zweiten µC kenntlich machen, damit er 
weiß, dass er diese beiden Bits z.B. woanders abspeichern muss?

Hans
Gast #575755
Lesenswert?

hallo wulf,

kannst du mir ein kleines example geben, damit ich mir mehr darunter 
vorstellen kann. z.B. eine Bitfolge die sonst nicht vorkommt? ist in 
diesem fall sehr schwierig, weil die daten alle kombinationen enthalten 
können.
Gast #575764
Lesenswert?

Wenn du einen Pin erübrigen kannst dann kannst du den als R/W Leitung 
programmieren oder aber du sendest z.B für normale daten immer 0x01 und 
dann das datenbyte und für befehle/sonderdaten 0x02 und das byte.

Gruß Andreas
Gast #575794
Lesenswert?

genau das meinte ich, was Andreas Kramer geschrieben hat.
Du schickst dem Controller zuerst einen Befehl und darauf folgend dann 
die Daten. Der zweite muss nur wissen, was ein Befehl ist; d.h. sie 
müssten entweder Synchron starten oder du baust Start-Sequenzen o.ä. 
ein.
Damit weis dann der zweite µC, dass jetzt ein Befehl kommt und gleich 
nach diesem Befehl dann ein/mehrere Bytes an Daten.
#575835
Lesenswert?

Ich habe das so gelöst und kann unendlich viele Geräte damit betreiben.

 Eine Befehlsübermittlung sende ich nach diesem Chema:
 #(00-FFh)(00-FFh)(00-FFh)usw ...........$

Startzeichen einer Befehlsübermittlung beginnt mit dem Zeichen #
danach folgen xbeliebige Kombinationen von Daten.
Die Länge des Datenpaketes ist egal, nur muss zwingend ein normiertes 
Endezeichen die Übertragung beenden, in diesem Fall $.
Was die einzelnen Daten in dem Paket bedeuten, kommt immer auf den 
Anwendungsfall drauf an.
Meine grösste Anwendung waren einmal 255 Stück 4stellige Anzeigegeräte, 
die von Sensoren Messwerte anzeigen sollten und über drei 
Verbindungsleitungen alle parallel geschaltet waren.
Der Sender war natürlich für die vielen Eingänge ausgelegt.

Im Moment habe ich sowas mit einer bidirektionalen Funkübertragung in 
der Entwicklung, klappt hervorragend in beiden Richtungen.
Gast #575848
Lesenswert?

Eine schöne Lösung die du hast. Ich glaub das war der letzte Teil der 
mir für meine Paketformatierung fehlte ^^ auf was man manchmal nicht 
kommt obwohl es naheliegend ist. Allerdings hab ich eine frage was 
machst du sollte ausnahmsweise ein Datenpaket ein $# enthalten ?

Gruß Andreas
Gast #575885
Lesenswert?

es ist zwar sehr viel Verschwendung, aber möglich wäre es die 00-FF 
wirklich als "00" und "FF" zu senden und nicht 0-255. Weil sonst wirds 
wahrscheinlich sehr schwer das Ende vom Datenbyte "$" zu unterscheiden. 
Deshalb hatte ich gemeint eine Sequenz; ist zwar auch nicht 100% sicher, 
aber schonmal ein erster Schritt (Ende ist dann zB "$ende$")
#576033
Lesenswert?

@ Andreas Kramer,

auch das kann man elegant lösen wenn die Steuerzeichen im Sendepaket 
vorkommen.
Es gibt ja immer die Möglichkeit nach dem Startzeichen als nächstes die 
gesamte Datenlänge anzugeben, dann entfällt halt das Endezeichen oder es 
bleibt trotzdem zur Sicherheit bestehen.
Lösungen gibt es immer ...............
  Startzeichen, Datenlänge, Empfängeradresse, Datenpaket, Endezeichen

Gruss

Gerd

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