Email: Password: Remember Me | Create Account (Free)

Back to Subject List

Old thread has been locked -- no new posts accepted in this thread
???
03/17/05 19:25
Read: times


 
#89879 - Common Solutions
Responding to: ???'s previous message
Erik Malund said:
my rule re ISR/main sharing of variables is
if both can write to a byte or the variable is longer than a byte, it may only be accessed in main code with interrupts disabled.

That is the most common and most robust rule to solve the shared data problem - it effectively makes a sequence of instructions atomic. Its only disadvantage is that it increases the worst case interrupt latency.There are other solutions including semaphors and queues but these are less reliable.
The problem here is that when coding in C, the variable may be hidden if that rule is observed. qwerty &= 0xf0; may seem "atomic" but is not, in assembly mov a,qwerty, and a,#0f0h, mov qwerty,a is easy to recognize as non-atomic.

Another reason why proper knowledge of assembly is essential for embedded programming.

Ian



List of 38 messages in thread
TopicAuthorDate
DS5250 Lockup in ISR's With Priority            01/01/70 00:00      
   Update:            01/01/70 00:00      
      Software Bug            01/01/70 00:00      
      using what            01/01/70 00:00      
         register banks            01/01/70 00:00      
            Shared Data Problem            01/01/70 00:00      
            What stops?            01/01/70 00:00      
               timer isr stops            01/01/70 00:00      
                  Hunting down the ghost            01/01/70 00:00      
   Using different banks            01/01/70 00:00      
      Can't be            01/01/70 00:00      
         stack            01/01/70 00:00      
            more on ISRs            01/01/70 00:00      
         DS5240 has a 1k stack.            01/01/70 00:00      
            but are you using it            01/01/70 00:00      
               Stack            01/01/70 00:00      
   ISRs with Own Register Banks.            01/01/70 00:00      
      Good Questions on ISR's            01/01/70 00:00      
         Shared Data            01/01/70 00:00      
         Not a given            01/01/70 00:00      
            Variable in isr            01/01/70 00:00      
               Sometimes true            01/01/70 00:00      
                  Atomic Operations            01/01/70 00:00      
                     re explosive bytes            01/01/70 00:00      
                        Common Solutions            01/01/70 00:00      
                           Stop's the timer            01/01/70 00:00      
                              Code            01/01/70 00:00      
                        Explosions everywhere            01/01/70 00:00      
                           atomic explosions            01/01/70 00:00      
                              Unreal Time Explosions            01/01/70 00:00      
               Look at the ASM            01/01/70 00:00      
         I have had a very similar problem            01/01/70 00:00      
      ASM instructions & USING            01/01/70 00:00      
         Please do tell us....            01/01/70 00:00      
            Do I really have to?            01/01/70 00:00      
            Brian, Michael            01/01/70 00:00      
               ASM instructions & USING            01/01/70 00:00      
         probably not the case here            01/01/70 00:00      

Back to Subject List