Администрация форума не несёт ответственности за достоверность информации и оставляет за собой право редактировать или в особых случаях даже удалять посты без предупреждения. Спасибо за понимание.

Программирование ATMEL в BASCOM.

Информация о пользователе

Привет, Гость! Войдите или зарегистрируйтесь.


Вы здесь » Программирование ATMEL в BASCOM. » Таймеры, ШИМ и все про них » Регулятор мощности на Attiny13.


Регулятор мощности на Attiny13.

Сообщений 1 страница 3 из 3

1

Привет мастерам программирования. Сразу предупрежу, программированием и Васиком я занялся совсем недавно, на прошлой неделе.
Понадобился мне управляемый ШИМ регулятор с сохранением настроек при выключении питания и включением от двух кнопок, и одной кнопкой управления, сочинил вот такую прогу

Код:
$regfile = "attiny13.dat"
$hwstack = 8
$swstack = 16
$framesize = 16

Config Portb.1 = Output
Config Pinb.3 = Input   
Config Pinb.4 = Input
Config Pinb.0 = Input
Pinb.3 = 1
Pinb.4 = 1
Pinb.0 = 1
Dim Drl As Byte
Dim Drl1 As Eram Byte
If Drl1 = 0 Then Drl = 100



Config Timer0 = Pwm , Prescale = 8 , Compare B Pwm = Clear Down


Do
Waitms 2000
If Pinb.3 = 0 And Pinb.4 = 0 Then Pwm0b = Drl1 Else Pwm0b = 0
Drl = Drl1

If Pinb.0 = 0 Then Drl = Drl1 + 25
Drl1 = Drl

Waitms 250
Loop

End

Всё работает отлично, при нажатии кнопки скважность увеличивается, настройка сохраняется в еепром, всё круто.
Ещё хотелось бы избавиться от этой кнопки настройки и входить в программирование с помощью одной из двух кнопок управления, допустим PINB.3 но при этом чтобы она так и осталась восновном управлением, типа вкл-выкл три раза вошол в программирование и далее каждое вкл-выкл +25. Через некоторое время бездействия вышел из программирования.
Можно это дело перекинуть на Attiny2313 если у 13 ресурсов не хватит, мне бы принцип понять как это делается.

0

2

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

Так можно?

0

3

Да, работает, вот так примерно выглядит, немного корявенько работает, проверял в протеусе, но смысел ясен.

Код:
$regfile = "attiny13.dat"
$hwstack = 8
$swstack = 16
$framesize = 16

Config Portb.1 = Output
Config Pinb.3 = Input
Config Pinb.4 = Input
Config Pinb.0 = Input
Pinb.3 = 1
Pinb.4 = 1
Dim Drl As Byte
Dim Drl1 As Eram Byte
If Drl1 = 0 Then Drl = 100
Dim Pause As Byte


Config Timer0 = Pwm , Prescale = 8 , Compare B Pwm = Clear Down


Do
Waitms 100
If Pinb.3 = 0 And Pinb.4 = 0 Then
Gosub Setup
Pwm0b = Drl
Drl = Drl1
Else
Pwm0b = 0
End If

Loop
Setup:
 For Pause = 1 To 3
 Waitms 250
 If Pinb.3 = 0 Then
 Return
 Elseif  Pinb.3 = 1 Then
 Next
 End If
 Drl = Drl1 + 25
 Drl1 = Drl


 Return

End

0


Вы здесь » Программирование ATMEL в BASCOM. » Таймеры, ШИМ и все про них » Регулятор мощности на Attiny13.