Программа Сервисный Центр
0

Об управлении микроконтроллером AVR при дефиците выводов


, июнь 2015

В. И. Иволгин, г. Тамбов

Можно почти не сомневаться в том, что все «пользователи» микроконтроллеров (МК) прошли через знакомство с задачей управления состоянием светодиода (включить/выключить) с помощью тактовой кнопки. Идея ее решения проста – надо на один вывод МК подключить кнопку, а на другой – светодиод, например, как показано на Рисунке 1. В этом случае логика работы схемы может быть такой. Здесь кнопка подключена так, что ее кратковременное нажатие сопровождается изменением на входе PВ1 логического уровня с 1 на 0. Тогда при обнаружении такого события на входе (кнопку нажали) МК производит изменение логического уровня на выходе РВ0 и, соответственно, включение или, наоборот, выключение светодиода. Разумеется, при наличии необходимого программного обеспечения. Такая схема является системой с раздельными линиями управления и исполнения. А можно ли подобную проблему решить, используя лишь один вывод МК AVR?

Об управлении микроконтроллером AVR при дефиците выводов
Рисунок 1.Один из вариантов подключения
светодиода и кнопки управления.

Это не столь праздный вопрос, как может показаться на первый взгляд, хотя в практике такие задачи и в такой формулировке, действительно, встречаются нечасто. Но ведь в более общем плане здесь фактически речь идет о возможности управления работой программы МК через вывод, используемый для получения информации из микроконтроллера, когда требуется прервать установленный ход выполнения программы и перейти к выполнению ее другого фрагмента. Именно с этой точки зрения и целесообразно рассмотреть предлагаемый вариант решения этой задачи.

Прежде чем переходить к обсуждению схемы и ее реализации, отметим некоторые характеристики системы ввода/вывода микроконтроллеров AVR, важные с этой точки зрения. И, в первую очередь, то обстоятельство, что практически любой вывод МК по направлению передачи информации можно устанавливать в состояния «вход» или «выход». При конфигурировании вывода на «вход» он будет обладать свойствами триггера Шмитта с высоким входным сопротивлением. В результате проведения экспериментов с МК ожидаемо выяснилось, что точка перегиба его входной триггерной характеристики примерно равна половине напряжения питания (МК AVR выполняются по КМОП-технологии). Это означает, что, например, при 5-вольтовом питании МК напряжения от 0 до 2 вольт на таком входе будут восприниматься как уровень логического нуля, а напряжения от 3 до 5 вольт – логической единицы. Что касается использования вывода на «выход», то при конфигурировании на нем будет устанавливаться выходное напряжение, соответствующие либо логическому 0, либо 1, практически совпадающие, соответственно, или с потенциалом нулевого провода, или с напряжением питания МК.

Отметим, что значение Vcc = 5 В здесь приведено только для удобства проведения расчетов. Эта величина в принципе может быть любой из интервала значений напряжения питания конкретного МК с соответствующей корректировкой приведенных числовых значений.

Рассмотрим теперь логику управления выводом МК AVR, позволяющим совместить функции кнопочного управления ходом выполнения программы и формирования микроконтроллером управляющего сигнала. Ее основная идея заключается в создании таких условий, при которых управляющий сигнал, формируемый МК на его выходе, изменялся бы только в интервале напряжений, соответствующих одному логическому уровню, например, от 3 В до 5 В, то есть, в зоне уровня логической 1. В тоже время, необходимо, чтобы, как и в варианте на Рисунке 1, при замыкании кнопки SB1 напряжение на нем уменьшалось бы до уровня логического 0, то есть, до значений в интервале 0…2 В. Достигается выполнение этих противоречивых требований подключением к используемому выводу кнопки с дополнительными резисторами и варьирования его состояния поочередно на «вход» и «выход». За счет этих мер, в конечном итоге, удалось получить необходимые характеристики используемого вывода МК (Рисунок 2). Каким же образом?

Об управлении микроконтроллером AVR при дефиците выводов
Рисунок 2.Принципиальная схема преобразователя
уровней вывода МК.

Предположим, что первоначально вывод PB0 микроконтроллера на Рисунке 2 сконфигурирован как «вход». И если резисторы R1, R2 достаточно низкоомны (единицы-десятки килоом), то в этом случае напряжение на нем будет определяться только соотношением их сопротивлений. Допустим, что их величины удовлетворяют равенству R1/R2 = 2/3, например, R1 = 2.2 кОм и R2 = 3.3 кОм. Тогда при Vcc = 5 В напряжение на PB0 будет равно 3 В, и будет определяться МК как уровень логической 1. При замыкании (нажатии) кнопки SB1, и при соответствующем значении «защитного» сопротивления R3, например, R3 = R1, напряжение на входе уже будет ниже 2 В, что соответствует уровню логического 0.

