Прошивка для Tiny13

Что-то потеряли? Заходите, будем искать, что ж поделать...
Ответить
space-06
Родился
Сообщения: 2
Зарегистрирован: Чт ноя 06, 2014 21:42:39

Прошивка для Tiny13

Сообщение space-06 »

Доброго всем времени суток уважаемые коллеги!

Не очень много схем в своей практике собрал, и большинство из них по примерам, но самому что то создать с Нуля, увы пока не удается.

Хотелось бы у вас попросить помощи в написании программы для управления ШИМ с помощью тактовой кнопки.

Принцип примерно такой:
контроллер подключен к питанию и находится в режиме сна, при первом нажатии кнопки он включается и запускает ШИМ, который меняет свое значение с 0 до 255 и обратно до 0, за 2 секунды
при повторном нажатии работа ШИМ с 0 до 255 и обратно проходит уже за 10 сек.
Третье нажатие приводит к переходу только с 0 до 255 (т.е. нагрузка - светодиод) горит постоянно.
и последнее нажатие (продолжительное) приводит к выключению (т.е. переходу в сон)

Буду признателен за пример программы или помощи в ее написании.
Реклама
otest
Друг Кота
Сообщения: 7853
Зарегистрирован: Ср фев 11, 2009 20:35:58

Re: Прошивка для Tiny13

Сообщение otest »

А чем помогать? Начни сам потом народ подтянется. Или сразу сюда http://radiokot.ru/forum/viewforum.php?f=53
Реклама
space-06
Родился
Сообщения: 2
Зарегистрирован: Чт ноя 06, 2014 21:42:39

Re: Прошивка для Tiny13

Сообщение space-06 »

Вообщем выбралась минутка другая и попробовал на примере других программ написать свою, но самое забавное что Протеус при эмулляции пишет ошибку: invalid opcode 0xffff
Вот примерный код того что получилось:
Спойлер$regfile = "attiny13.dat"
$hwstack = 8
$swstack = 16
$framesize = 16

Dim Led As Byte
Led = 0
Dim Button As Bit
Button = 1
Declare Sub Prg1()
Declare Sub Prg2()
Declare Sub Prg3()


Config Pinb.3 = Input
Pinb.3 = 1
Config Portb.1 = Output

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

Start Timer0

Do
If Led = 0 Then Pwm0b = 0
If Led = 1 Then Call prg1
If Led = 2 Then Call prg2
If Led = 3 Then Call prg3
If Led = 4 Then Led = 0
If Button = 1 Then
If Pinb.3 = 0 Then
Button = 0
Led = Led + 1
End If
End If
If Pinb.3 = 1 Then Button = 1
Loop

Sub Prg1()
Do
Do
Waitms 10
Incr Pwm0b
Loop Until Pwm0b = 255
Do
Waitms 10
Decr Pwm0b
Loop Until Pwm0b = 0
Loop
End Sub

Sub Prg2()
Do
Do
Waitms 50
Incr Pwm0b
Loop Until Pwm0b = 255
Do
Waitms 50
Decr Pwm0b
Loop Until Pwm0b = 0
Loop
End Sub

Sub Prg3()
Do
Waitms 20
Incr Pwm0b
Loop Until Pwm0b = 255
End Sub

End
А вот примерная Схемка:
СпойлерИзображение
Коллеги - хочу у вас посоветоваться - как возможно Оптимизировать код и поправить ошибку в Протеусе, на реальном Железе пока не собирал (ибо страшно из за ошибки)
Ответить

Вернуться в «Ищу...»