[an error occurred while processing this directive]
|
В первой версии платы заводил сигнал на прерывание INT0, всё работало, софт был отлажен.
Но пришлось сделать переделку платы, понадобилось ещё прерывание, поэтому завёл прежний сигнал на вход T2EX (P1.1), по которому можно организовать прерывание таймера 2.
Софт в связи с этим претерпел простые переделки.
Обработчик прерывания изменился только добавлением сброса флага прерывания:
void int_t2ex() interrupt 5 using 2
{
EXF2 = 0;
// ... то что было раньше ...
}
Инициализация в начале программы изменил так:
// IT0 = 1; // было
// EX0 = 1; // было
EXEN2 = 1; // разрешаю вход T2EX
ET2 = 1; // разрешаю прерывания таймера 2
EA = 1; // было, разрешаю прерывания
В симуляторе если дёрнуть пин порта P1.1, то прерывание возникает и всё симулируется как надо. Однако физический "прогон" показывает, что прерываний при наличии меандра частотой 4800 Гц на входе T2EX нету!
Если программно установить флаг прерывания EXF2, то всё, конечно, прерывается (однократно) и работает как в симуляторе, так и реально.
Чего не хватает? Или контроллер дохлый?
Софт пишу в Keil 8.02.
E-mail: info@telesys.ru