Федеральное агентство по образованию
Государственное образовательное учреждение
высшего профессионального образования
«Алтайский государственный технический университет
имени
Бийский технологический институт (филиал)
,
ПОСЛЕДОВАТЕЛЬНЫЕ ИНТЕРФЕЙСЫ ТИПОВЫХ ЭЛЕКТРОННЫХ КОМПОНЕНТОВ
Лабораторный практикум по курсу «Аппаратные интерфейсы информационных систем» для студентов специальности 230201 «Информационные системы и технологии»
Бийск 2007
УДК 681.32
Барсуков, интерфейсы типовых электрон-ных компонентов: лабораторный практикум по курсу «Аппаратные интерфейсы информационных систем» для студентов специальности 230201 «Информационные системы и технологии» / , .
Алт. гос. техн. ун-т им. , БТИ. – Бийск.
Изд-во Алт. гос. техн. ун-та, 2007. – 50 с.
В лабораторном практикуме приведено описание лабораторных стендов, а также даны задания к лабораторным работам по курсу «Аппаратные интерфейсы информационных систем».
Рассмотрен и одобрен на заседании кафедры МСИА.
Протокол № 47 от 30.г.
Рецензент: доцент каф. физики, к. т.н. (БТИ АлтГТУ)
© , 2007, © , 2007
© БТИ АлтГТУ, 2007
СОДЕРЖАНИЕ
Введение………………………………………………………………. | 4 |
1 Описание лабораторного стенда…………………………………... | 4 |
2 Работа с программой AVR Studio………………………………….. | 6 |
3 Архитектура микроконтроллера AT90S8535……………………... | 11 |
4 Основы программирования микроконтроллера AT90S8535 на языке Ассемблер в среде AVR Studio 4 …………………………. | 13 |
5 Задания на лабораторные работы………………………………….. | 17 |
5.1 Лабораторная работа № 1……………………………………… | 17 |
5.2 Лабораторная работа № 2……………………………………… | 22 |
5.3 Лабораторная работа № 3……………………………………… | 23 |
5.4 Лабораторная работа № 4……………………………………… | 25 |
5.5 Лабораторная работа № 5……………………………………… | 31 |
5.6 Лабораторная работа № 6……………………………………… | 39 |
Литература…………………………………………………………….. | 45 |
Схема электрическая принципиальная сменного модуля…………………………………………………………………. | 46 |
Перечень команд микроконтроллера AT90S8535... | 47 |
ВВЕДЕНИЕ
Предлагаемый лабораторный практикум разработан для специальности «Информационные системы и технологии» в рамках курса «Аппаратные интерфейсы информационных систем». Практикум включает в себя шесть лабораторных работ, связанных с программной реализацией стандартных протоколов [1] обмена данными между типовыми электронными компонентами.
1 ОПИСАНИЕ ЛАБОРАТОРНОГО СТЕНДА
Лабораторный стенд представляет собой стандартный внутри-схемный эмулятор фирмы ATMEL ICE200 [2] с подключаемым сменным модулем, который содержит несколько типовых электронных компонентов с последовательными интерфейсами. Внешний вид модуля показан на рисунке 1.
|
Рисунок 1 – Подключаемый модуль с набором типовых компонентов с последовательным интерфейсом |
Модуль состоит из следующих элементов:
1 – микросхема EEPROM 24С01 [3] с последовательным интер-фейсом;
2 – микросхема EEPROM 93LC66 [4] с последовательным интер-фейсом;
3 – RS-232/SPI контроллер светодиодной линейки;
4 – интегральный температурный датчик DS18B20 [5] с после-довательным интерфейсом;
5 – интегральный температурный датчик DS1620 [6] с последо-вательным интерфейсом;
6 – светодиодная линейка из 6 элементов;
7 – контрольный светодиод 1;
8 – контрольный светодиод 2.
На рисунке 2 показан внутрисхемный эмулятор с подключенным сменным модулем.
|
Рисунок 2 – Внутрисхемный эмулятор с подключенным сменным модулем |
Лабораторный стенд подключается к компьютеру через последовательный порт (RS-232). Принципиальная электрическая схема лабораторного стенда приведена в
2 РАБОТА С ПРОГРАММОЙ AVR STUDIO
Для написания, тестирования и отладки программы используется программная среда AVR Studio [7]. Используемый язык программиро-вания – Ассемблер для микроконтроллеров фирмы Atmel.
Для работы с лабораторным стендом необходимо выполнить ряд следующих действий:
1. Подключить сменный модуль к внутрисхемному эмулятору.
2. Включить в сеть компьютер и внутрисхемный эмулятор.
3. Запустить программу AVR Studio.
4. Создать рабочий проект.
5. Написать программу для микроконтроллера в соответствии с заданием.
6. Выполнить компиляцию программы.
7. Загрузить программу в эмулятор.
8. Запустить программу на выполнение.
9. Выполнить отладку программы в пошаговом отладчике (если требуется).
10. Выполнить действия 6–9.
11. Представить результаты работы в виде рабочей программы.
После запуска программы AVR Studio должно появиться рабочее поле программы, как показано на рисунке 3.
Для создания проекта необходимо в главном меню программы выбрать Project/New Project.
|
Рисунок 3 – Рабочее поле программы AVR Studio |
В окне «Create new project» (рисунок 4) необходимо выбрать тип проекта (Atmel AVR Assembler), ввести имя проекта (Project name), ввести имя исходного файла (Initial file), выбрать место положения рабочих файлов проекта на диске компьютера (Location), нажать Next.
|
Рисунок 4 – Создание рабочего проекта |
В окне «Select debug platform and device» (рисунок 5) в позиции «Debug platform» необходимо выбрать ICE200, в позиции «Device» выбрать процессор AT90S8535.
|
Рисунок 5 – Выбор рабочей платформы и процессора |
После нажатия кнопки Finish должно появиться рабочее окно для ввода текста программы, как показано на рисунке 6. |
|
Рисунок 6 – Рабочее окно программы AVR Studio для написания программы |
После написания программы необходимо произвести ее компиляцию (функциональная клавиша F7). В случае успешной компиляции в окне «Build» появится статистика об используемых полях памяти и сообщение «Assembly complete, 0 errors, 11 warnings». Наличие предупреждений не является ошибкой, и их количество может быть произвольным. На рисунке 7 показан вид окна «Build» в случае успешной компиляции программы.
|
Рисунок 7 – Окно «Build» в случае безошибочной компиляции |
В случае наличия ошибок в программе, после попытки ее компиляции в окне «Build» выводится информация о количестве ошибок и номера строк, где допущены ошибки (рисунок 8). Двойной «клик» левой кнопкой мыши по строке с описанием ошибки в окне «Build» автоматически выводит на экран рабочее окно программы, в котором курсор указывает на строку с ошибочной инструкцией.
|
Рисунок 8 – Окно «Build» в случае компиляции c двумя ошибками |
В случае безошибочной компиляции необходимо загрузить скомпилированный код в эмулятор и перейти в режим отладки. Для этого необходимо нажать клавиши Ctrl+Shift+Alt+F5.
Для запуска программы в непрерывном режиме (в реальном масштабе времени) необходимо нажать клавишу F5. Для выполнения программы в пошаговом режиме нажать клавишу F11 (при каждом нажатии клавиши F11 выполняется одна инструкция программы).
Для остановки программы, которая исполняется в непрерывном режиме, необходимо нажать Ctrl+F5.
Для перезапуска программы (Restart) необходимо нажать Shift+F5.
При работе с внутрисхемным эмулятором пользователь имеет возможность контролировать состояние регистров (ячеек памяти) и других внутренних устройств микроконтроллера. Вся информация о состоянии микроконтроллера представлена в окне «I/O View», как показано на рисунке 9.
|
Рисунок 9 – Окно для контроля состояния микроконтроллера |
3 АРХИТЕКТУРА МИКРОКОНТРОЛЛЕРА AT90S8535
Архитектура микроконтроллера представлена на рисунке 10. Подробно с архитектурой микроконтроллера можно ознакомиться в [8].
Микроконтроллер AT90S8535 базируется на архитектуре AVR
RISC, имеет 32 цифровые линии ввода-вывода, восемь из которых могут быть сконфигурированы как аналоговые входы. Линии ввода-вывода образуются четырьмя 8-разрядными двунаправленными портами PA0…PA7, PB0…PB7, PC0…PC7, PD0…PD7. Контроллер имеет 8 Кбайт программной памяти, 32 8-разрядных регистра общего назначения (R0-R31), 118 мощных инструкций, большинство из которых выполняются за один такт процессора и целый ряд внутренних устройств (таймеры, счетчики, аналоговые компараторы и т. д.).
Условно-графическое обозначение микроконтроллера представ-лено на рисунке 11.
|
Рисунок 11 – Условно-графическое обозначение микроконтроллера AT90S8535 |
В Приложении Б представлен полный набор инструкций микроконтроллера AT90S8535.
4 ОСНОВЫ ПРОГРАММИРОВАНИЯ
МИКРОКОНТРОЛЛЕРА AT90S8535 НА ЯЗЫКЕ
АССЕМБЛЕР В СРЕДЕ AVR STUDIO 4
При реализации какой-либо задачи линии микроконтроллера разделяют на две группы – входные линии и выходные. По умолчанию линии микроконтроллера определены как входы (входы находятся
в Z-состоянии). В случае использования линий микроконтроллера как выходных, необходимо соответствующие линии запрограммировать на выход. Например:
sbi DDRA, PA0 – программирование линии PA0 на выход;
sbi DDRB, PB1 – программирование линии PB1 на выход;
sbi DDRC, PC2 – программирование линии PC2 на выход;
sbi DDRD, PD3 – программирование линии PD3 на выход.
В случае использования линий микроконтроллера как входных, необходимо соответствующие линии запрограммировать на вход. Например:
cbi DDRA, PA0 – программирование линии PA0 на вход;
cbi DDRB, PB1 – программирование линии PВ1 на вход;
cbi DDRC, PC2 – программирование линии PС2 на вход;
cbi DDRD, PD3 – программирование линии PВ3 на вход.
Для того чтобы установить высокий уровень на выходе микроконтроллера, необходимо выполнить соответствующую команду (линии микроконтроллера должны быть заранее запрограммированы на выход). Например:
sbi PORTA, PA0 – установить высокий уровень на выводе PA0;
sbi PORTB, PB1 – установить высокий уровень на выводе PB1;
sbi PORTC, PC2 – установить высокий уровень на выводе PC2;
sbi PORTD, PD3 – установить высокий уровень на выводе PD3.
Для того чтобы установить низкий уровень на выходе микроконтроллера, необходимо выполнить соответствующую команду (линии микроконтроллера должны быть заранее запрограммированы на выход). Например:
cbi PORTA, PA0 – установить низкий уровень на выводе PA0;
cbi PORTB, PB1 – установить низкий уровень на выводе PB1;
cbi PORTC, PC2 – установить низкий уровень на выводе PC2;
cbi PORTD, PD3 – установить низкий уровень на выводе PD3.
Для генерирования прямоугольного сигнала на одной линии микроконтроллера в качестве примера можно рассмотреть следующую программную конструкцию (генерирование прямоугольного сигнал на выводе PA0):
sbi DDRA, PA0 – программирование линии PA0 на выход;
Label: sbi PORTA, PA0 – установить высокий уровень на линии PA0;
сbi PORTA, PA0 – установить низкий уровень на линии PA0;
rjmp Label – перейти на метку Label.
При выполнении лабораторных работ необходимо генерировать сигналы с требуемой частотой и скаважностью, для этого в текст программы следует включать программные задержки, как показано ниже:
sbi DDRA, PA0 – программирование линии PA0 на выход;
Label: sbi PORTA, PA0 – установить высокий уровень на линии PA0;
Delay1 – подпрограмма задержки 1;
сbi PORTA, PA0 – установить низкий уровень на линии PA0;
Delay2 – подпрограмма задержки 2;
rjmp Label – перейти на метку Label.
При реализации программных задержек можно использовать внутренние таймеры/счетчики микроконтроллера, что требует от разработчика программы глубоких знаний архитектуры микроконт-роллера [8], либо руководствоваться следующими указаниями.
1-й способ реализации программных задержек:
nop 1-й такт
nop 2-й такт
nop 3-й такт
... n–1-й такт
nop n–й такт
Длительность задержки
, где
– тактовая частота микроконтроллера (принять равной 8000000 Гц).
2-й способ реализации программных задержек:
clr r30 – обнуление регистра R30
NextStep: cpi r30,255 – сравнение содержимого регистра R30 c 255
breq ExitDelay – перейти на ExitDelay в случае если R30=255 inc r30 – увеличить содержимое R30 на 1
rjmp NextStep – перейти на NextStep
ExitDelay: nop
Длительность задержки при выполнении указанной выше конструкции определяется следующим выражением:
, где
– тактовая частота микроконтроллера.
При написании программ часто используемые процедуры удобно оформить в виде подпрограмм и вызывать их при помощи соответствующих команд, как показано на следующем примере:
nop
nop
nop
rcall My_Sub – строка вызова подпрограммы по адресу My_Sub
nop
nop
...
My_Sub: nop
...
nop
ret
Далее представлены примеры организации условных переходов при написании программ.
Пример 1:
cpi r30,3
breq label – переход на метку label, если r30=3
nop
...
label: nop
...
Пример 2:
cpi r30,3
brsh label – переход на метку label, если r30 => 3
nop
...
label: nop
...
Пример 3:
cpi r30,3
brlo label – переход на метку label, если r30<3
nop
...
label: nop
При выполнении лабораторных работ потребуется не только написание программных конструкций, предназначенных для генерации управляющих сигналов, но и для чтения информации, поступающей к микроконтроллеру. Для контроля состояния входных линий микро-контроллера можно воспользоваться следующей программной конструкцией:
cbi PORTA, PA0 – программирование линии PA0 на вход
sbis PINA, PA0
rjmp Bit_is_reset
Bit_is_set: nop – переход на эту метку осуществляется, когда PA0=1 ...
Bit_is_reset: nop – переход на эту метку осуществляется, когда PA0=0
...
Наиболее используемые команды и операции:
clr r30 – очистить регистр общего назначения;
ldi r29,100 – записать константу в регистр общего назначения r29;
ldi r29,0b – записать константу в регистр общего назна-чения r29;
ldi r29,0xA0 – записать константу в регистр общего назначения r29;
mov r29,r30 – переписать содержимое r30 в r29;
cpi r29,1 – сравнение содержимого регистра r29 с константой;
cp r29,r30 – сравнение содержимого регистров r29, r30;
inc r30 – увеличить на 1 содержимое r30;
dec r30 – уменьшить на 1 содержимое r30;
rjmp «метка_перехода» – безусловный переход на метку;
breq «метка_перехода» – переход, если «равно»;
brsh «метка_перехода» – переход, если «больше или равно»;
brlo «метка_перехода» – переход, если «меньше».
Операции с отдельными битами регистров общего назначения:
sbr r30,0b – установить 4 бит регистра r30 равным 1;
sbr r30,0b – установить 0 бит регистра r30 равным 1;
сbr r30,0b – установить 4 бит регистра r30 равным 0;
сbr r30,0b – установить 0 бит регистра r30 равным 0;
сbr r30,0b – установить 0 и 7 биты регистра r30 равными 0;
сbi PORTA, PA3 – установить 0 на линии 3 порта A;
sbi PORTA, PA3 – установить 1 на линии 3 порта A.
Тест–программа управления светодиодами. Далее представлена программа для поочередного переключения двух тестовых светоди-одов, подключенных к линиям PD6, PD7 микроконтроллера.
. include "8535def. inc" – обязательная директива при использовании микроконтроллера AT90S8535
.def temp =r16
.cseg – обязательная директива любой программы
.org 0 – обязательная директива любой программы
rjmp My_program – безусловный переход на метку My_program
.org 25 – определение стартового адреса вашей программы
My_program: – символьная метка
ldi temp, high(RAMEND) – инициализация стека
out SPH, temp – -//-
ldi temp, low(RAMEND) – -//-
out SPL, temp – -//-
sbi DDRD, PD6 – программирование линии PD6 на выход
sbi DDRD, PD7 – программирование линии PD7 на выход
label1: sbi PORTD, PD6 – включить светодиод 1
cbi PORTD, PD7 – выключить светодиод 2
rcall Delay – вызов подпрограммы задержки
cbi PORTD, PD6 – выключить светодиод 1
sbi PORTD, PD7 – включить светодиод 2
rcall Delay – вызов подпрограммы задержки
rjmp label1 – перейти на метку label1
Delay: процедура, реализующая программную задержку
ret
5 ЗАДАНИЯ НА ЛАБОРАТОРНЫЕ РАБОТЫ
5.1 ЛАБОРАТОРНАЯ РАБОТА № 1
Тема: Реализация протокола обмена данными между ПЗУ с последовательным доступом (1K Microwire Compatible Serial EEPROM 93LC66) и микроконтроллером AT90S8535 на базе внутрисхемного эмулятора ICE200.
Задание: реализовать процедуры записи и чтения данных между регистрами микроконтроллера и ячейками памяти 93LC66.
На рисунке 12 представлены нумерация и наименование выводов микросхемы 93LC66.
| ||||||||||||||||||
Рисунок 12 – Микросхема 93LC66 и наименование ее выводов |
Подключение микросхемы памяти к микроконтроллеру осущест-вляется в соответствии с таблицей 1.
Таблица 1 – Линии подключения микросхемы к микроконтроллеру
Выводы микросхемы памяти | Выводы микроконтроллера AT90S8535 |
CS | PA0 |
CLK | PA1 |
DI | PA2 |
DO | PA3 |
Функциональное описание. Команды, адреса и записываемые данные генерируются на линии DI при положительном фронте сигнала CLK. Вывод DO в нормальном состоянии находится в высокоомном состоянии (Z-состояние) за исключением, когда данные читаются из устройства или когда проверяется статус READY/BUSY в период операции программирования. Статус READY/BUSY может проверяться при выполнении операций Erase/Write путем опроса вывода DO; низкий уровень на выводе DO индицирует, что процесс программирования продолжается (устройство занято), высокий уровень на выводе DO индицирует о готовности устройства к дальнейшей работе. Ввод DO перейдет в Z-состояние при появлении спадающего сигнала на выводе CS.
Условие старта. Условие старта детектируется устройством, когда уровни на выводах CS и DI одновременно переходят в высокое состояние при появлении положительного фронта на выводе CLK (в начальный момент времени).
Когда условия старта будут зафиксированы устройством, сигналы CS, CLK и DI могут меняться в любых требуемых комбинациях (за исключением, что это будет условие старта). До тех пор, пока сигнал CS находится в высоком состоянии, устройство не переходит в режим ожидания.
Команды, следуемые после генерации условия старта, будут выполнены при условии, если требуемые код, адрес и данные (если требуется) будут записаны в устройство.
В таблице 2 представлены микрокоманды микросхемы памяти.
Таблица 2 – Микрокоманды микросхемы памяти
Инструк-ция | Старт бит | Код | Адрес | Вход | Выход | Такты | |||||||||
ERASE | 1 | 1 | 1 | A8 | A7 | A6 | A5 | A4 | A3 | A2 | A1 | A0 | - | (ГОТОВ/ЗАНЯТ) | 12 |
ERAL | 1 | 0 | 0 | 1 | 0 | X | X | X | X | X | X | X | - | (ГОТОВ/ЗАНЯТ) | 12 |
EWDS | 1 | 0 | 0 | 0 | 0 | X | X | X | X | X | X | X | - | Z-СОСТОЯНИЕ | 12 |
EWEN | 1 | 0 | 0 | 1 | 1 | X | X | X | X | X | X | X | - | Z-СОСТОЯНИЕ | 12 |
READ | 1 | 1 | 0 | A8 | A7 | A6 | A5 | A4 | A3 | A2 | A1 | A0 | - | D7-D0 | 20 |
WRITE | 1 | 0 | 1 | A8 | A7 | A6 | A5 | A4 | A3 | A2 | A1 | A0 | D7-D0 | (ГОТОВ/ЗАНЯТ) | 20 |
WRAL | 1 | 0 | 0 | 0 | 1 | X | X | X | X | X | X | X | D7-D0 | (ГОТОВ/ЗАНЯТ) | 20 |
ERASE – очистить байт по указанному адресу.
ERAL – очистить всю память.
EWDS – запретить процедуры ERASE, WRITE, ERAL.
EWEN – разрешить процедуры ERASE, WRITE, ERAL.
READ – чтение данных по указанному адресу.
WRITE – записать байт по указанному адресу.
WRAL – заполнить все ячейки памяти указанным байтом.
Описание команды EWEN. При включении питания команды ERASE, WRITE, ERAL запрещены. Для их активации при включении питания необходимо выполнить один раз команду EWEN (команду EWEN необходимо выполнять при каждом сбросе питания). На рисунке 13 представлены временные диаграммы выполнения команды EWEN.
|
Рисунок 13 – Временная диаграмма выполнения команды EWEN |
Чтение данных из ячеек памяти. При выполнении инструкции READ из адресованной ячейки 8 бит данных последовательно появляются на выводе DO. Уровни выходного сигнала на выводе DO меняются при появлении положительных фронтов сигнала на выводе CLK и являются достоверными после временного интервала TPD. Последующее чтение возможно пока уровень CS удерживается в единичном состоянии. Временная диаграмма выполнения команды READ представлена на рисунке 14.
|
Рисунок 14 – Временная диаграмма выполнения команды READ |
Запись данных в ячейки памяти. Временная диаграмма выпол-нения команды WRITE представлена на рисунке 15. После прихода последнего бита спадающий сигнал на линии CS инициирует внутрен-ние процедуры устройства для очистки и записи данных в ячейку памяти. Сигнал на выводе DO индицирует статус устройства – READY/BUSY.
|
Рисунок 15 – Временная диаграмма выполнения команды WRITE |
Ниже приведены динамические характеристики микросхемы памяти (таблица 3).
Таблица 3 – Динамические характеристики микросхемы памяти
Символ | Параметр | Значение | Единицы | |
минимальное | максимальное | |||
FCLK | Clock frequency | - | 3 | МГц |
TCKH | Clock high time | 200 | - | с. 10-9 |
TCKL | Clock low time | 100 | - | с. 10-9 |
TCSS | Chip Select setup time | 50 | - | с. 10-9 |
TCSH | Chip Select hold time | 0 | - | с. 10-9 |
TCSL | Chip Select low time | 250 | - | с. 10-9 |
TDIS | Data input setup time | 50 | - | с. 10-9 |
TDIH | Data input hold time | 50 | - | с. 10-9 |
TPD | Data output delay time | - | 200 | с. 10-9 |
TCZ | Data output disable time | - | 100 | с. 10-9 |
TSV | Status valid time | - | 200 | с. 10-9 |
TWC | Program cycle time | - | 6 | с. 10-3 |
При генерировании управляющих сигналов необходимо соблюдать временные интервалы и задержки между ними, как показано на синхронной временной диаграмме (рисунок 16).
|
Рисунок 16 – Синхронная временная диаграмма всех информационных сигналов |
5.2 ЛАБОРАТОРНАЯ РАБОТА № 2
Тема: Реализация протокола RS-232 для одностороннего обмена данными между контроллером светодиодных индикаторов и микроконтроллером AT90S8535 на базе внутрисхемного эмулятора ICE200.
Задание: реализовать управление светодиодными индикаторами по однопроводному каналу связи.
Для управления светодиодами (включить/выключить) необхо-димо передать управляющему контроллеру адрес светодиода, затем команду на включение или выключение светодиода. Адреса светодиодов представлены в таблице 4.
Таблица 4 – Адреса светодиодных индикаторов
Номер светодиода | Адрес светодиода |
Светодиод №1 | 1 |
Светодиод №2 | 2 |
Светодиод №3 | 3 |
Светодиод №4 | 4 |
Светодиод №5 | 5 |
Светодиод №6 | 6 |
Код включение светодиода: 7.
Код выключение светодиода: 8.
Связь с микроконтроллером реализовать на скорости 2400 бит/сек, со следующей структурой кадра: один старт бит, восемь бит данных, один стоп бит. Микроконтроллер AT90S8535 подключен к светодиодному контроллеру через линию порта PA4.
Структура кадра передаваемых данных по протоколу RS-232 представлена на рисунке 17.
|
Рисунок 17 – Структура кадра протокола RS-232 |
В исходном состоянии (IDLE) линия связи должна находиться в состоянии 1. Передача данных начинается со старт бита (St), значение которого всегда равно 0. Далее передаются информационные биты, начиная с младшего. За последним информационным битом может передаваться бит четности. Далее следуют стоп биты, их может быть два. Значение стоповых битов 1. После стоп битов либо прекращается передача данных (режим IDLE), либо передается последующий кадр.
5.3 ЛАБОРАТОРНАЯ РАБОТА № 3
Тема: Реализация протокола SPI для одностороннего обмена данными между контроллером светодиодных индикаторов и микроконтроллером AT90S8535 на базе внутрисхемного эмулятора ICE200.
Задание: реализовать управление светодиодными индикаторами по SPI интерфейсу при частоте тактовых импульсов 10 кГц.
Для управления светодиодами (включить/выключить) необходимо передать управляющему контроллеру адрес светодиода, затем команду на включение или выключение светодиода. Адреса светодиодов представлены в таблице 5.
Таблица 5 – Адреса светодиодных индикаторов
Номер светодиода | Адрес светодиода |
Светодиод №1 | 1 |
Светодиод №2 | 2 |
Светодиод №3 | 3 |
Светодиод №4 | 4 |
Светодиод №5 | 5 |
Светодиод №6 | 6 |
Код включение светодиода: 7.
Код выключение светодиода: 8.
При обмене данными между двумя устройствами по SPI интерфейсу одно устройство объявляется ведущим (Master), второе ведомым (Slave). Светодиодный контроллер объявлен ведомым. Микроконтроллер AT90S8535 является ведущим.
Подключение AT90S8535 к светодиодному контроллеру осуществляется согласно таблице 6.
Таблица 6 – Линии подключения микросхемы к микроконтроллеру
Линии светодиодного контроллера | Линии микроконтроллера AT90S8535 |
SS | PD2 |
SCK | PD5 |
MOSI | PD3 |
MISO | PD4 |
Соединение двух устройств показано на рисунке 18.
|
Рисунок 18 – Подключение двух устройств через SPI интерфейс |
Описание линий интерфейса:
SS – сигнал, инициирующий передачу данных;
SCK – тактирующий сигнал;
MISO – линия для передачи данных от ведомого устройства к
ведущему;
MOSI – линия для передачи данных от ведущего устройства к ведомому.
Начало передачи инициируется мастером установкой линии SS в нулевой уровень.
Тактовая частота обмена информацией определяется частотой на линии SCK, которая генерируется мастером. Данные считываются ведомым и ведущим устройствами при возникновении переднего фронта на линии SCK. Младший бит передается первым. Количество бит равно восьми.
Временные диаграммы сигналов на шине SPI представлены на рисунке 19.
|
Рисунок 19 – Временные диаграммы сигналов на шине SPI |
5.4 ЛАБОРАТОРНАЯ РАБОТА № 4
Тема: Реализация протокола обмена данными между ПЗУ с последовательным доступом (Serial EEPROM 24С01) и микроконтроллером AT90S8535 на базе внутрисхемного эмулятора ICE200.
Задание: реализовать процедуры записи и чтения данных в ячейки микросхемы памяти.
На рисунке 20 представлены нумерация и обозначение выводов микросхемы 24С01.
| ||||||||||||
Рисунок 20 – Микросхема 24С01 и наименование ее выводов |
Подключение микросхемы памяти к микроконтроллеру осущест-вляется в соответствии с таблицей 7.
Таблица 7 – Линии подключения микросхемы к микроконтроллеру
Выводы микросхемы памяти | Выводы микроконтроллера AT90S8535 |
SDA | PB1 |
SCL | PB2 |
Микросхема AT24C01 предоставляет 1024 бит электрически перезаписываемых данных с организацией 128 слов по 8 бит.
Операции с устройством. Тактирование и перемещение данных. Уровень сигнала на выводе SDA изначально находится в единичном состоянии, которое обеспечивается подключением этой линии к линиям питания микросхемы. Информация на линии SDA может меняться только в моменты, когда линия SCL находится в нулевом состоянии (смотри временную диаграмму достоверности данных на рисунке 21).
|
Рисунок 21 – Временная диаграмма достоверности данных |
Условие старта (START CONDITION). Смена уровня с высокого на низкий на линии SDA при высоком уровне на SCL является условием старта, которое должно быть в начале любых команд (смотри временные диаграммы старт/стоп условий на рисунке 22).
|
Рисунок 22 – Генерирование старт/стоп условий |
Стоп условие (STOP CONDITION). Смена уровня с низкого на высокий на линии SDA при высоком уровне на линии SCL является стоп условием, которое прерывает все взаимодействия. После чтения последовательности, появление стоп условия переводит микросхему в режим ожидания (смотри временные диаграммы старт/стоп условий на рисунке 23).
Подтверждение (ACKNOWLEDGE). Все адреса и данные последовательно передаются в (от) устройство памяти в 8-битном формате. Все устройства на двухпроводной шине, получившие данные, должны подключить линию SDA в нулевое состояние, подтверждая тем самым удачный прием каждого слова. Это должно происходить в течение девятого тактового импульса после каждого принятого слова.
Микросхема должна также генерировать подтверждение (уста-новка линии SDA в нуль) после приема адреса или слова данных (смотри временную диаграмму генерирования подтверждения от приемника на рисунке 23).
Сброс памяти (MEMORY RESET). После прерывания протокола связи или сброса питания или системного сброса можно организовать сброс памяти путем выполнения следующих шагов:
(a) тактировать шину SCL до 9 тактов;
(b) ожидать высокого уровня на линии SDA в каждом такте в моменты, когда SCL находится в высоком уровне;
(c) сгенерировать условие старта, так как линия SDA в состоянии высокого уровня.
|
Рисунок 23 – Генерирование подтверждений |
Запись байта (BYTE WRITE). Следующая за старт условием операция записи требует 7 бит адреса и нулевой бит записи. При получении этого адреса микросхема должна откликнуться «нулем» и затем записываются первые 8 бит данных. Для следующей записи 8 бит информации микросхема должна откликаться «нулем» и управляющий микроконтроллер (AT90S8535) должен завершить запись, сгенерировав стоп условие, как показано на рисунке 24.
|
Рисунок 24 – Запись одного байта |
Операция чтения инициируется тем же путем, что и операция записи, за исключением, что бит read/write, следующий за адресом, устанавливается в единицу.
Чтение байта (BYTE READ). Чтение байта начинается со старт условия, семи бит адреса и единичным битом чтения. Далее от микро-схемы приходит бит подтверждения, а затем последовательно 8 бит данных. Микроконтроллер не высылает подтверждение после приема данных и генерирует стоп условие, как показано на рисунке 25.
|
Рисунок 25 – Чтение одного байта |
На рисунке 26 представлена временная диаграмма соотношения сигналов на шине I2C.
|
Рисунок 26 – Временные диаграммы сигналов на шине I2C |
В таблице 8 представлены динамические характеристики микро-схемы памяти.
Таблица 8 – Динамические характеристики микросхемы памяти
Символ | Параметр | Значение | Единицы | |
минимальное | максимальное | |||
fSCL | Clock frequency | - | 400 | кГц |
tLOW | Clock Pulse Width Low | 1,2 | - | с. 10-6 |
tHIGH | Clock Pulse Width High | 0,6 | - | с. 10-6 |
tI | Noise Supression Time | - | 50 | с, 10-9 |
tAA | Clock Low to Data Out Valid | 0,1 | 0,9 | с. 10-6 |
tBUF | Time the bus must be free before a new transmission can start | 1,2 | - | с. 10-6 |
tHD. STA | Start Hold Time | 0,6 | - | с. 10-6 |
tSU. STA | Start Set-up Time | 0,6 | - | с. 10-6 |
tHD. DAT | Data in Hold Time | 0 | - | с. 10-6 |
tSU. DAT | Data in Set-up Time | 100 | - | с. 10-6 |
tR | Inputs Rise Time | - | 0,3 | с. 10-6 |
tF | Inputs Fall Time | - | 300 | с. 10-9 |
tSU. STO | Stop Set-up Time | 0,6 | - | с. 10-6 |
tDH | Data Out Hold Time | 50 | - | с. 10-9 |
tWR | Write Cycle Time | - | 10 | с. 10-6 |
5.5 ЛАБОРАТОРНАЯ РАБОТА № 5
Тема: Реализация протокола обмена данными между цифровым температурным датчиком DS18B20 и микроконтроллером AT90S8535 на базе внутрисхемного эмулятора ICE200.
Задание: реализовать протокол обмена данными с температурным датчиком, произвести измерение текущей температуры.
На рисунке 27 представлены рисунок и назначение выводов микросхемы DS18B20.
| |||||||
Рисунок 27 – Микросхема DS18B20 и наименование ее выводов |
Подключение DS18B20 к микроконтроллеру осуществляется в соответствии с таблицей 9.
Таблица 9 – Линии подключения микросхемы к микроконтроллеру
Выводы DS18B20 | Выводы микроконтроллера AT90S8535 |
DQ | PD1 |
Описание. Микросхема имеет уникальный однопроводной интерфейс и уникальный 64-битный код. Ядро DS18B20 представляет собой прямой преобразователь температуры в цифровой код. Разрядность выходного кода может быть 9, 10, 11, 12 бит, т. о. абсолютная погрешность может быть 0,5 0С, 0,25 0С, 0,125 0С, 0,0625 0С соответственно. Разрядность по умолчанию 12 бит. Для инициации измерения температуры необходимо передать команду Convert T (44h).
Результат преобразования сохраняется в двухбайтном регистре. Если DS18B20 питается от внешнего источника, «мастер» может сгенерировать условие «чтение временного слота» после команды Convert T, и DS18B20 должен откликнуться передачей 0 в период преобразования температуры и 1, если преобразование завершено.
Температура хранится в 16-битном регистре (два 8-битных), структура которого показана на рисунке 28.
|
Рисунок 28 – Регистры хранения текущей температуры |
Знаковые биты (S) индицируют, положительна ли температура или отрицательна. Для положительной температуры S=0, для отрицательной S=1.
Если используется 12-битный режим, все биты температурных регистров используются.
Если используется 11-битный режим, бит 0 неопределен.
Если используется 10-битный режим, биты 1, 0 неопределены.
Если используется 9-битный режим, биты 2, 1, 0 неопределены.
В таблице 10 представлено соотношение температуры и данных, находящихся в температурных регистрах.
Таблица 10 – Соответствие температуры и двоичного кода

