dear avr-veterans,
i'm totally new to avr and microcontrollers in general. after two weeks playing around with an AT90CAN128 connected to a custom-made board that i got from work, i tried to write a tiny program which is supposed to send an external interrupt as soon as a logical change on a pin connected to a fuse is detected, i.e. if i pull out the fuse. if interrupt is detected, a LED should lighten.
when i debug, atmel studio shows me that everything is workin fine, every bit is set as i think it should be and even an interrupt flag is passed when i provoke a logical change on the concerning pin.
the thing is - it won't jump to the interrupt
routine and i just can't figure out why!
with polling method everything is working fine, the pin reacts. it just seems to have a severe aversion against being interrupted :/
i'd be really glad if some people could suggest something!
thank you very much in advance!!!
.include"can128def.inc" ;include file ;-------------------------------------------------- ; interrupt vector table ; (only INT1 enabled, every other interrupt will return to reset-label and reenable all interrupts) ; jmp reset ; Reset Handler reti ; IRQ0 Handler jmp interrupt1routine ; IRQ1 Handler reti ; IRQ2 Handler reti ; IRQ3 Handler reti ; IRQ4 Handler reti ; IRQ5 Handler reti ; IRQ6 Handler reti; IRQ7 Handler reti ; Reset Handler reti; IRQ0 Handler reti; IRQ1 Handler reti; IRQ2 Handler reti ; IRQ3 Handler reti ; IRQ4 Handler reti ; IRQ5 Handler reti ; IRQ6 Handler reti ; IRQ7 Handler reti ; Timer2 Compare Handler reti ; Timer2 Overflow Handler reti ; Timer1 Capture Handler reti; Timer1 CompareA Handler reti; Timer1 CompareB Handler reti; Timer1 CompareC Handler reti; Timer1 Overflow Handler reti; Timer0 Compare Handler reti; Timer0 Overflow Handler reti; CAN Handler reti; CAN Timer Overflow Handler reti ; SPI Transfer Complete Handler reti; USART0 RX Complete Handler reti; USART0,UDR Empty Handler reti; USART0 TX Complete Handler reti; Analog Comparator Handler reti; ADC Conversion Complete Handler reti; EEPROM Ready Handler reti; Timer3 Capture Handler reti; Timer3 CompareA Handler reti; Timer3 CompareB Handler reti; Timer3 CompareC Handler reti; Timer3 Overflow Handler reti; USART1 RX Complete Handler reti; USART1,UDR Empty Handler reti; USART1 TX Complete Handler reti ; TWI Interrupt Handler reti ; SPM Ready Handler ;---------------------------------------------------- reset: ;start here after reset ; ldi r16, LOW(RAMEND) ;set up stack out SPL, r16 ; ldi r16, HIGH(RAMEND) ; out SPH, r16 ; ; ldi r16, 0x00 ; set PORT D to input out DDRD, r16 ;(this is where INT1 is, out PIND, r16 ; connected to the fuse) ; ldi r16, 0xff ; set PORT A to output out DDRA, r16 ;(here are the LEDs) ldi r16, 0x00 ; all lights of PORT A off out PORTA, r16 ; ; ldi r16, (1<<ISC10) ; mask the isc to react to sts EICRA, r16 ; logical changes ; ldi r16,(1<<INT1) ; activate INT01 out EIMSK, r16 ; ; sei ; enable interrupts in SREG ;-------------------------------------------------- interrupt1routine: in r16, SREG ; save status register sbi PORTA, 1 ; light LED at PA1 out SREG, r16 ; restore status register reti ; return and reeanable ints