Пусть теперь вывод PB0 микроконтроллера будет сконфигурирован как «выход». И пусть на нем будет установлен уровень логической 1. Тогда на выходе преобразователя уровней (ПУ) в точке А установится 5 В. И этот уровень практически не зависит от значений сопротивлений используемых резисторов, и не может быть изменен замыканием кнопки SB1. Для получения же второго уровня напряжения в рамках единичного логического уровня переведем его в состояние «вход». Тогда, как это уже было оговорено выше, на выводе РВ0, а следовательно, и в точке А, установится уровень 3 В. Выбором из этих двух состояний – 5 В и 3 В, можно формировать либо два разных состояния управляемой системы, либо необходимую импульсную последовательность путем чередования смены состояний вывода.

Изменение логического уровня с 1 на 0 на выводе PB0 при замыкании кнопки SB1 возможно только в том случае, если вывод находится в состоянии «вход». И, если по условиям управления внешним устройством он периодически или постоянно находится в таком состоянии, то это будет предпочтительным вариантом для обнаружения факта замыкании кнопки SB1. В таком случае ее нажатие, по сути, будет определяться в «фоновом режиме» работы МК. Но если такой возможности нет, то тогда придется для обнаружения замыкания кнопки с определенной периодичностью переводить его в это состояние. И при этом, конечно, придется мириться с неизбежным усложнением логики управления внешним устройством.

На Рисунке 3 приведена осциллограмма, дающая представление об уровнях напряжений, которые формируются ПУ в разных его состояниях и при напряжении питания МК, равном 4 В. Важно, что уровни 2 и 3, расположенные симметрично относительно половины напряжения, при оговоренных выше параметрах ПУ считываются МК как, соответственно, логические 1 и 0. Была проверена работоспособность ПУ в интервале напряжений от 2.5 В до 5.5 В с использованием нескольких экземпляров МК семейств Tiny (2 шт.) и Mega (1 шт.). Выяснилось, что для повышения надежности работы ПУ при низких напряжениях целесообразно за счет перерасчета значений сопротивлений R1-R3 уровень 2 поднять на 0.15-0.25 В, а уровень 3 на ту же величину понизить. Эту меру целесообразно использовать также и в целях повышения стабильности работы ПУ для предотвращения ложных срабатываний кнопки при высоком уровне внешних помех.

Об управлении микроконтроллером AVR при дефиците выводов
Рисунок 3.

Уровни напряжений, формируемых ПУ (Рисунок 2).
1 – PB0 в состоянии «выход», установлен 
логический уровень 1;
2 – PB0 в состоянии «вход», уровень определяется
соотношением R1/R2 = 2/3;
3 – то же, что и 2, замкнута кнопка
SB1 при R3 = R1;
4 – PB0 в состоянии «выход», установлен
логический уровень 0.

Но вернемся к вопросу управления светодиодом, о котором шла речь вначале. Его уже можно было бы подключить, например, между выходом ПУ (точка А схемы на Рисунке 2) и источником питания Vcc, снабдив предварительно МК соответствующим программным сопровождением. Но целесообразнее все же сделать это так, как предлагается на Рисунке 4а, что позволит характеристики ПУ сделать практически независящими от подключения нагрузки (светодиода), а также обеспечит работу устройства в более широком интервале напряжений. Так, например, при R1 = 2.2 кОм, R2 = 3.3 кОм и R3 = 1.5 кОм (Рисунок 2) работа преобразователя будет уверено обеспечиваться при изменении напряжения Vcc в пределах от 2.5 В до 5.5 В, а подключение светодиода потребует лишь уточнения величин R4, R5 в зависимости от параметров используемого транзистора, типа светодиода HL1 и требуемой яркости его свечения (Рисунок 4а).

Об управлении микроконтроллером AVR при дефиците выводов
Рисунок 4.Варианты подключения дополнительных элементов к преобразователю из Рисунка 2.

В рассматриваемом случае управление включением/выключением светодиода осуществляется сигналом, который формируется на выходе преобразователя в точке А (Рисунок 2), изменяющимся в пределах всего 2 В. Такого его уровня, вообще говоря, недостаточно для дальнейшего использования в стандартном режиме работы МК и сопряженных с ним устройств. Для расширения возможностей МК необходимо восстановить уровни напряжения этого сигнала до обычных значений бистабильных выходов МК – 0 В и Vcc. Этого можно добиться, подключив к выходу ПУ, например, цепь, изображенную на Рисунке 4б. Характерно, что на выходе этого усилителя замыкание кнопки уже не изменяет параметров импульсной последовательности, если это не предполагается логикой работы программы МК. И, таким образом, управляемый объект не «чувствует» нажатой кнопки, а изменяет свое состояние только после ее отпускания. На Рисунке 5 в качестве примера приведена осциллограмма, на которой показаны фазы изменения скважности импульсного сигнала, вызванные нажатием кнопки (Vcc = 5 В).

