volatile го ползвам от времето когато ползвах PIC и HiTech за тази работа. Не бях обръщал внимание че IAR има и _root специално за това. Интересно че не съм виждал това да се ползва в някой от готовите кодове които съм ползвал. Иначе щеше да ми стане интересно какво прави и щях да разбера за него
Мерси за съвета
Но на много места съм срещал точно подхода с vilatile за подобни кричтични към оптимизацията места.
например
for (int i=0; i<1000; i++);
при високите нива на оптимизация се игнорира от повечето компилатори. Просто не се генерира код за това.
подхода които работи май при всички компилатори е
for (volatile int i=0; i<1000; i++);
volatile задължава компилатора при всяко обръщение към i да я чете/пише наистина.