Например TDA7294

Форум РадиоКот • Просмотр темы - После остановки шим, на выходе 1
Форум РадиоКот
Здесь можно немножко помяукать :)





Текущее время: Чт мар 28, 2024 11:25:07

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


ПРЯМО СЕЙЧАС:



Начать новую тему Ответить на тему  [ Сообщений: 2 ] 
Автор Сообщение
Не в сети
 Заголовок сообщения: После остановки шим, на выходе 1
СообщениеДобавлено: Вс мар 26, 2017 12:42:46 
Открыл глаза

Зарегистрирован: Вс авг 02, 2015 18:02:38
Сообщений: 68
Рейтинг сообщения: 0
Всем привет!
stm32f10x
Есть два таймера. По некоему событию, запускаются оба таймера. Первый таймер(Т14) тикает до 5 секунд и уходит в прерывание по переполнению. Второй таймер(Т15) генерит шим для светодиода. То есть пока тикает первый таймер, второй моргает светодиодом. В обработчике прерывания первого таймера я останавливаю и первый и второй таймер. Проблема состоит в том, что иногда, не всегда, после остановки шим, светодиод остаётся гореть постоянно.
Код:
void TIM14_IRQHandler(void){ //ring off
      if(TIM14->SR & TIM_SR_UIF){
            TIM14->SR &= ~TIM_SR_UIF;
      }
      TIM14->CR1 &= ~TIM_CR1_CEN;
      TIM15->CR1 &= ~TIM_CR1_CEN;
      stop_ring = 1;
      ring = 0;
}

//========Control ring(TIMER14)===========
      RCC->APB2ENR |= RCC_APB2ENR_IOPCEN;
      RCC->APB1ENR |= RCC_APB1ENR_TIM14EN;
      TIM14->PSC |= 23999;                     //Prescaler 24000 - 1/ Clock timer 1 kHz
      TIM14->ARR = 5000;                      //Count up to 5000/   5 sec/interrupt
      TIM14->EGR |= TIM_EGR_UG;      //Вызываем Update Event что бы таймер не уходил в прерывание сразу после старта
      __nop();
      __nop();
      TIM14->SR &= ~(TIM_SR_UIF);   
      TIM14->DIER |= TIM_DIER_UIE;
      NVIC_EnableIRQ(TIM14_IRQn);                
//======================
//=========Lamp blink ring(TIMER15)=======
      RCC->APB2ENR |= RCC_APB2ENR_TIM15EN | RCC_APB2ENR_IOPBEN | RCC_APB2ENR_AFIOEN;
      AFIO->MAPR2 |= AFIO_MAPR2_TIM15_REMAP;
      GPIOB->CRH &= ~GPIO_CRH_CNF15_0;
      GPIOB->CRH |= GPIO_CRH_MODE15_0 | GPIO_CRH_CNF15_1; //15 pin port B - altoutPP 10 mHz
      TIM15->PSC = 24000;
      TIM15->ARR = 300;
      TIM15->CCER |= TIM_CCER_CC2E; // Настраиваем таймер на использование 2 канала (т.е. контакта PB15 remap)
      TIM15->CCMR1 |= TIM_CCMR1_OC2M_1 | TIM_CCMR1_OC2M_2;
      TIM15->BDTR |= TIM_BDTR_AOE;
      TIM15->CCR2 = 100;
//======================


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: После остановки шим, на выходе 1
СообщениеДобавлено: Вс мар 26, 2017 16:53:23 
Поставщик валерьянки для Кота

Карма: 16
Рейтинг сообщений: 329
Зарегистрирован: Вт ноя 27, 2007 11:32:06
Сообщений: 2222
Откуда: Tashkent
Рейтинг сообщения: 0
Дело в том, что разряд CEN всего лишь управляет подачей частоты синхронизации на счётчик CNT. Но он не влияет на состояние других регистров.
Для решения проблемы я могу посоветовать отключать альтернативную функцию выхода, либо генерировать Break.


Вернуться наверх
 
Показать сообщения за:  Сортировать по:  Вернуться наверх
Начать новую тему Ответить на тему  [ Сообщений: 2 ] 

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


Кто сейчас на форуме

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


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

Найти:
Перейти:  


Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
Русская поддержка phpBB
Extended by Karma MOD © 2007—2012 m157y
Extended by Topic Tags MOD © 2012 m157y