14.11.2013, 18:06
|
|
Почётный гражданин KAZUS.RU
Регистрация: 27.01.2005
Адрес: Россия, КЧР, Нижний Архыз
Сообщений: 3,646
Сказал спасибо: 117
Сказали Спасибо 814 раз(а) в 591 сообщении(ях)
|
Генерирование меандра с заданным количеством импульсов
Что-то я запутался маленько в документации на таймеры STM32F103.
Я вот задумал "сделать красиво" управление шаговыми двигателями: т.е. на тактовый вход драйвера ШД подавать меандр, генерируемый таймером микроконтроллера "автоматически". При этом период таймера задает период шагов, а величина в CCR1 (задаваемая, может быть, даже через DMA) дает количество шагов.
Хочется, чтобы прерывание выдавалось после окончания счета (CCR1), а выход CH1 таймера инвертировался на каждый такт декремента CCR1.
Я так понял, что мне не обойтись без CCR2, который собственно и будет считать нужное количество импульсов. А в CCR1 писать автообновляемое значение "1".
Вопрос: а нельзя ли обойтись только одним CCR1? Т.е. настроить таймер так, чтобы CH1 инвертировался на каждый декремент CCR1, а не по достижению нуля?
__________________
Если ты пользуешься Windows, то ты финансируешь мировой терроризм!
|
|
|
|
14.11.2013, 18:08
|
|
Гуру портала
Регистрация: 27.10.2008
Адрес: ЕС
Сообщений: 10,835
Сказал спасибо: 919
Сказали Спасибо 4,308 раз(а) в 2,573 сообщении(ях)
|
Re: Генерирование меандра с заданным количеством импульсов
MOSI не подойдет?
|
|
|
|
14.11.2013, 19:09
|
|
Почётный гражданин KAZUS.RU
Регистрация: 27.01.2005
Адрес: Россия, КЧР, Нижний Архыз
Сообщений: 3,646
Сказал спасибо: 117
Сказали Спасибо 814 раз(а) в 591 сообщении(ях)
|
Re: Генерирование меандра с заданным количеством импульсов
Сообщение от Easyrider83
|
MOSI не подойдет?
|
Хм, а это идея. Но я не уверен, что у меня свободный будет: SPI мне тоже нужен будет (один - точно, а возможно даже оба).
Можно было бы решить "в лоб", как я на пиках делал когда-то: тупо счетчик, прерывание его декрементирует, один пин инвертируется. Но что-то это некрасиво получится. Да и прерывания чаще будут возникать. А таймер, судя по всему, умеет так делать.
__________________
Если ты пользуешься Windows, то ты финансируешь мировой терроризм!
|
|
|
|
14.11.2013, 19:13
|
|
Гуру портала
Регистрация: 27.10.2008
Адрес: ЕС
Сообщений: 10,835
Сказал спасибо: 919
Сказали Спасибо 4,308 раз(а) в 2,573 сообщении(ях)
|
Re: Генерирование меандра с заданным количеством импульсов
I2C, UART? Чииииик?
|
|
|
|
14.11.2013, 19:18
|
|
Почётный гражданин KAZUS.RU
Регистрация: 27.01.2005
Адрес: Россия, КЧР, Нижний Архыз
Сообщений: 3,646
Сказал спасибо: 117
Сказали Спасибо 814 раз(а) в 591 сообщении(ях)
|
Re: Генерирование меандра с заданным количеством импульсов
Сообщение от Easyrider83
|
I2C, UART? Чииииик?
|
У меня пока макетка с всего лишь 64-мя ножками. Катастрофически не хватает ног (а мне еще Холлов надо полтора десятка куда-то прилепить - придется, наверное, вешать на коммутатор). Ну и с UART'ом, например, будут другие проблемы: во-первых, нет гарантии, что все импульсы будут идти с одинаковыми промежутками (т.е. между словами не будет больших пауз), а во-вторых, надо будет как-то отсчитывать нужное количество бит, отправленных в линию.
Завтра еще поковыряюсь с таймером: вдруг получится с использованием двух счетных регистров (в одном будет 1, автоматически обновляющаяся, а второй будет считать импульсы и давать прерывание, как они кончатся).
__________________
Если ты пользуешься Windows, то ты финансируешь мировой терроризм!
|
|
|
|
14.11.2013, 20:56
|
|
Заблокирован
Регистрация: 25.04.2013
Сообщений: 1,431
Сказал спасибо: 0
Сказали Спасибо 385 раз(а) в 254 сообщении(ях)
|
Re: Генерирование меандра с заданным количеством импульсов
Может не совсем понял задачу, но просятся два таймера. Соединяются цепочкой (мастер-слэйв), один формирует временное окно, второй выплёвывает заданное количество импульсов, в пределах окна, с заданными параметрами. Соль, перец и ДМА по вкусу. Всё хардварно, без прерываний, пнул и можно не беспокоиться, как только окно закончится, слэйв таймер тормознётся автоматически.
|
|
|
|
14.11.2013, 22:30
|
|
Почётный гражданин KAZUS.RU
Регистрация: 27.01.2005
Адрес: Россия, КЧР, Нижний Архыз
Сообщений: 3,646
Сказал спасибо: 117
Сказали Спасибо 814 раз(а) в 591 сообщении(ях)
|
Re: Генерирование меандра с заданным количеством импульсов
Сообщение от nahimovv
|
Всё хардварно, без прерываний, пнул и можно не беспокоиться, как только окно закончится, слэйв таймер тормознётся автоматически
|
Без прерываний нельзя: по окончанию перемещения нужно установить сигнал EN в единицу, чтобы с двигателя снялось напряжение (иначе эта собака, выделяющая до 60! ватт, все ~22 литра азота из криостата выпарит довольно быстро).
С двумя таймерами как-то еще сложнее выглядит. Я-то поначалу думал, что можно вообще только одним счетным регистром обойтись.
Ну, завтра попробую - отпишусь, как сделал (если меня опять не будут весь день дергать туда-сюда).
__________________
Если ты пользуешься Windows, то ты финансируешь мировой терроризм!
|
|
|
|
14.11.2013, 22:40
|
|
Заблокирован
Регистрация: 25.04.2013
Сообщений: 1,431
Сказал спасибо: 0
Сказали Спасибо 385 раз(а) в 254 сообщении(ях)
|
Re: Генерирование меандра с заданным количеством импульсов
Сообщение от eddy
|
Без прерываний нельзя: по окончанию перемещения нужно установить сигнал EN в единицу, чтобы с двигателя снялось напряжение (иначе эта собака, выделяющая до 60! ватт, все ~22 литра азота из криостата выпарит довольно быстро).
|
Дык, "хазяин- барин"! Как окно закроется флаг UPD встанет, можно и прерывание прикрутить. А можно, надо только посмотреть эпюры сигнала, и выход таймера окна заюзать, такой себе хардваре-энэблэ.
|
|
|
|
22.11.2013, 15:41
|
|
Почётный гражданин KAZUS.RU
Регистрация: 27.01.2005
Адрес: Россия, КЧР, Нижний Архыз
Сообщений: 3,646
Сказал спасибо: 117
Сказали Спасибо 814 раз(а) в 591 сообщении(ях)
|
Re: Генерирование меандра с заданным количеством импульсов
В общем, реализовать нормально не получилось: где-то я что-то промухал.
Сделал генерацию ШИМ со счетчиком импульсов в прерывании. Работает. Но уныло это: хотелось все полностью автоматизировать. Чтение мануала не помогло. По-моему, так сделать не получится.
__________________
Если ты пользуешься Windows, то ты финансируешь мировой терроризм!
|
|
|
|
22.11.2013, 22:04
|
|
Почётный гражданин KAZUS.RU
Регистрация: 25.05.2010
Адрес: г. Королёв
Сообщений: 8,497
Сказал спасибо: 30
Сказали Спасибо 3,072 раз(а) в 2,013 сообщении(ях)
|
Re: Генерирование меандра с заданным количеством импульсов
По-любасу 2 таймера понадобятся.
Один формирует степ (иначе слишком часто щёлкать будет), другой считает шаги. По переполнению второго прерывание. Степ формировать... да хоть компаратором таймера.
Только зачем отключать? Надо давать ток удержания.
Сообщение от eddy
|
макетка с всего лишь 64-мя ножками
|
Нет, батенька, у Вас целых 64 лапки.
Вот когда их всего шесть, из них 2 питания и 1 сброс, тогда уныло... Да и то - 3 выхода и 2 входа.
|
|
|
|
Ваши права в разделе
|
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения
HTML код Выкл.
|
|
|
Часовой пояс GMT +4, время: 01:14.
|
|