Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Не возникают прерывания таймера 2 от перепада на входе T2EX (P1.1) у ADUC842
Форум разработчиков электроники ELECTRONIX.ru > Микроконтроллеры (MCs) > Все остальные микроконтроллеры
Dimonira
В первой версии платы заводил сигнал на прерывание 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.
Dimonira
Блин, разобрался.
Надо ещё записать 0 в P1.1 (T2EX).
Вопрос снят.
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.