ШІМ на мікроконтролері Attiny13

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

Ось схема пристрою:

Схема ШИМ

Для зборки пристрою знадобиться:

Необхідні компоненти

1. Мікроконтролер Attiny13 (з будь-яким індексом)
2. Панелька DIP8
3. Будь-який світлодіод
4. Резистор 4,7k (можна від 2,2kОм до 20kОм)
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

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

Top