Also erste Überlegungen:
Timer 0 kann mit einem Prescale von 1028 eine maximal Zeit von 13,15 mS erreichen bis zum Überllaufen
Timer 1 schafft eine Zeit von 3,36s
Meine Idee ist also, den Timer 0 auf einen Prescale von 8 einzustellen, dann ist die Laufzeit zum Overflow 102us. Das Vergleichs Register OCRA0 , stelle ich dann auf 0x64(100);
In der Routine des Vergleichs Vergleichs Interrupts, muss ich dann prüfen ob der Pegel High oder Low war und wie häufig es Überlaufe gab.
Nur mal als Idee.Code:ISR_Compare: inc r16 ; Zähle Überläufe sbic PORTB, 0 ; Prüfe ob Ausgang LOW jmp Pegel_Low sbis PORTB, 1 ; Überprüfe ob Ausgang High jmp Pegel_High ; Wenn nicht setze Ihn High reti Pegel_Low: cpi r16, 0x05 ; Überprüfe ob Wert 5; brne reti ldi r16,0x00 cbi PORTB,0 reti Pegel_High: cpi r16, 0x01 ; Überprüfe ob Wert 1; brne reti ldi r16,0x00 sbi PORTB,0 reti
Timer 1 würde ich als ICP fahren und damit die Messwert Laufzeit erfassen.







Zitieren

Lesezeichen