Изучаем STM32 Cortex M3
20.04.2014, 23:46
|
|
|
Временная регистрация
Регистрация: 12.03.2005
Адрес: Москва
Сообщений: 61
Сказал спасибо: 42
Сказали Спасибо 0 раз(а) в 0 сообщении(ях)
|
Re: Изучаем STM32 Cortex M3
Не было печали - купила баба порося. А мужик купил STM32F3 плату. И к ней энкодер, который подключил к TIM4 (PD12 и 13). Руководствуясь Reference manual RM0316, написал следующее:
RCC-›APB1ENR |= RCC_APB1ENR_TIM4EN;//Включаем тактирование TIM4
/***** Конфигурирую порт D: PD.0 - PD.6, PD.12, PD.13 *****/
PortD -› MODER = 0x0A001555; // PD.12, PD.13 как альтернативные
PortD -› OTYPER = 0x00000000; // Пуш-пуль
PortD -› OSPEEDR = 0x00000000; // 2 МГц
PortD -› PUPDR = 0x05401555; // Подтяжка вверх
void Init_Encoder (void) // Конфиг таймера в реж. энкодера
{ NVIC_EnableIRQ (TIM4_IRQn); // Разрешить прерывание
TIM4-›CCER = TIM_CCER_CC1P | TIM_CCER_CC2P; // инвертировать входной сигнал
TIM4-›CCMR1 = TIM_CCMR1_CC1S_0 | TIM_CCMR1_CC2S_0; // Подключить счётчик к PortD.12 и PortD.13
TIM4-›SMCR = TIM_SMCR_SMS_0 | TIM_SMCR_SMS_1; // Счёт по фронту и спаду
TIM4 -› ARR = 0x0004; // Reload counter
TIM4 -› DIER = 1; // Разрешить прерывание
TIM4-›CR1 |= TIM_CR1_CEN; //Старт счета таймера
}
void TIM4_IRQHandler (void) // Обработка прерывания
{ TIM4-›SR &= ~TIM_SR_UIF;
........................... }
Цель - щелчок энкодера зажигает следующий LED в кругу на плате в зависимости от направления вращения. Но чудо не произошло. В дебагере (Keil) видно - счётчик TIM4_CNT не считает. Почему? Что я не доучёл?
|
|
|
|
21.04.2014, 14:39
|
|
|
Гражданин KAZUS.RUN
Регистрация: 06.04.2010
Адрес: Санкт-Петербург - Волжский
Сообщений: 528
Сказал спасибо: 73
Сказали Спасибо 56 раз(а) в 45 сообщении(ях)
|
Re: Изучаем STM32 Cortex M3
Сообщение от sergeyye
|
|
PortD -› MODER = 0x0A001555; // PD.12, PD.13 как альтернативные
|
а разве у входного пина может быть альтернативный режим ?
Сообщение от sergeyye
|
TIM4-›CCER = TIM_CCER_CC1P | TIM_CCER_CC2P; // инвертировать входной сигнал
TIM4-›CCMR1 = TIM_CCMR1_CC1S_0 | TIM_CCMR1_CC2S_0; // Подключить счётчик к PortD.12 и PortD.13
TIM4-›SMCR = TIM_SMCR_SMS_0 | TIM_SMCR_SMS_1; // Счёт по фронту и спаду
|
а здесь я думаю вместо присваивания все же лучше поставить включение битов "|="
|
|
|
|
Сказали "Спасибо" MaxiMuz79
|
|
|
21.04.2014, 16:00
|
|
|
Гражданин KAZUS.RUN
Регистрация: 06.04.2010
Адрес: Санкт-Петербург - Волжский
Сообщений: 528
Сказал спасибо: 73
Сказали Спасибо 56 раз(а) в 45 сообщении(ях)
|
Re: Изучаем STM32 Cortex M3
А грамотно ли в обработчике вот так:
Сообщение от sergeyye
|
|
TIM4-›SR &= ~TIM_SR_UIF;
|
сбрасывать флаги прерывания ? Ведь получается три операции: чтение - модификация -запись. Если после чтения до записи произойдет еще событие которое приведет к установке другого бита , то он будет потерян!
|
|
|
|
Сказали "Спасибо" MaxiMuz79
|
|
|
21.04.2014, 16:30
|
|
|
Временная регистрация
Регистрация: 12.03.2005
Адрес: Москва
Сообщений: 61
Сказал спасибо: 42
Сказали Спасибо 0 раз(а) в 0 сообщении(ях)
|
Re: Изучаем STM32 Cortex M3
[QUOTE=MaxiMuz79;795657]а разве у входного пина может быть альтернативный режим ?QUOTE]
Не знаю. Как до дома доберусь - сразу переопределю как входы и отпишусь.
С остальными замечаниями полностью согласен. В оригинале у меня все операции как присвение. Это мне здесь предложили переделать для пущей понятности.
До дома добрался. Переопределил как обычные входы. Не работает!
Последний раз редактировалось sergeyye; 21.04.2014 в 20:40.
|
|
|
|
21.04.2014, 19:18
|
|
|
Почётный гражданин KAZUS.RUN
Регистрация: 13.10.2007
Адрес: Беларусь
Сообщений: 8,026
Сказал спасибо: 60
Сказали Спасибо 3,941 раз(а) в 2,302 сообщении(ях)
|
Re: Изучаем STM32 Cortex M3
Сообщение от MaxiMuz79
|
А грамотно ли в обработчике вот так:
сбрасывать флаги прерывания ? Ведь получается три операции: чтение - модификация -запись. Если после чтения до записи произойдет еще событие которое приведет к установке другого бита , то он будет потерян!
|
Не грамотно. Грамотно через битбандинг, но это слишком сложно для обычных "программистов", которые хвалятся что у них на освоение нового контроллера уходит максимум пара недель. Да и в SPL битбандинг не прописан, нужно ручками
|
|
|
|
21.04.2014, 21:33
|
|
|
Почётный гражданин KAZUS.RUN
Регистрация: 08.06.2008
Сообщений: 1,393
Сказал спасибо: 4
Сказали Спасибо 183 раз(а) в 167 сообщении(ях)
|
Re: Изучаем STM32 Cortex M3
Сообщение от MaxiMuz79
|
А грамотно ли в обработчике вот так:
сбрасывать флаги прерывания ? Ведь получается три операции: чтение - модификация -запись. Если после чтения до записи произойдет еще событие которое приведет к установке другого бита , то он будет потерян!
|
Где Вы тут чтение увидели? Что тут пропадет ?
|
|
|
|
21.04.2014, 21:50
|
|
|
Почётный гражданин KAZUS.RUN
Регистрация: 08.06.2008
Сообщений: 1,393
Сказал спасибо: 4
Сказали Спасибо 183 раз(а) в 167 сообщении(ях)
|
Re: Изучаем STM32 Cortex M3
Хм, чтение есть. Прошу пардона. Значаит еще все впереди - когда нить сделают операции с памятью "чтение - модификация - запись"
|
|
|
|
22.04.2014, 11:27
|
|
|
Заблокирован
Регистрация: 22.04.2014
Сообщений: 0
Сказал спасибо: 15
Сказали Спасибо 366 раз(а) в 284 сообщении(ях)
|
Re: Изучаем STM32 Cortex M3
Сообщение от niXto
|
|
Не грамотно. Грамотно через битбандинг, но это слишком сложно для обычных "программистов", которые хвалятся что у них на освоение нового контроллера уходит максимум пара недель. Да и в SPL битбандинг не прописан, нужно ручками
|
Сегодня купил Дискавери F051. Хочу освоить за пару недель. Что мне делать с битбандингом? Его отдельно покупать нужно или он уже есть на плате?
|
|
|
|
22.04.2014, 11:32
|
|
|
Гуру портала
Регистрация: 06.05.2005
Адрес: Краснодар, возле укротворного моря.
Сообщений: 19,313
Сказал спасибо: 2,633
Сказали Спасибо 12,076 раз(а) в 6,082 сообщении(ях)
|
Re: Изучаем STM32 Cortex M3
Сообщение от STM32F0
|
|
Что мне делать с битбандингом? Его отдельно покупать нужно или он уже есть на плате?
|
Очень похоже на
"Скачала файл из интернета, а он оказался не нужен. Как закачать его обратно?"
__________________
Не бейте больно, ежели чо, ну не удержался... А вааще,
"Мы за все хорошее, против всей х..., По лугам некошеным чтобы шли ступни,
Чтобы миром правила правда, а не ложь, Мы за все хорошее, нас не на...!
..." (Ленинград)
Я не несу ответственности за свои действия в Вашей голове.
|
|
|
|
22.04.2014, 11:38
|
|
|
Заблокирован
Регистрация: 22.04.2014
Сообщений: 0
Сказал спасибо: 15
Сказали Спасибо 366 раз(а) в 284 сообщении(ях)
|
Re: Изучаем STM32 Cortex M3
Не совсем понял! Хотите сказать, что niXto соврал? Тогда я совсем запутался.
|
|
|
|
Ваши права в разделе
|
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения
HTML код Выкл.
|
|
|
Часовой пояс GMT +4, время: 11:51.
|
|