Пишу прожэкт на 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 может генерить неправильный код... Подскажите более менее нормальную и неглючащую...