DS18B20 содержит уникальный 64-битный код, хранящийся в ROM.
Структура уникального кода представлена на рисунке 29.
|
Рисунок 29 – Структура уникального кода DS18B20 |
Структура память DS18B20 представлена на рисунке 30.
|
Рисунок 30 – Структура памяти микросхемы DS18B20 |
Структура конфигурационного байта представлена на рисунке 31.
|
Рисунок 31 – Структура конфигурационного байта |
Данные по шине передаются младшим значащим битом вперед.
Последовательность работы с DS18B20 состоит из трех шагов:
ШАГ 1. Инициализация;
ШАГ 2. ROM команды;
ШАГ 3. Функциональные команды.
Инициализация. Все операции на шине начинаются с инициали-зации. Инициирующая последовательность содержит импульс сброса, поступающий от «мастера», и импульс отклика, поступающий от DS18B20.
ROM команды. После того, как «мастер» обнаружил DS18B20, необходимо выполнить ROM команды. Эти команды оперируют с 64-битным уникальным кодом. Эти команды также позволяют определить, сколько устройств находится на шине. Всего пять команд разрядностью 8 бит. Мастер должен сгенерировать необходимые ROM команды, прежде чем генерировать функциональные команды.
Несколько ROM команд представлено ниже.
READ ROM (чтение уникального кода) [33h]. Эта команда может использоваться, когда на шине находится одно устройство DS18В20. Она позволяет получить мастеру 64-битный уникальный код DS18В20.
MATCH ROM (передача кода) [55h]. За этой командой следует 64-битный код, позволяющий «мастеру» адресоваться к одному DS18B20.
SKIP ROM (пропустить ROM команды) [CCh]. Мастер может использовать эту команду при адресации ко всем устройствам, находящимся на шине одновременно, без посылки любых уникальных кодов.
Функциональные команды DS18B20. После генерирования ROM команд мастер может сгенерировать одну из функциональных команд.
CONVERT T (преобразование температуры) [44h]. Эта команда инициирует единичное преобразование текущей температуры. Результат преобразования сохраняется в соответствующих регистрах памяти DS18B20, и последний переходит в режим спячки (ожидания).
Мастер может читать временной слот после команды Convert T, и DS18B20 должен выставить 0 в течение процедуры преобразования температуры или 1, когда преобразование завершено.
READ SCRATCHPAD (чтение памяти) [BEh]. При помощи этой команды мастер читает память DS18B20. Данные передаются младшим значащим битом вперед, и длительность посылки составляет 9 байт. Мастер может прервать прием в любой момент времени, перестав генерировать временные слоты чтения данных, если это необходимо.
В таблице 11 представлены динамические характеристики DS18B20.
Таблица 11 – Динамические характеристики микросхемы
Параметр | Обозначение | Условия | Значение | Единицы | |
минимальное | максимальное | ||||
Temperature Conversion Time | tCONV | 9-bit resolution | 93,75 | с. 10-3 | |
10-bit resolution | 187,5 | с. 10-3 | |||
11-bit resolution | 375 | с. 10-3 | |||
12-bit resolution | 750 | с. 10-3 | |||
Time to Strong Pulling On | tSPON | Start Convert T Command Issued | 10 | с. 10-6 | |
Time Slot | tSLOT | 60 | 120 | с. 10-6 | |
Recovery Time | tREC | 1 | - | с. 10-6 | |
Write 0 Low Time | tLOW0 | 60 | 120 | с. .0-6 |
Продолжение таблицы 11
Write 1 Low Time | tLOW1 | 1 | 15 | с. 10-6 | |
Read Data Valid | tRDV | - | 15 | с. 10-6 | |
Reset Time High | tRSTH | 480 | - | с. 10-6 | |
Reset Time Low | tRSTL | 480 | - | с. 10-6 | |
Presence Detect High | tPDHIGH | 15 | 60 | с. 10-6 | |
Presence Detect Low | tPDLOW | 60 | 240 | с. 10-6 | |
Capacitance | CIN/OUT | - | 25 | pF |
Процедура инициализации: сброс и импульс присутствия. Взаимодействие с DS18B20 начинается с инициирующей последова-тельности, которая содержит импульс сброса, поступающий от мастера и импульс присутствия, поступающий от DS18B20, как показано на рисунке 32.
|
Рисунок 32 – Диаграмма сброса микросхемы |
Когда DS18B20 посылает импульс присутствия в ответ на импульс сброса, это говорит о том, что устройство присутствует на шине и готово к работе.
В ходе инициализации мастер передает импульс сброса путем удержания шины в нулевом состоянии в течение минимум 480 мкс. Когда импульс сформирован, шина переводится в режим приема. Шина переходит в единичное состояние за счет специального резистора, подключающего шину данных к шине питания. Когда DS18B20 обнаруживает положительный фронт импульса сброса, оно ожидает от 10 до 60 мкс и затем посылает импульс присутствия путем удержания шины в нулевом состоянии в течение 60–240 мкс.
Временные слоты чтения/записи. Мастер записывает данные в DS18B20 в течение «временного слота записи» и читает данные из DS18B20 в течение «временного слота чтения». Один бит данных передается в течение одного временного слота.
Временной слот записи. Существует два типа временных слотов записи: временной слот «Write 1» и временной слот «Write 0». Мастер использует слот «Write 1» для записи логической единицы в DS18B20 и слот «Write 0» для записи нуля. Временные слоты записи должны быть продолжительностью минимум 60 мкс и следовать с интервалами не менее 1 мкс. Оба типа слотов инициируются мастером переводом шины в нулевое состояние.
Для генерирования временного слота «Write 1», после перевода мастером шины в нулевое состояние, он должен удерживать ее в таком состоянии в течение 15 мкс. После этого мастер переводит шину в единичное состояние.
Для генерирования временного слота «Write 0», после перевода шины в нулевое состояние, мастер должен удерживать ее в таком состоянии в течение длительности временного слота (около 60 мкс).
Таким образом стробирование работы DS18B20 происходит в последующие 15-60 мкс, после того как мастер инициирует временной слот записи. Если в течение этого интервала шина находится в единичном состоянии, в DS18B20 записывается «1», если в нулевом – записывается «0».
Временные слоты чтения. DS18B20 может передавать данные, только когда мастер генерирует временной слот чтения. Таким образом, мастер должен генерировать временной слот чтения немедленно после передачи команд, типа Read Scratchpad [BEh], поскольку DS18B20 должен передавать запрашиваемые данные. Кроме того, мастер может генерировать временной слот чтения после передачи команды Convert T [44h] для детектирования статуса выполнения команды. Все временные слоты чтения должны быть длительностью минимум 60 мкс с минимальным интервалом между слотами 1 мкс.
Временные слоты чтения инициируются мастером переводом шины в нулевое состояние минимум на 1 мкс и затем переключением на прием данных (рисунок 33).
После того как мастер инициировал временной слот чтения, DS18B20 должен начать передачу 1 или 0 по шине. DS18B20 передает 1 удержанием шины в высоком состоянии и передает 0 удержанием шины в нулевом состоянии. Когда передается 0, DS18B20 должен отключиться от шины в конце временного слота и шина должна перейти в единичное состояние за счет внешнего подтягивающего резистора.
Данные, поступающие от DS18B20, достоверны после 15 мкс вслед за спадающим фронтом, инициирующим временной слот чтения. Таким образом, мастер должен отключиться от шины (переключиться на прием) и затем ожидать около 15 мкс от начала старта слота.
|
Рисунок 33 – Временные диаграммы слотов чтения/записи |
В таблице 12 представлен пример последовательности работы с DS18B20.
Таблица 12 – Последовательность работы с микросхемой DS18B20
Режим мастера TX/RX – передача/прием | Передача данных (младший бит первый) | Комментарии |
TX | Импульс сброса | Мастер генерирует импульс сброса |
RX | Импульс присутствия | DS18B20 генерирует импульс отклика |
TX | SKIP Command | Пропустить ROM команды |
TX | Convert T | Запустить преобразование температуры |
TX | Импульс сброса | Мастер генерирует импульс сброса |
RX | Импульс присутствия | DS18B20 генерирует импульс отклика |
TX | SKIP Command | Пропустить ROM команды |
TX | READ SCRATCHPAD | Чтение памяти |
RX | 9-byte | DS18B20 передает 9 байт данных |
5.6 ЛАБОРАТОРНАЯ РАБОТА № 6
Тема: Реализация протокола обмена данными между цифровым температурным датчиком DS1620 и микроконтроллером AT90S8535 на базе внутрисхемного эмулятора ICE200.
Задание: реализовать протокол обмена данными с температур-ным датчиком, произвести измерение текущей температуры.
На рисунке 34 представлены нумерация и назначение выводов микросхемы DS1620.
| ||||||||||||||||||
Рисунок 34 – Микросхема DS1620 и наименование ее выводов |
Подключение DS1620 к микроконтроллеру осуществляется в соответствии с таблицей 13.
Таблица 13 – Линии подключения микросхемы к микроконтроллеру
Выводы DS1620 | Выводы микроконтроллера AT90S8535 |
RST | PB6 |
CLK | PB5 |
DO | PB4 |
Измерение температуры. DS1620 реализует измерение температуры, используя специальный сенсор. Температура хранится в 9-битном формате (рисунок 35) и может быть прочитана при помощи специальной команды. Данные передаются последовательно по 3-провод-ному последовательному интерфейсу, младший бит передается первым. DS1620 может измерять температуру в диапазоне от минус 55 0С до + 125 0С.
Так как данные передаются в последовательном коде младшим битом вперед, 9 бит данных могут быть переданы или приняты двумя способами:
- как 9-битное слово (сигнал RST необходимо перевести в нулевое состояние после приема 9 бит);
- как два 8-битных слова, причем 7 старших значащих бит игно-рируются или сбрасываются в 0.
|
Рисунок 35 – Структура регистров для хранения температуры |
Точное значение температуры можно вычислить по следующей формуле:

