Порты ввода вывода МК AVR
Подключение клавиатуры и индикации.
Аналоговые компараторы
Цифро-аналоговые преобразователи МК AVR
17. Способы подключения МК к персональному компьютеру, интерфейс UART, USI
18. Схемы подключения фотодатчиков к МК
19. Процесс компиляции МК, работа программатора
Что такое фьюз МК, для чего предназначены
21. Назначение Flash ROM, SRAM, EEPROM
22. Способы подключения двигателя к МК
23. Принцип динамической индикации. Принцип статической индикации.
24. Как рассчитать мощность потребления контроллера.
25. Опишите цифровые шины микропроцессора. (ШД, ША, ШУ)
Порты ввода вывода МК AVR.
14Подключение клавиатуры и индикации.
На рис.1 приведена наиболее распространенная схема расположения сегментов, позволяющая отображать цифры 0…9 и многие другие дополнительные символы. В нутрии корпуса все светодиоды имеют общую точку соединения. Объединенными вместе могут быть аноды (общий анод) или катоды (общий катод). Самые распространенные цвета свечения - красный и зеленый. При равном токе потребления красные светодиоды, как правило, имеет большую светоотдачу. Энергопотребление зависит от напряжения питания и технологии изготовления. Ток сегмента у современных индикаторов может быть менее 1 мА.
Рис.2 Подключение индикатора при динамической индикации
Для того чтобы высветить на индикаторе необходимый символ, потребуется задействовать у микроконтроллера 8 выводов. Одну линию можно сэкономить если отказаться от сегмента H, когда в отображения точки (запятой) нет необходимости. При большем чисел используемых индикаторов количество линий ввода-вывода существенно возрастет. Два индикатора потребуют уже 16 линий, 3 индикатора - 24 и т.д. Ясно, что для большинства приложений такое расточительное использование выводов совершенно неприемлемо.
Для более рационального использования линий портов можно воспользоваться матричной схемой подключения на рис.1. В данном случае матрица, подключённая к порту D, имеет размер 4*4=16 кнопок (4 строки r0…r3 и 4 столбца с0…с3). Линии PD0…PD3, являющиеся строками r0…r3, всегда настроены на ввод, и подтянуты к шине питания резисторами R (типичный номинал 4,7…10 кОм). С них и производится считывание состояния кнопок SB1-SB16. На линиях PD4…PD7 (столбцы с0…с3) поочерёдно формируется сигнал логического нуля. Первоначально низкий уровень устанавливается на столбце с0, а на всех остальных столбцах при этом Z-состояние. Теперь только при нажатии кнопок этого столбца (SB1…SB4) на линиях строк r0…r3 может возникнуть низкий логический уровень. Далее логический 0 выставляется на столбце с1 и сканируются группа кнопок SB5…SB8 и т.д. Точно такой же алгоритм опроса кнопок применяется и для любой другой матричной клавиатуры не зависимо от числа строк и столбцов. В общем случае количество кнопок n является произведением числа строк и столбцов. Так, например, матрица 2*2 (4 линии) будет содержать 4 кнопки. Но с другой стороны столько же линий ввода-вывода понадобится и для непосредственного подключения того же числа кнопок. Таким образом, экономия выводов начинает проявляться при числе кнопок, превышающем 4…6, и становится ещё более существенной с ростом их количества.
Рис.1 Матричная схема подключения кнопок
Элементы VD1…VD4, и R1…R4 не являются обязательными на схеме. Диоды служат для защиты от короткого замыкания между линиями строк и столбцов. Если, например, при нажатии на кнопку SB1 (в момент сканирования столбца c0) линия строки r0 вдруг окажется настроенной на вывод и на ней будет высокий логический уровень, то по цепи c0r0 начнет протекать недопустимо большой ток. Хотя логика программы не допускает такого режима работы, по разным причинам это все-таки может произойти. Поэтому, по крайней мере, при отладке программы диоды не будут лишними. Если емкость монтажа, приведенная к выводам PD3…PD0, не слишком велика, то сопротивления подтяжки к шине питания, вполне можно заменить внутренними “pull-up” резисторами. Для этого необходимо установить соответствующие разряды в регистре PORTD, когда линии настроены на ввод.
Аналоговые компараторы
В составе МК есть прекрасная вещь компаратор. Компаратор это
сравниватель. Он сравнивает величины напряжений и в зависимости от того
какое из них выше другого, выставляет на выходе либо 1, либо 0.
16 АЦП.В AVR довольно много встроенных возможностей для выполнения операций с аналоговыми величинами: это аналоговый компаратор, который неизменно входит во все без исключения модели AVR (а в "продвинутом" семействе XMega их даже несколько) и 10-разрядный многоканальный АЦП (в семейст- ве XMega он стал 12-разрядным). Преобразования в обратную сторону — цифрового значения в аналоговое — до сих пор можно было осуществлять только с помощью ШИМ-режима таймеров (см. главу 8), лишь в семействе XMega появились "настоящие" ЦАП.
Аналого-цифровой преобразователь ( АЦП) микроконтроллера умеет измерять только напряжение. Чтобы произвести измерение других физических величин, их нужно вначале преобразовать в напряжение. Сигнал всегда измеряется относительно точки называемой опорное напряжение, эта же точка является максимумом который можно измерить. В качестве источника опорного напряжения (ИОН), рекомендуется выбирать высокостабильный источник напряжения.
Одной из важнейших характеристик является разрешающая способность, которая влияет на точность измерения. Весь диапазон измерения разбивается на части. Минимум ноль, максимум напряжение ИОН. Для 8 битного АЦП это 28=256 значений, для 10 битного 210=1024 значения. Таким образом, чем выше разрядность тем точнее можно измерять сигнал.
Если измерить сигнал от 0 до 10В. Микроконтроллер используем Atmega8, с 10 битным АЦП. Это значит что диапазон 10В будет разделен на 1024 значений. 10В/1024=0,0097В — с таким шагом мы сможем измерять напряжение. Но учтите, что микроконтроллер будет считать, величину 0.0097, 0.0098, 0.0099… одинаковыми.
В качестве источника опорного напряжения можно использовать внутренний источник и внешний. Напряжение внутреннего источника (2,3-2,7В) не рекомендуется использовать, по причине низкой стабильности. Внешний источник подключается к ножке AVCC или Aref, в зависимости от настроек программы
При использовании АЦП ножка AVCC должна быть подключена. Напряжение AVCC не должно отличаться от напряжения питания микроконтроллера более чем на 0,3В. Как было сказано, максимальное измеряемое напряжение равно опорному напряжению(Vref), находится оно в диапазоне 2В-AVCC. Таким образом, микроконтроллер не может измерить более 5В.
Чтобы расширить диапазон измерения, нужно измерять сигнал через делитель напряжения. Например, максимальное измеряемое напряжение 10В, опорное напряжение 5В. Чтобы расширить диапазон измерения, нужно уменьшить измеряемый сигнал в 2 раза.
Формула для расчета делителя выглядит так:
Uвых = UвхR2/(R1 + R2)
Подставим наши значения в формулу:
5 = 10*R2/(R1+R2)
(R1+R2)=2*R2
R1=R2
т.е. можно взять любые два одинаковых резистора и подключить их по схеме
Следовательно, когда мы измеряем напряжение через делитель, нужно полученное значение АЦП умножить на коэффициент=Uвых/Uвх.
Полная формула вычисления измеряемого напряжения будет выглядеть так:
U=(опорное напряжение*значение АЦП*коэффициент делителя)/число разрядов АЦП
Пример: опорное 5В, измеренное значение АЦП = 512, коэффициент делителя =2, АЦП 10разрядный.
(5*512*2)/1024=5В — реальное измеренное значение напряжения.
Некоторые программисты пишут программу так, чтобы микроконтроллер автоматически вычислял коэффициент делителя, для этого выходной сигнал измеряют образцовым прибором и заносят это значение в программу. Микроконтроллер сам соотносит истинное напряжение каждому значению АЦП, сам процесс однократный и носит название калибровки.
19 FUSE биты (фьюзы) – они настраивают определенные параметры микроконтроллеров, это некий инструмент для их тонкой настройки .
Фьюзы включают или настраивают такие параметры как:
- частота генератора, внешний или внутренний генератор
- запрет на чтение прошивки микроконтроллера
- включение или выключение таймеров
- деление частоты кварцевого генератора
- защита EEPROOM от стирания
…и так далее.
У каждого микроконтроллера выставляются свои фьюзы, у разных МК разный список фьюзов, например в ATmega8 нет фьюза CKOUT, но он присутствует в ATtiny2313. В даташитах к микроконтроллерам все эти фьюзы расписаны.
1. Каждый из портов является 8-ми битным регистром ввода/вывода, способныйкак выводить, так и получать данные по 1 байту за один раз. Для этих целей на МКпредусмотрено по 8 ножек на порт. 2. Каждый порт имеет альтернативные функции. Такие как счетчики, компараторы,входы(АЦП), входы внешнего прерывания, UART и так далее. Вот это и есть, основные причины по которым мне кажется лучше изучить портыболее подробно в одном уроке. Давайте сначала рассмотрим порты по прямому назначению, а именно попробуемввести данные из вне и вывести наружу. Смотрим на рисунок ниже. Рисунок 1. Порт PBx.
