[vz-dev] Pinkoniguration
Jens Wilmer
volkszaehler at jenswilmer.de
Tue May 11 02:31:22 CEST 2010
Hallo Andreas,
Am 10.05.2010 23:02, schrieb Andreas Hubel:
> Ah okay, das erklärt auch warum auf den Folien vom Easterhegg die Rede von nem ATmega644(p) für Interrupt support notwendig ist.
>
Genau, da hier die PinChange Interrupts vorhanden sind. In Deutschland
sind drei Phasen in einer Wohnung nicht zu ungewöhnlich und da bietet es
sich natürlich an, diese auch getrennt auszuwerten, um schon etwas
differenzierter messen zu können, ohne das irgendwelche Leistung
verloren geht.
> Der "normale" Prozessor der beim Net IO dabei war, kann nur auf zwei dedizierten Pins Interrupts und nicht nen ganzen Port.
>
Naja, eigentlich auch auf drei Pins, aber einer wird von Interrupt des
Ethernetchips verwendet, bleiben nur noch 2 freie.
> 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...
Bis bald,
Jens Wilmer
More information about the volkszaehler-dev
mailing list