Forum
Kommunikation zwischen mehreren µCs (AVR) (Elektronik)
» Das heißt also, ich arbeite genauso wie bei der RS232-Kommunikation (schon
» gemacht) indem ich Strings sende und die Slaves erkennen Anfang und Ende
» von alleine? -
natürlich nicht von alleine.
Eine RS485 ist auf der µC Seite auch nur eine serielle Verbindung.
Interrupt kommt jedesmal, wenn ein Byte empfangen wurde.
ist byte STX -> nein, dann zurück und nix machen
-> ist STX: nächstes Byte lesen und Adresse feststellen.
ist Adresse korrekt: -> alle nächsten Bytes bis EOT mitlesen und Speichern.
hast du schon jemls ne Interruptroutine programmiert? z.B. nen Timer für ne Uhrzeit?
» Quasi wenn ein String kommt genau diesen annehmen
Es kommt kein String, sondern immer nur ein Byte. Du musst dir Flags setzen, ob es ein String für diese Einheit ist.
Denn nach jedem Empfangenen Zeichen beendest du die Interruptroutine. Und beim nächsten Zeichen fängst du ganz jungfräulich wieder an. Damit du weisst, ob das vorherige Zeichen ein STX war oder ob du gerade mitten in einem auszuwertenden String bist oder ... musst du dir ein passendes Flag setzen und bei jedem Buchstaben abprüfen.
» und "von Hand" die beiden Adress-Bytes überprüfen
ja, nach STX ein Flag setzen und bei den nächsten beiden Interrupts die Adressen vergleichen.
» - und wenn die passen den Kram weiter
» verarbeiten?
Du bekommst jedesmal nur EIN Zeichen. Je nachdem welche Flags du gesetzt hast müssen die Zeichen in einen Puffer oder mit den Zeichen wird garnix gemacht (wenns nicht für die Einheit ist.
Im Hauptprogramm schaust du, ob was im Buffer steht (das ist dann für diese einheit) und wenn was drinsteht, dann guckst du was du damit machen willst.
» (die Weiterverarbeitung macht mir keine Sorgen - die
» Adressierungsgeschichte und das Problem "Übertragungslänge",
Wenn Zeichen EOT kommt, ist der String zuende. Dann wird ein Flag gesetzt im Interrupt und das Hauptprogramm kann daran erkennen, dass jetzt ein kompletter String vorbei ist.
Versuch erstmal interrupts zu verstehen. Bau dir mit einem internen Zeitgeber und Interruptverarbeitung ne Uhr.
hws
Gesamter Thread:
