[fpc-devel] AVR embedded Atmega 328p interrupts

Andrew Haines andrewd207 at aol.com
Mon Nov 30 23:57:09 CET 2015


On 11/29/2015 06:54 PM, Jeppe Johansen wrote:
> Don't use noreturn. It signals to the compiler that your function will 
> not return (i.e. do an infinite loop).

Ok, this is good to know.
>
> Use the interrupt directive for interrupt handlers. That makes them 
> emit the iret instruction instead of ret to return from the interrupt. 
> If you don't use that when you return from the ISR it will not have 
> interrupts enabled. That's why it only blinks once.

This is also good to know. Interrupts are new to me. On a side note the 
procedure is called repeatedly using the noreturn keyword, but I'll 
change it to interrupt.

I had not used "interrupt" because this warning was emitted when I used it:
project1.lpr(139,25) Warning: Calling convention directive ignored: 
"OldFPCCall"

>
> Only enable interrupts that you have written handlers for otherwise 
> they end up in the default handler which is an infinite loop as you saw.
> TIMER0_COMPB and TIMER0_OVF are not called because you don't set 
> OCIE0B or OCIE0A in TIMSK0.

This makes sense.

Thanks very much for your input!

Andrew



More information about the fpc-devel mailing list