Фильтр по тематике

ШИМ на микроконтроллере ATTINY2313-PU

В статье представлено устройство, реализующее широтно-импульсную модуляцию (ШИМ) на базе микроконтроллера ATtiny2313. Для реализации ШИМ в микроконтроллере задействован таймер/счётчик Т/С1, работающий в режиме Phase Correct PWM (ШИМ, корректный по фазе).

01.03.2017 1325 0
ШИМ на микроконтроллере ATTINY2313-PU

В ATtiny2313 предусмотрены два таймера/счётчика общего назначения: 8­разрядный (Т/С0) и 16­разрядный (Т/С1). Оба они могут работать в режиме ШИМ. Рассмотрим подробнее все особенности работы Т/С1 указанного микроконтроллера в режиме ШИМ. Модуль Т/С1 поддерживает следующие режимы работы:

  • Normal (нормальный режим);
  • СТС (сброс при совпадении);
  • Phase Correct PWM (ШИМ, корректный по фазе);
  • Phase Correct and Frequency Correct PWM (ШИМ, корректный по фазе и частоте);
  • Fast PWM (быстрый ШИМ).

Микроконтроллер в представленном устройстве, как уже упоминалось, работает в режиме Phase Correct PWM (ШИМ, корректный по фазе). Рассмотрим детально данный режим работы.

В качестве источников импульсов для таймера можно выбрать сигнал с тактовой частотой микроконтроллера (СК), импульсы предварительного делителя (СК/8, СК/64, СК/256, СК/1024) или импульсы с соответствующего внешнего вывода.

Для управления Т/С1 используются два регистра. Это регистры TCCR1A и TCCR1В. Биты регистра TCCR1A приведены в таблице 1.

Биты 7 (COM1A1) и 6 (COM1A0) – выбор режима работы выхода совпадения порта А (вывод 15 микроконтроллера). Биты 5 (COM1В1) и 4 (COM1В0) – выбор режима работы выхода совпадения порта В (вывод 16 микроконтроллера). Соответствие значений битов 7, 6, а также битов 5, 4 режимам работы портов A и B в режиме Phase Correct PWM (или Phase Correct and Frequency Correct) приведено в таблице 2.

Выбор данных режимов осуществляется при помощи бита WGM13 в регистре TCCR1В. Биты 2, 3 регистра TCCR1A зарезервированы и всегда читаются как 0. Настройка работы Т/С1 битами WGM11, WGM10 для режима Phase Correct PWM приведена в таблице 3.


Биты регистра TCCR1В приведены в таблице 4. Бит 7 (ICNC1) разрешает работу шумоподавителя на входе захвата. Если ICNC1 = 0, то подавление входного шума входа захвата запрещено. Установка этого бита в единицу активизирует схему шумоподавителя на входе захвата. При этом захват срабатывает по первому заданному (нарастающему или спадающему) фронту сигнала на входе ICP1. При установке бита обрабатываются четыре последовательные выборки сигнала на входе ICP1. Для срабатывания захвата все выборки должны соответствовать уровню, заданному битом ICES1. Частота выборок равна тактовой частоте генератора. Бит 6 (ICES1) определяет выбор фронта захвата сигнала. Если ICES1 = 0, содержимое Т/С1 переписывается в регистр захвата по спадающему фронту на входе ICP. Если бит установлен – по нарастающему. Бит 5 зарезервирован и всегда читается как 0. Биты 4, 3 (WGM13, WGM12) служат для выбора режима генерации сигнала. Биты 2, 1, 0 (CS12, CS11, CS10) предназначены для выбора тактовой частоты. Эти биты задают коэффициент предварительного деления для Т/С1. Соответствие настроек указанных битов режимам работы Т/С1 приведено в таблице 5.


В режиме Phase Correct PWM таймер/счётчик Т/С1 можно использовать как 8­, 9­ или 10­разрядный широтно­импульсный модулятор. В этом случае счётчик и регистр OCR1А (ОСR1В) работают как защищённый от дребезга независимый ШИМ с отцентрированными импульсами.

