Вы находитесь на странице: 1из 23

Микроконтроллеры и системы на

кристалле

Лекция 5
Организация электропитания, тактирование
и цифровые порты ввода/вывода

Непомнящий Олег Владимирович


План лекции
1. Организация электропитания
2. Потребляемая мощность
3. Подключение питания
4. Запуск (сброс в начальное состояние)
5. Тактирование
6. Встроенные периферийные контроллеры.
7. Порты ввода/вывода.
8. Программная и аппаратная модели портов.
9. Лабораторный стенд STK-500 – общие сведения.
10.Примеры разработки программ от простого к не очень то
простому и далее…
Основные термины
1. Контроллер периферийного узла – встроенный на кристалл
программируемый модуль. В зависимости заданного при
программировании режима осуществляет связь между процессором,
памятью и внешним устройством.
2. Порт – абстрактное понятие. Определяет встроенный на кристалл
контроллер предназначенный для обмена цифровыми сигналами
(данными). Рассматривается как программная модель в виде трех
регистров (выходных данных, состояния входов и управления). Как
аппаратная модель представляет собой квазидвунаправленный
регистр, каждая линия которого может быть запрограммирована как на
вход так и на выход, но не на вход и выход одновременно.
3. Частота - это количество колебаний, выполненных в определенный
период времени. Чаще всего этот период измеряется в секунду.
4. Опорная тактовая частота микроконтроллера (системы-на-кристалле)
– это тактовая частота задающего (опорного) генератора, который
может быть как внешним по отношению к микросхеме, так и
внутренним, то есть встроенным на кристалл.
Организация электропитания

Современные микроконтроллеры, функционируют при


напряжениях питания от 1,8 до 6,0 Вольт. Ток потребления
микроконтроллера в активном режиме зависит от величины
напряжения питания и частоты, на которой работает
микроконтроллер.
Режимы пониженного энергопотребления
• Режим холостого хода (IDLE). Прекращает работу только процессор, при этом
сохраняется содержимое памяти данных, а внутренний генератор
синхросигналов, таймеры, система прерываний и сторожевой таймер
продолжают функционировать. Ток потребления в этом режиме не превышает
2,5 мА на частоте 12 МГц.
• Стоповый режим (POWER DOWN). Сохраняется содержимое регистрового
файла, но останавливается внутренний генератор синхросигналов, и,
следовательно, микроконтроллер перестает функционировать, пока не
поступит сигнал внешнего прерывания или аппаратного сброса. При
включенном сторожевом таймере ток потребления в этом режиме составляет
около 80 мкА, а при выключенном - менее 1 мкА. (Все приведенные значения
справедливы для напряжения питания 5 В).
• Экономичный режим (POWER SAVE). Продолжает работать только задающий
генератор. Все остальные функции отключены.
Сброс при снижении напряжения питания (BOD)
Схема BOD (Brown-Out Detection) отслеживает напряжение источника
питания. Если BOD включен, то при снижении питания ниже некоторого
значения он переводит микроконтроллер в состояние сброса. Когда
напряжение питания вновь увеличится до порогового значения, запускается
таймер задержки сброса. После формирования задержки внутренний
сигнал сброса снимается и происходит запуск микроконтроллера.

Примечание: Обозначения «Vсс» и «Vdd» применяются для указания напряжения питания


(обычно +5В, хотя возможны и другие значения) Аналогично, обозначения «Vss» and «Gnd»
используются для указания «земли».
Потребляемая мощность
1. Собственная мощность, потребляемая в рабочем режиме
микроконтроллера.
2. Мощность, потребляемая микроконтроллером при обмене данными с
периферийными устройствами, подключенными к нему через
периферийные контроллеры или порты
3. Мощность, потребляемая в «спящем» режиме, когда микроконтроллер
ожидает наступления внешнего события, переключающего его в рабочий
режим.
Подключение питания
Подключение питания
Подключение питания
Запуск (сброс в начальное состояние)

Td = 2,2 RC
Тактирование
Базовый набор периферийных контроллеров
Энергонезависимая
1. Порты FLASH-ПЗУ
программ
Встроенный
SPI - интерфейс
память данных
EEPROM

2. АЦП 16
Регисты
Программный
3. Аналоговый счетчик
управления и
настройки
Program Counter
встроенных
компаратор Регистр
команд
устройств

4. Таймеры Дешифратор
32*8 регистра
общего
Аналого-цифровой
команд назначения в т.ч.
5. Контроллеры регистровые
преобразователь
ADC
пары
последовательной
Аналоговый
связи компаратор АС

6. Контроллер ОЗУ данных


АЛУ Таймеры-счетчики
RAM событий
внешних TIMERS

