title: is volatile keyword really needed when variable changed in interrupt routine
body: <p>I'm using nrf52 microcontroller (CORTEX 34F) processor. I have a variable check on the main loop which is modified both on the main loop and timer interrupt routine.</p>
  
  <ol>
  <li><p>main loop check if variable is true : </p>
  
  <ul>
  <li><p>execute condition code</p></li>
  <li><p>set variable to false</p></li>
  </ul></li>
  <li>timer interrupt routine set variable to true every 10 ms</li>
  </ol>
  
  <p>without <code>volatile</code> keyword, the code seems not working, but when I set the variable to <code>volatile</code> it seems to work but I'm not convinced because :</p>
  
  <ol>
  <li>first I think cortex M4f doesn't contain data cache memory</li>
  <li>second : this case is handeld by the compiler (arm keil)</li>
  </ol>
  
  <p>any answer please ;</p>
  
  <p>if true execute body code
   2. List item</p>