Академический Документы
Профессиональный Документы
Культура Документы
кристалле
Лекция 5
Организация электропитания, тактирование
и цифровые порты ввода/вывода
Td = 2,2 RC
Тактирование
Базовый набор периферийных контроллеров
Энергонезависимая
1. Порты FLASH-ПЗУ
программ
Встроенный
SPI - интерфейс
память данных
EEPROM
2. АЦП 16
Регисты
Программный
3. Аналоговый счетчик
управления и
настройки
Program Counter
встроенных
компаратор Регистр
команд
устройств
4. Таймеры Дешифратор
32*8 регистра
общего
Аналого-цифровой
команд назначения в т.ч.
5. Контроллеры регистровые
преобразователь
ADC
пары
последовательной
Аналоговый
связи компаратор АС
прерываний Универсальный
асинхронный
7. Программируемый премо-передатчик
последовательной
связи
генератор Порты ввода- Контроллер
Сторожевой UART
таймер
вывода прерываний
опорной частоты WatchDog
Порты ввода/вывода общие сведения
на примере СнК Atmel.
1. ATMega8535 имеет 4 порта, каждый порт 8-ми разрядный. Каждый
разряд может настроен как на ввод так и на вывод. Но одновременно и
на ввод и на вывод линия порта работать не может, поэтому порт не
двунаправленный, а квазидвунаправленный.
2. Контроллерам портов присвоены латинские буквы А, В, С и D
3. Порты могут работать не только как входы-выходы портов, но и как
входы выходы других устройств, например встроенного таймера или
АЦП. Если устройство, например АЦП, включено и активировано, то его
порт «превращается» в линии связи с этим устройством и как
отдельный порт уже не работает. Чтобы порт вновь стал портом,
нужно выключить устройство и вновь запрограммировать порт.
Порты ввода/вывода программная модель.
С точки зрения программиста порт – это три регистра, каждый
из которых имеет собственное символьное имя:
- Регистр управления (DDRx – Data Direct Register)
- Регистр выходных данных (PORTx)
- Регистр состояния входных линий - пинов (PINx)
Регистры порта А
Порты ввода/вывода аппаратная модель.
С точки зрения аппаратчика, условно, порт – это регистр каждая линия
которого это транзистор с открытым коллектором, поэтому к нему можно
припаять нагрузку как на ввод (кнопка) так и на вывод (лампочка). Однако
нагрузочная способность порта не высока. Максимально допустимый
суммарный ток по всем 8-ми линиям не более 20мА. Поэтому, ставим
транзистор на светодиод и токоограничивающие резисторы на кнопку
КНОПКИ
Порты ввода/вывода – простая программа.
.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 ;НЕТ кнопку НЕнажали, ждем