Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Учебное пособие по АТ89С51 изд.вариант 2010-54.doc
Скачиваний:
121
Добавлен:
19.11.2019
Размер:
865.22 Кб
Скачать
      1. Программа тестирования пзу

Алгоритм тестирования ПЗУ отличен от алгоритма тестирования ОЗУ, поскольку внутрисистемная запись тестовой информации в постоянное запоминающее устройство, как правило, невозможна.

Для тестирования ПЗУ выполняют подсчёт контрольной суммы и сравнивают полученное значение с известным значением. Контрольная сумма – это сумма содержимого каждой из ячеек памяти без учёта переполнения. Контрольная сумма может быть однобайтной, двухбайтной и т.д.

Например, если ёмкость восьмиразрядного ПЗУ 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 $

; Останов при обнаружении

; ошибки

Контрольные вопросы

  1. Какие типы ЗУ применяются в микроконтроллерных устройствах?

  1. Для чего необходимо тестирование ЗУ?

  2. Почему метод тестирования ОЗУ не всегда приемлем для тестирования ПЗУ?

  3. Опишите один из алгоритмов тестирования ОЗУ.

    1. Обмен данными по шине i2с

      1. Общие положения и введение в логику работы шины 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