аппаратное прерывание!

kuncevalex
Offline
Зарегистрирован: 19.11.2015

Здравствуйте!! Я начинающий программист!! Перерыл все и не нашел как с помощью переполнения упралять шим! Суть в том, что мне надо с помощью пульта управлять двигателем или шаговым, или ПТ что бы он плавно трогался при 1 нажатой кнопки, а при 2 плавно останавливался, а при нажатии на 3 что бы крутился в другую сторону! Для этого я использую микросхему L293D! Заранее спасибо!

Клапауций 322
Offline
Зарегистрирован: 31.12.2015

ебануться!

 

dhog1
Offline
Зарегистрирован: 01.03.2016

Тот случай, когда очень хочется присоединиться к мнению предыдущего уважаемого комментатора.

Yarik.Yar
Offline
Зарегистрирован: 07.09.2014

программист уровень: начинающий.

Клапауций +1

ТС: может, попробуете объяснить?

Radjah
Offline
Зарегистрирован: 06.08.2014

И чтобы можно было корованы грабить.

wdrakula
wdrakula аватар
Offline
Зарегистрирован: 15.03.2016

Юноша! Не обижайтесь на мастеров. Просто Вы написали совершенно нечитаемый вопрос, потому и вызвали спаведливый смех.

----------------------------------------------

Итак по делу:

Код писать за Вас не стану. Покажу как.

1. Прервывания вам совсем не нужны. Если речь идет о действиях пользователя, то реакция здорового человек не быстрее 0.1-0.2 сек, то есть 100-200 мс. За это время можно опросить кнопки и изменить параметры ШИМ, если, конечно, Вы в цикле уравнение Гейзенберга для атома уране не решаете.

2. для переключения направления мотора - используйте второй канал L293D, подключив его к мотору в обратной полярности. тогда ногами 1 и 9 (enable1 и enable2) вы сможете выбирать напрвление. Input1 соединяем с input3, а input2 с input4 и на землю.

К ардуинке input1(3)  - ШИМ, а enable1 и enable2 - к цифровым на выбор, назовем их Fpin и Bpin.

3. Плавный пуск/останов  достигается так: при первом обнаружении того, что кнопка нажата (а "до этого" была отпущена) запоминаем время в миллисекундах,

при каждом следующем вхождении в цикл проверяем кнопку - если все еще нажата, то проверяем время от последного действия с ШИМ выходом, если прошло более, чем задано в параметре <плавность>  то увеличиваем ШИМ на 1 (или уменьшаем, при остановке) и проверяем на границы (0 <= ШИМ < 255).

4. Если обнаружили, что кнопка отпущена - оставляем все как есть, если обнаружили нажатой кнопку 3, то гасим Fpin  и поднимаем Bpin. Тут уж - какая логика Вам нужна, "назад" при постоянно нажатой "3", или однократное нажатие "3" переключает направление.

Вот, Как-то так.