
- •Содержание
- •Список сокращений
- •Введение
- •Структура микроконтроллера
- •Процессор микроконтроллера
- •Адресное пространство микроконтроллера
- •Подключение erom и eram к микроконтроллеру
- •Периферийные устройства микроконтроллера
- •Параллельные порты ввода-вывода
- •Таймер-счетчик т/с0
- •Таймер-счетчик т/с1
- •Последовательный порт
- •Контроллер прерываний
- •Система команд микроконтроллера
- •Общие сведения о языке Ассемблер для микроконтроллеров стандарта mcs-51 и о программном пакете фирмы 2500 a.D.
- •Синтаксис языка Ассемблер
- •Определители основания системы счисления
- •Макроопределения
- •Сообщения о некоторых ошибках ассемблирования
- •Рекомендуемая процедура инициализации микроконтроллера
- •Типичные применения микроконтроллеров
- •Ввод информации с датчиков
- •Опрос двоичного датчика
- •Ожидание события
- •Ожидание импульсного сигнала
- •Устранение дребезга контактов
- •Подсчет числа импульсов
- •Подсчет числа импульсов за интервал времени между двумя событиями
- •Подсчет числа импульсов за заданный промежуток времени
- •Опрос группы двоичных датчиков
- •Ввод информации с матричной клавиатуры
- •Вывод управляющих сигналов из микроконтроллера
- •Формирование статических сигналов
- •Формирование импульсных сигналов
- •Генерация меандра
- •Формирование сигнала с заданной скважностью
- •Вывод и отображение информации
- •Динамический вывод информации на дисплей из семисегментных индикаторов
- •Реализация функций реального времени
- •Программное формирование временной задержки
- •Формирование временной задержки с использованием таймеров
- •Измерение временных интервалов
- •Преобразование кодов
- •Преобразование унитарного кода в двоичный позиционный
- •Преобразование двоичного позиционного кода в унитарный
- •Преобразование кодов из одной системы счисления в другую
- •Преобразование данных из параллельного кода в последовательный и обратно
- •Цифро-аналоговое преобразование
- •Аналого-цифровое преобразование
- •Метод последовательного приближения
- •Метод двойного интегрирования
- •Операции с памятью
- •Тестирование озу
- •Программа тестирования пзу
- •Обмен данными по шине i2с
- •Общие положения и введение в логику работы шины i2с
- •Пример обмена данными по шине i2c
- •Приём данных по протоколу Centronics
- •Литература
Программа тестирования пзу
Алгоритм тестирования ПЗУ отличен от алгоритма тестирования ОЗУ, поскольку внутрисистемная запись тестовой информации в постоянное запоминающее устройство, как правило, невозможна.
Для тестирования ПЗУ выполняют подсчёт контрольной суммы и сравнивают полученное значение с известным значением. Контрольная сумма – это сумма содержимого каждой из ячеек памяти без учёта переполнения. Контрольная сумма может быть однобайтной, двухбайтной и т.д.
Например, если ёмкость восьмиразрядного ПЗУ 4 байта и в нем хранится код 0СH, FFH, 16H, 20H, то однобайтное значение контрольной суммы будет рассчитано следующим образом:
0СH+ FFH=10BH |
Промежуточное значение контрольной суммы 0BH |
0BH+16H=21H |
Промежуточное значение контрольной суммы 21H |
21H+20H=41H |
Итоговое значение контрольной суммы 41H |
Листинг 4.40 содержит текст программы тестирования ПЗУ ёмкостью 2 кБ.
Листинг 4.40 – Текст программы тестирования ПЗУ |
||
CTRL: SUM: |
.EQU 34H .REG R0 |
; Известная контрольная сумма ; Регистр контрольной суммы |
|
.ORG 0000H |
; Адрес начала программы |
NEXTR: |
MOV SUM, #00H
MOV DPTR, #0000H
MOV A, #00h MOVС A, @A+DPTR
ADD A, SUM MOV SUM, A
INC DPTR
MOV A, DPH CJNE A, #08H, NEXTR
CJNE SUM, #CTRL, ERR |
; Обнуление регистра ; контрольной суммы ; В DPTR заносится адрес, с ; которого необходимо ; начать считать ; контрольную сумму
; Чтение байта из ПЗУ
; Прибавление считанного байта ; к содержимому регистра ; контрольной суммы ; Инкрементирование адреса
; Проверка предела чтения ; памяти и переход на начало ; цикла чтения, если память ; считана не полностью ; Сравнение контрольных сумм ; и останов программы, если ; подсчитанная контрольная ; сумма не совпадает с ; заданной |
BEGIN: |
… |
; Основная программа |
ERR: |
JMP $ |
; Останов при обнаружении ; ошибки |
Контрольные вопросы
Какие типы ЗУ применяются в микроконтроллерных устройствах?
Для чего необходимо тестирование ЗУ?
Почему метод тестирования ОЗУ не всегда приемлем для тестирования ПЗУ?
Опишите один из алгоритмов тестирования ОЗУ.
Обмен данными по шине i2с
Общие положения и введение в логику работы шины i2с
Разработанная фирмой Philips шина I2С (Inter-Integrated Circuit) – это двунаправленная асинхронная шина с последовательной передачей данных и возможностью адресации до 128 устройств. Физически шина содержит две сигнальные линии, одна из которых (SCL) предназначена для передачи тактового сигнала, вторая (SDA) для обмена данными. Для управления линиями применяются выходные каскады с открытым коллектором, поэтому линии шины должны быть подключены к источнику питания +5 В через резисторы сопротивлением 1–10 кОм, в зависимости от физической длины линий и скорости передачи данных. Длина соединительных линий в стандартном режиме может достигать 2 метров, скорость передачи – до 100 кбит/с.
Все абоненты шины делятся на два класса – «Master» и «Slave». Устройство «Master» генерирует тактовый сигнал (SCL) и, как следствие, является ведущим. Оно может самостоятельно выходить на шину и адресовать любое «Slave»-устройство с целью передачи или приёма информации. Все «Slave»-устройства «слушают» шину на предмет обнаружения собственного адреса и, распознав его, выполняют предписываемую операцию.
В начальный момент времени – в режиме ожидания – обе линии SCL и SDA находятся в состоянии логической единицы. В режиме передачи (рисунок 4.26) бит данных SDA стробируется положительным импульсом SCL. Смена информации на линии SDA производится при нулевом состоянии линии SCL. «Slave»-устройство может «придерживать» линию SCL в нулевом состоянии, например, на время обработки очередного принятого байта, при этом «Master»-устройство обязано дождаться освобождения линии SCL, прежде чем продолжить передачу информации.
Рисунок 4.26 – Диаграмма процесса передачи данных по шине I2C |
Для синхронизации пакетов шины I2C различают два условия – «Start» и «Stop», ограничивающие начало и конец информационного пакета (рисунок 4.27).
Рисунок 4.27 – Диаграмма «Start»/«Stop» условия шины I2C |
Для кодирования этих условий используется изменение состояния линии SDA при единичном состоянии линии SCL, что недопустимо при передаче данных. «Start»-условие образуется при отрицательном перепаде линии SDA, когда линия SCL находится в единичном состоянии, и наоборот, «Stop»-условие образуется при положительном перепаде линии SDA при единичном состоянии линии SCL.
Передача данных начинается по первому положительному импульсу на линии SCL (рисунок 4.28), которым стробируется старший бит первого информационного байта. Каждый информационный байт (8 битов) содержит 9 тактовых периодов линии SCL.
Рисунок 4.28 – Диаграмма подтверждения приёма байта по шине I2C |
В девятом такте устройство-получатель
выдаёт подтверждение (
)
– отрицательный импульс, свидетельствующий
о «взаимопонимании» передатчика и
получателя. Любой абонент шины, как
«Master», так и «Slave»,
может в разные моменты времени быть как
передатчиком, так и получателем и в
соответствии с режимом обязан либо
принимать, либо выдавать сигнал
,
отсутствие которого интерпретируется
как ошибка.
Временная диаграмма сигналов SCL и SDA шины I2С приведена на рисунке 4.29. Здесь S обозначает «Start»-условие, Р – «Stop»-условие.
Рисунок 4.29 – Временная диаграмма работы шины I2C |