реклама на сайте
подробности

 
 
> Обработчик прерывания срабатывает сразу после запуска таймера
MaxiMuz
сообщение Apr 18 2014, 13:11
Сообщение #1


Местный
***

Группа: Участник
Сообщений: 253
Регистрация: 15-04-10
Из: Волгоград
Пользователь №: 56 658



Запрограммировал таймер на отчет временных интервалов:
Код
/* Настройка таймера TIM2 на событие: Прерывание при совпадении с р-ром TIM2_ARR */
    TIM2->ARR=(8000); // загрузка рег-ра для сравнения 366/8000=0,046 Hz
    TIM2->PSC=(65536-1);        // предделитель CK_CNT=24000000/65536=366 Hz
    TIM2->DIER|=(TIM_DIER_UIE); // разрешаем прерывание по срабатыванию таймера
    TIM2->CNT=1;
    TIM2->CR1|=(TIM_CR1_CEN); // Запуск Таймера

/* Разрешение прерывания TIM2 */
    NVIC_EnableIRQ(TIM2_IRQn);

Период србатывания ~21сек.
В обработчике поставил маркер срабатывания:
Код
void TIM2_IRQHandler (void)
{
    u32 i;
    TIM2->SR &=~(TIM_SR_UIF);// сброс ф.прерывания
    SWITCH_PIN(PC8);
}

При запуске программы почемуто сразу срабатывает прерывание. С какого это оно срабатывает , если событие не наступило?
Как сделать чтобы первое срабатывание было только по совпадению с рег-ом ARR ?
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
KnightIgor
сообщение Apr 18 2014, 15:18
Сообщение #2


Знающий
****

Группа: Участник
Сообщений: 643
Регистрация: 29-05-09
Из: Германия
Пользователь №: 49 725



Цитата(MaxiMuz @ Apr 18 2014, 14:11) *
При запуске программы почемуто сразу срабатывает прерывание. С какого это оно срабатывает , если событие не наступило?
Как сделать чтобы первое срабатывание было только по совпадению с рег-ом ARR ?

Сначала вопрос, не под отладчиком ли Вы пробуете: если не предпринять мер, а именно запретить счет таймера во время остановки при отладки, то таймер будет бежать дальше.
Регистры ARR и PSC имеют теневые регистры. Команды записи модифицируют теневые регистры, которые перепишутся в рабочие, когда установится флаг обновления:
Цитата
It can be changed on the fly as this control register is buffered. The new prescaler ratio is taken into account at the next update event.

Это означает, что новые значения регистров, которые Вы записали при инициализации, не действуют, пока не наступит событие переполнения, а оно наступает быстро, т.к. по умолчанию PSC равен нулю.
Действия:
- записать, что надо, прерывание еще не разрешать,
- установить искусственно флаг UG в регистре EGR - это обновит PSC|ARR новыми значениями.
- сбросить установившиеся флаги прерываний
- только теперь разрешить прерывания и запустить таймер.
Go to the top of the page
 
+Quote Post

Сообщений в этой теме
- MaxiMuz   Обработчик прерывания срабатывает сразу после запуска таймера   Apr 18 2014, 13:11
|- - MaxiMuz   Цитата(KnightIgor @ Apr 18 2014, 18:18) С...   Apr 21 2014, 11:15
- - Golikov A.   ЦитатаTIM2->SR &=~(TIM_SR_UIF); и это стои...   Apr 19 2014, 14:31
|- - KnightIgor   Цитата(Golikov A. @ Apr 19 2014, 15:31) и...   Apr 19 2014, 19:03
- - Golikov A.   я к тому что надо писать не TIM2->SR &= ~(...   Apr 19 2014, 21:18
|- - aaarrr   Цитата(Golikov A. @ Apr 20 2014, 01:18) п...   Apr 19 2014, 21:42
|- - Golikov A.   Цитата(aaarrr @ Apr 20 2014, 01:42) Оно н...   Apr 20 2014, 05:53
|- - aaarrr   Цитата(Golikov A. @ Apr 20 2014, 09:53) м...   Apr 20 2014, 09:33
||- - adnega   Цитата(aaarrr @ Apr 20 2014, 13:33) Для о...   Apr 20 2014, 15:05
|||- - Golikov A.   Цитата(adnega @ Apr 20 2014, 19:05) Вряд ...   Apr 20 2014, 17:06
|||- - aaarrr   Цитата(Golikov A. @ Apr 20 2014, 21:06) Д...   Apr 20 2014, 18:20
||- - MaxiMuz   Цитата(aaarrr @ Apr 20 2014, 12:33) Для о...   Apr 21 2014, 12:31
||- - AHTOXA   Цитата(MaxiMuz @ Apr 21 2014, 18:31) Я н...   Apr 21 2014, 20:24
|- - HHIMERA   Цитата(Golikov A. @ Apr 20 2014, 08:53) R...   Apr 23 2014, 00:28
- - AHTOXA   Цитата(MaxiMuz @ Apr 18 2014, 19:11) При ...   Apr 20 2014, 05:24
|- - MaxiMuz   Цитата(AHTOXA @ Apr 20 2014, 08:24) Добав...   Apr 22 2014, 07:44
|- - AHTOXA   У вас прерывание назначено на событие обновления (...   Apr 22 2014, 08:32
|- - MaxiMuz   Цитата(AHTOXA @ Apr 22 2014, 11:32) Надо ...   Apr 22 2014, 09:17
|- - KnightIgor   Цитата(MaxiMuz @ Apr 22 2014, 10:17) тоже...   Apr 22 2014, 09:56
- - MaxiMuz   Выясненно опытным путем с использованием документа...   Apr 22 2014, 10:48
|- - Haamu   Цитата(MaxiMuz @ Apr 22 2014, 14:48) 1. П...   Apr 22 2014, 13:19
- - Golikov A.   ЦитатаНо если я убираю команду TIM2->EGR = TIM_...   Apr 22 2014, 16:51
- - Golikov A.   правильно DEFAULT_VAL равно не нулю, а тому чему о...   Apr 23 2014, 06:23
|- - HHIMERA   Цитата(Golikov A. @ Apr 23 2014, 09:23) D...   Apr 23 2014, 07:38
|- - aaarrr   Цитата(HHIMERA @ Apr 23 2014, 11:38) Тогд...   Apr 23 2014, 07:49
|- - ViKo   Цитата(aaarrr @ Apr 23 2014, 10:49) Их не...   Apr 23 2014, 08:32
|- - HHIMERA   Цитата(aaarrr @ Apr 23 2014, 10:49) Не ув...   Apr 23 2014, 10:29
- - Golikov A.   да я тоже часто в ПЛИС делают некоторые резервные ...   Apr 23 2014, 15:13
- - HHIMERA   Цитатаесли их трогать скорее всего ничего не будет...   Apr 23 2014, 17:54
- - MaxiMuz   Задача своевременного запуска обработчика таймера ...   Apr 25 2014, 11:30


Reply to this topicStart new topic
2 чел. читают эту тему (гостей: 2, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 22nd July 2025 - 16:49
Рейтинг@Mail.ru


Страница сгенерированна за 0.0138 секунд с 7
ELECTRONIX ©2004-2016