Ich möchte 2 AVR per gemeinsamen Netzschalter starten und möchte, dass
diese an einem Tag höchstens eine Sekunde auseinanderlaufen.
Das heißt als Beispiel. Jede volle Stunde soll jeder AVR etwas machen.
Also beide zur gleichen Zeit an verschiedenen Orten.
Erste Testschaltungen mit Timer und blinkender Led zeigen trotz Quarz,
dass bereits nach 1 Stunde beide AVRs ziemlich auseinandergehen ...
Verstehe ich nicht !! Gehen denn die Timer nicht durch auch bei
Interrups, die sind doch mit dem Prozessortakt verbunden?
Danke für Hilfe ....
Hi, Jens,
Du: "...Testschaltungen ...zeigen trotz Quarz..,
dass ... nach 1 Stunde beide AVRs ziemlich auseinandergehen ..."
wenn "ziemlich" deutlich mehr ist als 10e-4 beduetet, dann ist das
pathologisch, dann ist das Symptom eines Fehlers.
Denn die Timer laufen durch - wenn Du sie richtig programmiert hast,
also z.B. im CTC-Mode.
Ciao
Wolfgang Horn
ja mit Master geht alles ...
Eigentlich müsste man doch eine quarzgenaue Uhr mit dem AVR realisieren
können, oder bin ich da auf einen Zeit-IC wie DS 1302o.a. angewiesen.
ich habe jetzt den Timer1 bei beiden AVRs laufen ohne Interrupt. Nun
vergleiche ich die Werte und es läuft eben auseinander, ziemlich viel in
einer Stunde ....
Grundgenauigkeit eines handelsüblichen Quarzes: +/-50ppm. 2 Stück können
also im Extremfall um 100ppm auseinander liegen, was ungefähr 1 Sekunde
in 3 Stunden entspricht, also an der LED bereits im Bruchteil einer
Stunde sichtbar wird. Temperaturunterschiede, unterschiedlicher Aufbau
des Oszillators etc. addieren sich noch dazu.
Ach ja, apropos Quarzuhren und RTCs: Uhrenquarze mögen mit 30ppm etwas
genauer sein, aber ohne Kalibrierung wird daraus auch keine gute Uhr.
Will man es genau haben, muss man sie mit einem Trimmkondensator
kalibrieren. Quarzkochbuch: http://www.axtal.de/info/buch.html.
Mit µCs kann man das ggf. auch einfacher haben, indem man einen 16bit
Timer so betreibt, dass der Teiler möglichst hoch ist (dicht unter den
maximalen 65536), und dann an ebendiesem Wert etwas dreht.
Sollte man einen Uhrenquarz 32,768 kHz verwenden?
Dann wird aber mein Takt so langsam oder gibt es da eine Lösung mit 8Mhz
und trotzdem Uhrenquarz?
Wie funktionieren denn da die Quarzuhren? Die gehen doch auch sehr
genau....
Danke für Tipps ....
> Dann wird aber mein Takt so langsam oder gibt es da eine Lösung mit 8Mhz> und trotzdem Uhrenquarz?
Bei vielen AVRs kann man einen Timer vom Uhrenquarz separat takten
lassen, während der AVR mit internem Takt oder einem zweiten Quarz
läuft. Ich würde aber erst mal versuchen, per Software zu trimmen. Also
beide einige Stunden laufen lassen, Abweichung ablesen und
Teilungsfaktor entsprechend korrigieren.
Im Prinzip ist die Ungenauigkeit des Qurazes nicht das einzige Problem.
Wenn Du den Netzschalter einschaltest dann werden nicht beide AVRs
gleichzeitig mit der Codeausführung beginnen.
Jens wrote:
> Sollte man einen Uhrenquarz 32,768 kHz verwenden?
Wozu ?
Das ändert überhaupt nichts.
Im Gegenteil, Uhrenquarze sind temperaturempfindlicher als MHz-Quarze.
Du mußt beide Quarze trimmen, anders wirds nie was.
Bei MHz-Quarzen kann man das am besten in Software machen:
Beitrag "Die genaue Sekunde / RTC"
Peter
ja mit dem Netzschalter das stimmt. Aber mir reicht eine Genauigkeit von
einer Sekunde pro Tag. Am nächsten Tag starte ich die Schaltung erneut.
Jetzt ist es so -- Netzschalter ein und beide laufen ziemlich genau
zugleich los --- und dann eben nach einer Stunde fast 1s Unterschied ...
ich probiere das jetzt mit dem Trimmen .... Danke
Bei aktuellen AVRs kannst du die CKOPT-Fuse setzen und bekommst dann
den internen Takt an einem Portpin raus. Damit kannst du den zweiten
AVR takten, und schon laufen sie dir nicht mehr auseinander. ;-)
Bei älteren AVRs kann man den Takt an XTAL2 abgreifen, sollte dafür
aber die CKOPT-Fuse gesetzt haben und eigentlich auch besser eine
Pufferstufe zwischen beiden einfügen.
> Aus dem "gemeinsamer Netzschalter" schließe ich, daß sich beide nahe> beieinander befinden, richtig?
Ich hätte jetzt aus "beide zur gleichen Zeit an verschiedenen Orten"
geschlossen, daß genau das nicht der Fall ist. Vielleicht liegt ja ein
langes Stromkabel dazwischen.
> Jede volle Stunde soll jeder AVR etwas machen.> Also beide zur gleichen Zeit an verschiedenen Orten.
Da, wo ich früher (vor 15 Jahren) gearbeitet habe, hat man das mittels
DCF-Empfang synchronisiert. So ein DCF-Empfängermodul kostet ja nicht
die Welt, zumal bei einem Projekt, wo es so sehr auf Synchronität
ankommt.
Ob das heute noch üblich ist, weiß ich allerdings nicht. schulterzuck
Ja es ist so.
Es gibt mehrere Travos an einem Ort. Dann gehe ich mit ca. 15V ~
Einzelleitungen (10 Stück) ca. 50m jeweils weit weg (durchs Wasser auch
noch). Und an den Enden sind die Controller. Ich möchte halt nur mit je
einer 3adrigen Leitung arbeiten und nicht unbedingt einen Bus aufbauen.
Im Test habe ich gerade die Nutzung der Netzspannungsfrequenz. Das geht
erst mal sehr gut.
Eine Diode, eine Z-Diode, ein Optokoppler, und evtl. noch ein Teiler
(4040) und dann an den INT des AVRs. Auch mit 50Hz ohne Teiler geht es,
logisch.
Ein hochohmiger Widerstand an einen AVR-Eingang hätte es auch getan...
Den Rest machen die Eingangsschutzdioden. Sowas gibt's sogar für
230 V als Appnote von Atmel.
>Ich möchte 2 AVR per gemeinsamen Netzschalter starten und möchte, dass>diese an einem Tag höchstens eine Sekunde auseinanderlaufen.
Das entspricht, wie hier schon gesagt wurde, ungefähr 1/86400 = 11 ppm.
Das ist schon ziemlich anspruchsvoll. Mach Dich mal über die
Temperaturabhängigkeit der Frequenz von Schwingquarzen schlau; die
beträgt nämlich günstigstenfalls (AT-Schnitt) schon ca. ±10 ppm bei 20
°C Temperaturänderung.
Eine mögliche Lösung für Dein Problem wären - wenn kein Kabel zwischen
den Bausteinen liegt - DCF77-gesteuerte Uhren.