ВходНаше всё Теги codebook 无线电组件 Поиск Опросы Закон Понедельник
8 июля
240051
Андрей83 (21.02.2011 00:59, просмотров: 6756)
Еще попытка... 1. Сторожевой таймер на 53 либо не пашет вообще, либо не дает программе запуститься. При установке 1 в WDTEN - МК сбрасывается через 16 мс независимо от состояния всех остальных битов.Данная хрень в программной эмуляции не наблюдается. При установке 0 в WDTEN и 1 в HWDT - типа "Hardware Mode" - всё наоборот: МК вообще не сбрасывается, хотя должен. 2. Обработка прерываний стала херить глобальные переменные (в 8252 такого не было). bit cond1,cond2; unsigned char A,B; void timer0_ISR (void) interrupt 1 using 1{ cond1=(A>5); cond2=(A<15); if (cond1&cond2) { Делаем ППЦ какую критическую обработку!!! } } void timer1_ISR (void) interrupt 3 using 2{ B=A+1; } Столкнулся с очень трудноуловимым глюком: Если к примеру происходит прерывание таймера-1 в момент расчета значения cond2 то при возврате в обработчик таймера-0 значение cond1 оказывается равным нулю, хотя была еденица. Значение A=10 при этом сохраняется.