[vz-dev] Messungenauigkeit
Jens Wilmer
volkszaehler at jenswilmer.de
Fri Dec 3 13:37:35 CET 2010
Hallo zusammen,
Am 03.12.2010 11:12, schrieb Jakob Hirsch:
>>> Fragt sich nur, was "50 ticks entprechen ca ner sekunde" bedeutet. Nicht
>>> daß wir da eine Auflösung vorgaukeln, die garnicht gegeben ist.
>>> Hab mir den Controller-Code bisher nicht angeschaut, aber was didi
>>> beschrieben hat, hört sich ja nicht so wild an. Oder spricht was dagegen?
>> klingt für mich auch lösbar - muss halt Jemand machen...
> Gemach. Der NET-IO ist bestellt, wenn der programmiert ist geht's los. :)
> Naja, mal schauen, wie ich damit zurecht komme.
Die Ethersex Periodic Aufrufe sind halt stark last abhängig, Man kann
sie sich in Millisekunden Auflösung bestellen und die entsprechende
Routine wird dann ca. 1000 mal pro Sekunde aufgerufen (Zum, Beispiel um
die Pins zu pollen); wenn sie kurz genug ist. Wenn noch etwas anderes
passiert, z.B. ein Impuls versandt wird, sind es eben nur noch 200 mal
pro Sekunde oder vielleicht noch weniger. Dazu kommt, dass sie nicht mit
der Zeit synchronisiert ist, man muss also immer noch die Sekunde, auf
die sich der Wert bezieht mit speichern. Wenn man dann in der
Impulserkennung den Millisekundenwert 995 findet und die Sekunden nicht
zusammenpassen, muss man entsprechend von 0 ausgehen.
Es gab allerdings auch schon einen anderen Ansatz, der den Timer
verwendet hat, um ungefähr 50tel Sekunden zu messen und noch jede
Sekunde einen Interrupt auszulösen. Diese Zeitbasis läuft zumindest
regelmäßig, wenn auch immer noch nicht synchron zur Zeit. Im Interrupt
könnte man dann schauen, ob die Timer-Uhr noch zur Zeit Uhr passt und
eventuell ein wenig korrigieren. In der Impuls Erkennung kann man dann
direkt die ungefähr 50tel Sekunden aus dem Zählerstand auslesen.
Der Timer Interrupt hat allerdings eine höhere Priorität als der
Impulserkennungsinterrupt (Pin-Change) und so könnte dort wieder etwas
verloren gehen; wenn man sich da etwas beschränkt, sollte es aber gehen.
Das man eine Genauigkeit vorgaukelt, die eigentlich nicht da ist, ist
richtig, das liegt aber einfach daran, dass hier der Tacho durch einen
Durchflusssensor am Tank gesteuert wird.
[...NTP...]
> Dito. Läuft der bei ethersex denn im Hintergrund?
Bei Ethersex gibt es keinen wirklichen Hintergrund. Die Interrupt
Routinen könnte man vielleicht noch so nennen. Aber er wird auch hin und
wieder in der Hauptschleife aufgerufen, wie alles andere auch.
Dazu kann man jetzt sagen, dass er im Hintergrund läuft, aber wenn er
sich entschließt mal wieder seinen Server nach der Zeit zu fragen, kommt
das gerade zu verschickende Impuls-Paket wieder eine halbe Sekunde
später an...
Bis bald,
Jens Wilmer
More information about the volkszaehler-dev
mailing list