- •Вопросы к первой контрольной точке:
- •1) Комбинационная логика, основные элементы (и, или, не), их схемы на кмоп транзисторах.
- •5) Регистры на основе d-триггеров. Параллельные регистры, последовательные (сдвиговые) регистры. Временная диаграмма работы сдвигового регистра.
- •6) Общая структура микроконтроллерного устройства, алу, программный счётчик.
- •7) Виды памяти микроконтроллеров (на примере семейства avr). Стек и его инициализация.
- •8) Прерывания, вектор прерываний.
- •9) Основы языка Assembler для микроконтроллеров семейства avr. Синтаксис, классификация команд.
- •10) Регистры ввода-вывода. Схема устройства вывода микроконтроллера, управляющие регистры, режимы работы.
10) Регистры ввода-вывода. Схема устройства вывода микроконтроллера, управляющие регистры, режимы работы.
Все регистры ввода/вывода (РВВ) условно можно разделить на два типа:
служебные регистры микроконтроллера,
регистры, относящиеся к конкретным периферийным устройствам.
Все регистры ввода/вывода занимают свое адресное пространство в памяти данных (SRAM) – от 32 до 95 (или в шестнадцатиричном счислении от $20 до $5F) и идут сразу за регистрами общего назначения, в так называемом адресном пространстве ввода/вывода. Каждый регистр восьмиразрядный и занимает память в один байт.
К примеру, для управления портом ввода-вывода имеется три РВВ – один служит для задания направления работы порта (на вывод или ввод информации), второй для подключения и отключения подтягивающего регистра, а третий для выдачи на порт логического нуля или единицы (в случае, если порт работает на выход). И так каждое устройство.
Схема порта ввода-вывода.
На входе стоит небольшая защита из диодов, которая призвана защитить вход микроконтроллера от превышения напряжения питания. Если напряжение на входе будет выше напряжения питания, то верхний диод откроется, и это напряжение уйдёт на шину питания, где с ним будет бороться источник питания и его фильтры. Если на вход попадет отрицательное напряжение (ниже уровня земли), то оно будет нейтрализовано через нижний диод и уйдет на землю. Управляющая логика, определяющая конфигурацию порта (направление передачи данных) при этом изображена в виде простейших переключателей.
Основные управляющие регистры порта ввода-вывода:
Регистр DDRx (Data Direction Register) - порт направления данных, определяет будет порт работать на вход данных или на выход. (1 - выход, 0 - вход)
Регистр PORTx - определяет текущее значение порта, если он работает на выход, то есть подаётся на выход напряжение (1) или нет (0).
Регистр PUEx (pull-up enabled) - определяет включена ли подтяжка через резистор на порте (на рисунке был ключ к1)(1 - включен, 0 - выключен).
Регистр PINx - чисто входной, позволяет считывать напряжение на входе (в нём лежит 1, если есть напряжение и 0, если нет)
Режимы работы (простите за мыло):
DDRxn |
PORTxn |
PUExn |
Ввод/Вывод |
Pull-up |
Комментарий |
0 |
0 |
0 |
Вход |
нет |
Вывод находится в третьем состоянии (Hi-Z) |
0 |
0 |
1 |
Вход |
есть |
Если вывод на земле, Pxn станет источником тока |
1 |
0 |
0 |
Выход |
нет |
На выходе – низкий уровень (логический 0) |
1 |
1 |
0 |
Выход |
нет |
На выходе – высокий уровень (логическая 1) |
ОГОВОРКА: для включения подтяжки, в теории, можно использовать комбинацию DDRxn = 0, PORTxn = 1, у него так в методе показано (табличка ниже), но более правильно будет сделать, как у меня.
DDRxn |
PORTxn |
Ввод/Вывод |
Pull-up |
Комментарий |
0 |
0 |
Вход |
нет |
Вывод находится в третьем состоянии (Hi-Z) |
0 |
1 |
Вход |
есть |
Если вывод на земле, Pxn станет источником тока |
1 |
0 |
Выход |
нет |
На выходе – низкий уровень (логический 0) |
1 |
1 |
Выход |
нет |
На выходе – высокий уровень (логическая 1) |
