Yahoo Groups archive

AVR-Chat

Index last updated: 2026-04-28 22:41 UTC

Message

Re: [AVR-Chat] Re: Mixing C and assembly with special requirements.

2012-03-29 by wagnerj@proaxis.com

> --- In AVR-Chat@yahoogroups.com, "Tim Mitchell" <tim@...> wrote:
>> And remember to save SREG in interrupt routines.
> Unless, of course, it isn't modified.  Although usually not the case, it
> is possible to construct an ISR that does not modify SREG.  Take, for
> example, this one that toggles an output on each external interrupt
> (assuming A.7 is set to be an output and that the device supports port bit
> toggling by writing to the PINx register).
>
> .global INT0_vect
> INT0_vect:
>   push r24
>   ldi r24, 0x80
>   out _SFR_IO_ADDR(PINA), r24
>   pop r24
>   reti
>
> Another caveat for ISRs is that you *cannot* rely on r1 being zero in an
> ISR as you can in a "normal" routine.  Moreover, if you call any C
> functions from an ISR (usually not recommended) you must set r1 to zero
> before calling any C function.
>
> Don Kinzer
> ZBasic Microcontrollers
> http://www.zbasic.net
>

Very informative thread! Much appreciated...

Jim Wagner
Oregon Research Electronics

Attachments

Move to quarantaine

This moves the raw source file on disk only. The archive index is not changed automatically, so you still need to run a manual refresh afterward.