При выборе режима широтно­импульсной модуляции таймер/счётчик Т/С1 и регистр совпадения OCR1A (ОСR1В) формируют 8­, 9­ или 10­разрядный непрерывный, свободный от «дрожания» и правильный по фазе сигнал, подающийся на вывод 15 (вывод 16 для ОСR1В) микроконтроллера. Т/С1 работает как реверсивный счётчик, считающий от нуля до конечного значения. Конечное значение таймера и соответствующая частота ШИМ приведены в таблице 6.

При достижении конечного значения счётчик начинает считать в обратную сторону до нуля, после чего рабочий цикл повторяется. Когда значение счётчика совпадёт с 8, 9 или 10, в зависимости от выбранной разрядности, младшими битами регистра OCR1A (ОСR1В), вывод 15 (вывод 16 для ОСR1В) устанавливается или сбрасывается в соответствии с установками битов СОМ1А1 и СОМ1А0 (СОМ1В1 и СОМ1В0 для порта B) в регистре TCCR1A (см. таблицу 2). В целом, программные ресурсы данного микроконтроллера ATtiny2313 позволяют реализовать ШИМ с достаточно гибким управлением и с большим диапазоном задаваемых частот.

Принципиальная схема широтно­импульсного модулятора (далее – устройства) на базе микроконтроллера ATtiny2313­PU представлена на рисунке 1.

В устройстве задействован 8­разрядный Phase Correct PWM с выходом ОСА1. Поэтому в регистр TCCR1A загружается число 0b11000001. Для согласования двухразрядного числа, индицируемого на индикаторах HG1 и HG2, c конечным значением таймера/счётчика Т/С1, в программе заложена формула: Y = 2,5 × X, где X – число, индицируемое на индикаторах, Y – число, загружаемое в Т/С1. На дисплее в этом случае индицируется относительная величина (в %) загрузки числа в счётчик. Реально в счётчик загружается число от 0 до 247.

Индикатор HL1 включается с вывода 11 микроконтроллера DD1. Через порт В микроконтроллер DD1 управляет клавиатурой (кнопки S1…S3) и динамической индикацией. Динамическая индикация собрана на транзисторах VT1, VT2 и цифровых семисегментных индикаторах HG1, HG2. Резисторы R4…R11 выполняют функцию токоограничителей для сегментов индикаторов HG1, HG2. Коды для включения индикаторов HG1, HG2 при функционировании динамической индикации поступают на порт В микроконтроллера DD1. Для функционирования клавиатуры задействован также вывод 6 микроконтроллера DD1. Выходной сигнал ШИМ поступает на контакт 1 соединителя Х2 с выхода эмиттерного повторителя, собранного на транзисторе VT1. Рабочая частота 10 МГц микроконтроллера задаётся генератором с внешним резонатором ZQ1.

Элементы интерфейса устройства: клавиатура (кнопки S1…S3), индикатор HL1 и блок индикации (дисплей), состоящий из двух цифровых семисегментных индикаторов HG1, HG2. Кнопки клавиатуры имеют следующие назначения:

S1 (Δ) – увеличение на единицу значения ШИМ (в %) при удержании данной кнопки в нажатом состоянии не более двух секунд (при нажатии более двух секунд значение ШИМ, индицируемое на дисплее, увеличивается на пять единиц за одну секунду);

S2 (∇) – уменьшение на единицу значения ШИМ (в %) при удержании данной кнопки в нажатом состоянии не более двух секунд (при нажатии более двух секунд значение ШИМ, индицируемое на дисплее, уменьшается на пять единиц за одну секунду);

S3 (C) – выключение ШИМ (при выключении ШИМ выключается индикатор HL1, на выводе 15 микроконтроллера – логическая «1»).

Фотография интерфейса устройства на макетной плате приведена на рисунке 2.

Для включения ШИМ достаточно нажать кнопку S1 или S2. При включённом ШИМ индикатор HL1, соответственно, тоже включён.

Системный сброс микроконтроллера DD1 осуществляется сигналом низкого уровня, через RC­цепь (резистор R3, конденсатор С3). При инициализации индикатор HL1 отключён. На индикаторах HG1, HG2 индицируются нули. Для перевода устройства в рабочий режим необходимо кнопками S1, S2 установить необходимое значение ШИМ. При этом включится индикатор HL1. Для отключения ШИМ необходимо нажать на кнопку S3. На выводе 15 микроконтроллера при этом установится логическая «1».

