This discussion has been locked.
You can no longer post new replies to this discussion. If you have a question you can start a new discussion

volatile keyword

The application note suggests to wrap a timer tick variable in a function which disables all interrupts, reads and copies the variable into a temp, re-enables interrupts, then returns the temp.

Can the variable be accessed directly outside of the ISR without disabling interrupts if the timer tick variable is declared as "volatile?"

Parents
  • IMHO, "volatile" really _should_ play a role here.

    From the point-of-view of the C language definition, any object whose value may change for reasons not explicitly part of the C program itself (e.g. a counter/timer) should still work as expected, *if* it's declared "volatile". It's in the responsibility of the compiler to ensure that it does.

    For the sake of the 8051, this means that a large fraction of the SFRs should implicitly be considered volatile. If a variable larger than 1 byte is declared "volatile", the compiler would have to turn off interrupts while accessing it automatically. That's one of the effects of the "volatile" qualifier.

Reply
  • IMHO, "volatile" really _should_ play a role here.

    From the point-of-view of the C language definition, any object whose value may change for reasons not explicitly part of the C program itself (e.g. a counter/timer) should still work as expected, *if* it's declared "volatile". It's in the responsibility of the compiler to ensure that it does.

    For the sake of the 8051, this means that a large fraction of the SFRs should implicitly be considered volatile. If a variable larger than 1 byte is declared "volatile", the compiler would have to turn off interrupts while accessing it automatically. That's one of the effects of the "volatile" qualifier.

Children