Jag fick tidigare hjälp av Erixon med interrupt på ATMega16. Nu vill jag göra samma sak med ATMega128 men det funkar inte. TCNT1L stegas upp men det blir aldrig något interupt.
Kanske är det något skitfel någonstans eller också har jag missuppfattat rubbet.
/Harald
.include "m128def.inc"
;.device ATMega128
.def Temp = r24
.cseg
.org 0x0000
rjmp RESET
.org 0x0018 ;cpu hoppar hit vid interupt Compare Match
rjmp timer1_m
RESET:
ldi r16,low(RAMEND) ;initiera stackpointer
out SPL,r16 ;initiera stackpointer
ldi r16,high(RAMEND) ;initiera stackpointer
out SPH,r16 ;initiera stackpointer
ldi Temp,0x00
out TCCR1A,Temp ;Nollställ
ldi Temp,0x0C ;Bit 3 och 4 ettor för enable av "compare match"
out TCCR1B,Temp
ldi Temp,0b10000000 ;sätt bit 7 till 1 för att enabla Timer/Counter2
out TIMSK,Temp
ldi Temp,0x3D ;61 decimalt
out OCR1AH,Temp
ldi Temp,0x09 ;OCR1AH och OCR1AL bildar ett 16-bitarstal som
out OCR1AL,Temp ;blir 15625. Det talet x 256 blir 4000 000 vilket
sei ;är klockfrekvensen. Dvs det blir ett interupt
;varje sekund
…
timer1_m:
inc r20
reti