Миландр

Ключевым подразделением нашей компании является Центр Проектирования интегральных микросхем
Текущее время: 2017-дек-14 16:16

Часовой пояс: UTC + 3 часа




Начать новую тему Ответить на тему  [ 1 сообщение ] 
Автор Сообщение
СообщениеДобавлено: 2016-сен-22 14:36 
Не в сети

Зарегистрирован: 2014-фев-12 12:31
Сообщения: 31
Откуда: Москва
Добрый день всем!

Имеется следующая ситуация: использую один таймер (MDR_TIMER3), все каналы таймера настроены в режиме ШИМ, но фактически выдаются на выводы микросхемы только 3 первых канала. 4-й канал используется для формирования прерываний при совпадении таймера с определенным значением (т.е. прерывание по CCR==CNT или, иначе, CCR_REF_EVENT). Кроме того, на данном таймере разрешены прерывания по ARR.
Обнаружено, что при определенных значениях CCR прерывание по CCR перестают вызываться и бит CCR_REF_EVENT в регистре статуса не устанавливается.

Прилагаю проект для отладочной платы на 1986ВЕ91Т (2010г., видимо, rev4). В проекте сделано все, как описано выше, плюс в обработчике прерывания по CCR_REF_EVENT значение CCR4 каждый раз увеличивается на 1 (разумеется, при переходе значения через ARR оно сбрасывается в 1). Если запустить проект на выполнение, то видно, что сначала нормально обрабатываются оба прерывания (и ARR и CCR), но при значении таймера ~60 обработчик CCR перестает выполняться и бит в статусе больше не взводится. Данная ситуация наблюдается как в отладчике, так и при обычном исполнении. При каждом вызове обработчика по CCR, выдается 1 на вывод PA13 и видно, что в какой-то момент он перестает взводится.
По неизвестным мне причинам после первой загрузки в плату программа не начинает работать пока не будет дан Reset. При работе в отладчике программа работает сразу после загрузки.

Помогите найти решение данной проблемы. Может и моя ошибка, но я ничего плохого не вижу.

PS.
Проект не требует никаких библиотек.
В проекте инициализируется EXT_INT2, т.к. я сначала подозревал, что сбой связан с ним, но сейчас это прерывание отключено.
PPS. Также обнаружено, что при CCR=0 прерывание по CCR также не вызывается никогда. Так задумано? Если да, то желательно внести в документацию. (Также и то, что при ARR=0 прерывания по ARR не происходят).


Вложения:
Комментарий к файлу: Проект для Keil
TIMER3_CCR4.zip [1.19 МБ]
Скачиваний: 94
Вернуться к началу
 Профиль  
 
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ 1 сообщение ] 

Часовой пояс: UTC + 3 часа


Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 5


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Перейти:  
Powered by phpBB® Forum Software © phpBB Group
Русская поддержка phpBB