diff --git a/Mikrokontroller.md b/Mikrokontroller.md index ab838a1..e7d290c 100644 --- a/Mikrokontroller.md +++ b/Mikrokontroller.md @@ -27,6 +27,8 @@ Um definierte Zustände auf den Leitungen auch dann zu haben, wenn alle Geräte Das Protokoll ist extrem einfach, damit auch das einfachste Gerät damit umgehen kann. Die COM-Leitungen sind normalerweise 'offen', d.h. alle Geräte definieren die entsprechenden Pins als INPUT und die Pullup-Widerstände im Stromversorgung-Gerät ziehen diese Pins damit definiert auf HIGH. +### Übertragung + Daten werden in Paketen übertragen, die eine Zieladresse, eine Längenangabe, Nutzdaten und eine Checksumme enthalten. Wenn ein Gerät senden möchte, beobachtet es den Bus und wartet, bis die Leitungen 'HIGH' sind. Dann zieht es die COM_CLOCK-Leitung nach GND (also 'LOW') und wartet eine kurze Zeit, damit alle angeschlossenen Geräte Gelegenheit haben, auf diese Änderung zu reagieren und in den Empfangsmodus zu schalten. Dann beginnt die Übertragung. Dabei wird bei jeder steigenden Flanke der COM_CLOCK-Leitung (also von LOW nach HIGH) das auf der COM_DATA-Leitung anliegende Bit gelesen und gespeichert, bis ein Byte übertragen ist. @@ -38,6 +40,20 @@ Im nächsten Byte wird die verbliebene Anzahl an Nutzdaten-Bytes gesendet. Danac Im letzten Byte wird eine Checksumme übertragen. +### Adressierung + +Jedes Gerät weist sich beim Start selbst eine freie 8-Bit-Adresse im Bereich 1-251 zu. Andere Adressen sind reserviert. Die spezielle Adresse 255 adressiert alle Geräte im Netz. Tatsächlich werden die meisten Nachrichten an Adresse 255 gerichtet und die Geräte entscheiden dann selbst, ob sie damit entwas anstellen wollen. + +Zusätzlich weist sich jedes Gerät beim ersten Starten der Firmware eine zufällige UID zu (64-Bit). + +### Pakettypen + +Die weitaus häufigsten Pakete enthalten Statusmeldungen angeschlossender Sensoren (Temperatur, Luftfeuchtigkeit etc). Es gibt aber auch statistische Nachrichten der Geräte, z.B. über die Anzahl der empfangenen oder gesendeten Pakete, die Anzahl der Fehler und anderes. Diese werden generell immer an alle Geräte (Adresse 255) gesendet. + +Dann gibt es aber auch Pakete, mit denen man bestimmte Werte/Schalter auf den Geräten selbst ändern kann, diese Pakete sind dann direkt an die Adresse des angeforderten Gerätes adressiert und werden im Erfolgsfall auch mit einem direkt an den Sender zurückgesendeten Paket beantwortet. + +Als letztes gibt es noch Pakete, mit denen gezielt neue Firmware an Geräte übertragen werden kann, hierbei wird die Adressierung etwas strenger genommen, indem hier auch die oben genannte UID (64-Bit) zur Adressierung herangezogen wird, damit nicht das falsche Gerät geflasht wird. + ## Mikrokontroller