24.02.2015, 18:00
|
|
Частый гость
Регистрация: 24.02.2015
Сообщений: 11
Сказал спасибо: 4
Сказали Спасибо 0 раз(а) в 0 сообщении(ях)
|
STM32F100 + Two Timer + Encoder
Всем привет. А кто-нибудь пробовал соединять последовательно таймеры в режиме Encoder, чтобы повысить разрядность до 32 bit? Если соединять как написано в примерах, то один работает нормально как энкодер, т.е. младший TIM (Master) и up, и down; а вот старший TIM (Slave) только up при каждом проходе через 0. Или возможно ли как-нибудь сделать, чтобы Slave Timer был двунаправленным. При Overflow — был up, а при Underflow — down? Думаю многие не раз сталкивались, но поиск не помог. Находил подобные вопросы, но решение нигде не предлагалось.
|
|
|
|
25.02.2015, 07:59
|
|
Почётный гражданин KAZUS.RU
Регистрация: 13.10.2007
Адрес: Беларусь
Сообщений: 8,048
Сказал спасибо: 60
Сказали Спасибо 3,954 раз(а) в 2,309 сообщении(ях)
|
Re: STM32F100 + Two Timer + Encoder
Нельзя сделать т.к. выход только один
|
|
|
|
25.02.2015, 14:20
|
|
Частый гость
Регистрация: 24.02.2015
Сообщений: 11
Сказал спасибо: 4
Сказали Спасибо 0 раз(а) в 0 сообщении(ях)
|
Re: STM32F100 + Two Timer + Encoder
Ну может другие какие-нибудь идеи. У меня только 4 пока:
1) сделать прерывание по переходу через ноль и вручную проверять overflow или underflow, НО контроллер теоретически будет подвисать (постоянно уходить в прерывание) в случае дребезга в районе перехода через 0, вероятность мала, но всё же есть
2) задействовать два физических Output у этого же таймера и подключить ко входу другого, НО это потерять 4 дополнительных ноги контроллера, что особенно в маленьких корпусах очень неудобно, у меня нет столько свободных портов
3) каждый цикл программы допустим N мс корректировать счётчик, чтобы не доходил до краев, при этом даже не надо второй таймер, НО есть шанс потерять данные, при очень высокой скорости энкодера, то есть за N мс не должно быть более половины разрешения счётчика отсчётов
4) программный энкодер, НО контроллер выполняет кучу других операций и этот вариант никак не подходит
Мне более всего нравится 3й вариант, НО может у кого еще есть идеи?
|
|
|
|
25.02.2015, 14:43
|
|
Почётный гражданин KAZUS.RU
Регистрация: 13.10.2007
Адрес: Беларусь
Сообщений: 8,048
Сказал спасибо: 60
Сказали Спасибо 3,954 раз(а) в 2,309 сообщении(ях)
|
Re: STM32F100 + Two Timer + Encoder
Не забываем про чтение-модификация-запись
|
|
|
|
25.02.2015, 14:46
|
|
Частый гость
Регистрация: 24.02.2015
Сообщений: 11
Сказал спасибо: 4
Сказали Спасибо 0 раз(а) в 0 сообщении(ях)
|
Re: STM32F100 + Two Timer + Encoder
Это как? Конкретнее? пожалуйста
|
|
|
|
25.02.2015, 22:23
|
|
Вид на жительство
Регистрация: 14.06.2009
Адрес: Україна Київська обл. м.Буча
Сообщений: 327
Сказал спасибо: 104
Сказали Спасибо 105 раз(а) в 69 сообщении(ях)
|
Re: STM32F100 + Two Timer + Encoder
Я делал так:
Код:
|
new_position = (&TCD0)-›CNT;
position_carriage+= (new_position - old_position_carriage); |
Это код для иксмеги.
|
|
|
Сказали "Спасибо" Djakovskij
|
|
|
25.02.2015, 22:34
|
|
Почётный гражданин KAZUS.RU
Регистрация: 08.06.2008
Сообщений: 1,394
Сказал спасибо: 4
Сказали Спасибо 183 раз(а) в 167 сообщении(ях)
|
Re: STM32F100 + Two Timer + Encoder
Может попробовать взять STM32105, там 32 битный таймер есть, и все будет проще?
|
|
|
Сказали "Спасибо" Boba_spb
|
|
|
26.02.2015, 06:55
|
|
Частый гость
Регистрация: 24.02.2015
Сообщений: 11
Сказал спасибо: 4
Сказали Спасибо 0 раз(а) в 0 сообщении(ях)
|
Re: STM32F100 + Two Timer + Encoder
Сообщение от Djakovskij
|
Я делал так:
Код:
|
new_position = (&TCD0)-›CNT;
position_carriage+= (new_position - old_position_carriage); |
Это код для иксмеги.
|
Ну это почти третий вариант. Спасибо. Думаю так и буду делать.
|
|
|
|
26.02.2015, 06:57
|
|
Частый гость
Регистрация: 24.02.2015
Сообщений: 11
Сказал спасибо: 4
Сказали Спасибо 0 раз(а) в 0 сообщении(ях)
|
Re: STM32F100 + Two Timer + Encoder
Сообщение от Boba_spb
|
Может попробовать взять STM32105, там 32 битный таймер есть, и все будет проще?
|
Ну у меня в наличии только STM32F100 и плата готова, а так спасибо, на будущее учту. Просто я энкодер поменял на более точный и перемещения стали больше, что не позволяет уложиться в стандартные 16 bit
|
|
|
|
26.02.2015, 10:19
|
|
Почётный гражданин KAZUS.RU
Регистрация: 08.06.2008
Сообщений: 1,394
Сказал спасибо: 4
Сказали Спасибо 183 раз(а) в 167 сообщении(ях)
|
Re: STM32F100 + Two Timer + Encoder
Озвучили б параметры - скоко импульсов на оборот и какая скорость вращения будет.
|
|
|
|
Ваши права в разделе
|
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения
HTML код Выкл.
|
|
|
Часовой пояс GMT +4, время: 01:02.
|
|