www.mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik Synchronisierung mehrere AVR Controller


Autor: Tek (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo zusammen,

ich habe ein Master-Slave System mit einem Atmega128 als Master und 
mehreren ATTiny2313 als Slaves die über RS485 miteinander kommunizieren.

Die Slaves sollen bei bestimmten Ereignissen einen Zeitstempel 
abspeichern der dann über RS485 zum Master übertragen wird. Dazu habe 
ich in jedem Controller einen Timer laufen um millisekundengenau zu 
Messen. Damit ich diese Zeitstempel aber ins Verhältniss setzen kann, 
müssen ja alle Controller mit der gleichen "Zeitbasis" arbeiten.

Ich habe überlegt nach dem einschalten die Zählerstände der Slaves vom 
Master aus abzufragen um eine Art "Offset zu Master" für jeden Slave zu 
erhalten der dann in weitere Berechnungen einfliesst. Das ist aber denk 
ich recht umständlich und ungenau da die Kommunikationszeit auf dem Bus 
ja mit eingerechnet werden müsste.

Zweiter Ansatz wäre eine zusätzliche Synchronisations Leitung zwischen 
allen Teilnehmern die die Controller sozusagen auf den gleichen Nenner 
bringt. Die Module sind je ca 10m voneinander entfernt und auf der RJ45 
Leitung hätte ich auch noch Adern frei.

Vielleicht weis aber von Euch noch jemand einen besseren Lösungsansatz 
auf den ich noch nicht gekommen bin.

Gruß Hansjörg

Autor: Falk Brunner (falk)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Schick einfach per Broadcast an alle Slave, "Hallo, Uhrenvergleich, 
jetzt ist es 12:00". Beim Empfang dieses Datenpakets können alle Slave 
ihre interne Uhr neu stellen. Die Ungenauigkeit der Methode ist abhängig 
von der Baudrate sowie der Frage, wie zeitlich konstant deine Software 
die Datenpakete auswerten kann.

MFG
Falk

Autor: Flo (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Über eine Broadcastadresse ein Synchronisationssignal senden?

Autor: Thomas S. (klegom)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Falk Brunner schrieb:
> Zweiter Ansatz wäre eine zusätzliche Synchronisations Leitung zwischen
> allen Teilnehmern die die Controller sozusagen auf den gleichen Nenner
> bringt. Die Module sind je ca 10m voneinander entfernt und auf der RJ45
> Leitung hätte ich auch noch Adern frei.

Das geht. Die zusätzliche Leitung löst an allen Controllern einen 
Interrupt aus. die Controller merken sich ihre interne Uhrzeit, zu 
diesem Zeitpunkt.
Danach schickt der Master die Uhrzeit, zu der er den Interrupt ausgelöst 
hat.

Jetzt können alle den Versatz der Uhren ausrechnen und die Zeitstempel 
entsprechend anpassen.

Autor: Tek (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Stimmt, sorum gehts ja auch.
Der Fehler sollte dann ja bei allen Slaves gleich sein. Und einmal 
ermittelt, kann ich ihn dann ja auch gleich im Slave beim 
Synchronisieren rausrechnen.

Danke Euch beiden.

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.