Hello, All!
Блин, ну это какая-то мистика! Ну понимаю что компилятор может глючить, но с такими результатами?!
Делаю програмку, pic16f876a, не для работы- "для дома, для семьи" :) Все работает, пишу дальше, наращиваю. В какой-то момент начинает твориться что-то неладное, наблюдю два глюка.
------------------------------------------------- Глюк 1: Макетка со своим 7805 питается от лабораторного БП. Если при включенном БП просто втыкаю "+" штекер в "+" гнездо - все ОК, никаких проблем. Если включаю включением сети на БП - глюки. Совершенно необьяснимые. Увеличение кондера на MCLR - не помогает. Принудительный сброс (закорачиванием этого кондера) - не помогает. Во фьюзах все что надо включено, кроме пока вотчдога:
__CONFIG ( HS & BOREN & UNPROTECT & WDTDIS & PWRTEN & LVPDIS & WRTDIS );
Проц работает от 20мгц кварца.
Че я только не делал. Потом перекомпилировал при выключеной ассемблерной оптимизации - и все пошло!
--------------------------------------------- Глюк 2: Добавил к программе новый модуль, только начал его писать. В нем определена переменная byte cCNT; Там же определены константы через enum, с которыми она потом сравнивается в головном модуле. В хедере, она описана extern byte сСNT; Включаю этот хедер в головной модуль (где main) - наблюдаю глюки. Делаю наоборот - определяю переменую в головном модуле, а в новом прописываю ее как extern - глюков нет!
Самое главное - в main эта переменая несколько раз проверяется, сравнивается с константами, и от этого делаются переходы. Но (!) - тот модуль еще не дописан, т.е. эта переменная обнуляется (принудительно) в самом начале и больше нигде не изменяется. Но программа как будто делает эти переходы (проверялось их комментированием).
Тут уже выключение оптимизации не помогает, только перенос описания переменной в головной модуль.
------------------------------------------ Все это, происходит при компилировании ХайТеком 9.50, при компилировании
8.01 PL3 - этих всех глюков нет!Ну, средство заставить программу работать найдено, но я не могу понять особенно первого глюка - почему поведение зависит от того, как подавать питание? И ресет не помогает никак. Получается как в преферансном анекдоте: - господа, у меня не сыграл козырный туз!
- раскладец батенька, раскладец.
With best regards, Alexander Torres. 2:461/28, E-mail: snipped-for-privacy@yahoo.com [а ночью мы снова, уйдем эскадроном..]