ШИМ на микроконтроллере Attiny13

ШИМ — широтно-импульсная модуляция (или по англ. PWM). У микроконтроллера ATtiny13 есть два ШИМ выхода OC0A и OC0B от таймера 0. ШИМ выход OC0A на 5 ножке микроконтроллера Attiny13, а OC0B на 6 ножке. В данном примере светодиод подключённый к ШИМ выходу OC0B будет плавно загораться и гаснуть.

Вот схема устройства:

Для сборки устройства понадобится:

1.Микроконтроллер Attiny13 (с любыми индексом)
2. Панелька DIP8
3. Любой светодиод
4. Резистор 4,7k (можно от 2,2кОм до 20кОм)
5. Резистор 150ом

Питание для устройства должно быть от 3 до 5 вольт. Для питания устройства я использовал «литьевую таблетку» на 3 вольта.

Прошивка для устройства написана в среде BASCOM-AVR.

Вот исходник прошивки:

$regfile = «attiny13.dat»
$hwstack = 8
$swstack = 16
$framesize = 16
Config Portb.1 = Output
Config Timer0 = Pwm , Prescale = 8 , Compare B Pwm = Clear Down
Start Timer0
Do
Do
Waitms 10
Incr Pwm0b
Loop Until Pwm0b = 255
Do
Waitms 10
Decr Pwm0b
Loop Until Pwm0b = 0
Loop
End

В канал ШИМ можно записать значение от 0 до 255.

Вот упрощенный вариант кода управления ШИМ:

$regfile = «attiny13.dat»
Config Portb.1 = Output
Config Timer0 = Pwm , Prescale = 8 , Compare B Pwm = Clear Down
Start Timer0
Pwm0b = 255
End

В данном случае в ШИМ канал OC0B мы запишем число 255. То есть светодиод будет гореть постоянно.

Записать значение в ШИМ канал можно так:
(ШИМ канал) = (Значение от 0 до 255)

Вот такое устройство получилось у меня:

Микроконтроллер прошивал программой PonyProg2000.

Вот картинка установки фьюз битов:

Ниже вы можете скачать прошивку, исходник, печатную плату, проект в Proteus


Прикрепленные файлы:

Добавить комментарий

Ваш адрес email не будет опубликован.