Mehrere MCUs synchronisieren - wie?

OP #2092772
Lesenswert?
• ▲
▼
Hallo!

Ich möchte mehrere RGB-Leds per Funk (mit einer Fernbedienung) 
ansteuern. Grundsätzlich funktioniert die Sache bereits. Ich habe aber 
das Problem, dass wenn ich einen Farbablauf starte, (alle LED-Empfänger 
erhalten zur gleichen Zeit das Signal) die einzelnen Farbverläufe nach 
ca. 30 sek. merkbar auseinander driften.

Auf Seite der Fernbedienung habe ich einen ATtiny44 und auf Seite der 
Empfänger jeweils einen AT90PWM316 im Einsatz.
Die Daten werden mit einem 2,4GHz-Funkmodul (RFM70) übertragen.

Ich müsste die Empfänger irgendwie synchronisieren, weis aber nicht, wie 
ich das am Besten mache.

Kann mir da bitte jemand weiterhelfen?

Danke!
Gast #2092794
Lesenswert?
• ▲
▼
Ich vermute mal die empfänger laufen nach erhalt des signal autak weiter 
ohne weitere synchronisation.

1. die zeitgeber /schwingkreise in den empfänger abgleichen, so das der 
versatz nicht mehr erkennbar ist / der versatz erst nach stunden 
ersichtlich wird.

2. ggf ist punkt 1 auch ein software problem. die ausführung des codes 
benütigt x ms danach wird y ms in gewartet x+y geben die zeitbasis der 
animation vor. dumm nur wen x unterschiedlich ist (abhängig von 
programmablauf )und somit x+y nicht konstant ist. ggf hilft hier ein 
timer abhilfe der immer den nächsten animations schrit auslöst. (vor der 
beginn aufziehen, dann animationsschrit durchführen, danach warten bis 
timer abgelaufen und von vorn.)

3. einen der controller als master degradiren, der die anderen immer 
wieder trigert so das aus der bisher asynchronen animation eine central 
gesteuerte wird. ggf auch eine mischung aus beidem, fals mal ein signal 
nicht empfangen werden konnte.
#2093045
Lesenswert?
• ▲
▼
@  Heimo G. (ledi)

>Das sollte so ca. 12 Stunden synchron laufen. Maximal 0,5sek. Differenz.

>Schaffe ich das mit einem Quarz?

Mal gerechnet? 0,5 zu 12h = 11ppm.

Wird knapp, da muss man den Quarz schon gut abgleichen.

>Alle Funkmodule können senden und empfangen.

Na dann ist es ja trivial. Ein Master sendet jede Sekunde oder Minute 
einen Ping, darauf synchronisieren sich alle anderen Slaves.

MFG
Falk
OP #2093872
Lesenswert?
• ▲
▼
Falk Brunner schrieb:
> @  Heimo G. (ledi)

> Na dann ist es ja trivial. Ein Master sendet jede Sekunde oder Minute
> einen Ping, darauf synchronisieren sich alle anderen Slaves.
>

Ok!
Dann werde ich das jetzt so versuchen.
Die 1. LED, die ich einschalte definiere ich als Master und lasse hier 
einen Timer laufen, der z.B. alle 10 sek. ein Sync-Komando aussendet 
nachdem sich alle anderen orientieren.

Antwort schreiben

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.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.