Изучаем STM32 Cortex M3
22.04.2014, 11:42
|
|
|
Гуру портала
Регистрация: 27.10.2008
Адрес: ЕС
Сообщений: 10,821
Сказал спасибо: 919
Сказали Спасибо 4,289 раз(а) в 2,570 сообщении(ях)
|
Re: Изучаем STM32 Cortex M3
Битбанг в данном случае нужен как собаке пятая нога. Но тема интересная, да. ))
|
|
|
|
22.04.2014, 11:56
|
|
|
Заблокирован
Регистрация: 22.04.2014
Сообщений: 0
Сказал спасибо: 15
Сказали Спасибо 366 раз(а) в 284 сообщении(ях)
|
Re: Изучаем STM32 Cortex M3
Спасибо,Easyrider83! Извиняюсь великодушно, что попался по незнанию на выхлоп незнающего юзера.
|
|
|
|
22.04.2014, 16:12
|
|
|
Прохожий
Регистрация: 20.12.2013
Сообщений: 4
Сказал спасибо: 0
Сказали Спасибо 0 раз(а) в 0 сообщении(ях)
|
Re: Изучаем STM32 Cortex M3
Вот только вчера такую же тему осилил, у вас какой энкодер, у меня оптика 600 импульсов, буду на движке использовать. Если не секрет как у вас переполнение таймера обрабатывается?
Сообщение от sergeyye
|
|
Не было печали - купила баба порося. А мужик купил STM32F3 плату. И к ней энкодер, который подключил к TIM4 (PD12 и 13). Руководствуясь Reference manual RM0316, написал следующее:
|
Кстати по поводу сброса флагов прерываний, читал я читал и так и не понял, похоже что некоторые флаги сбрасываются записью единицы, а некоторые в частности UIF, сбрасываются нулем????
|
|
|
|
22.04.2014, 16:24
|
|
|
Гуру портала
Регистрация: 20.11.2004
Сообщений: 9,979
Сказал спасибо: 928
Сказали Спасибо 2,261 раз(а) в 1,557 сообщении(ях)
|
Re: Изучаем STM32 Cortex M3
Bmax77, Читать даташит :
1.3 Peripheral availability
For peripheral availability and number across all sales types, please refer tothe datasheet.
read/write (rw) Software can read and write to these bits.
read-only (r) Software can only read these bits.
write-only (w) Software can onlywrite to this bit. Reading the bit returns the reset value.
always read at "0" (w_r0) Writing '0' has no effect. Writing '1' starts an action (for example resets a
flag...).
read/clear (rc_w1) Software can read as well as clear this bit by writing 1. Writing ‘0’ has no effect
on the bit value.
read/clear (rc_w0) Software can read as well as clear this bit by writing 0. Writing ‘1’ has no effect
on the bit value.
read/clear by read (rc_r) Software can read this bit. Reading this bit automatically clears it to ‘0’. Writing
‘0’ has no effect on the bit value.
read/set (rs) Software can read as well as set this bit. Writing ‘0’ has no effect on the bit
value.
Reserved (Res.) Reserved bit, must be kept at reset value.
__________________
Осторожно , злой кот
|
|
|
|
22.04.2014, 16:38
|
|
|
Прохожий
Регистрация: 20.12.2013
Сообщений: 4
Сказал спасибо: 0
Сказали Спасибо 0 раз(а) в 0 сообщении(ях)
|
Re: Изучаем STM32 Cortex M3
Скопирую себе эту шпаргалку, не стоит так уж всех и сразу слать в даташит, инфа что вы дали (кстати оч большое спасибо) содержится в референс мануал (нашел, когда узнал что искать).
Сообщение от dosikus
|
Bmax77, Читать даташит :
1.3 Peripheral availability
For peripheral availability and number across all sales types, please refer tothe datasheet.
read/write (rw) Software can read and write to these bits.
read-only (r) Software can only read these bits.
write-only (w) Software can onlywrite to this bit. Reading the bit returns the reset value.
always read at "0" (w_r0) Writing '0' has no effect. Writing '1' starts an action (for example resets a
flag...).
read/clear (rc_w1) Software can read as well as clear this bit by writing 1. Writing ‘0’ has no effect
on the bit value.
read/clear (rc_w0) Software can read as well as clear this bit by writing 0. Writing ‘1’ has no effect
on the bit value.
read/clear by read (rc_r) Software can read this bit. Reading this bit automatically clears it to ‘0’. Writing
‘0’ has no effect on the bit value.
read/set (rs) Software can read as well as set this bit. Writing ‘0’ has no effect on the bit
value.
Reserved (Res.) Reserved bit, must be kept at reset value.
|
|
|
|
|
22.04.2014, 20:19
|
|
|
Временная регистрация
Регистрация: 12.03.2005
Адрес: Москва
Сообщений: 61
Сказал спасибо: 42
Сказали Спасибо 0 раз(а) в 0 сообщении(ях)
|
Re: Изучаем STM32 Cortex M3
Сообщение от Bmax77
|
|
у вас какой энкодер
|
Квадратурный. Но не для движка, а который переключатель или регулятор. Не знаю, как правильно сказать.
Сообщение от Bmax77
|
|
Если не секрет как у вас переполнение таймера обрабатывается?
|
Будет ли вам прок от моего обработчика. Это просто тест для энкодера.
А он, собака, не тестится. Пока. Но победа будет за нами!
void TIM4_IRQHandler (void);
void TIM4_IRQHandler (void)
{ TIM4 -› SR = 0; // Сброс флага прерывания
Light = PortE -› ODR; // Ножки порта Е (там у меня 8 светодиодов вкруг) в регистр
if (TIM_CR1_DIR == 1) // Если флаг направления =1, а горит последний светодиод,
if (Light == 0x8000) Light = 0x0100; // то включаю первый.
else Light = Light ‹‹ 1; // В противном случае - делаю сдвиг и
else
{ if (Light == 0x0100) Light = 0x8000;
else Light = Light ›› 1; }
PortE -› ODR = Light; // выкладываю новое значение обратно в порт Е.
}
|
|
|
|
23.04.2014, 09:30
|
|
|
Прохожий
Регистрация: 20.12.2013
Сообщений: 4
Сказал спасибо: 0
Сказали Спасибо 0 раз(а) в 0 сообщении(ях)
|
Re: Изучаем STM32 Cortex M3
Сообщение от sergeyye
|
|
Будет ли вам прок от моего обработчика.
|
Да немного не мой случай.
У меня тоже 3я даскавери, вот как у меня настроен порт и таймер настраиваются для энкодера:
//-------------------------------- настройка порта A
RCC-›AHBENR |= RCC_AHBENR_GPIOAEN;
GPIOA-›MODER |= GPIO_MODER_MODER0_1 | GPIO_MODER_MODER1_1;
GPIOA-›AFR[0] |= (0x01UL ‹‹ (0 * 4)) | (0x01UL ‹‹ (1 * 4));
GPIOA-›PUPDR |= GPIO_PUPDR_PUPDR4_1;
//-------------------------------- настройка таймера 2 на энкодер
RCC-›APB1ENR |= RCC_APB1ENR_TIM2EN;
TIM2-›PSC = 25; //Делитель частоты тактирования
TIM2-›ARR = encstp; //Значение до которого считает таймер
TIM2-›CR1 = TIM_CR1_UIFREMAP;
TIM2-›EGR = TIM_EGR_UG;
TIM2-›SR &= ~TIM_SR_UIF;
TIM2-›CCER = TIM_CCER_CC1P | TIM_CCER_CC2P;
TIM2-›CCMR1 = TIM_CCMR1_CC1S_0 | TIM_CCMR1_CC2S_0;
TIM2-›SMCR = TIM_SMCR_SMS_0 ;//| TIM_SMCR_SMS_1; настраивается как считается энкодер по одной фазе или по двум (4 отсчета на щелчек)
TIM2-›CR1 |= TIM_CR1_CEN;//Включение счета таймера
|
|
|
|
23.04.2014, 10:32
|
|
|
Гражданин KAZUS.RUN
Регистрация: 04.08.2006
Сообщений: 911
Сказал спасибо: 28
Сказали Спасибо 180 раз(а) в 139 сообщении(ях)
|
Re: Изучаем STM32 Cortex M3
Сообщение от STM32F0
|
|
Сегодня купил Дискавери F051. Хочу освоить за пару недель. Что мне делать с битбандингом? Его отдельно покупать нужно или он уже есть на плате?
|
Как правило, в прерывании это не нужно. Дело в том, что одно прерывание, как правило, обрабатывает одно периферийное устройство. Поскольку прерывание может прервать только прерывание более высокого уровня, то, как правило, не должна нарушится атомарность обращения. В том редком случае, когда одно устройство обслуживается несколькими прерываниями, у вас два варианта: либо не заморачиваться и назначить равные приоритеты на эти прерывания, либо обеспечить атомарность любым способом. Например через битбандинг.
http://we.easyelectronics.ru/STM32/s...t-banding.html
|
|
|
|
23.04.2014, 10:54
|
|
|
Заблокирован
Регистрация: 22.04.2014
Сообщений: 0
Сказал спасибо: 15
Сказали Спасибо 366 раз(а) в 284 сообщении(ях)
|
Re: Изучаем STM32 Cortex M3
Сообщение от SasaVitebsk
|
|
обеспечить атомарность любым способом.
|
Это всё понятно. Сюда просто перелили веяния элха, там это только что обсуждалось.
А нет в STM32F0XX битбандинга, засада!
|
|
|
|
23.04.2014, 11:18
|
|
|
Временная регистрация
Регистрация: 12.03.2005
Адрес: Москва
Сообщений: 61
Сказал спасибо: 42
Сказали Спасибо 0 раз(а) в 0 сообщении(ях)
|
Re: Изучаем STM32 Cortex M3
Сообщение от Bmax77
|
|
У меня тоже 3я даскавери
|
Bmax77: Обратите внимание, что на РА.0 висит синяя кнопочка. А на ней ёмкость. Может сильно затягивать фронт енкодера.
|
|
|
|
Ваши права в разделе
|
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения
HTML код Выкл.
|
|
|
Часовой пояс GMT +4, время: 05:21.
|
|