Регистрация | Вход

[ Новые сообщения · Участники · Правила форума · Поиск · RSS ]
  • Страница 1 из 1
  • 1
Модератор форума: ivan_fd  
Форум Picbasic.ru » Программирование МК » PicBasicPro » Stop в нужный момент времени!
Stop в нужный момент времени!
Broka Дата: Вс, 08.11.2009, 23:32  |                                                                                                                Сообщение # 1
Группа: Проверенные
Ранг:  Помогаю всем
Сообщений: 253
Репутация: 9   ±
Замечания:   ±
На сайте с 30.09.2009

Статус: Offline

Сижу бьюсь ,ни как не могу добится ,( хочу сделать так: пока держиш кнопочку программный цикл идёт,бросаеш
цикл останавливается но значение на выходе микроконтроллера остаётся такое какое мне нужно,).Во общем на подобе регулятора мощности :(Например прибавил я яркость лампы,на этом уровне сигнал ШИМ и должен остаться)
i var byte
for i = 0 to 255 step 2
pwm GPIO.0,i,64
next i
Вот незнаю куда мне добавить нужную команду,что бы цикл тормозился в нужный момент, при этом сохранялось значение ШИМ (Пробовал по всякому,не фига не получается, Если кто знает подскажите пожалуйста, есть не плохая задумка,только вот не получается у меня.) cool


Наладчик КИП и А
Сообщение отредактировал Broka - Вс, 08.11.2009, 23:38
ЯНДЕКС Дата: 08.11.2009
terrarus Дата: Пн, 09.11.2009, 00:04  |                                                                                                                Сообщение # 2
Группа: Пользователи
Ранг:  Помогаю всем
Сообщений: 451
Репутация: 17   ±
Замечания:   ±
На сайте с 21.08.2008

Статус: Offline

Может быть так:

main:

IF Knopka1 = 0 Then Pause 20: i = i + 2
IF Knopka2 = 0 Then Pause 20: i = i - 2
IF i >= 254 Then i = 254
pwm GPIO.0,i,64

Goto main

Все очень просто. Если кнопки не нажаты, непрерывная работа оператора PWM обеспечивается циклическим исполнением главной программы. Если нажата Кнопка1, включается маленькая задержка, чтобы исключить дребезг контактов, а затем переменная i увеличивается. Если нажата Кнопка2 - i уменьшается. Оператор IF i >= 254 Then i = 254 ограничивает вержнее значение переменной i. i не должно быть более 255. На 255 оперетор PWM может работать нестабильно. При нажатии любой кнопки все операторы будут циклически исполнятся, без нажатия кнопок в цикле будут исполнятся только операторы

main:
IF i >= 254 Then i = 254
pwm GPIO.0,i,64

Goto main

Вообще-то лучше использовать микроконтроллер со встроенным аппаратным модулем ШИМ. Тогда можно использовать оператор HPWM, и организовать работу ШИМ-а в фоновом режиме независимо от от главной программы.
Подробнее смотрите на ресурсе http://www.terrarus.ucoz.ru/proton_plus_ide/index.html


Если у в Вас что-то не получается, подумай, не стоит ли прочитать инструкцию...!
Сообщение отредактировал terrarus - Пн, 09.11.2009, 11:16
Broka Дата: Пн, 09.11.2009, 21:53  |                                                                                                                Сообщение # 3
Группа: Проверенные
Ранг:  Помогаю всем
Сообщений: 253
Репутация: 9   ±
Замечания:   ±
На сайте с 30.09.2009

Статус: Offline

Завтра обязательно попробую,потом расскажу об успехах cool
Мне надо ещё всё это понять!

Добавлено (09.11.2009, 21.53.31)
---------------------------------------------
Попробовал всё работает! Спасибо большое за подсказку,но есть маленький нюансик,
Увеличивает и уменьшает всё нормально, но вот например при дальнейшем уменьшении, импульсы переходят в другую полярность и частота так же начинает расти,в принципе это не страшно,например транзистор всё равно открываться небудет(если он конечно стоит в ключевом режиме),но есть такие схемы в которых всё равно какой полярностью открывать эллемент.Вот тут уже на много хуже! cool


Наладчик КИП и А
Сообщение отредактировал Broka - Пн, 09.11.2009, 22:10
terrarus Дата: Вт, 10.11.2009, 10:55  |                                                                                                                Сообщение # 4
Группа: Пользователи
Ранг:  Помогаю всем
Сообщений: 451
Репутация: 17   ±
Замечания:   ±
На сайте с 21.08.2008

Статус: Offline

При нажатии кнопки минус i уменьшается до нуля а затем происходит запись в её регистр числа %11111111 вот вам и другая полярность которая вызывает вспышку света. С верху то я ограничил i, а снизу нет. Думал Вы сами поймете.
Это поправить очень даже просто.
Добавьте перед pwm GPIO.0,i,64 оператор IF i <= 1 Then i = 0
(или даже лучше так - IF i >= 255 Then i = 0)
который будет ограничивать i снизу и все придет в норму.
Посмотрите примеры на
http://www.terrarus.ucoz.ru/contr_na_pic16/index.html
и http://www.terrarus.ucoz.ru/proton_plus_ide/index.html
Успехов!


Если у в Вас что-то не получается, подумай, не стоит ли прочитать инструкцию...!
Сообщение отредактировал terrarus - Вт, 10.11.2009, 11:07
Broka Дата: Ср, 11.11.2009, 18:22  |                                                                                                                Сообщение # 5
Группа: Проверенные
Ранг:  Помогаю всем
Сообщений: 253
Репутация: 9   ±
Замечания:   ±
На сайте с 30.09.2009

Статус: Offline

Спасибо большое я во всём разобрался,сидел читал 2дня всё понял( ну если честно сказать без практических
примеров всё равно сложновато пока).В книге написано для более менее подготовленных ,а я вроде как начинающий(Но по сравнению с ASM, это более понятно для меня!
Ещё раз спасибо!


Наладчик КИП и А
Форум Picbasic.ru » Программирование МК » PicBasicPro » Stop в нужный момент времени!
  • Страница 1 из 1
  • 1
Поиск: