mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik serielle Schnittstelle


Autor: Hans (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: wulf (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
mit einem Protokoll ist dies zB (einfach) zu realisieren.
Du gibts dem 2. µC Befehle und Daten

Autor: Hans (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Andreas Kramer (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: wulf (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Gerd Vg (gerald)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Andreas Kramer (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: wulf (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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$")

Autor: Hans (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
@Gerd Vg

vielen dank für den tipp!

Autor: Power (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hi!
Ich sende die Daten im ASCII-Format, dann habe ich die Zahlen ab 128 
aufwärts für Befehle und Steuerzeichen frei. In Anlehnung an 
Modembefehle.

Autor: Gerd Vg (gerald)
Datum:

Bewertung
0 lesenswert
nicht 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

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.