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

Местный
  
Группа: Участник
Сообщений: 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 ?
|
|
|
|
|
 |
Ответов
|
Apr 23 2014, 07:38
|
Местный
  
Группа: Участник
Сообщений: 226
Регистрация: 10-07-09
Пользователь №: 51 126

|
Цитата(Golikov A. @ Apr 23 2014, 09:23)  DEFAULT_VAL равно не нулю, а тому чему оно должно быть равно для сохранения верных значений записываемых битиков.... Тогда уже лучше написать DEFAULT_VAL_MASK, где все биты с атрибутом RES должны быть нулями, а устанавливаемые флаги единицами... а не DEFAULT_VAL... Я не ради докопаться... просто на другом форуме вопрошающий уже выдал непонимание происходящего...
Сообщение отредактировал HHIMERA - Apr 23 2014, 07:39
|
|
|
|
|
Apr 23 2014, 07:49
|
Гуру
     
Группа: Свой
Сообщений: 10 713
Регистрация: 11-12-04
Пользователь №: 1 448

|
Цитата(HHIMERA @ Apr 23 2014, 11:38)  Тогда уже лучше написать DEFAULT_VAL_MASK, где все биты с атрибутом RES должны быть нулями, а устанавливаемые флаги единицами... Их нельзя нулями. По мануалу нужно сохранять состояние после сброса. То есть "честное" формирование DEFAULT_VAL должно быть таким: reg_def_val = reg | <все флаги типа w0c> или reg_def_val = reg & ~<все флаги типа w1c> Не уверен, что кто-то так делает, конечно  Цитата(Golikov A. @ Apr 23 2014, 10:23)  я чет не припомню проца где это было нужно (в смысле где часть битов надо было оставлять 0, а часть 1, обычно все одинаковые) Бывает, хотя в статусных регистрах тоже не встречал.
|
|
|
|
|
Apr 23 2014, 10:29
|
Местный
  
Группа: Участник
Сообщений: 226
Регистрация: 10-07-09
Пользователь №: 51 126

|
Цитата(aaarrr @ Apr 23 2014, 10:49)  Не уверен, что кто-то так делает, конечно  Да... сомнения присутствуют... А по поводу... Цитата По мануалу нужно сохранять состояние после сброса. Примеры SPL это отвергают напрочь... т.е. всё на совести и знаниях кодера...
|
|
|
|
Сообщений в этой теме
MaxiMuz Обработчик прерывания срабатывает сразу после запуска таймера Apr 18 2014, 13:11 KnightIgor Цитата(MaxiMuz @ Apr 18 2014, 14:11) При ... Apr 18 2014, 15:18 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   ViKo Цитата(aaarrr @ Apr 23 2014, 10:49) Их не... Apr 23 2014, 08:32 Golikov A. да я тоже часто в ПЛИС делают некоторые резервные ... Apr 23 2014, 15:13 HHIMERA Цитатаесли их трогать скорее всего ничего не будет... Apr 23 2014, 17:54 MaxiMuz Задача своевременного запуска обработчика таймера ... Apr 25 2014, 11:30
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|