Пишу прожэкт на CоdeVisionAVR 1.25.5 под atmega128A.
Столкнулся с проблемой , что по неопределённым причинам портитятся значения локальных переменных. Т.е. проблема выглядит так : ................................................... void modem_control(void) { unsigned char step; unsigned char conflict; unsigned char atc_retry_number; unsigned char repeat; // специально присваиваю значения отдельно от инициализации step=1; atc_retry_number=3; repeat=3; conflict=0;
while (step!=100) { OUT_COM0_CHAR(conflcit); // вывод в уарт переменной conflict. Вместо 0x00 приходит 0xC0 - соответственно выполнение кода сбивается... ..............................................................................
эффект периодический, причину возникновения так и не нашёл, НО смена порядка инициализации переменных меняет и переменную , которая "глючит".. Такая же лажа периодически появляется в функции main. Стека всего то 190/1024 использую. Может оптимизатор глючит- но тогда бы проблема была более менее периодичной...
Проект не то чтобы большой( 10К строк и 20К флеша), но переделывать под другой компилятор долго и осваивать нужно, а время поджимает.
Подскажите где могут быть грабли. Может сама версия нестабильна? Слышал что 1.25.5 может генерить неправильный код... Подскажите более менее нормальную и неглючащую...
|