Ну что, приступим? Посмотрим на структурную схему:
Как видно из рисунка, микроконтроллер содержит в себе минимальный набор устройств, необходимый для начального освоения.
Память
микроконтроллера построена по гарвардской архитектуре, то есть, память
данных и память программ, а также шины доступа к ним являются
раздельными. Память программ представляет собой Flash-ПЗУ, которое можно
многократно стирать и перезаписывать. Память данных разделена на два
типа: регистровая и энергонезависимая (EEPROM). Регистровая память, как
следует из названия, это набор регистров: 32 регистра общего назначения
(РОН) и 18 служебных регистров для ввода вывода: SREG - регистр состояния, отображает состояние микроконтроллера после
выполнения команды. Набор его разрядов, по сути представляет собой набор
флагов:
I - флаг разрешения прерываний; 1 - разрешены, 0 - запрещены.
T - хранение бита, используется командами BLD и BST.
H - флаг
половинного переноса; устанавливается в 1, если имел место перенос из
младшей половины байта, или заем из старшей половины байта.
S - флаг знака;
этот флаг равен результату операции "исключающие ИЛИ", между флагами N и
V, устанавливается в 1, если результат меньше 0.
V - флаг
переполнения; устанавливается в 1, при переполнении разрядной сетки
знакового результата. Используется при работе со знаковыми числами.
N - флаг отрицательного значения; устанавливается в 1 если результат операции стал меньше 0.
Z - флаг нуля; устанавливается, если результат операции равен 0
C - флаг переноса; устанавливается, если произошел выход за границы байта.
Микроконтроллер имеет порт ввода/вывода, состоящий из 6 линий. Работой порта управляют 3 регистра:
Регистр PORTB служит
для подключения внутренних подтягивающих резисторов, соответственно бит
установленный в 1 означает что резистор подключен, 0 отключен. Также
имеется еще один регистр MCUCR (на рисунке не показан),
он также предназначен для подключения внутренних резисторов, но в
отличии от предыдущего управляет подключением сразу всех резисторов. С
помощью регистра DDRB можно указать направление порта,
то есть как он будет сконфигурирован, на вход или на выход; бит
установленный в 1 указывает что порт настроен на выход, 0 на вход.
Значение битов в регистре PINB показывает, какой уровень сигнала присутствует на том или ином выводе микроконтроллера, если 1 то высокий, если 0 то низкий.
Кроме основных,
линии могут выполнять альтернативные функции, например на линии PB5 и
PB4 можно подключить внешний кварцевый резонатор, линии PB2, PB1 и PB0
служат для подключения к программатору, и т.д.
Аналоговый компаратор
позволяет сравнивать два напряжения, присутствующие на выводах
микроконтроллера: это AIN1 - инвертированный вход, а AIN0
неинвертированный. Если напряжение на AIN0 больше чем на AIN1 то
результатом сравнения является 1, иначе 0. Результат сравнения,
сохраняться в разряде ACO регистра ACSR. Регистр ACSR (Register
Comparator Status Register) управляет компаратором, располагается в
памяти по адресу $08. В регистре есть 8 битов управления, рассмотрим их:
ACD - отвечает за включение/выключение компаратора; 1-выключен, 0 включен.
AINBG - когда
этот бит установлен в 1, то к неинвертированному выводу AIN0 (PB0),
подключен источник опорного напряжения (внутренний) на 1.22в , а когда
установлен в 0, то линия функционирует в нормальном режиме.
ACO - содержит результат сравнения
ACI - флаг прерывания компаратора
ACIE - разрешение прерываний от компаратора, 1 - разрешены прерывания, 0 - запрещены.
ACIS1, ASIC0 -
набор из этих двух битов, определяет условие возникновения прерывания от
компаратора; 00 прерывание при любом изменении состояния компаратора,
10 и 11 - изменение состояния с 1 на 0 и с 0 на 1 соответственно.
Наверное, самым используемым устройством при проектировании являются таймеры/счетчики. Они предназначены для формирования заданного временного интервала и для счета импульсов. Рассмотрим блок-схему предделителя: На него поступает сигнал тактовой частоты. Работой предделителя управляет регистр TCCR0 если в разряды данного регистра записать нули, то это означает что
таймер остановлен. Для установки нужного коэффициента деления служат три
младших разряда CS00, CS01 и CS02
Последние два значения (110 и 111)
означают работу от внешнего источника импульсов, подаваемых на вывод Т0
микроконтроллера - от падающего или нарастающего фронта.
Результат счета отображается в регистре TCNT0, который находиться по адресу $32.
Теперь, рассмотрим основные способы тактирования микроконтроллера. Самый простой способ тактирования
это задействовать встроенный генератор, при этом можно использовать как
внешнею так и внутреннею RC-цепочку. Но так следует поступать, когда не
требуется точных измерений временных интервалов. При использовании
внешней RC-цепочки, рекомендуется выбирать сопротивление резистора в
диапазоне 3.3 - 100 КОм, а емкость конденсатора не должна быть меньше
20пФ. При использовании внутренней RC-цепочки, имеется возможность
подстраивать частоту генератора. Для этого существует регистр OSCCAL,
чем большее число записано в этот регистр чем больше частота генератора.
В том случае, если имеется источник опорной частоты, то его подают на вывод XTAL1, а вывод XTAL2 соединяют с землей.
Но наверное самым используемым способом тактирования в радиолюбительской практике является
тактирование при помощи кварцевого или керамического резонатора. Тогда
он подключается к выводам XTAL1 и XTAL2, и к нему еще подключаются
конденсаторы, емкостью по 22пф. При этом есть возможность использовать
тактовый сигнал микроконтроллера для синхронизации другого устройства,
но для этого нужно применить дополнительный буфер (см. рисунок). Частота
кварца может составлять до 8 МГц. Способ тактирования микроконтроллера
задается на этапе прошивки микроконтроллера , при помощи fuse-битов. Мы с вами рассмотрели основные моменты, на какие следует обратить
внимание при изучения микроконтроллера ATtiny12, познакомились с
некоторыми регистрами. Те регистры, которые не рассматривались в данной
статье, мы будем рассматривать по ходу дела. При составлении статьи я не
изобретал велосипед, а просто взял и изучил Datasheets, поэтому и вам
советую хоть один раз туда заглянуть
Источник: http://radio-new.ru/article/3.html |