[vz-dev] Pinkoniguration
Andreas Hubel
andi at saerdnaer.de
Wed May 12 03:33:19 CEST 2010
Am 11.05.2010 um 02:31 schrieb Jens Wilmer:
>> Ich hab jetzt hier keinen ATmega644(p) da, also werde ich vermutlich doch den Code umschreiben müssen...
>>
> Die Änderungen sollten sich da in Grenzen halten. Da die Pin Interrupts
> pro Pin ausgeführt werden und schon die Flanken detektieren können,
> braucht man in der Interruptroutine nur noch den Puffereintrag schreiben
> (Die Feststellung welcher Pin sich in welche Richtung geändert hat kann
> komplett entfallen, ebenso die Schleife, die Änderungen abfängt, die
> während der Interruptroutine auftreten (Und die immer noch ein kleines
> Zeitfenster zwischen Ende der Schleife und Ende der Interruptroutine
> bietet, in dem theoretisch noch Impulse verloren gehen können.))
> Die Interruptroutine muss nur anders heißen, alle Berechnungen raus, nur
> den Puffer beschreiben. Dazu in der Initialisierung den PullUp auf PD2
> an, und den INT0 auf fallende Flanke konfigurieren und einschalten...
> Fertig...
ja, anbei der resultierende code
http://github.com/saerdnaer/ethersex/blob/zaehler/services/watchasync/watchasync.c
bzw. den entsprechenden commit
http://github.com/saerdnaer/ethersex/commit/0e7e80e477fbec222dc045186d861240349e989d
Das mit dem Pull-up war eigentlich mehr oder weniger try-and-error
Als ich hab zufällig per ecmd port D auf 0 gesetzt und dann hat es funktioniert (hatte nen tail -f auf das webserver log laufen)
Ist natürlich jetzt sehr stark Prozessorspezifisch, aber ich hatte jetzt keine Zeit mich die entsprechnden Abstraktionsmakros einzuarbeiten, die ethersex dazu jetzt evtl. bietet.
Ich denke für den Anfang würden wahrscheinlich einfache Präprozessor Blöcke, die je nach Prozessor den entsprechenden Code wählen reichen...
Man sollte die verschiedenen Varianten mal auf volkszaehler.org dokumentieren. ;-)
Jetzt mal die mein.volkszahler Software auf dem Webserver ans laufen bringen...
MfG Andi
More information about the volkszaehler-dev
mailing list