Программа микроконтроллера состоит из трёх основных частей: процедура инициализации, основная программа, работающая в замкнутом цикле, и подпрограмма обработки прерывания от таймера/счётчика T/C0 (соответственно, метки INIT, SE1, S0).

В основной программе происходит инкремент и декремент заданного значения ШИМ.

В подпрограмме обработки прерывания от таймера/счётчика T/C0 происходит опрос клавиатуры и перекодировка двоичного числа значений времени в код для отображения информации на семисегментных индикаторах, а также отображения разрядов в динамической индикации. В памяти данных микроконтроллера с адреса $60 по $61 организован буфер отображения для динамической индикации.

Каждый байт из функциональной группы в цикле, в подпрограмме обработки прерывания таймера T/C0 (метка S0), после перекодировки выводится в порт В микроконтроллера. Для включения индикаторов HG1, HG2 необходимо установить логический «0» на выводах 2 и 3 микроконтроллера DD1. Например, для того чтобы на индикаторе HG1 индицировалось число «1», необходимо двоично­десятичное число, расположенное по адресу $60, перекодировать, вывести в порт B микроконтроллера и установить логический «0» на выводе 2 (порт D) микроконтроллера DD1. Записывая поочерёдно после перекодировки, в цикле, в порт B микроконтроллера байты из функциональной группы буфера отображения и логический «0» на соответствующий вывод порта D, мы получаем режим динамической индикации.

В процессе обработки подпрограммы прерывания происходит опрос клавиатуры. Младшая тетрада выводимого при этом в порт В микроконтроллера байта для клавиатуры представляет собой код «бегущий ноль». После записи данного байта в порт В микроконтроллер DD1 анализирует сигнал на входе 6 порта D. В рамках подпрограммы, при любой нажатой кнопке, на входе 6 микроконтроллера присутствует логический «0». Таким образом, каждая кнопка клавиатуры «привязана» к «своему» разряду в младшей тетраде байта данных, выводимого в порт B микроконтроллера для опроса клавиатуры.

При нажатии на кнопку S1 текущее значение ШИМ на дисплее увеличивается на единицу и устанавливается флаг, разрешающий увеличивать значение ШИМ, индицируемое на дисплее. Одновременно запускается счётчик, организованный на регистре R2, формирующий интервал в две секунды. Если кнопка удерживается более двух секунд, значение ШИМ, индицируемое на дисплее, увеличивается на пять единиц за одну секунду. Интервал времени, в течение которого происходит увеличение значения, организован в регистре R1. При отпускании кнопки S1 все указанные счётчики обнуляются.

Аналогичным образом организована работа кнопки S2 для уменьшения значения ШИМ, индицируемого на дисплее. При нажатии на кнопку S2 текущее значение времени на дисплее уменьшается на единицу. Если кнопка удерживается более двух секунд, значение времени, индицируемое на дисплее, уменьшается на пять единиц за одну секунду. Счётчики приведённого алгоритма для кнопки S2 организованы, соответственно, в регистрах R3, R4. В листинге 1 (исходный текст программы содержится в архиве, который доступен для загрузки на сайте журнала www.soel.ru) приведён фрагмент программы работы клавиатуры.

В регистре R22 осуществляется выбор разрядов в динамической индикации. При инициализации в R22 заносится число 0b00000001. При каждом обращении к подпрограмме обработки прерывания единица сдвигается влево, подготавливая включение следующего разряда. В подпрограмме также осуществляется проверка, не вышла ли единица за пределы разрядной сетки, т.е. после числа 0b00000100 в R22 загружается снова 0b00000001. Все флаги, которые используются при работе программы, выполнены на регистрах R24, R25. Назначение каждого флага приведено в тексте программы.

Разработанная программа на ассемблере (см. листинг 2 – исходный текст программы содержится в архиве, который доступен для загрузки на сайте журнала www.soel.ru) занимает порядка 0,7 кбайт памяти программ микроконтроллера. Потребление тока по каналу напряжения +5 В составляет не более 100 мА. В схеме, представленной на рисунке 1, применены конденсаторы С1…С5 типа К10­17а. Конденсатор С6 – типа К50­35. Данный конденсатор устанавливается между цепью +5 В и общим проводником микроконтроллера DD1. Применены резисторы типа С2­33Н­0.125.

