[vz-dev] Timestamp < Sekunde, durch AVR-NET-IO

Jakob Hirsch jh at plonk.de
Tue Jan 25 11:44:41 CET 2011


Jakob Hirsch, 2011-01-12 10:31:

> Soweit ich das in ntp.c sehe, werden nur die Sekunden gesetzt, und in
> clock.c die ticks auch nicht zurückgesetzt, was m.E. gemacht werden
> sollte. Ich trage das mal rüber in die e6-Liste...

Scheint dort keinen zu interessieren.

Naja, ich hab jetzt einen 32.768Hz-Quartz am AVR und clock umgebaut.
Prescaler ist auf 1 (bzw. nix) gesetzt, d.h. die ISR wird ca. alle
1/128s = 7,8125ms aufgerufen.
Die Kurve sieht dann so aus: http://plonk.de/scrap/vz2.jpg (zwei
Wattmeter, einer mit 1000/s, einer mit 2000s)
Das Gezappel sieht erstmal wild aus, aber das sind ja Schwankungen von
0,2 bis 0,3W. Bei entsprechender Skalierung sieht das schöner aus:
http://plonk.de/scrap/vz3.jpg

Problem bei der Sache war noch, daß ich Temperaturfühler über 1w
auslese, und das schaltet für die Zeit der Abfrage Interrupts aus, da 1w
recht zeitkritsch ist (Impulslängen von 5 bzw. 59µs). Die Abfragen
dauern einige Hundert ms, d.h. die clock hinkte nach jeder Abfrage um
diese Zeit hinterher. Ich hab mal testweise die cli()s abgeschaltet, 1w
funktioniert weiterhin problemlos und die clock läuft ganz gut. Es sind
immer noch Abweichungen von ca. 20ms beim ntp sync da, allerdings bei
jedem Aufruf (auch kurz hintereinander), könnte also noch ein Fehler in
meinem Code oder auch einfach nur der Anzeige sein. Schau ich mir mal
noch an.

Wenn's jemand ausprobieren möchte:
https://github.com/jahir/ethersex/tree/hires_time


Gruß
J


More information about the volkszaehler-dev mailing list