Цитата
он ругается на переменную data [],
а это массив у меня, а не переменная. И с чего- это я его не использую?
а массив типа не переменная что ли? ))
и всё-же где инициализация порта? как-то немного странно...
Код
и, что он в данном случае наоптимизировал? Выкинул мой массив? Посчитал, что он мне не нужен?
ну а зачем он нужен, если вы всё кладете в нулевой элемент? его в таком случае можно заменить одной переменной типа char, но это ведь всё равно не объясняет почему перестаёт исполняться putString("AT+CSQ\r"); //уровень приема сигнала
что-то тут не то... может таки по прерыванию проц прыгает Бог знает куда?
Не думаю, что IAR на столько плох, что даёт Warning просто так... что там с hasinput() ?
Может быть она сразу, на этапе компиляции, разворачивается в false и весь if ( hasinput() ) выкидывается?
Это может произойти, к примеру, если флаг(который, как я понимаю, проверяет hasinput()) не объявлен с volatile(поднимается то флажок в прерывании).
В общем, кажется, вы запамятовали, что все глобальные переменные, с которыми ведется работа в обработчике прерывания - должны быть volatile...
Но всё это не объясняет исчезновения putString("AT+CSQ\r");.... тут надо как-то повнимательнее посмотреть что к чему...
The truth is out there...