Главная » Микроконтроллеры
Призовой фонд
на май 2017 г.
1. Тестер компонентов MG328
Паяльник
2. Осциллограф DSO138
Паяльник
3. Регулируемый паяльник 60 Вт
Паяльник
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 Поиск в FivelВ блокнот
R1, R2 Резистор
150 Ом
2 Поиск в FivelВ блокнот
R3 Резистор
10 кОм
1 Поиск в FivelВ блокнот
D1, D2 Светодиод2 Поиск в FivelВ блокнот
Добавить все

Скачать список элементов (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-микроконтроллеров
Мультиметр DT9205A 200 Вт усилитель класса D на IRS2092
вверх