Значения TEMP_READ, COUNT_PER_C, COUNT_REMAIN получают при помощи команд (Read Temperature), (Read Counter), (Read Slope) соответственно.
Команды DS1620:
Чтение температуры (Read Temperature) [AAh]. Эта команда читает содержимое регистров, которые содержат результат последнего преобразования температуры. В последующие девять тактов будет выслано содержимое этих регистров.
Чтение счетчика (Read Counter) [A0h]. Эта команда читает значение счетчика байтов. В последующие девять тактов будут высланы содержимое этих регистров.
Чтение спадающего счетчика (Read Slope) [A9h]. Эта команда читает значение спадающего счетчика байтов из DS1620. В последующие девять тактов передается содержимое этого счетчика.
Запустить преобразование температуры (Start Convert T) [EEh]. Эта команда запускает процедуру преобразования температуры. В единичном режиме преобразование температуры будет исполнено, и затем DS1620 останется бездействующим. В непрерывном режиме работы эта команда инициирует непрерывное преобразование.
Остановить преобразование температуры (Stop Convert T) [22h]. Эта команда останавливает преобразование температуры. Эта команда может быть использована для остановки DS1620, работающего в непрерывном режиме. После выполнения этой команды текущее преобразование температуры завершается и DS1620 переходит в режим ожидания.
Запись конфигурации (Write Config) [0Ch]. Эта команда осуще-ствляет запись данных в регистр конфигурации. После передачи этой команды в следующие восемь тактов необходимо передать восемь бит для записи в регистр конфигурации.
Чтение конфигурации (Read Config) [ACh]. Эта команда читает значение регистра конфигурации. После приема команды в последую-щие восемь тактов передается содержимое регистра конфигурации.
Контроль и управление DS1620. DS1620 имеет 8-разрядный регистр конфигурации:
,
где DONE – бит завершения преобразования;
1 – преобразование завершено;
0 – преобразование не завершено;
THF – необходим для работы с термостатом;
TLF – необходим для работы с термостатом;
NVB – флаг занятости энергонезависимой памяти;
CPU – бит использования CPU (Если CPU=0, DS1620 может работать в ручном режиме; если CPU=1, к DS1620 может быть подключен внешний микроконтроллер посредством 3 проводной шины. DS1620 поставляется c битом CPU=0.);
ISHOT – если ISHOT=1, преобразование температуры запускается соответствующей командой (Start Convert T), если ISHOT=0, DS1620 работает в режиме непрерывного преобразования. DS1620 поставляется c битом ISHOT=0.
3-проводной интерфейс. Трехпроводная шина содержит всего три сигнала. Это RST (сброс), CLK (тактовый сигнал), DO данные. Передача любых данных инициируется переводом линии RST в высокое состояние. Перевод линии RST в ноль прерывает протокол соединения. Тактовые импульсы – это последовательность спадающего фронта, следующего за нарастающим фронтом.
Для ввода данные считаются достоверными при появлении поло-жительного фронта тактовой частоты. Данные выводятся из DS1620 в моменты появления заднего фронта тактового сигнала и остаются годными до появления переднего фронта тактового сигнала.
Когда данные читаются из DS1620, вывод DO переходит в высокоомное состояние, в то время как CLK линия находится в состоянии 1.
Перевод RST в нуль прерывает любой обмен данными, и вывод DO переходит в высокоомное состояние.
В таблице 14 представлена сводная информация о командах DS1620.
На рисунках 36 и 37 представлены временные диаграммы сигналов на линиях микросхемы DS1620 при работе в режимах чтения и записи данных соответственно.
Таблица 14 – Команды температурного датчика
Инструкция | Описание | Код | Действие |
|
Read Temperature | Прочитать значение последнего преобразования температуры | AAh | Чтение данных |
|
Read Counter | Прочитать значение регистра Counter | A0h | Чтение данных |
|
Read Slope | Прочитать регистра Slope | A9h | Чтение данных |
|
Start Convert T | Начать преобразование температуры | EEh | Нет действия |
|
Stop Convert T | Остановить преобразование температуры | 22h | Нет действия |
|
Примечание – в режиме непрерывного преобразования команда Stop Convert T останавливает непрерывное преобразова-ние. Для перезапуска должна быть выполнена команда Start Convert T. В режиме одиночного преобразования команда Start Convert T должна выставляться при каждом желании прочитать текущую температуру. |
| |||
| ||||
Рисунок 36 – Временная диаграмма сигналов на шине при чтении данных | ||||
|
Рисунок 37 – Временная диаграмма сигналов на шине при записи данных
В таблице 15 представлены динамические характеристики DS1620.
Таблица 15 – Динамические характеристики микросхемы
Параметр | Обозначение | Значение | Единицы | |
минимум | максимум | |||
Temperature Conversion Time | TTC | - | 750 | ms |
Data to CLK Setup | tDC | 35 | - | ns |
CLK to Data Hold | tCDH | 40 | - | ns |
CLK to Data Delay | tCDD | - | 150 | ns |
CLK Low Time | tCL | 285 | ns | |
CLK High Time | tCH | 285 | ns | |
CLK Frequency | fCLK | DC | 1,75 | MHz |
CLK Rise and Fall | tR, tF | - | 500 | ns |
RST to CLK Setup | tCC | 100 | - | ns |
CLK to RST Hold | tCCH | 40 | - | ns |
RST Inactive Time | tCWH | 125 | - | ns |
CLK High to I/O High-Z | tCDZ | - | 50 | ns |
RST Low to I/O High-Z | tRDZ | - | 50 | ns |
Convert Pulse Width | tCNV | 250 ns | 500 ms |
Литература
1. Гук, М. Аппаратные интерфейса ПК. Энциклопедия / М. Гук.– СПб.: Питер, 2002. – 528 с.
2. Внутрисхемный эмулятор ICE200. – Электрон. данные. – Режим доступа: http://www. /dyn/resources/prod_documents/ doc1413.pdf
3. Спецификация на микросхему AT24C01. – Электрон. данные. – Режим доступа: http://www. /dyn/resources/prod_documents/
doc0180.pdf
4. Спецификация на микросхему 93LC66. – Электрон. данные. – Режим доступа: http:///downloads/en/ DeviceDoc/ 21795 C. pdf
5. Спецификация на микросхему DS18B20. – Электрон. данные. – Режим доступа: http://datasheets. /en/ds/DS18B20.pdf
6. Спецификация на микросхему DS1620. – Электрон. данные. – Режим доступа: http://datasheets. /en/ds/DS1620.pdf
7. Программная среда AVR Studio. – Электрон. данные. – Режим доступа: http://www. /
8. Спецификация на микроконтроллер фирмы Atmel AT90S8535. – Электрон. данные. – Режим доступа: http://www. /dyn /resources/ prod_documents/DOC1041.pdf
ПРИЛОЖЕНИЕ А
Схема электрическая принципиальная сменного модуля

