Главная » Микроконтроллеры
Призовой фонд
на октябрь 2021 г.
1. Рюкзак Mean Well
Компэл
2. Инвертор авто Mean Well 150 Ватт
Компэл
3. Термос MeanWell
Компэл
4. 100 руб.
От пользователей

Похожие статьи:


Урок 13. Аппаратная ШИМ на микроконтроллере

В этом уроке мы научимся реализовывать ШИМ сигнал на микроконтроллере AVR с помощью BASCOM-AVR. В микроконтроллерах AVR, ШИМ можно реализовать посредством таймеров, для этой цели в микроконтроллере есть ШИМ выходы на порты ввода\вывода. Например, в микроконтроллере Attiny13 есть один таймер (Timer0) и два канала вывода ШИМ Pwm0a и Pwm0b, которые находиться на портах PB.0 и PB.1. В документации на микроконтроллер ШИМ каналы подписываются так: OC0A – ШИМ канал A на таймере 0, OC0B – ШИМ канал B на таймере 0, OC1A – ШИМ канал A на таймере 1, OC1B – ШИМ канал B на таймере 1 и т.д.

Работа с ШИМ в микроконтроллере
Для начала работы нужно сконфигурировать таймер на работу ШИМ для этого есть команда:
Config Timer1 = Pwm, Pwm = Разрядность, Compare A Pwm = Состояние канала A, Compare B Pwm = Состояние канала B, Prescale = Частота ШИМ
Разрядность можно задать 8, тогда будет скважность ШИМ от 0 до 255. Для Timer1 разрядность можно задать 9 или 10. Состояние канала A или B можно задать Clear Up – скважность при 0 = логической 1 и Clear Down – скважность при 0 = логической 0. Частоту ШИМ можно задать: 1, 8, 64, 256 и 1024.
Пример команды конфигурирования: Config Timer0 = Pwm , Compare A Pwm = Clear Up , Compare B Pwm = Clear Up , Prescale = 8
После конфигурирования таймера нужно сконфигурировать порты ШИМ на вывод командой Config порт = Output, например: Config Portb.0 = Output
Потом нужно запустить таймер командой Start таймер, например: Start Timer0.
Теперь можно записать скважность в ШИМ канал для канала A таймера 0 это можно сделать так: Pwm0a = скважность, например: Pwm0a = 150

Практический пример

Теперь давайте попробуем поработать с ШИМ на практике, сделаем простую моргалку которая будет плавно зажигать и тушить светодиоды. За основу возьмём микроконтроллер Attiny13 и два светодиода, соберём простую схему:

Распиновка разъема клавиатуры PS2

Теперь напишем простую программку на BASCOM-AVR, применяя полученные знания:

$regfile = "attiny13.dat"
$crystal = 9600000
Config Timer0 = Pwm , Compare A Pwm = Clear Up , Compare B Pwm = Clear Up , Prescale = 8
Config Portb.0 = Output
Config Portb.1 = Output
Start Timer0
Do
Incr Pwm0a
Decr Pwm0b
Waitms 5
Loop
End

Откомпилируем её, прошьём микроконтроллер и установим фьюз биты микроконтроллера на тактирование от внутреннего тактового генератора на 9.6 МГц без делителя на 8. Пример установки фьюз битов в программе SinaProg:

Фьюз биты

Я использовал свою отладочную плату и вот что получилось:

Плата

Скачать файлы для урока (проект в Proteus, исходник, прошивка) вы можете ниже

Список радиоэлементов

Обозначение Тип Номинал Количество ПримечаниеМагазинМой блокнот
U1 МК AVR 8-бит
ATtiny13
1 Поиск в магазине ОтронВ блокнот
R1, R2 Резистор
150 Ом
2 Поиск в магазине ОтронВ блокнот
R3 Резистор
10 кОм
1 Поиск в магазине ОтронВ блокнот
D1, D2 Светодиод2 Поиск в магазине ОтронВ блокнот
Добавить все

Скачать список элементов (PDF)

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

Теги:

Яковлев Александр Вячеславович Опубликована: 2012 г. 0 0
Я собрал 0 0
x

Оценить статью

  • Техническая грамотность
  • Актуальность материала
  • Изложение материала
  • Полезность устройства
  • Повторяемость устройства
  • Орфография
0

Средний балл статьи: 0 Проголосовало: 0 чел.

Комментарии (5) | Я собрал (0) | Подписаться

+1
Дмитрий #
Как-то слабовато для статьи, я считаю. Эти статьи ориентированны на начинающих и не плохо било-бы описать что из себя представляет эта "Широтно импульсная модуляция", с чем её едят и пару примеров где можно применить, а плавно поджигать и тушить светики - это не зачет! Не вынес из этой статьи ничего полезного для себя, в отличии от предыдущих
Ответить
0
Михаил #
Согласен с первым комментарием.
Хотелось попросить автора описывать ещё и результаты которые можно наблюдать в Proteus, по данному уроку мало, что стало ясно. Работа модели в Протеусе, без описания, опускает в ещё большее не понимание.
Ответить
0
kaznachej #
Что такое ШИМ и для чего она нужна описано очень много где (гугл, википедия..)
Эта статья ориентирована для новичков в BASCOM_AVR. Даже цикл статей на этом сайте так называется. Автор, спасибо!
Ответить
0
Александр #
Статья зачет. Использую уроки для изучения микроконтроллеров. Автору, спасибо!
Ответить
0
Владимир #
Можно ли все уроки в Си Atmel Studio провести?
Ответить
Добавить комментарий
Имя:
E-mail:
не публикуется
Текст:
Защита от спама:
В чем измеряется сила тока?
Файлы:
 
Для выбора нескольких файлов использйте CTRL

Pickit 2 - USB-программатор PIC-микроконтроллеров
Pickit 2 - USB-программатор PIC-микроконтроллеров
Модуль радиореле на 4 канала USB осциллограф DSO-2090
вверх