[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [avr-gcc-list] "Volatile"
From: |
Douglas Dotson |
Subject: |
Re: [avr-gcc-list] "Volatile" |
Date: |
Fri, 15 Apr 2005 17:39:06 -0700 (PDT) |
You need to read up on critical sections and
mutual exclusion. Using the "Volatile" keyword
has nothing to do with the problem you are having.
Easirst solution is to disable interupts while
modifying the flag.
Doug
--- Keith Gudger <address@hidden> wrote:
> Those of us on this list all know the "volatile"
> drill - it's FAQ #1.
> This is sort of the same issue, and I'm wondering if
> the code that "got
> me" is as obvious as the other volatile stuff.
>
> I have a volatile variable, "Flags", that is set and
> cleared in many
> routines, including an interrupt. Here is the
> disassembly for the
> Flags_Clear function:
>
> 00000f3e <Flags_Clear>:
> f3e: 98 2f mov r25, r24
> f40: 90 95 com r25
> f42: 80 91 a4 00 lds r24, 0x00A4
> f46: 89 23 and r24, r25
> ; <- interrupt here
> f48: 80 93 a4 00 sts 0x00A4, r24
> f4c: 08 95 ret
>
> The interrupt occured right before f46, and set the
> flag. The interrupt
> pushed and popped r24 & r25's values, so when the
> interrupt returned to
> f46, the flags were restored to their *previous*
> state (the flag unset!
> Ack! I'm screwed!)
>
> Two questions: 1) Is this something I should have
> learned in Embedded
> 101? If so, I"ll slink quitely away... and if
> not.. 2) How would the
> experts on this list have prevented this?
>
> Thank you.
> Keith
>
>
>
> _______________________________________________
> AVR-GCC-list mailing list
> address@hidden
>
http://lists.nongnu.org/mailman/listinfo/avr-gcc-list
>
- Re: [avr-gcc-list] "Volatile", (continued)
- Re: [avr-gcc-list] "Volatile", David Kelly, 2005/04/18
- Re: [avr-gcc-list] "Volatile", David Brown, 2005/04/19
- RE: [avr-gcc-list] "Volatile", stevech, 2005/04/20
- Re: [avr-gcc-list] "Volatile", Colin Paul Gloster, 2005/04/20
- Re: [avr-gcc-list] "Volatile", E. Weddington, 2005/04/20
- Re: [avr-gcc-list] 'Volatile', Mike Murphree, 2005/04/20
- RE: [avr-gcc-list] "Volatile", Geoffrey Wossum, 2005/04/20
- Re: [avr-gcc-list] "Volatile", E. Weddington, 2005/04/18
- Re: [avr-gcc-list] "Volatile", David Brown, 2005/04/18
RE: [avr-gcc-list] "Volatile", Dave Hansen, 2005/04/15
Re: [avr-gcc-list] "Volatile",
Douglas Dotson <=
Re: [avr-gcc-list] "Volatile", Graham Davies, 2005/04/15
RE: [avr-gcc-list] "Volatile", David Harper, 2005/04/15
Re: [avr-gcc-list] "Volatile", Dean Hall, 2005/04/17