14.01.11

Структура микроконтроллера классического семейства AVR AT90S2313

Структура микроконтроллера классического семейства AVR AT90S2313



На рисунке обозначены:
1. Восьмиразрядная шина данных.
2. Встроенный генератор импульсов для сторожевого таймера.
3. Генератор импульсов для процессора.
4. Счётчик команд (устройство для выдачи адреса очередной команды).
5. Указатель адреса области памяти, куда при прерывании передаётся сигнал.
6. Сторожевой таймер (функциональный блок следит, чтобы программа не зависала и передаёт через некоторое время внутренние команды на сброс).
7. Синхронизатор внутренних процессов.
8. Память программы.
9. Оперативная память (статическая).
10. Регистр управления.
11. Регистр программных команд.
12. Регистр общего назначения.
13. Таймеры-счётчики.
14. Дешифратор.
15. Модуль прерывания.
16. Шина управления.
17. Арифметическое устройство 9выполняет логические и арифметические команды заданные в программе).
18. Электрическая стираемая постоянная память данных.
19. Регистр состояния.
20. Узел программирования.
21. Последовательный интерфейс (модуль связи с другими электрическими устройствами в последовательном коде, используется также в программировании).
22. Универсальный асинхронный приёмопередатчик.
23. Компаратор 2-х аналоговых напряжений.
24. Регистр данных порта B.
25. Регистр направления порта B.
26. Регистр данных порта D.
27. Регистр направления порта D.
28. Драйверы для порта B.
29. Драйверы для порта D. (VCC – плюс напряжения питания, GND – земля (“-“).
30. Сброс в исходное состояние.

Назначение ножек микросхемы


XTAL1, XTAL2 – к этим ножкам подключается внешний резонатор (кварц) для стабилизации внутренних импульсов.
RESET – кратковременная подача 0 на этот вход сбрасывает микроконтроллер в исходное состояние.
2,3,6,7,8,9,11 – ножки – 7 вводов/выводов порта D, сюда подключаются датчики и исполнительные реле в зависимости от того, как запрограммирован каждый разряд этого порта на вход или на выход.
4,5 – ножки (на кристалл 1 могут подаваться внешние тактовые импульсы, но обычно между этими ножками включают кварцевый резонатор который задает частоту для внутреннего генератора импульсов).
12-17,19 – входы/выходы порта В, каждый из которых можно запрограммировать как вход или как выход.
20 – “+” питания.
10 – логическая земля (“-”) источник питания.
Некоторые ножки, кроме указанных функций, имеют другую (альтернативную) функцию.
RXD – это вход приёмника (UART).
TXD – выход передатчика в последовательном коде из функционального блока приемо-передатчика (UART) данной микросхемы.
Ножка 6 (INT0) – подаётся сигнал на прерывание канала, который идёт из внешнего источника.
Ножка 7 (INT1) – сюда может подаваться второй сигнал на прерывание.
Ножка 8 (Т0) – подаются импульсы от внешнего источника, который может считать таймер T0.
Ножка 9 (Т1) – сюда могут подаваться импульсы от внешнего источника, который может считать таймер T1.
Ножка 11 (ICP) – это вход. На который подаётся код захвата таймера Т1 (режим захвата).
Ножка 12 (AIN0) – положительный вход внутреннего компаратора двух аналоговых сигналов.
Ножка 13 (AIN1) – отрицательный вход этого компоратора.
Ножка 15 – выход таймера Т1.
Ножка 17 – вход данных для внутреннего модуля SPI в режиме последовательного программирования.
Ножка 18 – выход данных при последовательном программировании через модуль SPI.
Ножка 19 (SCK) – вход тактового сигнала при последовательном программировании контроллера через модуль SPI.

Основные данные микроконтроллера:

Память программ (ПЗУ) – флеш память с электрическим стиранием объёмом 2Кбайта.
Память данных (EEPROM) – постоянная память с возможностью стирания объёмом 128 байта.
Оперативная память (ОЗУ) (SRAM) – статическая (т.е. на триггерах), объём 128 байт.
2 порта ввода/вывода B и D:
В – 8-и разрядны;
D – 7-и разрядный.
Модуль последовательного синхронного интерфейса (SPI) используемый при перепрограммировании микросхемы. Диапазон напряжения питания от 2,7 до 6 вольт.
Рабочая тактовая частота импульсов от 0 до 12 МГц.
ОЗУ микросхемы подразделяются на регистры общего назначения .
Разрядность каждой ячейки 8 бит.
Программа имеет длину 16 бит (слово). Несколько команд занимают в памяти программы не одну 16-ти разрядную ячейку, а две. Однако это исключение – 99% команд вмещаются в одну ячейку.
16-ричний ($) адрес 000 возник при начальном сбросе и в нём записана команда безусловного перехода в начало программы по адресам от $001 до $010 записано 16 векторов прерывания.
Вектор прерывания – это адрес, на который нужно перейти, чтобы начало работать, записанное по этому адресу, начало прерываний.
Флеш память – (память программы) допускает тысячи циклов стирания и новой записи.
Регистровая память (SRAM) содержит 32 регистра общего назначения и 64 регистра, которые могут использоваться для ввода/вывода. Любой регистр общего назначения может использоваться как регистр-источник Rr или как регистр-приёмик Rd.
Показанные на структурной схеме регистры X, Y, Z используются для косвенной адресации, т.е. они могут содержать адрес, на который нужно перейти.

Программные команды микроконтроллера AVR
Арифметические и логические команды.

1. Команда арифметического сложения содержимого двух регистров
ADD Rd, Rr
Результат сложения записывается в регистр Rd.
2. Арифметическое вычитание
SUB Rd, Rr
По этой команде от числа содержащегося в регистре Rd вычитается число содержащиеся в регистре Rr, результат остается в регистре Rd.
3. AND Rd, Rr
По этой команде число содержащиеся в регистре Rd поразрядно умножаются на число содержащиеся в регистре Rr, результат как и в других случаях направляется в регистр Rd.
4. Команда логического умножения содержимого регистра Rd на константу (число) заданное в самой команде
ANDI Rd, k
Число k задается в самой программной команде.
5. Логическое сложение содержимого 2-ух регистров.
OR Rd, Rr
По этой команде содержимое регистра Rd логически поразрядно складывается с содержимым регистра Rr, результат как обычно будет в Rd.
6. Логическое сложение содержимого регистра и константы.
ORI Rd, k
7. Операция неравнозначность над содержимым двух регистров
EOR Rd, k
При этой операции одинаковые по номеру разряды сравниваются между собой. Если они одинаковые по логическому значению, т.е. 1,1; 0,0, то результат в этом разряде записывается 0, а если разные, то – 1.
8. Задание единичных значений определенным битам в указанном регистре через число указанное в команде.
SBR Rd, k
Единицы в числе k указывают какие биты в регистре должны быть установлены в единицы.
9. Задания для сброса в 0 определенных битов регистра через число k.
CBR Rd, k
Единицы в числе k указывают какие биты в регистре должны быть сброшены в 0.
10. Увеличение на единицу (инкремент).
INC Rd
По этой команде содержимое указанного регистра (в программе вместо d, указывается конкретный номер регистра) увеличивается на 1.
11. Уменьшение на 1 (декремент)
DEC Rd
12. Команда сброса в ноль всех разрядов регистра.
CLR Rd

Команды перемещения данных.

1. MOV Rd, Rr
По этой команде данная находящаяся в регистре Rr, копируется в регистр Rd, результат в Rd.
2. Команда непосредственной загрузки данных в регистр.
LDI Rd, k
3. Команда ввода данных из порта в регистр.
IN Rd, P
Число из указанного порта копируется в указанный регистр.
4. Вывод числа из регистра в указанный порт.
OUT Pr, Rr

Команды ориентированные на отдельные биты.

1. SBI P, b
Это команда установки в 1 определенного бита (b), определенного порта (P).
2. CBI P, b
Эта команда сбрасывает в 0 указанный бит, указанного порта.
Поскольку в регистре состояния имеются биты признаков (флаги), то они автоматически устанавливаются или сбрасываются по результатам предыдущей логарифмической или логической операции. Предусматривается так же принудительная программная установка или сброс этих флагов с помощью программных команд.
3. SEC
По этой команде флаг переноса в регистре состояния устанавливается в единицу.
4. CLC
По этой команде флаг переноса сбрасывается в 0.
5. SEN
По этой команде флаг (признак) отрицательного числа устанавливается в 1.
6. CLN
По этой команде флаг – бит признак отрицательности сбрасывается в ноль.
7. SEZ
По этой команде бит признак нулевого результата в предыдущей команде устанавливается в 1.
8. CLZ
По этой команде флаг (признак) нулевого результата сбрасывается в 0.
9. SEI
По этой команде устанавливается в 1 флаг разрешения всех прерываний в программе.
10. CLI
Запрещаются любые прерывания команды.
11. SET
Вспомогательный флаг T в регистре состояния устанавливается в 1.
12. CLT
Этот вспомогательный флаг T сбрасывается в 0.

Команды переходов.

1. RJMP k
По этой команде происходит переход на ячейку памяти, которая отстоит от данной ячейки (находится на расстоянии) на k ячеек которое задается в команде.
RJMP L
Чтобы заранее не считать число k, то место в программе на которое нужно перейти мы обозначаем в программе меткой Li.
2. IJMP
Косвенный переход.
По этой команде происходит безусловный переход на ячейку адрес которой находится в регистре Z.
3. RCALL k
Относительный вызов подпрограммы.
По этой команде вызывается подпрограмма находящаяся на расстоянии k ячеек от данной ячейки с программой. Число k мы рассчитываем или ставим метку на ту ячейку с которой начинается подпрограмма.
RCALL Li
4. ICALL R
Это команда вызова подпрограммы с помощью косвенной адресации. Адрес начала подпрограммы находится в регистре Z.
5. RET
Команда возврата из вызванной подпрограммы.
6. RETI
Команда возврата из подпрограммы, которая была вызвана запросом на прерывание.
7. CPSE
По этой команде сравнивается содержимое 2-ух регистров, если оно одинаковое, то программа пропускает следующую за этой командой команду.
8. CP Rd, Rr
Сравнивается путем вычитания содержимое двух регистров, однако результат вычитания никуда не записывается, содержимое регистров остается исходным, но в зависимости от результатов выставляются соответствующие флаги регистра состояния.
9. CPI k
По этой команде из числа содержащегося в регистре вычитается число k заданное в самой команде. В зависимости от результата вычитания выставляются флаги регистра состояния.
10. SBRC Rr, b
По этой команде происходит пропуск (перепрыгивание) следующей по порядку команды, если указанный бит в указанном регистре равен 0.
11. SBRS Rr, b
По этой команде происходит пропуск следующей команды, если указанный бит в указанном регистре равен 1.

Команды для портов.

1. SBIC P, b
Проверяется содержимое указанного бита в указанном порту, если этот бит равняется 0, то следующая команда пропускается.
2. SBIS P, b
По этой команде пропускается следующая команда программы, если указанный бит в указанном порту равен 1.
3. BRBS S, k
Происходит переход на k ячеек относительно текущей, если флаг S в регистре состояния установлен в 1.
В программе вместо k пишем метку.
4. BRBC S, k
Происходит переход через количество ячеек заданное в параметре k, если флаг S в регистре состояния равен 0.
5. BREQ, k
Переход на k ячеек, если при сравнении двух регистров или других логических или арифметических операций получился 0 и флаг Z в регистре состояния установился в 1.
6. BRNQ, k
Переход через k ячеек, команда выполняется в том случае, если флаг Z (признак 0 результата) сброшен в 0.
7. BRCS, k
Переход через k ячеек, если флаг переноса (carry) установлен в 1.
8. BRCC, k
Переход через k ячеек, если флаг переноса в регистре состояния равен 0.
9. BRMI, k
Происходит переход через k ячеек, если результат предыдущей операции арифметической или логической – отрицательный, т.е. флаг N (negative) в регистре состояния установлен в 1.
10. BRPL, k
Переход через k ячеек, если результат предыдущей арифметической или логической операции положительный (флаг minus в регистре состояния выставлен в 1).
11. BRTS, k
Происходит переход через k ячеек, если вспомогательный флаг Т в регистре состояния установлен в 1.
12. BRTC, k
Происходит переход через k ячеек, если вспомогательный флаг Т в регистре состояния сброшен в 0.
13. BRVS, k
Происходит переход через k ячеек, если произошло переполнение таймера и флаг V установился в 1.
14. BRVC, k
Выполняется, если переполнение не произошло (переход через k ячеек) и флаг V сброшен в 0.
15. BRIE, k
Переход через k ячеек, если прерывания разрешены.
16. BRIС, k
Происходит переход через k ячеек, если прерывания запрещены. Флаг разрешения прерывания I в регистре состояния сброшен в 0.

⇓ДОБАВИТЬ В ЗАКЛАДКИ⇓


⇒ВНИМАНИЕ⇐
  • Материал на блоге⇒ Весь материал предоставляется исключительно в ознакомительных целях! При распространении материала используйте пожалуйста ссылку на наш блог!
  • Ошибки⇒ Если вы обнаружили ошибки в статье, то сообщите нам через контакты или в комментариях к статье. Мы будем очень признательны!
  • Файлообменники⇒ Если Вам не удалось скачать материал по причине нерабочих ссылок или отсутствующих файлов на файлообменниках, то сообщите нам через контакты или в комментариях к статье.
  • Правообладателям⇒ Администрация блога отрицательно относится к нарушению авторских прав на www.electroengineer.ru. Поэтому, если Вы являетесь правообладателем исключительных прав на любой материал, предоставленный на ресурсе, то сообщите нам через контакты и мы моментально примем все действия для удаления Вашего материала.


⇓ОБСУДИТЬ СТАТЬЮ⇓

0 комментарии:

Отправить комментарий

 

Сисадмин мнил себя богом сети, электрик грубо развеял этот миф. Научись развеивать мифы! © Electrical Engineer's blog [2010-2016].