Цитата(defunct @ Jul 21 2007, 01:31)

Только сейчас появилась возможность детально посмотреть код.
Код названной вами функции сильно перегружен индексными операциями.
Ответьте на пару вопросов:
1. if(systemFlag.DETECT_FULL_FLAG)
{ hardShowChannel();
systemFlag.DETECT_FULL_FLAG = 0;
}
если закоментировать hardShowChannel(); в этом месте, то проблема исчезает. Верно?
2. Чему равен CSTACK?
3. Чему равен RSTACK?
Функция hardShowChannel() - в вашей программе ведь ничего не делает. ChanCounters (все) всегда == 0, т.о. никакой активности на портах нет. Проблема явно не с питанием, и явно не с M16L. Программа должна одинаково сбоить и на m16 и на m16L. Если есть возможность, бросте мне файлы проекта (*.ewp/ewd), попробую под отладкой.
Хммм ... у меня есть проект где этих индексных операций больше чем в данном проекте, но тем не менее проект работает замечательно.
1. Нет, как раз этот модуль я не выключаю, а вот выключив:
#pragma vector=TIMER2_OVF_vect
__interrupt void timer2Handle(void)
{ //systemFlag.KEYSCAN_FLAG = 1;
}
И сделав условие в главном цикле:
if(systemFlag.TIMER0_FLAG)
вместо
if((systemFlag.TIMER0_FLAG) && (modeWork == 2))
таким образом работает только автоматический режим и программа работает без сбоев.
п.2 так и п.3 ответить не могу так как значения посмотреть не могу по причине того что монитор стека в AVR Studio показывает - disabled
В прилогаемом файле то что вы просили.