Об управлении микроконтроллером AVR при дефиците выводов
Рисунок 5.Осциллограмма напряжений, формируемых на выходе
ПУ (сверху) и после усиления цепью, изображенной на
Рисунке 4б (снизу). Цифры указывают состояние
кнопки: 1 – разомкнута, 2 – нажата, 3 – отпущена.

В рассмотренном примере, как следует из Рисунка 5, не используется еще одно состояние вывода PB0 – «выход» с нулевым уровнем напряжения. При необходимости это обстоятельство можно использовать для создания дополнительного канала управления объектом, например, для его отключения/включения, для структурировании импульсных последовательностей и т. п. В этом случае для его формирования целесообразно использовать цепь на Рисунке 3в, применение которой позволит на ее выходе получить уровень Vcc только при нулевом напряжении на выходе ПУ, а во всех других ситуациях на нем будет нулевой уровень.

Можно отметить также, что использование этого состояния превращает управляющий сигнал, формируемый на выходе ПУ в точке А (без участия кнопки), фактически, в трехуровневый сигнал, находящий применение в некоторых системах связи. В обычных же условиях работы МК эта его особенность может быть использована для формирования сложных импульсных последовательностей.

В заключение рассмотрим демонстрационный пример реализации устройства для ступенчатого управления яркостью свечения светодиода с помощью тактовой кнопки. И для этой цели будет использоваться только один вывод МК. Его принципиальная схема приведена на Рисунке 6. Основой устройства является 8-выводной микроконтроллер ATtiny13A в стандартном включении с активированным внутренним RC-генератором на 9.6 МГц без деления на 8 (устанавливается соответствующим фьюзом при программировании). Схема особенностей не имеет. Принцип изменения яркости свечения сводится к изменению скважности управляющего сигнала при сохранении его частоты около 70 Гц. Нажатие кнопки и ее удержание не приводят к изменению яркости светодиода (управляющей импульсной последовательности), которое возникает только в момент отпускания кнопки. В соответствии с логикой этого режима вывод PB3 периодически переводится в состояние «вход». Опрос с целью обнаружения замыкания кнопки производится в эти моменты перед переходом вывода в состояние «выход». Для надежной фиксации размыкания/замыкания кнопки используется программная обработка дребезга контактов. Правильно собранное устройство наладки не требует и может питаться от источника 2.8…5.5 В.

Об управлении микроконтроллером AVR при дефиците выводов
Рисунок 6.Принципиальная схема устройства управления яркостью свечения светодиода.

Следует отметить, что демонстрационная программа, представленная в приложении в виде asm- и hex-файлов, не является оптимальной. И правильнее было бы ее выполнить с использованием прерываний, да и отойти от ее слишком прямолинейной логики. Но эти недостатки искупаются возможностью простого переноса программы на другие МК серии AVR. В большинстве случаев при этом потребуется лишь заменить файл описания МК "tn13Adef.inc" в asm-файле на соответствующий файл нового МК. Сам файл описания должен находиться в той же папке, что и asm-файл.

Завершая обсуждение вопроса о расширении возможностей МК за счет выполнения выводом дополнительных функций, можно сказать, что, в общем «и один вывод в поле воин». По крайней мере, за счет использования на его базе преобразователей уровня, у МК появляются новые возможности. И это позволяет в какой-то мере сгладить проблему дефицита выводов микроконтроллера при их малом числе. Но польза проявляется не только в этом. В ряде случаев их использование позволяет упростить решение сложных проблем и на «продвинутых» МК.

Загрузки

Файлы демонстрационной программы

 
 
Информация
Посетители, находящиеся в группе Гости, не могут оставлять комментарии в данной новости.
 
Обратная связь

Наши партнеры

 

Опросы

Есть ли справедливость в жизни?
Конечно есть, уверен!
Вроде как должна быть, но...
Затрудняюсь ответить...
Какая справедливость? О чем Вы?
Эх.., нет правды на свете!

 

Облако тегов

Требуется для просмотраFlash Player 9 или выше.

Показать все теги
 

Календарь публикаций

«    Декабрь 2016    »
ПнВтСрЧтПтСбВс
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
 
 

Архив новостей

Декабрь 2016 (15)
Ноябрь 2016 (42)
Октябрь 2016 (34)
Сентябрь 2016 (38)
Август 2016 (34)
Июль 2016 (36)
 
Наверх Сервисные мануалы Даташиты Ремонт LCD, ЖК телевизоров LG Samsung Скрипт программы "Сервисный центр"