[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