|
вот последний проект у меня с "глюками" - то вдруг портятся биты, которые в принципе не должны портится. Когда же я делаю вместо битовых переменных быйтовые (unsigned char), то эти проблемки исчезают, но появляются другие - начинает портиться что-то другое. У HI-TECH я ловил очень много глюков (работаю года три с ним).
Первые проблемы были с типом double - если я переменной типа double, находящейся в bank1 присваивал результат какого-то выражения, то оно помещало его не в bank1, а в bank0. Еле нашел этот баг - из-за него затирались другие переменные в bank0, а почему - было непонятно. Искал очень долго у себя в программе ошибку - оказалось ошибка в компиляторе. Но этот баг исправили.
Еще были проблемы при работе со структурами через указатели - тоже ошибки переключения банков (записывалось в другой банк). Его вроде тоже исправили, но симптомы были такие же - вдруг портятся переменные и не понятно почему. Искал очень долго (грешил на свою программу, оказалось - компилятор).
Еще ловил этот компилятор на ошибке при распределении локальных переменных - он неправильно определял области для локальных переменных, в результате чего они "перекрывались" и одновременно работающие локальные переменные занимали один и тот же адрес, в результате чего одна переменная затирала другую. Это наблюдалось, когда у меня была некоторая вложенность локальных переменных - можно определить локальную переменную внутри блока, а внутри этого блока еще один блок с локальной переменной. Когда же я сделал эти переменные глобальными, то ошибка исчезла. Такое же я наблюдал не только в PICC, но и в PICC-18 компиляторе. Вроде как в самой последней версии исправили.
Сейчас же у меня проблема в программе - я использую битовые переменные и локальные и мне кажется, что они иногда портятся (у себя я ошибку не нашел, хотя и не исключаю это). Хочу попробовать на IAR-ском компиляторе.
E-mail: info@telesys.ru