Hallo,
ohne ganz genau zu wissen was ich da mache habe ich mal inline asm in meinem früheren geposteten Programm probiert. Die wenigen Befehle sind einfach nur aus dem Debounce Beispiel vom RN-Wissen kopiert. Scheint aber zu funktionieren. Ohne Gewähr und mit zitternden Knien .
Systemtakt = 8MHz, Timer läuft mit 1MHz (Prescaler = 8 ).
Im meinem vorherigen Programm hatte ich eine Anzeigelücke von 16µs. Die ist nun mit der neuen ISR auf 5µs. gesunken.
Code:
On Timer0 Isr_count_overflows Nosave
Isr_count_overflows: 'Ansprung, wenn Timer0 überläuft
!push r16
!in r16,sreg
!Push r16
Timer0_overflows = Timer0_overflows + 1
!pop r16
!out sreg,r16
!pop r16
Return 'Hier vielleicht !RETI ???
Zitat von
radbruch
Zu Rechenzeit in der ISR: Wird "incr Countperoverflow" schneller ausgeführt?
Ich hab es mal im Simulator ausprobiert. INCR braucht 19 Zyklen und die +1 Variante nur 16. Ich war überrascht.
Gruß
Searcher
Lesezeichen