Quarze / millis() auf unterschiedlichen CPUs

Gast #5623473
Lesenswert?

Hallo,

ich habe eine grundsätzliche Frage.
Ich betreibe einen ESP32, dieser kommuniziert über I2C mit einem 
Atmega32. Diese werden allerdings extern programmiert und später in der 
Schaltung (selten) gewechselt.

Ich lese also die Fuse-Bits aus, sende die über I2C und kontrolliere 
diese Bits im ESP.

Zum Spaß hab ich mir gedacht, es wäre cool, die reale CPU-Frequenz zu 
kontrollieren. Ich sende also vom ESP einen Start-Befehl, lasse ein 
definiertes delay laufen und sende anschließend einen Stop-Befehl. Der 
Atmega32 misst inzwischen die Zeitdifferenz mit Hilfe von millis() und 
sendet diese an den ESP.
Klappt auch wunderbar. Und klar, nur ein grober Anhaltspunkt, aber den 
Unterschied zwischen 8 und 16Mhz werde ich damit schon erfahren.

Was mich wundert: die Werte sind immer absolut identisch. Irgendwie habe 
ich erwartet, dass die CPUs im Millisekundenbereich leicht 
unterschiedlich sind.

Sind die Quarze und CPUs wirklich so präzise und identisch?
Gast #5623506
Lesenswert?

Schau doch mal, wie viel Abweichung gewöhnliche Quarze von ihrer 
Soll-Frequenz haben. Ich habe da Werte von 1-2 Sekunden pro Tag in 
Erinnerung.

Wenn du eine Sekunde misst, könnte die Abweichung somit 0,01 bis 0,02 ms 
sein. Du hast wahrscheinlich mehr erwartet, richtig?

Beim ESP musst du noch berücksichtigen, dass Dir die Firmware mit ihren 
WLAN Funktionen und Interrupts dazwischen funkt. Das wird die Messung 
ein bisschen verzerren (jedoch nicht den Millisekunden-Zähler).
Gast #5623592
Lesenswert?

Könnte sein, dass du zufällig gute, oder gleich versetzte
Quarzfrequenzen hast.
Ohne Abgleich wären 30...50  ppm Abweichung nicht ungewöhnlich.

Wie groß ist denn das "definierte Delay"?
In einer Sekunde siehst du noch nix.
Bei 50 ppm Differenz und ms-Auflösung wird der Unterschied
erst nach > 20 s Messzeit langsam deutlich.
Moderator (Firma: Titel) Persönliche Seite #5623715
Lesenswert?

Pete schrieb:
> Sind die Quarze und CPUs wirklich so präzise und identisch?
Die Abweichungen, die die Hersteller mit 30..50ppm angeben, sind über 
den kompletten Betriebstemperaturbereich hinweg. Wenn du beide Quarze 
auf Zimmertemperatur hast, dann ist die Abweichung vom Soll und damit 
untereinander wesentlich geringer als 1/1000 (1s Messdauer, 1ms 
Auflösung).
Aber selbst wenn du den einen Teilnehmer in die Gefriertruhe und den 
Anderen in den Backofen legst, wird diese grobe Auflösung (ausser der 
latent vorhandenen einen ms) keine Unterschiede zeigen. Du müsstest di 
Messzeit da schon mal um den Faktor 1000 aufbohren, um eine bessere 
Messauflösung zu bekommen.

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren