----- Original Message -----
From: "Lars Noschinski" <[EMAIL PROTECTED]>


> * Lars Noschinski <[EMAIL PROTECTED]> [2005-09-06 21:59]:
> >You must declare the global variable as volatile (or as register), if
> >you want to modify in an ISR.

Wrong - that's neither necessary nor complete (there is just as much of an
issue reading variables as writing them).

>
> Speaking of this, if I have an variable which is initialized during
> startup and only accessed /in/ an ISR, am I on the safe side, if don't
> declare it as volatile, right?
>

Right.

The point is that you need to use "volatile" if the data may change or be
used without the compiler knowing it.  If a function uses a variable, and
may be interrupted by an ISR which also uses that same variable, then the
variable should be volatile - but otherwise, there is no need for it to be
volatile.  So a variable that is only used in an ISR is safe.  If the main
function has interrupts turned off (either globally, or the specific ISR
interrupt enable), then it can happily use a non-volatile variable shared
with the ISR.

mvh.,

David.




_______________________________________________
AVR-GCC-list mailing list
[email protected]
http://lists.nongnu.org/mailman/listinfo/avr-gcc-list

Reply via email to