----- 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