прерываний Универсальный
асинхронный
7. Программируемый премо-передатчик
последовательной
связи
генератор Порты ввода- Контроллер
Сторожевой UART
таймер
вывода прерываний
опорной частоты WatchDog
Порты ввода/вывода общие сведения
на примере СнК Atmel.
1. ATMega8535 имеет 4 порта, каждый порт 8-ми разрядный. Каждый
разряд может настроен как на ввод так и на вывод. Но одновременно и
на ввод и на вывод линия порта работать не может, поэтому порт не
двунаправленный, а квазидвунаправленный.
2. Контроллерам портов присвоены латинские буквы А, В, С и D
3. Порты могут работать не только как входы-выходы портов, но и как
входы выходы других устройств, например встроенного таймера или
АЦП. Если устройство, например АЦП, включено и активировано, то его
порт «превращается» в линии связи с этим устройством и как
отдельный порт уже не работает. Чтобы порт вновь стал портом,
нужно выключить устройство и вновь запрограммировать порт.
Порты ввода/вывода программная модель.
С точки зрения программиста порт – это три регистра, каждый
из которых имеет собственное символьное имя:
- Регистр управления (DDRx – Data Direct Register)
- Регистр выходных данных (PORTx)
- Регистр состояния входных линий - пинов (PINx)

Регистры порта А
Порты ввода/вывода аппаратная модель.
С точки зрения аппаратчика, условно, порт – это регистр каждая линия
которого это транзистор с открытым коллектором, поэтому к нему можно
припаять нагрузку как на ввод (кнопка) так и на вывод (лампочка). Однако
нагрузочная способность порта не высока. Максимально допустимый
суммарный ток по всем 8-ми линиям не более 20мА. Поэтому, ставим
транзистор на светодиод и токоограничивающие резисторы на кнопку

STK-500 Схема подключения STK-500 Схема подключения


кнопки светодиода
При таком подключении нажатая кнопка подает НОЛЬ в порт,
а светодиод включается НУЛЕМ на выводе порта !!!
Лабораторный стенд STK-500 - начало.

КНОПКИ
Порты ввода/вывода – простая программа.
.include “atmega8535def.inc”;подключаем файл
;символьного описания имен
.CSEG ;это сегмент команд во Flash ПЗУ
ldi R20,0xFF ;настройка порта В на вывод
out ddrb,r20 ;к нему подключены светодиоды
ldi r20,0 ;настройка порта C на ввод
out ddrc,r20 ;к нему подключены кнопки
ldi r20,0b11111111 ;все светодиоды выключить
m1: out portb,r20 ;светодиод выключить
in r20,pind ;прочитать кнопки
;результат вывести на светодиоды
rjmp m1 ;вечная жизнь по питанию
Порты ввода/вывода – Задача 1
Отследим нарастающий фронт сигнала.
.include “atmega8535def.inc”;подключаем файл m2: in r22,pind ;уже отпустили?
;символьного описания имен cpi r22,255
.CSEG ;это сегмент команд во Flash ПЗУ brne m2 ;еще нет, ждем
ldi R20,0xFF ;настройка порта В на вывод ldi r20,0 ;ДА! включить
out ddrb,r20 ;к нему подключены светодиоды out portb,r20;все светодиоды
ldi r20,0 ;настройка порта C на ввод m3: rjmp m3 ;stop
out ddrc,r20 ;к нему подключены кнопки
m1: ldi r20,0b11111111 ;все светодиоды выключить
out portb,r20 ;
in r20,pind ;прочитать кнопки
cpi r20,255 ;есть хоть одна нажатая?
brne m2 ;ДА кнопку нажали
rjmp m1 ;НЕТ кнопку НЕнажали, ждем

Кнопка нажата и удерживается


Включить светодиод Кнопку отпустили
Кнопку не нажали
Порты ввода/вывода
Задача 2 – елочная гирлянда.
Требуется организовать «бегущий свет» на линейке светодиодов.
По нажатию и удержанию кнопки светодиоды включаются
попеременно, при отпускании кнопки – «бегущий свет»
останавливается.
Порты ввода/вывода – Программа для задачи
«елочная гирлянда».
.include “atmega8535def.inc”;подключаем файл
m1: ldi r22,10 ;задержка
;символьного описания имен
m4: ldi r23,255
.CSEG ;это сегмент команд во Flash ПЗУ
m3: dec r23
ldi R20,0xFF ;настройка порта В на вывод brne m3
out ddrb,r20 ;к нему подключены светодиоды dec r22
ldi r20,0 ;настройка порта C на ввод brne m4
out ddrc,r20 ;к нему подключены кнопки
rol r20 ;сдвиг
ldi r20,0b11111110 ;кроме последнего rjmp m5 ;и сначала
m5: out portb,r20 ;светодиод выключить
in r21,pind ;прочитать кнопки
m2: cpi r21,255 ;нажата хоть одна?
brne m1 ;да идем далее
rjmp m2 ;нет - ждем
Где собака зарыта порылась !
Ответ: ROL – сдвигает через бит С в регистре статуса, а там 0,
значит вместо одного светодиода будут светится два !
Как исправить - Нужно установить бит С в 1 – это команда STC
ВОПРОС – Куда ее вставить ?
Наглядный материал для лекции
1. Отладочная плата STK-500
2. Мобильный робот
Спасибо за внимание

Непомнящий Олег Владимирович

Вам также может понравиться