Скачать

20173058.zip / ZIP, 36 КБ

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

01.03.2017 1325 0
Комментарии
Рекомендуем
К 130-летию со дня рождения великого советского физика Игоря Евгеньевича Тамма. Часть 4. История возникновения  концепции поляритонов

К 130-летию со дня рождения великого советского физика Игоря Евгеньевича Тамма. Часть 4. История возникновения концепции поляритонов

В прошлом году в журнале «Современная электроника» были опубликованы три статьи, посвящённые юбилею выдающегося российского физика-теоретика Игоря Евгеньевича Тамма (СОЭЛ № 7–9, 2025). В частности, были описаны современные быстродействующие электрооптические модуляторы, поверхностные состояния Тамма, запрещённые фотонные зоны и фотонные кристаллы. В этих статьях умышленно не затрагивались темы поляритонов, оптических состояний Тамма (ОСТ) и плазмон-поляритонов Тамма (ППТ). Поскольку ключевой вклад в раннюю разработку этих явлений в основном принадлежит российским учёным, целесообразно посвятить их открытию более подробные отдельные статьи. Ниже рассмотрены два основных типа гибридных фотонных частиц: экситон-поляритоны и фонон-поляритоны.  
24.04.2026 СЭ №4/2026 154 0
Телевизор с электронно-лучевой трубкой: разработки С.И. Катаева и их значение

Телевизор с электронно-лучевой трубкой: разработки С.И. Катаева и их значение

«…Наступит время… когда миллионы таких приборов, таких "электрических глаз" будут всесторонне обслуживать общественную и частную жизнь, науку, технику и промышленность…» Б. Розинг Семён Исидорович Катаев (1904–1991 гг.), советский учёный и изобретатель в области телевидения, доктор технических наук, профессор, заслуженный деятель науки и техники – незаслуженно обделён вниманием популяризаторами истории электроники и телевидения в нашей стране. Тем не менее И.С. Катаев внёс значительный вклад в развитие инженерной мысли в СССР при разработке и усовершенствовании электронно-лучевых трубок (ЭЛТ), ставших на многие годы ключевой технологией, лежащей в основе экранов телевизоров и оборудования различного назначения. Катаев дополнил изобретение Зворыкина и по праву может считаться ещё одним «отцом» отечественного телевидения. В найденных документах роль Катаева прослеживается чётко, и в статье мы хотим это показать.
23.04.2026 СЭ №4/2026 146 0
Электронные системы диагностики, стимуляции и воздействия на человека на примере BAMH и управления –  на примере AE-Skin

Электронные системы диагностики, стимуляции и воздействия на человека на примере BAMH и управления – на примере AE-Skin

Путь будущих разработок в области современной электроники пролегает от визуального отображения окружающего пространства до тактильного. В этой связи представляют интерес система Bioinspired Adaptable Multiplanar mechano-vibrotactile Haptic (BAMH) – пневматически активируемый роботизированный электронный комплекс с интерфейсом из мягкого материала и система AE-Skin, обеспечивающая интерфейс между кожей человека и физическими поверхностями. Принцип её действия достаточно известен и заложен в управлении интерактивными экранами. В первой части статьи рассматриваются особенности новых разработок в области медицинской электроники и перспективы тактильного воздействия на кожу человека для лечения и изменения настроения. Во второй части представлен подробный разбор AE-Skin и примеры её совершенствования во всех сферах жизни человека: от управления посредством электронных тактильных датчиков миниатюрной формы до устройств на основе новых технологий, воспринимающих движения руками без прикосновения и без применения пироэлектрических детекторов, как управляющие сигналы для РЭА.
17.04.2026 СЭ №4/2026 196 0

ООО «ИнСАТ»  ИНН 7734682230  erid = 2SDnjdWbKyt
ООО «ИнСАТ»  ИНН 7734682230  erid = 2SDnje2F5cn
  Подписывайтесь на наш канал в Telegram и читайте новости раньше всех! Подписаться