Geradezu prädestiniert hierfür wäre der Analog-Komparator anstelle des Analog-Digital-Konverters. Dieser Komparator hat zwei Eingänge: AIN0 und AIN1. Je nachdem an welchem Eingang die angelegte Spannung größer ist, ist sein Ausgang 1 oder 0. Im Laufe einer kompletten Umdrehung hättest Du also eine HL- und eine LH-Flanke. Und das beste daran ist, dass Du einen Interrupt von der steigenden, der fallenden oder von beiden Flanken auslösen lassen kannst. In Deinem Fall wäre natürlich nur eine von beiden sinnvoll, wobei es egal sein dürfte ob steigend oder fallend.Irgenwas mit flankenerkennung, hat jemand einen Tip?
Das drumherum würde ich ganz ähnlich machen wie in Deinem Ansatz:
1. Alle 1 Sek. wird eine Variable in der Timer1-ISR hochgezählt.
2. In der ISR vom AD-Komparator wird einfach nur ein Flag gesetzt.
3. In der Hauptschleife wird das Flag abgefragt. Ist es 1, wird aus der Variablen (= vergangene Zeit) nach Deiner Formel die momentan entnommene Leistung errechnet, zur Gesamtenergie 0,0133 kWh addiert, und die Variable sowie das Flag auf 0 gesetzt.
Alle Infos zum Analog-Komparator gibt´s ab Seite 193 im Datenblatt des Mega8!
Lesezeichen