- Beiträge
- 13.594
Synchronisation hat ja @Nobbi schon angesprochen.Grundsätzlich würde ich nicht den Weg wählen, direkt den Soll-Zustand eines Lämpchens (z.B. Blinker) zu senden. Ich würde eher die Betriebsarten senden (z.B. "Blinken links", oder "Warnblinker").
Interessant wird das Verschicken von Zustandsangaben wie "links blinken" und "links nicht blinken" v.a. dann, wenn die Satelliten selber entscheiden sollen, ob sie z.B. ein Positionslicht beim Blinken abdunkeln. Wenn ein Blinker in der Nähe des Positionslichtes ist, ist das nützlich, sonst nicht. Dann braucht man als Verbraucher nur z.B. linke Blinker, rechte Blinker und Positionslichter zu unterscheiden und die Satelliten machen den Rest selber. Sonst reicht's auch, für bestimmte Verbraucher(-klassen, wie z.B. "linke Blinker") die ab jetzt geltenden Helligkeiten herumzuschicken, aber man muss zwischen drei verschiedenen Arten von Positionslichtern unterscheiden (neben linken Blinkern, neben rechten Blinkern, isoliert).
Was evtl. für die Bordnetzbelastung interessant sein könnte, sich aber nur auf den Nanos selbst umsetzen lässt: Software-PWM und zeitversetztes Ein- und Ausschalten.
Bei einfachem Hardware-PWM sind die an einem Timer hängenden PWM-Ausgänge miteinander synchronisiert, was bedeutet, dass die Ein- oder Ausschaltphasen entweder alle zum gleichen Zeitpunkt beginnen oder um diesen Zeitpunkt herum zentriert sind. Das gibt hohe Spitzenströme. Wenn man die Pins per Interruptroutine schaltet, kann man das auch anders machen (z.B. einen Verbraucher dann einschalten, wenn ein anderer gerade aus ist), und man kann PWM auf Pins erzeugen, auf denen die Hardware das nicht kann.
Für sowas muss man allerdings etwas tiefer in die Timer- und Interruptsteuerung der Atmels einsteigen. Das läuft auf eine sortierte Liste hinaus, in der Timerwerte und jeweils zugehörige Schaltaktionen stehen, und wenn der Hintergrundtask die Liste ändern will, um Ein- und Ausschaltdauern anzupassen, ist das nicht leicht zu synchronisieren. Aber hier kann man auf die Synchronisation auch verzichten, denn es stört ja nicht allzu sehr, wenn eine LED mal für 3ms auf 0% oder 100% hängt.