Nosaer 0 27 августа Опубликовано 27 августа · Жалоба Здравствуйте. Начал использовать Mplab и столкнулся с непонятным поведением программы. Переменную "bFlagDataReady" инициализировал в файле tca0.c. Там же по прерыванию изменяю ее значение: bFlagDataReady = true. Согласно отладчику, bFlagDataReady в прерывании выставляется как нужно, но в main.c условие почему то не срабатывает. Хотя согласно отладчику, все выставлено верно(скриншот прилагаю). Как по мне элементарная конструкция, которая ранее никогда не вызывала проблем, но здесь прямо ступор. Возможно другие IDE, которые я использовал ранее, мне прощали какую то мою ошибку. // В Файле tca0.c определяю переменную. И в прерывании меняю статус на true bool bFlagDataReady = false; // В Файле tca0.h extern bool bFlagDataReady; // В файле main.c #include "mcc_generated_files/timer/tca0.h" int main(void) { SYSTEM_Initialize(); while(1) { if(bFlagDataReady == true) // Сюда не заходит { LED.OUTTGL=PIN3_bm; //vDataCalculation(); bFlagDataReady = false; } } } Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
jcxz 240 27 августа Опубликовано 27 августа · Жалоба 2 часа назад, Nosaer сказал: Согласно отладчику, bFlagDataReady в прерывании выставляется как нужно, но в main.c условие почему то не срабатывает. volatile PS: Чего-ж такого сложного в этом volatile, что начинающшие никак его не освоят??? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться