Портал для радиолюбителей и разработчиков электроники · с 2003 годаРеклама на сайте
Найти компонент, схему или даташит

Даташиты, справочник отечественных приборов, схемы с разбором и живой форум


 
Опции темы

STM32F05x TIM6 IRQ

Непрочитано 14.11.2013, 00:52  
artyomugr
Вид на жительство
 
Аватар для artyomugr
 
Регистрация: 05.04.2008
Адрес: Украина, Ахтырка
Сообщений: 302
Сказал спасибо: 148
Сказали Спасибо 31 раз(а) в 30 сообщении(ях)
artyomugr на пути к лучшему
По умолчанию Re: STM32F05x TIM6 IRQ

Исправил пару багов в конфигурации, б*я уже вроде точно все правильно! Но лыжи все равно не едут....

Код:
void Init_PWM(void)
{
	RCC-›APB1ENR |= RCC_APB1ENR_TIM14EN;
	TIM14-›PSC = 1000-1;
	TIM14-›ARR = 0x0000;
  GPIOA-›MODER |= 0x0000;
	GPIOA-›OSPEEDR |= 0x0000;
  GPIOA-›MODER |= 0x0200;
	GPIOA-›PUPDR |= 0x0000;
	GPIOB-›AFR[0] |= (1‹‹4);
 
	TIM14-›CR1 = 0x0001; // tim en
	TIM14-›DIER = 0x0000;
	TIM14-›SR = 0x0000;
	TIM14-›EGR = 0x0003;
	TIM14-›CCMR1 = 0x0060; // pwm mode
	TIM14-›CCER = 0x0001;	// capt/comp out enable
	TIM14-›OR = 0x0000;
}
Реклама:
artyomugr вне форума  
Непрочитано 14.11.2013, 02:12  
artyomugr
Вид на жительство
 
Аватар для artyomugr
 
Регистрация: 05.04.2008
Адрес: Украина, Ахтырка
Сообщений: 302
Сказал спасибо: 148
Сказали Спасибо 31 раз(а) в 30 сообщении(ях)
artyomugr на пути к лучшему
По умолчанию Re: STM32F05x TIM6 IRQ

Встал другой вопрос:

Почему ШИМ не сбрасывается?
Цитата:
TIM14-›CCR1=DATA;
if(++DATA›40000) DATA=0;
ШИМ дошел до максимума , и все...

Вопрос не снят... как то криво ШИМ работает....

[HTML]void Init_PWM(void)
{
RCC-›APB1ENR |= RCC_APB1ENR_TIM14EN;

/*Configure GPIO pin alternate function */
GPIO_PinAFConfig(GPIOA, GPIO_PinSource4, GPIO_AF_4);

//GPIOA-›OSPEEDR |= 0x0000;
GPIOA-›MODER |= 0x0200;
//GPIOA-›PUPDR |= 0x0000;
//GPIOB-›AFR[0] |= (1‹‹4);

//TIM14-›DIER |= 0x0000;
//TIM14-›EGR |= 0x0003;
TIM14-›CR1 |= 0x0080;
TIM14-›CCMR1 |= 0x0064; // pwm mode
TIM14-›ARR = 0x000F;
TIM14-›PSC = 0x000F;
TIM14-›CCER |= 0x0001; // capt/comp out enable
TIM14-›CR1 |= 0x0001; // tim en
}[/HTML]

Как включить альтернативную функцию не используя SPL ?
И как все таки правильно выставить регистры , и в какой последовательности их включить?
А то в нете статей вагон и все говнокодом по пахивают... в каждой статье по разному твердят.

Последний раз редактировалось artyomugr; 14.11.2013 в 02:27.
artyomugr вне форума  
Непрочитано 14.11.2013, 08:09  
dosikus
Гуру портала
 
Аватар для dosikus
 
Регистрация: 20.11.2004
Сообщений: 9,979
Сказал спасибо: 928
Сказали Спасибо 2,261 раз(а) в 1,557 сообщении(ях)
dosikus на пути к лучшему
По умолчанию Re: STM32F05x TIM6 IRQ

Сообщение от artyomugr Посмотреть сообщение
А зачем указатель множится? Или я чего не вкуриваю?
С Вашего кода получается: сдвинуть на 168 бит на 7 непонятно чего
И почему так: (7‹‹(24*7)) ?
Опечатка (7‹‹(4*7)).
Это я USART настраивал.
__________________
Осторожно , злой кот
dosikus вне форума  
Сказали "Спасибо" dosikus
artyomugr (14.11.2013)
Непрочитано 14.11.2013, 10:07  
artyomugr
Вид на жительство
 
Аватар для artyomugr
 
Регистрация: 05.04.2008
Адрес: Украина, Ахтырка
Сообщений: 302
Сказал спасибо: 148
Сказали Спасибо 31 раз(а) в 30 сообщении(ях)
artyomugr на пути к лучшему
По умолчанию Re: STM32F05x TIM6 IRQ

Сообщение от dosikus Посмотреть сообщение
Опечатка (7‹‹(4*7)).
А как его понимать? Сдвинуть на ячейку 28 и записать число 7 ? Или наоборот ?
artyomugr вне форума  
Непрочитано 14.11.2013, 10:48  
dosikus
Гуру портала
 
Аватар для dosikus
 
Регистрация: 20.11.2004
Сообщений: 9,979
Сказал спасибо: 928
Сказали Спасибо 2,261 раз(а) в 1,557 сообщении(ях)
dosikus на пути к лучшему
По умолчанию Re: STM32F05x TIM6 IRQ

artyomugr, Сдвигаем число 7 на 28 бит .

Сначала смотрим в даташит
Цитата:
Table 14. Alternate functions selected through GPIOA_AFR registers for port A
и
Цитата:
Table 15. Alternate functions selected through GPIOA_AFR registers for port B
Например нам нужен выхлоп TIM14 на PA7.
Находим в таблице TIM14_CH1 . Выводу PA7 соответствует AF4 .

Теперь переходи в RM на F051
8.4.9 GPIO alternate function low register (GPIOx_AFRL) (x = A..B)

Для того чтобы выбрать альтернативную функцию для PA7 нужно занести значение AF в соответствующую пину тетраду . Как определилсь выше нам нужна AF4 ее значение 0100: AF4

В итоге нам нужно установить в биты 28-31 значение 4
Имхо, так как регистр поделен на тетрады наглядней такая запись :
(uint32_t)( 4‹‹(4*7) ) где первая 4ка значение AF, 7ка - порядковый номер пина .

Но можно выдрать реализацию из SPL ...
Миниатюры:
Нажмите на изображение для увеличения
Название: af1.png
Просмотров: 63
Размер:	101.7 Кб
ID:	54735   Нажмите на изображение для увеличения
Название: 2013-11-14_103617.png
Просмотров: 64
Размер:	111.6 Кб
ID:	54736  
__________________
Осторожно , злой кот

Последний раз редактировалось dosikus; 14.11.2013 в 13:52.
dosikus вне форума  
Сказали "Спасибо" dosikus
artyomugr (14.11.2013)
Непрочитано 14.11.2013, 11:01  
artyomugr
Вид на жительство
 
Аватар для artyomugr
 
Регистрация: 05.04.2008
Адрес: Украина, Ахтырка
Сообщений: 302
Сказал спасибо: 148
Сказали Спасибо 31 раз(а) в 30 сообщении(ях)
artyomugr на пути к лучшему
По умолчанию Re: STM32F05x TIM6 IRQ

Так я так и обращаюсь....

GPIOA-›AFRL = 0x4000000;

выдает ошибку на AFRL

Я не вкурю что то все равно...

GPIOA-›AFR[0] = 4‹‹(4*7);

Мне так активировать альтернативную функцию?

PS: Спасибо большое за то что возитесь со мной! Форум отличный! И люди приветливые! Ребятки так держать!
artyomugr вне форума  
Непрочитано 14.11.2013, 11:01  
artyomugr
Вид на жительство
 
Аватар для artyomugr
 
Регистрация: 05.04.2008
Адрес: Украина, Ахтырка
Сообщений: 302
Сказал спасибо: 148
Сказали Спасибо 31 раз(а) в 30 сообщении(ях)
artyomugr на пути к лучшему
По умолчанию Re: STM32F05x TIM6 IRQ

GPIOA-›AFR[0] = 4‹‹(4*7); // я такой конструкции еще не встречал...
artyomugr вне форума  
Непрочитано 14.11.2013, 11:13  
artyomugr
Вид на жительство
 
Аватар для artyomugr
 
Регистрация: 05.04.2008
Адрес: Украина, Ахтырка
Сообщений: 302
Сказал спасибо: 148
Сказали Спасибо 31 раз(а) в 30 сообщении(ях)
artyomugr на пути к лучшему
По умолчанию Re: STM32F05x TIM6 IRQ

Сделал так:

Цитата:
void Init_PWM(void)
{
RCC-›APB1ENR |= RCC_APB1ENR_TIM14EN;


GPIOA-›AFR[0] = 4‹‹(4*7);

GPIOA-›MODER |= 0x0200;

TIM14-›CR1 |= 0x0080;
TIM14-›CCMR1 |= 0x0064; // pwm mode
TIM14-›ARR = 0x000F;
TIM14-›PSC = 0x000F;
TIM14-›CCER |= 0x0001; // capt/comp out enable
TIM14-›CR1 |= 0x0001; // tim en
}
Не запускается вообще... ШИМа нету.
artyomugr вне форума  
Непрочитано 14.11.2013, 13:25  
dosikus
Гуру портала
 
Аватар для dosikus
 
Регистрация: 20.11.2004
Сообщений: 9,979
Сказал спасибо: 928
Сказали Спасибо 2,261 раз(а) в 1,557 сообщении(ях)
dosikus на пути к лучшему
По умолчанию Re: STM32F05x TIM6 IRQ

artyomugr, Смотри, я AF настраивал на PA7 , а у тебя на PA4 вроде было.
В итоге (uint32_t)(4‹‹(4*4))
__________________
Осторожно , злой кот

Последний раз редактировалось dosikus; 14.11.2013 в 13:52.
dosikus вне форума  
Непрочитано 14.11.2013, 17:55  
nahimovv
Заблокирован
 
Регистрация: 25.04.2013
Сообщений: 1,427
Сказал спасибо: 0
Сказали Спасибо 381 раз(а) в 251 сообщении(ях)
nahimovv на пути к лучшему
По умолчанию Re: STM32F05x TIM6 IRQ

Сообщение от artyomugr Посмотреть сообщение
Не запускается вообще... ШИМа нету.
И не будет! Не надо гадать на битах в регистрах, надо даташит почитать.
Нет настройки регистра TIM14-›CCR1 и установки бита TIM_BDTR_MOE.
Код:
void GPIO_PinAFConfig(GPIO_TypeDef* GPIOx, uint16_t GPIO_PinSource, uint8_t GPIO_AF)
{
  uint32_t temp = 0x00;
  uint32_t temp_2 = 0x00;
    
  temp = ((uint32_t)(GPIO_AF) ‹‹ ((uint32_t)((uint32_t)GPIO_PinSource & (uint32_t)0x07) * 4)) ;
  GPIOx-›AFR[GPIO_PinSource ›› 0x03] &= ~((uint32_t)0xF ‹‹ ((uint32_t)((uint32_t)GPIO_PinSource & (uint32_t)0x07) * 4)) ;
  temp_2 = GPIOx-›AFR[GPIO_PinSource ›› 0x03] | temp;
  GPIOx-›AFR[GPIO_PinSource ›› 0x03] = temp_2;
    
//    GPIO_PinAFConfig(GPIOA, 13, 5);    
}

//==================================================  ============================
void Init_TIM14(void)
{
RCC-›AHBENR |= RCC_AHBENR_GPIOAEN;
    
GPIOA-›MODER |= (GPIO_MODER_MODER4_1);
GPIOA-›OSPEEDR |= (GPIO_OSPEEDER_OSPEEDR4);
    
GPIO_PinAFConfig(GPIOA, 4, 4);

    
RCC-›APB1ENR |= RCC_APB1ENR_TIM14EN;           // TIM14 clock enable
    
TIM14-›PSC = 0x000F;   
TIM14-›ARR = 0x000F;   
TIM14-›CCR1 = 0x000F;                          // Pulse_Output = ARR - CCR1
    
TIM14-›CCMR1 |= TIM_CCMR1_OC1M_2 | TIM_CCMR1_OC1M_1 | TIM_CCMR1_OC1FE;   // PWM Mode1
   
TIM14-›CCER |= TIM_CCER_CC1E;
TIM14-›BDTR |= TIM_BDTR_MOE;    
    
TIM14-›CR1   |= TIM_CR1_CEN;                   // Counter Enable    

}
nahimovv вне форума  
Сказали "Спасибо" nahimovv
artyomugr (15.11.2013)
 
Опции темы

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

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
stm32 после старта TIM6 сразу прерывание kvark85 ARM 8 04.07.2013 11:22
Комп "видит" винт только после повторной загрузки malkoff2007 Ремонт оргтехники 199 22.10.2011 10:05


Часовой пояс GMT +4, время: 13:33.


Powered by vBulletin® Version 3.8.4
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.