ПРИЛОЖЕНИЕ Б
Перечень команд микроконтроллера AT90S8535
1
Мнемо-ника | Операнды | Описание | Операции | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Арифметические и логические инструкции | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
ADD | Rd, Rr | Сложить два регистра | Rd Rd + Rr | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
ADC | Rd, Rr | Сложить два регистра плюс бит переноса С | Rd Rd + Rr + C | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
ADIW | Rdl, K | Сложить слово с константой | Rdh:Rdl Rdh:Rdl + K | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
SUB | Rd, Rr | Вычесть два регистра | Rd Rd - Rr | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
SUBI | Rd, K | Вычесть константу из регистра | Rd Rd - K | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
SBC | Rd, Rr | Вычесть с переносом | Rd Rd - Rr - C | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
SBCI | Rd, K | Вычесть непосредственное значение с переносом | Rd Rd - K - C | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
SBIW | Rdl, K | Вычесть непосредственное значение из слова | Rdh:Rdl Rdh:Rdl - K | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
AND | Rd, Rr | Выполнить логическое AND | Rd Rd · Rr | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
ANDI | Rd, K | Выполнить логическое AND с непосредственным значением | Rd Rd · K | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
OR | Rd, Rr | Выполнить логическое OR | Rd Rd v Rr | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
ORI | Rd, K | Выполнить логическое OR с непосредственным значением | Rd Rd v K | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
EOR | Rd, Rr | Выполнить исключаюoее OR | Rd Rd Å Rr | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
COM | Rd | Выполнить дополнение до единицы | Rd $FF-Rd | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
NEG | Rd | Выполнить дополнение до двух | Rd Федеральное агентство по образованию Государственное образовательное учреждение высшего профессионального образования «Алтайский государственный технический университет имени Бийский технологический институт (филиал) , ПОСЛЕДОВАТЕЛЬНЫЕ ИНТЕРФЕЙСЫ ТИПОВЫХ ЭЛЕКТРОННЫХ КОМПОНЕНТОВ Лабораторный практикум по курсу «Аппаратные интерфейсы информационных систем» для студентов специальности 230201 «Информационные системы и технологии» Бийск 2007 УДК 681.32 Барсуков, интерфейсы типовых электрон-ных компонентов: лабораторный практикум по курсу «Аппаратные интерфейсы информационных систем» для студентов специальности 230201 «Информационные системы и технологии» / , . Алт. гос. техн. ун-т им. , БТИ. – Бийск. Изд-во Алт. гос. техн. ун-та, 2007. – 50 с. В лабораторном практикуме приведено описание лабораторных стендов, а также даны задания к лабораторным работам по курсу «Аппаратные интерфейсы информационных систем». Рассмотрен и одобрен на заседании кафедры МСИА. Протокол № 47 от 30.г. Рецензент: доцент каф. физики, к. т.н. (БТИ АлтГТУ) © , 2007, © , 2007 © БТИ АлтГТУ, 2007 СОДЕРЖАНИЕ
ВВЕДЕНИЕ Предлагаемый лабораторный практикум разработан для специальности «Информационные системы и технологии» в рамках курса «Аппаратные интерфейсы информационных систем». Практикум включает в себя шесть лабораторных работ, связанных с программной реализацией стандартных протоколов [1] обмена данными между типовыми электронными компонентами. 1 ОПИСАНИЕ ЛАБОРАТОРНОГО СТЕНДА Лабораторный стенд представляет собой стандартный внутри-схемный эмулятор фирмы ATMEL ICE200 [2] с подключаемым сменным модулем, который содержит несколько типовых электронных компонентов с последовательными интерфейсами. Внешний вид модуля показан на рисунке 1.
Модуль состоит из следующих элементов: 1 – микросхема EEPROM 24С01 [3] с последовательным интер-фейсом; 2 – микросхема EEPROM 93LC66 [4] с последовательным интер-фейсом; 3 – RS-232/SPI контроллер светодиодной линейки; 4 – интегральный температурный датчик DS18B20 [5] с после-довательным интерфейсом; 5 – интегральный температурный датчик DS1620 [6] с последо-вательным интерфейсом; 6 – светодиодная линейка из 6 элементов; 7 – контрольный светодиод 1; 8 – контрольный светодиод 2. На рисунке 2 показан внутрисхемный эмулятор с подключенным сменным модулем.
Лабораторный стенд подключается к компьютеру через последовательный порт (RS-232). Принципиальная электрическая схема лабораторного стенда приведена в 2 РАБОТА С ПРОГРАММОЙ AVR STUDIO Для написания, тестирования и отладки программы используется программная среда AVR Studio [7]. Используемый язык программиро-вания – Ассемблер для микроконтроллеров фирмы Atmel. Для работы с лабораторным стендом необходимо выполнить ряд следующих действий: 1. Подключить сменный модуль к внутрисхемному эмулятору. 2. Включить в сеть компьютер и внутрисхемный эмулятор. 3. Запустить программу AVR Studio. 4. Создать рабочий проект. 5. Написать программу для микроконтроллера в соответствии с заданием. 6. Выполнить компиляцию программы. 7. Загрузить программу в эмулятор. 8. Запустить программу на выполнение. 9. Выполнить отладку программы в пошаговом отладчике (если требуется). 10. Выполнить действия 6–9. 11. Представить результаты работы в виде рабочей программы. После запуска программы AVR Studio должно появиться рабочее поле программы, как показано на рисунке 3. Для создания проекта необходимо в главном меню программы выбрать Project/New Project.
В окне «Create new project» (рисунок 4) необходимо выбрать тип проекта (Atmel AVR Assembler), ввести имя проекта (Project name), ввести имя исходного файла (Initial file), выбрать место положения рабочих файлов проекта на диске компьютера (Location), нажать Next.
НЕ нашли? Не то? Что вы ищете?
В окне «Select debug platform and device» (рисунок 5) в позиции «Debug platform» необходимо выбрать ICE200, в позиции «Device» выбрать процессор AT90S8535.
После написания программы необходимо произвести ее компиляцию (функциональная клавиша F7). В случае успешной компиляции в окне «Build» появится статистика об используемых полях памяти и сообщение «Assembly complete, 0 errors, 11 warnings». Наличие предупреждений не является ошибкой, и их количество может быть произвольным. На рисунке 7 показан вид окна «Build» в случае успешной компиляции программы.
В случае наличия ошибок в программе, после попытки ее компиляции в окне «Build» выводится информация о количестве ошибок и номера строк, где допущены ошибки (рисунок 8). Двойной «клик» левой кнопкой мыши по строке с описанием ошибки в окне «Build» автоматически выводит на экран рабочее окно программы, в котором курсор указывает на строку с ошибочной инструкцией.
В случае безошибочной компиляции необходимо загрузить скомпилированный код в эмулятор и перейти в режим отладки. Для этого необходимо нажать клавиши Ctrl+Shift+Alt+F5. Для запуска программы в непрерывном режиме (в реальном масштабе времени) необходимо нажать клавишу F5. Для выполнения программы в пошаговом режиме нажать клавишу F11 (при каждом нажатии клавиши F11 выполняется одна инструкция программы). Для остановки программы, которая исполняется в непрерывном режиме, необходимо нажать Ctrl+F5. Для перезапуска программы (Restart) необходимо нажать Shift+F5. При работе с внутрисхемным эмулятором пользователь имеет возможность контролировать состояние регистров (ячеек памяти) и других внутренних устройств микроконтроллера. Вся информация о состоянии микроконтроллера представлена в окне «I/O View», как показано на рисунке 9.
3 АРХИТЕКТУРА МИКРОКОНТРОЛЛЕРА AT90S8535 Архитектура микроконтроллера представлена на рисунке 10. Подробно с архитектурой микроконтроллера можно ознакомиться в [8].
RISC, имеет 32 цифровые линии ввода-вывода, восемь из которых могут быть сконфигурированы как аналоговые входы. Линии ввода-вывода образуются четырьмя 8-разрядными двунаправленными портами PA0…PA7, PB0…PB7, PC0…PC7, PD0…PD7. Контроллер имеет 8 Кбайт программной памяти, 32 8-разрядных регистра общего назначения (R0-R31), 118 мощных инструкций, большинство из которых выполняются за один такт процессора и целый ряд внутренних устройств (таймеры, счетчики, аналоговые компараторы и т. д.). Условно-графическое обозначение микроконтроллера представ-лено на рисунке 11.
В Приложении Б представлен полный набор инструкций микроконтроллера AT90S8535. 4 ОСНОВЫ ПРОГРАММИРОВАНИЯ МИКРОКОНТРОЛЛЕРА AT90S8535 НА ЯЗЫКЕ АССЕМБЛЕР В СРЕДЕ AVR STUDIO 4 При реализации какой-либо задачи линии микроконтроллера разделяют на две группы – входные линии и выходные. По умолчанию линии микроконтроллера определены как входы (входы находятся в Z-состоянии). В случае использования линий микроконтроллера как выходных, необходимо соответствующие линии запрограммировать на выход. Например: sbi DDRA, PA0 – программирование линии PA0 на выход; sbi DDRB, PB1 – программирование линии PB1 на выход; sbi DDRC, PC2 – программирование линии PC2 на выход; sbi DDRD, PD3 – программирование линии PD3 на выход. В случае использования линий микроконтроллера как входных, необходимо соответствующие линии запрограммировать на вход. Например: cbi DDRA, PA0 – программирование линии PA0 на вход; cbi DDRB, PB1 – программирование линии PВ1 на вход; cbi DDRC, PC2 – программирование линии PС2 на вход; cbi DDRD, PD3 – программирование линии PВ3 на вход. Для того чтобы установить высокий уровень на выходе микроконтроллера, необходимо выполнить соответствующую команду (линии микроконтроллера должны быть заранее запрограммированы на выход). Например: sbi PORTA, PA0 – установить высокий уровень на выводе PA0; sbi PORTB, PB1 – установить высокий уровень на выводе PB1; sbi PORTC, PC2 – установить высокий уровень на выводе PC2; sbi PORTD, PD3 – установить высокий уровень на выводе PD3. Для того чтобы установить низкий уровень на выходе микроконтроллера, необходимо выполнить соответствующую команду (линии микроконтроллера должны быть заранее запрограммированы на выход). Например: cbi PORTA, PA0 – установить низкий уровень на выводе PA0; cbi PORTB, PB1 – установить низкий уровень на выводе PB1; cbi PORTC, PC2 – установить низкий уровень на выводе PC2; cbi PORTD, PD3 – установить низкий уровень на выводе PD3. Для генерирования прямоугольного сигнала на одной линии микроконтроллера в качестве примера можно рассмотреть следующую программную конструкцию (генерирование прямоугольного сигнал на выводе PA0): sbi DDRA, PA0 – программирование линии PA0 на выход; Label: sbi PORTA, PA0 – установить высокий уровень на линии PA0; сbi PORTA, PA0 – установить низкий уровень на линии PA0; rjmp Label – перейти на метку Label. При выполнении лабораторных работ необходимо генерировать сигналы с требуемой частотой и скаважностью, для этого в текст программы следует включать программные задержки, как показано ниже: sbi DDRA, PA0 – программирование линии PA0 на выход; Label: sbi PORTA, PA0 – установить высокий уровень на линии PA0; Delay1 – подпрограмма задержки 1; сbi PORTA, PA0 – установить низкий уровень на линии PA0; Delay2 – подпрограмма задержки 2; rjmp Label – перейти на метку Label. При реализации программных задержек можно использовать внутренние таймеры/счетчики микроконтроллера, что требует от разработчика программы глубоких знаний архитектуры микроконт-роллера [8], либо руководствоваться следующими указаниями. 1-й способ реализации программных задержек: nop 1-й такт nop 2-й такт nop 3-й такт ... n–1-й такт nop n–й такт Длительность задержки 2-й способ реализации программных задержек: clr r30 – обнуление регистра R30 NextStep: cpi r30,255 – сравнение содержимого регистра R30 c 255 breq ExitDelay – перейти на ExitDelay в случае если R30=255 inc r30 – увеличить содержимое R30 на 1 rjmp NextStep – перейти на NextStep ExitDelay: nop Длительность задержки при выполнении указанной выше конструкции определяется следующим выражением: При написании программ часто используемые процедуры удобно оформить в виде подпрограмм и вызывать их при помощи соответствующих команд, как показано на следующем примере: nop nop nop rcall My_Sub – строка вызова подпрограммы по адресу My_Sub nop nop ... My_Sub: nop ... nop ret Далее представлены примеры организации условных переходов при написании программ. Пример 1: cpi r30,3 breq label – переход на метку label, если r30=3 nop ... label: nop ... Пример 2: cpi r30,3 brsh label – переход на метку label, если r30 => 3 nop ... label: nop ... Пример 3: cpi r30,3 brlo label – переход на метку label, если r30<3 nop ... label: nop При выполнении лабораторных работ потребуется не только написание программных конструкций, предназначенных для генерации управляющих сигналов, но и для чтения информации, поступающей к микроконтроллеру. Для контроля состояния входных линий микро-контроллера можно воспользоваться следующей программной конструкцией: cbi PORTA, PA0 – программирование линии PA0 на вход sbis PINA, PA0 rjmp Bit_is_reset Bit_is_set: nop – переход на эту метку осуществляется, когда PA0=1 ... Bit_is_reset: nop – переход на эту метку осуществляется, когда PA0=0 ... Наиболее используемые команды и операции: clr r30 – очистить регистр общего назначения; ldi r29,100 – записать константу в регистр общего назначения r29; ldi r29,0b – записать константу в регистр общего назна-чения r29; ldi r29,0xA0 – записать константу в регистр общего назначения r29; mov r29,r30 – переписать содержимое r30 в r29; cpi r29,1 – сравнение содержимого регистра r29 с константой; cp r29,r30 – сравнение содержимого регистров r29, r30; inc r30 – увеличить на 1 содержимое r30; dec r30 – уменьшить на 1 содержимое r30; rjmp «метка_перехода» – безусловный переход на метку; breq «метка_перехода» – переход, если «равно»; brsh «метка_перехода» – переход, если «больше или равно»; brlo «метка_перехода» – переход, если «меньше». Операции с отдельными битами регистров общего назначения: sbr r30,0b – установить 4 бит регистра r30 равным 1; sbr r30,0b – установить 0 бит регистра r30 равным 1; сbr r30,0b – установить 4 бит регистра r30 равным 0; сbr r30,0b – установить 0 бит регистра r30 равным 0; сbr r30,0b – установить 0 и 7 биты регистра r30 равными 0; сbi PORTA, PA3 – установить 0 на линии 3 порта A; sbi PORTA, PA3 – установить 1 на линии 3 порта A. Тест–программа управления светодиодами. Далее представлена программа для поочередного переключения двух тестовых светоди-одов, подключенных к линиям PD6, PD7 микроконтроллера. . include "8535def. inc" – обязательная директива при использовании микроконтроллера AT90S8535 .def temp =r16 .cseg – обязательная директива любой программы .org 0 – обязательная директива любой программы rjmp My_program – безусловный переход на метку My_program .org 25 – определение стартового адреса вашей программы My_program: – символьная метка ldi temp, high(RAMEND) – инициализация стека out SPH, temp – -//- ldi temp, low(RAMEND) – -//- out SPL, temp – -//- sbi DDRD, PD6 – программирование линии PD6 на выход sbi DDRD, PD7 – программирование линии PD7 на выход label1: sbi PORTD, PD6 – включить светодиод 1 cbi PORTD, PD7 – выключить светодиод 2 rcall Delay – вызов подпрограммы задержки cbi PORTD, PD6 – выключить светодиод 1 sbi PORTD, PD7 – включить светодиод 2 rcall Delay – вызов подпрограммы задержки rjmp label1 – перейти на метку label1 Delay: процедура, реализующая программную задержку ret 5 ЗАДАНИЯ НА ЛАБОРАТОРНЫЕ РАБОТЫ 5.1 ЛАБОРАТОРНАЯ РАБОТА № 1 Тема: Реализация протокола обмена данными между ПЗУ с последовательным доступом (1K Microwire Compatible Serial EEPROM 93LC66) и микроконтроллером AT90S8535 на базе внутрисхемного эмулятора ICE200. Задание: реализовать процедуры записи и чтения данных между регистрами микроконтроллера и ячейками памяти 93LC66. На рисунке 12 представлены нумерация и наименование выводов микросхемы 93LC66.
Подключение микросхемы памяти к микроконтроллеру осущест-вляется в соответствии с таблицей 1. Таблица 1 – Линии подключения микросхемы к микроконтроллеру
Функциональное описание. Команды, адреса и записываемые данные генерируются на линии DI при положительном фронте сигнала CLK. Вывод DO в нормальном состоянии находится в высокоомном состоянии (Z-состояние) за исключением, когда данные читаются из устройства или когда проверяется статус READY/BUSY в период операции программирования. Статус READY/BUSY может проверяться при выполнении операций Erase/Write путем опроса вывода DO; низкий уровень на выводе DO индицирует, что процесс программирования продолжается (устройство занято), высокий уровень на выводе DO индицирует о готовности устройства к дальнейшей работе. Ввод DO перейдет в Z-состояние при появлении спадающего сигнала на выводе CS. Условие старта. Условие старта детектируется устройством, когда уровни на выводах CS и DI одновременно переходят в высокое состояние при появлении положительного фронта на выводе CLK (в начальный момент времени). Когда условия старта будут зафиксированы устройством, сигналы CS, CLK и DI могут меняться в любых требуемых комбинациях (за исключением, что это будет условие старта). До тех пор, пока сигнал CS находится в высоком состоянии, устройство не переходит в режим ожидания. Команды, следуемые после генерации условия старта, будут выполнены при условии, если требуемые код, адрес и данные (если требуется) будут записаны в устройство. В таблице 2 представлены микрокоманды микросхемы памяти. Таблица 2 – Микрокоманды микросхемы памяти
ERASE – очистить байт по указанному адресу. ERAL – очистить всю память. EWDS – запретить процедуры ERASE, WRITE, ERAL. EWEN – разрешить процедуры ERASE, WRITE, ERAL. READ – чтение данных по указанному адресу. WRITE – записать байт по указанному адресу. WRAL – заполнить все ячейки памяти указанным байтом. Описание команды EWEN. При включении питания команды ERASE, WRITE, ERAL запрещены. Для их активации при включении питания необходимо выполнить один раз команду EWEN (команду EWEN необходимо выполнять при каждом сбросе питания). На рисунке 13 представлены временные диаграммы выполнения команды EWEN.
Чтение данных из ячеек памяти. При выполнении инструкции READ из адресованной ячейки 8 бит данных последовательно появляются на выводе DO. Уровни выходного сигнала на выводе DO меняются при появлении положительных фронтов сигнала на выводе CLK и являются достоверными после временного интервала TPD. Последующее чтение возможно пока уровень CS удерживается в единичном состоянии. Временная диаграмма выполнения команды READ представлена на рисунке 14.
Запись данных в ячейки памяти. Временная диаграмма выпол-нения команды WRITE представлена на рисунке 15. После прихода последнего бита спадающий сигнал на линии CS инициирует внутрен-ние процедуры устройства для очистки и записи данных в ячейку памяти. Сигнал на выводе DO индицирует статус устройства – READY/BUSY.
Ниже приведены динамические характеристики микросхемы памяти (таблица 3). Таблица 3 – Динамические характеристики микросхемы памяти
При генерировании управляющих сигналов необходимо соблюдать временные интервалы и задержки между ними, как показано на синхронной временной диаграмме (рисунок 16).
5.2 ЛАБОРАТОРНАЯ РАБОТА № 2 Тема: Реализация протокола RS-232 для одностороннего обмена данными между контроллером светодиодных индикаторов и микроконтроллером AT90S8535 на базе внутрисхемного эмулятора ICE200. Задание: реализовать управление светодиодными индикаторами по однопроводному каналу связи. Для управления светодиодами (включить/выключить) необхо-димо передать управляющему контроллеру адрес светодиода, затем команду на включение или выключение светодиода. Адреса светодиодов представлены в таблице 4. Таблица 4 – Адреса светодиодных индикаторов
Код включение светодиода: 7. Код выключение светодиода: 8. Связь с микроконтроллером реализовать на скорости 2400 бит/сек, со следующей структурой кадра: один старт бит, восемь бит данных, один стоп бит. Микроконтроллер AT90S8535 подключен к светодиодному контроллеру через линию порта PA4. Структура кадра передаваемых данных по протоколу RS-232 представлена на рисунке 17.
В исходном состоянии (IDLE) линия связи должна находиться в состоянии 1. Передача данных начинается со старт бита (St), значение которого всегда равно 0. Далее передаются информационные биты, начиная с младшего. За последним информационным битом может передаваться бит четности. Далее следуют стоп биты, их может быть два. Значение стоповых битов 1. После стоп битов либо прекращается передача данных (режим IDLE), либо передается последующий кадр. 5.3 ЛАБОРАТОРНАЯ РАБОТА № 3 Тема: Реализация протокола SPI для одностороннего обмена данными между контроллером светодиодных индикаторов и микроконтроллером AT90S8535 на базе внутрисхемного эмулятора ICE200. Задание: реализовать управление светодиодными индикаторами по SPI интерфейсу при частоте тактовых импульсов 10 кГц. Для управления светодиодами (включить/выключить) необходимо передать управляющему контроллеру адрес светодиода, затем команду на включение или выключение светодиода. Адреса светодиодов представлены в таблице 5. Таблица 5 – Адреса светодиодных индикаторов
Код включение светодиода: 7. Код выключение светодиода: 8. При обмене данными между двумя устройствами по SPI интерфейсу одно устройство объявляется ведущим (Master), второе ведомым (Slave). Светодиодный контроллер объявлен ведомым. Микроконтроллер AT90S8535 является ведущим. Подключение AT90S8535 к светодиодному контроллеру осуществляется согласно таблице 6. Таблица 6 – Линии подключения микросхемы к микроконтроллеру
Соединение двух устройств показано на рисунке 18.
Описание линий интерфейса: SS – сигнал, инициирующий передачу данных; SCK – тактирующий сигнал; MISO – линия для передачи данных от ведомого устройства к ведущему; MOSI – линия для передачи данных от ведущего устройства к ведомому. Начало передачи инициируется мастером установкой линии SS в нулевой уровень. Тактовая частота обмена информацией определяется частотой на линии SCK, которая генерируется мастером. Данные считываются ведомым и ведущим устройствами при возникновении переднего фронта на линии SCK. Младший бит передается первым. Количество бит равно восьми. Временные диаграммы сигналов на шине SPI представлены на рисунке 19.
5.4 ЛАБОРАТОРНАЯ РАБОТА № 4 Тема: Реализация протокола обмена данными между ПЗУ с последовательным доступом (Serial EEPROM 24С01) и микроконтроллером AT90S8535 на базе внутрисхемного эмулятора ICE200. Задание: реализовать процедуры записи и чтения данных в ячейки микросхемы памяти. На рисунке 20 представлены нумерация и обозначение выводов микросхемы 24С01.
Подключение микросхемы памяти к микроконтроллеру осущест-вляется в соответствии с таблицей 7. Таблица 7 – Линии подключения микросхемы к микроконтроллеру
Микросхема AT24C01 предоставляет 1024 бит электрически перезаписываемых данных с организацией 128 слов по 8 бит. Операции с устройством. Тактирование и перемещение данных. Уровень сигнала на выводе SDA изначально находится в единичном состоянии, которое обеспечивается подключением этой линии к линиям питания микросхемы. Информация на линии SDA может меняться только в моменты, когда линия SCL находится в нулевом состоянии (смотри временную диаграмму достоверности данных на рисунке 21).
Условие старта (START CONDITION). Смена уровня с высокого на низкий на линии SDA при высоком уровне на SCL является условием старта, которое должно быть в начале любых команд (смотри временные диаграммы старт/стоп условий на рисунке 22).
Стоп условие (STOP CONDITION). Смена уровня с низкого на высокий на линии SDA при высоком уровне на линии SCL является стоп условием, которое прерывает все взаимодействия. После чтения последовательности, появление стоп условия переводит микросхему в режим ожидания (смотри временные диаграммы старт/стоп условий на рисунке 23). Подтверждение (ACKNOWLEDGE). Все адреса и данные последовательно передаются в (от) устройство памяти в 8-битном формате. Все устройства на двухпроводной шине, получившие данные, должны подключить линию SDA в нулевое состояние, подтверждая тем самым удачный прием каждого слова. Это должно происходить в течение девятого тактового импульса после каждого принятого слова. Микросхема должна также генерировать подтверждение (уста-новка линии SDA в нуль) после приема адреса или слова данных (смотри временную диаграмму генерирования подтверждения от приемника на рисунке 23). Сброс памяти (MEMORY RESET). После прерывания протокола связи или сброса питания или системного сброса можно организовать сброс памяти путем выполнения следующих шагов: (a) тактировать шину SCL до 9 тактов; (b) ожидать высокого уровня на линии SDA в каждом такте в моменты, когда SCL находится в высоком уровне; (c) сгенерировать условие старта, так как линия SDA в состоянии высокого уровня.
Запись байта (BYTE WRITE). Следующая за старт условием операция записи требует 7 бит адреса и нулевой бит записи. При получении этого адреса микросхема должна откликнуться «нулем» и затем записываются первые 8 бит данных. Для следующей записи 8 бит информации микросхема должна откликаться «нулем» и управляющий микроконтроллер (AT90S8535) должен завершить запись, сгенерировав стоп условие, как показано на рисунке 24.
Операция чтения инициируется тем же путем, что и операция записи, за исключением, что бит read/write, следующий за адресом, устанавливается в единицу. Чтение байта (BYTE READ). Чтение байта начинается со старт условия, семи бит адреса и единичным битом чтения. Далее от микро-схемы приходит бит подтверждения, а затем последовательно 8 бит данных. Микроконтроллер не высылает подтверждение после приема данных и генерирует стоп условие, как показано на рисунке 25.
На рисунке 26 представлена временная диаграмма соотношения сигналов на шине I2C.
В таблице 8 представлены динамические характеристики микро-схемы памяти. Таблица 8 – Динамические характеристики микросхемы памяти
5.5 ЛАБОРАТОРНАЯ РАБОТА № 5 Тема: Реализация протокола обмена данными между цифровым температурным датчиком DS18B20 и микроконтроллером AT90S8535 на базе внутрисхемного эмулятора ICE200. Задание: реализовать протокол обмена данными с температурным датчиком, произвести измерение текущей температуры. На рисунке 27 представлены рисунок и назначение выводов микросхемы DS18B20.
Подключение DS18B20 к микроконтроллеру осуществляется в соответствии с таблицей 9. Таблица 9 – Линии подключения микросхемы к микроконтроллеру
Описание. Микросхема имеет уникальный однопроводной интерфейс и уникальный 64-битный код. Ядро DS18B20 представляет собой прямой преобразователь температуры в цифровой код. Разрядность выходного кода может быть 9, 10, 11, 12 бит, т. о. абсолютная погрешность может быть 0,5 0С, 0,25 0С, 0,125 0С, 0,0625 0С соответственно. Разрядность по умолчанию 12 бит. Для инициации измерения температуры необходимо передать команду Convert T (44h). Результат преобразования сохраняется в двухбайтном регистре. Если DS18B20 питается от внешнего источника, «мастер» может сгенерировать условие «чтение временного слота» после команды Convert T, и DS18B20 должен откликнуться передачей 0 в период преобразования температуры и 1, если преобразование завершено. Температура хранится в 16-битном регистре (два 8-битных), структура которого показана на рисунке 28.
Знаковые биты (S) индицируют, положительна ли температура или отрицательна. Для положительной температуры S=0, для отрицательной S=1. Если используется 12-битный режим, все биты температурных регистров используются. Если используется 11-битный режим, бит 0 неопределен. Если используется 10-битный режим, биты 1, 0 неопределены. Если используется 9-битный режим, биты 2, 1, 0 неопределены. В таблице 10 представлено соотношение температуры и данных, находящихся в температурных регистрах. Таблица 10 – Соответствие температуры и двоичного кода
DS18B20 содержит уникальный 64-битный код, хранящийся в ROM. Структура уникального кода представлена на рисунке 29.
Структура память DS18B20 представлена на рисунке 30.
Структура конфигурационного байта представлена на рисунке 31.
Данные по шине передаются младшим значащим битом вперед. Последовательность работы с DS18B20 состоит из трех шагов: ШАГ 1. Инициализация; ШАГ 2. ROM команды; ШАГ 3. Функциональные команды. Инициализация. Все операции на шине начинаются с инициали-зации. Инициирующая последовательность содержит импульс сброса, поступающий от «мастера», и импульс отклика, поступающий от DS18B20.
ROM команды. После того, как «мастер» обнаружил DS18B20, необходимо выполнить ROM команды. Эти команды оперируют с 64-битным уникальным кодом. Эти команды также позволяют определить, сколько устройств находится на шине. Всего пять команд разрядностью 8 бит. Мастер должен сгенерировать необходимые ROM команды, прежде чем генерировать функциональные команды. Несколько ROM команд представлено ниже. READ ROM (чтение уникального кода) [33h]. Эта команда может использоваться, когда на шине находится одно устройство DS18В20. Она позволяет получить мастеру 64-битный уникальный код DS18В20. MATCH ROM (передача кода) [55h]. За этой командой следует 64-битный код, позволяющий «мастеру» адресоваться к одному DS18B20. SKIP ROM (пропустить ROM команды) [CCh]. Мастер может использовать эту команду при адресации ко всем устройствам, находящимся на шине одновременно, без посылки любых уникальных кодов. Функциональные команды DS18B20. После генерирования ROM команд мастер может сгенерировать одну из функциональных команд. CONVERT T (преобразование температуры) [44h]. Эта команда инициирует единичное преобразование текущей температуры. Результат преобразования сохраняется в соответствующих регистрах памяти DS18B20, и последний переходит в режим спячки (ожидания). Мастер может читать временной слот после команды Convert T, и DS18B20 должен выставить 0 в течение процедуры преобразования температуры или 1, когда преобразование завершено. READ SCRATCHPAD (чтение памяти) [BEh]. При помощи этой команды мастер читает память DS18B20. Данные передаются младшим значащим битом вперед, и длительность посылки составляет 9 байт. Мастер может прервать прием в любой момент времени, перестав генерировать временные слоты чтения данных, если это необходимо. В таблице 11 представлены динамические характеристики DS18B20. Таблица 11 – Динамические характеристики микросхемы
Продолжение таблицы 11
Процедура инициализации: сброс и импульс присутствия. Взаимодействие с DS18B20 начинается с инициирующей последова-тельности, которая содержит импульс сброса, поступающий от мастера и импульс присутствия, поступающий от DS18B20, как показано на рисунке 32.
Когда DS18B20 посылает импульс присутствия в ответ на импульс сброса, это говорит о том, что устройство присутствует на шине и готово к работе. В ходе инициализации мастер передает импульс сброса путем удержания шины в нулевом состоянии в течение минимум 480 мкс. Когда импульс сформирован, шина переводится в режим приема. Шина переходит в единичное состояние за счет специального резистора, подключающего шину данных к шине питания. Когда DS18B20 обнаруживает положительный фронт импульса сброса, оно ожидает от 10 до 60 мкс и затем посылает импульс присутствия путем удержания шины в нулевом состоянии в течение 60–240 мкс. Временные слоты чтения/записи. Мастер записывает данные в DS18B20 в течение «временного слота записи» и читает данные из DS18B20 в течение «временного слота чтения». Один бит данных передается в течение одного временного слота. Временной слот записи. Существует два типа временных слотов записи: временной слот «Write 1» и временной слот «Write 0». Мастер использует слот «Write 1» для записи логической единицы в DS18B20 и слот «Write 0» для записи нуля. Временные слоты записи должны быть продолжительностью минимум 60 мкс и следовать с интервалами не менее 1 мкс. Оба типа слотов инициируются мастером переводом шины в нулевое состояние. Для генерирования временного слота «Write 1», после перевода мастером шины в нулевое состояние, он должен удерживать ее в таком состоянии в течение 15 мкс. После этого мастер переводит шину в единичное состояние. Для генерирования временного слота «Write 0», после перевода шины в нулевое состояние, мастер должен удерживать ее в таком состоянии в течение длительности временного слота (около 60 мкс). Таким образом стробирование работы DS18B20 происходит в последующие 15-60 мкс, после того как мастер инициирует временной слот записи. Если в течение этого интервала шина находится в единичном состоянии, в DS18B20 записывается «1», если в нулевом – записывается «0». Временные слоты чтения. DS18B20 может передавать данные, только когда мастер генерирует временной слот чтения. Таким образом, мастер должен генерировать временной слот чтения немедленно после передачи команд, типа Read Scratchpad [BEh], поскольку DS18B20 должен передавать запрашиваемые данные. Кроме того, мастер может генерировать временной слот чтения после передачи команды Convert T [44h] для детектирования статуса выполнения команды. Все временные слоты чтения должны быть длительностью минимум 60 мкс с минимальным интервалом между слотами 1 мкс. Временные слоты чтения инициируются мастером переводом шины в нулевое состояние минимум на 1 мкс и затем переключением на прием данных (рисунок 33). После того как мастер инициировал временной слот чтения, DS18B20 должен начать передачу 1 или 0 по шине. DS18B20 передает 1 удержанием шины в высоком состоянии и передает 0 удержанием шины в нулевом состоянии. Когда передается 0, DS18B20 должен отключиться от шины в конце временного слота и шина должна перейти в единичное состояние за счет внешнего подтягивающего резистора. Данные, поступающие от DS18B20, достоверны после 15 мкс вслед за спадающим фронтом, инициирующим временной слот чтения. Таким образом, мастер должен отключиться от шины (переключиться на прием) и затем ожидать около 15 мкс от начала старта слота.
В таблице 12 представлен пример последовательности работы с DS18B20. Таблица 12 – Последовательность работы с микросхемой DS18B20
5.6 ЛАБОРАТОРНАЯ РАБОТА № 6 Тема: Реализация протокола обмена данными между цифровым температурным датчиком DS1620 и микроконтроллером AT90S8535 на базе внутрисхемного эмулятора ICE200. Задание: реализовать протокол обмена данными с температур-ным датчиком, произвести измерение текущей температуры. На рисунке 34 представлены нумерация и назначение выводов микросхемы DS1620.
Подключение DS1620 к микроконтроллеру осуществляется в соответствии с таблицей 13. Таблица 13 – Линии подключения микросхемы к микроконтроллеру
Измерение температуры. DS1620 реализует измерение температуры, используя специальный сенсор. Температура хранится в 9-битном формате (рисунок 35) и может быть прочитана при помощи специальной команды. Данные передаются последовательно по 3-провод-ному последовательному интерфейсу, младший бит передается первым. DS1620 может измерять температуру в диапазоне от минус 55 0С до + 125 0С. Так как данные передаются в последовательном коде младшим битом вперед, 9 бит данных могут быть переданы или приняты двумя способами: - как 9-битное слово (сигнал RST необходимо перевести в нулевое состояние после приема 9 бит); - как два 8-битных слова, причем 7 старших значащих бит игно-рируются или сбрасываются в 0.
Точное значение температуры можно вычислить по следующей формуле:
Значения TEMP_READ, COUNT_PER_C, COUNT_REMAIN получают при помощи команд (Read Temperature), (Read Counter), (Read Slope) соответственно. Команды DS1620: Чтение температуры (Read Temperature) [AAh]. Эта команда читает содержимое регистров, которые содержат результат последнего преобразования температуры. В последующие девять тактов будет выслано содержимое этих регистров. Чтение счетчика (Read Counter) [A0h]. Эта команда читает значение счетчика байтов. В последующие девять тактов будут высланы содержимое этих регистров. Чтение спадающего счетчика (Read Slope) [A9h]. Эта команда читает значение спадающего счетчика байтов из DS1620. В последующие девять тактов передается содержимое этого счетчика. Запустить преобразование температуры (Start Convert T) [EEh]. Эта команда запускает процедуру преобразования температуры. В единичном режиме преобразование температуры будет исполнено, и затем DS1620 останется бездействующим. В непрерывном режиме работы эта команда инициирует непрерывное преобразование. Остановить преобразование температуры (Stop Convert T) [22h]. Эта команда останавливает преобразование температуры. Эта команда может быть использована для остановки DS1620, работающего в непрерывном режиме. После выполнения этой команды текущее преобразование температуры завершается и DS1620 переходит в режим ожидания. Запись конфигурации (Write Config) [0Ch]. Эта команда осуще-ствляет запись данных в регистр конфигурации. После передачи этой команды в следующие восемь тактов необходимо передать восемь бит для записи в регистр конфигурации. Чтение конфигурации (Read Config) [ACh]. Эта команда читает значение регистра конфигурации. После приема команды в последую-щие восемь тактов передается содержимое регистра конфигурации. Контроль и управление DS1620. DS1620 имеет 8-разрядный регистр конфигурации:
где DONE – бит завершения преобразования; 1 – преобразование завершено; 0 – преобразование не завершено; THF – необходим для работы с термостатом; TLF – необходим для работы с термостатом; NVB – флаг занятости энергонезависимой памяти; CPU – бит использования CPU (Если CPU=0, DS1620 может работать в ручном режиме; если CPU=1, к DS1620 может быть подключен внешний микроконтроллер посредством 3 проводной шины. DS1620 поставляется c битом CPU=0.); ISHOT – если ISHOT=1, преобразование температуры запускается соответствующей командой (Start Convert T), если ISHOT=0, DS1620 работает в режиме непрерывного преобразования. DS1620 поставляется c битом ISHOT=0. 3-проводной интерфейс. Трехпроводная шина содержит всего три сигнала. Это RST (сброс), CLK (тактовый сигнал), DO данные. Передача любых данных инициируется переводом линии RST в высокое состояние. Перевод линии RST в ноль прерывает протокол соединения. Тактовые импульсы – это последовательность спадающего фронта, следующего за нарастающим фронтом. Для ввода данные считаются достоверными при появлении поло-жительного фронта тактовой частоты. Данные выводятся из DS1620 в моменты появления заднего фронта тактового сигнала и остаются годными до появления переднего фронта тактового сигнала. Когда данные читаются из DS1620, вывод DO переходит в высокоомное состояние, в то время как CLK линия находится в состоянии 1. Перевод RST в нуль прерывает любой обмен данными, и вывод DO переходит в высокоомное состояние. В таблице 14 представлена сводная информация о командах DS1620. На рисунках 36 и 37 представлены временные диаграммы сигналов на линиях микросхемы DS1620 при работе в режимах чтения и записи данных соответственно. Таблица 14 – Команды температурного датчика
Рисунок 37 – Временная диаграмма сигналов на шине при записи данных В таблице 15 представлены динамические характеристики DS1620. Таблица 15 – Динамические характеристики микросхемы
Литература 1. Гук, М. Аппаратные интерфейса ПК. Энциклопедия / М. Гук.– СПб.: Питер, 2002. – 528 с. 2. Внутрисхемный эмулятор ICE200. – Электрон. данные. – Режим доступа: http://www. /dyn/resources/prod_documents/ doc1413.pdf 3. Спецификация на микросхему AT24C01. – Электрон. данные. – Режим доступа: http://www. /dyn/resources/prod_documents/ doc0180.pdf 4. Спецификация на микросхему 93LC66. – Электрон. данные. – Режим доступа: http:///downloads/en/ DeviceDoc/ 21795 C. pdf 5. Спецификация на микросхему DS18B20. – Электрон. данные. – Режим доступа: http://datasheets. /en/ds/DS18B20.pdf 6. Спецификация на микросхему DS1620. – Электрон. данные. – Режим доступа: http://datasheets. /en/ds/DS1620.pdf 7. Программная среда AVR Studio. – Электрон. данные. – Режим доступа: http://www. / 8. Спецификация на микроконтроллер фирмы Atmel AT90S8535. – Электрон. данные. – Режим доступа: http://www. /dyn /resources/ prod_documents/DOC1041.pdf ПРИЛОЖЕНИЕ А Схема электрическая принципиальная сменного модуля
Перечень команд микроконтроллера AT90S8535 1
Продолжение таблицы Б.1
Продолжение таблицы Б.2
ПОСЛЕДОВАТЕЛЬНЫЕ ИНТЕРФЕЙСЫ ТИПОВЫХ ЭЛЕКТРОННЫХ КОМПОНЕНТОВ Лабораторный практикум по курсу «Аппаратные интерфейсы информационных систем» для студентов специальности 230201 «Информационные системы и технологии» Редактор Технический редактор Подписано в печать 03.10.07. Формат 60×84 1/16 Усл. п.л 2,91. Уч.-изд. л. 3,13. Печать – ризография, множительно-копировальный аппарат «RISO TR-1510». Тираж 100 экз. Заказ 2007-57. Издательство Алтайского государственного технического университета. г. Барна. Оригинал-макет подготовлен ИИО БТИ АлтГТУ. Отпечатано в ИИО БТИ АлтГТУ. 9. -Rd | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
SBR | Rd, K | Установить бит в регистре | Rd Rd v K | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
CBR | Rd, K | Очистить бит в регистре | Rd Rd · ($FF - K) | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
INC | Rd | Инкрементировать | Rd Rd + 1 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
DEC | Rd | Декрементировать | Rd Rd-1 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
CLR | Rd | Очистить регистр | Rd Rd Å Rd | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
SER | Rd | Установить все биты регистра | Rd $FF | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Инструкции переходов | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
RJMP | k | Относительный переход | PC PC + k + 1 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
RCALL | k | Относительный вызов подпрограммы | PC PC + k + 1 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
RET | Возврат из подпрограммы | PC STACK | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
CPSE | Rd, Rr | Сравнить и пропустить если равно | if (Rd = Rr) PC PC + 2 or 3 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
CP | Rd, Rr | Сравнить | Rd-Rr | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
CPC | Rd, Rr | Сравнить с учетом переноса | Rd-Rr-C | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
CPI | Rd, K | Сравнить с константой | Rd-K |
Продолжение таблицы Б.1
Мнемо-ника | Операн-ды | Описание | Операции |
Арифметические и логические инструкции | |||
SBRC | Rr, b | Пропустить если бит в регистре очищен | if (Rr(b)=0) PC PC + 2 or 3 |
SBRS | Rr, b | Пропустить если бит в регистре установлен | if (Rr(b)=1) PC PC + 2 or 3 |
SBIC | P, b | Пропустить если бит в регистре I/O очищен | if (P(b)=0) PC PC + 2 or 3 |
SBIS | P, b | Пропустить если бит в регистре I/O установлен | if (P(b)=1) PC PC + 2 or 3 |
BREQ | k | Перейти если равно | if (Z = 1) then PC PC + k + 1 |
BRNE | k | Перейти если не равно Branch | if (Z = 0) then PC PC + k + 1 |
BRCS | k | Перейти если флаг переноса установлен | if (C = 1) then PC PC + k + 1 |
BRCC | k | Перейти если флаг переноса очищен | if (C = 0) then PC PC + k + 1 |
BRSH | k | Перейти если равно или больше (без знака) | if (C = 0) then PC PC + k + 1 |
BRLO | k | Перейти если меньше (без знака) | if (C = 1) then PC PC + k + 1 |
BRMI | k | Перейти если минус | if (N = 1) then PC PC + k + 1 |
BRPL | k | Перейти если плюс | if (N = 0) then PC PC + k + 1 |
BRGE | k | Перейти если больше или равно (с учетом знака) | if (N Å V= 0) then PC PC + k + 1 |
BRLT | k | Перейти если меньше (со знаком) | if (N Å V= 1) then PC PC + k + 1 |
BRHS | k | Перейти если флаг H = 1 | if (H = 1) then PC PC + k + 1 |
BRHC | k | Перейти если флаг H = 0 | if (H = 0) then PC PC + k + 1 |
BRTS | k | Перейти если флаг T = 1 | if (T = 1) then PC PC + k + 1 |
BRTC | k | Перейти если флаг T = 0 | if (T = 0) then PC PC + k + 1 |
BRVS | k | Перейти если флаг V=1 | if (V = 1) then PC PC + k + 1 |
BRVC | k | Перейти если флаг V=0 | if (V = 0) then PC PC + k + 1 |
Инструкции передачи данных | |||
MOV | Rd, Rr | Копировать регистр | Rd Rr |
LDI | Rd, K | Загрузить непосредственно константу в регистр | Rd K |
IN | Rd, P | Чтение порта | Rd P |
OUT | P, Rr | Запись порт | P Rr |
PUSH | Rr | Положить содержимое регистра в стек | STACK Rr |
POP | Rd | Загрузить содержимое вершины стека в регистр | Rd STACK |
Продолжение таблицы Б.2
Мнемо-ника | Операн-ды | Описание | Операции |
Бит ориентированные инструкции | |||
SBI | P, b | Установить бит в регистре ввода-вывода | I/O (P, b) 1 |
CBI | P, b | Очистить бит в регистре ввода-вывода | I/O(P, b) 0 |
LSL | Rd | Логический сдвиг влево | Rd(n+1) Rd(n), Rd(0) 0 |
LSR | Rd | Логический сдвиг вправо | Rd(n) Rd(n+1), Rd(7) 0 |
ROL | Rd | Циклический сдвиг влево через флаг переноса | Rd(0)C, Rd(n+1) Rd(n),CRd(7) |
ROR | Rd | Циклический сдвиг вправо через флаг переноса | Rd(7)C, Rd(n) Rd(n+1),CRd(0) |
ASR | Rd | Арифметический сдвиг вправо | Rd(n) Rd(n+1), n=0..6 |
SWAP | Rd | Поменять нибблы местами | Rd(3..0)Rd(7..4),Rd(7..4)Rd(3..0) |
BSET | s | Установить флаг регистра SREG | SREG(s) 1 SREG(s) |
BCLR | s | Очистить флаг регистра SREG | SREG(s) 0 SREG(s) |
SEC | Установить флаг переноса С | C 1 | |
CLC | Очистить флаг переноса С | C 0 | |
SEN | Установить флаг N в регистре SREG | N 1 | |
CLN | Очистить флаг N в регистре SREG | N 0 | |
SEZ | Установить флаг Z в регистре SREG | Z 1 | |
CLZ | Очистить флаг Z в регистре SREG | Z 0 | |
SES | Установить флаг S в регистре SREG | S 1 | |
CLS | Очистить флаг S в регистре SREG | S 0 | |
SET | Установить флаг T в регистре SREG | T 1 | |
CLT | Очистить флаг T в регистре SREG | T 0 | |
SHE | Установить флаг H в регистре SREG | H 1 | |
CLH | Очистить флаг H в регистре SREG | H 0 | |
NOP | Пустая операция |
ПОСЛЕДОВАТЕЛЬНЫЕ ИНТЕРФЕЙСЫ ТИПОВЫХ ЭЛЕКТРОННЫХ КОМПОНЕНТОВ
Лабораторный практикум по курсу «Аппаратные интерфейсы информационных систем» для студентов специальности 230201 «Информационные системы и технологии»
Редактор
Технический редактор
Подписано в печать 03.10.07. Формат 60×84 1/16
Усл. п.л 2,91. Уч.-изд. л. 3,13.
Печать – ризография, множительно-копировальный аппарат «RISO TR-1510».
Тираж 100 экз. Заказ 2007-57.
Издательство Алтайского государственного
технического университета.
г. Барна.
Оригинал-макет подготовлен ИИО БТИ АлтГТУ.
Отпечатано в ИИО БТИ АлтГТУ.
9.




































