Главная | Случайная
Обратная связь

ТОР 5 статей:

Методические подходы к анализу финансового состояния предприятия

Проблема периодизации русской литературы ХХ века. Краткая характеристика второй половины ХХ века

Ценовые и неценовые факторы

Характеристика шлифовальных кругов и ее маркировка

Служебные части речи. Предлог. Союз. Частицы

КАТЕГОРИИ:






Программа тестирования ПЗУ




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

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

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

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

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

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

4.6 Обмен данными по шине I2С

4.6.1 Общие положения и введение в логику работы шины I2С

Разработанная фирмой Philips шина I2С (Inter-Integrated Circuit) – это двунаправленная асинхронная шина с последовательной передачей данных и возможностью адресации до 128 устройств. Физически шина содержит две сигнальные линии, одна из которых (SCL) предназначена для передачи тактового сигнала, вторая (SDA) для обмена данными. Для управления линиями применяются выходные каскады с открытым коллектором, поэтому линии шины должны быть подключены к источнику питания +5 В через резисторы сопротивлением 1... 10 кОм, в зависимости от физической длины линий и скорости передачи данных. Длина соединительных линий в стандартном режиме может достигать 2-х метров, скорость передачи – до 100 кбит/с.

Все абоненты шины делятся на два класса – «Master» и «Slave». Устройство «Master» генерирует тактовый сигнал (SCL) и, как следствие, является ведущим. Оно может самостоятельно выходить на шину и адресовать любое «Slave»-устройство с целью передачи или приёма информации. Все «Slave»-устройства «слушают» шину на предмет обнаружения собственного адреса и, распознав его, выполняют предписываемую операцию.

В начальный момент времени – в режиме ожидания – обе линии SCL и SDA находятся в состоянии логической единицы. В режиме передачи (рисунок 4.27) бит данных SDA стробируется положительным импульсом SCL. Смена информации на линии SDA производится при нулевом состоянии линии SCL. «Slave»-устройство может «придерживать» линию SCL в нулевом состоянии, например, на время обработки очередного принятого байта, при этом «Master»-устройство обязано дождаться освобождения линии SCL, прежде чем продолжить передачу информации.

 

  Рисунок 4.27 – Диаграмма процесса передачи данных по шине I2C

 

Для синхронизации пакетов шины I2C различают два условия – «Start» и «Stop», ограничивающие начало и конец информационного пакета (рисунок 4.28).

 

  Рисунок 4.28 – Диаграмма «Start»/«Stop» условия шины I2C

 

Для кодирования этих условий используется изменение состояния линии SDA при единичном состоянии линии SCL, что недопустимо при передаче данных. «Start»-условие образуется при отрицательном перепаде линии SDA, когда линия SCL находится в единичном состоянии, и наоборот, «Stop»-условие образуется при положительном перепаде линии SDA при единичном состоянии линии SCL.

Передача данных начинается по первому положительному импульсу на линии SCL (рисунок 4.29), которым стробируется старший бит первого информационного байта. Каждый информационный байт (8 битов) содержит 9 тактовых периодов линии SCL. В девятом такте устройство-получатель выдаёт подтверждение ( ) – отрицательный импульс, свидетельствующий о «взаимопонимании» передатчика и получателя. Любой абонент шины, как «Master», так и «Slave», может в разные моменты времени быть как передатчиком, так и получателем и в соответствии с режимом обязан либо принимать, либо выдавать сигнал , отсутствие которого интерпретируется как ошибка.

 

  Рисунок 4.29 – Диаграмма подтверждения приёма байта по шине I2C

 

Временная диаграмма сигналов SCL и SDA шины I2С приведена на рисунке 4.30. Здесь S обозначает «Start»-условие, Р – «Stop»-условие.

 

Рисунок 4.30 – Временная диаграмма работы шины I2C

4.6.2 Пример обмена данными по шине I2C

Рассмотрим обмен данными по протоколу I2C на конкретном примере – между микроконтроллером и микросхемой памяти с электрическим стиранием 24С16 ёмкостью 2048 B. Схема включения приведена на рисунке 4.31.

 

 

Рисунок 4.31 – Схема подключения микросхемы 24С16
к микроконтроллеру

 

Назначение входов SCL и SDA приведено выше. Вход WP – вход защиты от записи. Информация может быть записана в микросхему только при логическом 0 на этом входе.

На рисунке 4.32 приведена диаграмма записи байта в память.

 

 

Рисунок 4.32 – Диаграмма записи байта в память

 

DEVICE ADDRES (адрес устройства) – это 8-битное слово, имеющее следующий формат:

A10 A9 A8

где А8 – А10 – старшая часть адреса, по которому будет записан байт данных (DATA);

– бит, определяющий тип операции (0 – запись, 1 – чтение).

После того как микросхеме передаётся «Stop»-условие, она выполняет внутренний цикл записи принятых данных по указанному адресу. При этом она не реагирует на внешние сигналы. Поэтому необходимо дождаться завершения этого процесса. Для этого выполняется попытка записи в микросхему адреса устройства. Приход сигнала подтверждения свидетельствует о завершении внутреннего цикла записи.

На рисунке 4.33 приведена диаграмма чтения байта из памяти.

 

 

Рисунок 4.33 – Диаграмма чтения байта из памяти

 

Листинг 4.41 содержит текст программы, реализующей тестирование микросхемы. В микросхему записывается тестовая информация. После этого выполняется её чтение и проверка правильности. Один байт тестовой информации – это адрес тестируемой ячейки, увеличенный на 2.

 

Листинг 4.41 – Программа тестирования микросхемы 24С16
SDA: .REG P1.0 ; Линия SDA
SCL: .REG P1.5 ; Линия SCL
WP: .REG P1.4 ; Линия «Защита от записи»
   
  .ORG 0000H ; Адрес начала программы
   
  CLR WP SETB SDA CLR SCL ; Разрешение записи
  MOV DPTR, #0000H ; В DPTR заносится адрес ; по которому будут ; записаны данные
NEXTW:  
  MOV A, DPL ; В аккумулятор заносится ; младшая часть адреса
  INC A ; Увеличение содержимого ; аккумулятора на 2
  INC A
  CALL WRITE ; Вызов подпрограммы ; записи в память ; по протоколу I2C
  INC DPTR ; Увеличение адреса
  MOV A, DPH ; Проверка предела заполнения ; памяти и переход на начало ; цикла записи если память ; заполнена не полностью
  CJNE A, #08H, NEXTW
   
  MOV DPTR, #0000H ; В DPTR заносится адрес, ; из которого будут ; считаны данные
NEXTR:  
  CALL READ ; Вызов подпрограммы ; чтения из памяти ; по протоколу I2C
  DEC A ; Уменьшение считанного ; значения на 2
  DEC A
  CJNE A, DPL, ERROR ; Проверка правильности ; записанных данных ; Переход на подпрограмму ; ERROR, если данные записаны ; неправильно
  INC DPTR ; Увеличение адреса
  MOV A, DPH ; Проверка предела чтения ; памяти и переход на начало ; цикла чтения, если память ; считана не полностью
  CJNE A, #08H, NEXTR
  MOV A, #55H ;В аккумулятор заносится 55H, ; если тест памяти пройден
  JMP BEGIN ; Переход к основной ; программе
   
ERROR:  
  MOV A, #AAH ; В аккумулятор заносится ; ААh, если обнаружена ошибка
BEGIN:   ; Основная программа
 
; Подпрограмма записи байта информации в память по протоколу I2C
WRITE:  
    MOV 10H, A ; В ячейке 10H сохраняются ; записываемые данные
; Формирование адреса устройства (режим записи)
  MOV A, DPH ; В аккумулятор заносится ; старшая часть адреса
  RL A ; Выполняется сдвиг влево
  ANL A, #0EH ; Обнуление битов 0, 4, 5, 6 и 7
  ORL A, #A0H ; Установка битов 5 и 7
  MOV 11H, A ; Сохранение адреса ; устройства в ячейке11H
  LCALL START ; Вызов процедуры, ; генерирующей «Start»- ; условие
  MOV A,11H ; Запись адреса устройства
  LCALL BYTE
  MOV A,DPL ; Запись младшего байта ; адреса
  LCALL BYTE
  MOV A,10H ; Запись байта информации
  LCALL BYTE
  LCALL STOP ; Вызов процедуры, ; генерирующей «Start»- ; условие
   
  MOV 1DH,#00H ; Цикл ожидания ; подтверждения ; В цикле 256 раз выполняется ; подача «Start»-условия, ; запись адреса устройства, ; проверка подтверждения ; (логический 0 ; на линии SDA) и подача ; «Stop»-условия ; Как только приходит ; подтверждение в ; аккумулятор ; помещается байт ; информации ; и выполняется выход из ; подпрограммы ; Если подтверждение не ; формируется, в аккумулятор ; помещается инверсное ; значение байта информации ; и выполняется выход из ; подпрограммы
W3:  
  DJNZ 1DH,W1
  LJMP W2
W1:  
  LCALL START
  MOV A,11H
   
  LCALL BYTE
  JC W3
   
  LCALL STOP
  MOV A,10H
  RET
W2:  
  LCALL STOP
  MOV A,10H
  CPL A
  RET
   
; Подпрограмма, генерирующая «Start»-условие
START:  
  SETB SCL
  CLR SDA
  CLR SCL SETB SDA
  RET
   
; Подпрограмма выдачи байта в последовательной форме ; (Передаётся содержимое аккумулятора)
BYTE:  
  MOV 1CH, #08H ; В ячейку 1CH помещается ; количество передаваемых бит
WBIT:  
  RLC A ; Сдвиг содержимого ; аккумулятора влево ; (Старший бит помещается во ; флаг переноса)
  MOV SDA,C ; Выдача «выдвинутого» бита ; в линию SDA
  SETB SCL ; Формирование тактового ; импульса на линии SCL
  CLR SCL
  DJNZ 1CH, WBIT ; Проверка условия выхода из ; цикла
  SETB SDA ; Установка логической 1 на ; линии SDA
  SETB SCL ; Установка логической 1 на ; линии SCL
  MOV C, SDA ; Считывание сигнала ; подтверждения
  CLR SCL ; Установка логического 0 на ; линии SCL
  RET ; Выход из подпрограммы
   
; Подпрограмма генерирующее «Stop»-условие
STOP:  
  CLR SDA
  SETB SCL
  SETB SDA CLR SCL
  RET
   
; Подпрограмма чтения байта информации из памяти по протоколу I2C
READ:  
; Формирование адреса устройства (режим записи)
  MOV A, DPH
  RL A
  ANL A, #0EH
  ORL A, #A0H
  MOV 11H, A
   
  LCALL START ; Вызов процедуры ; генерирующей «Start»- ; условие
   
  MOV A, 11H ; Запись адреса устройства
  LCALL BYTE
  MOV A, DPL ; Запись младшего байта адреса
  LCALL BYTE
   
  LCALL START ; Вызов процедуры ; генерирующей «Start»- ; условие
; Формирование адреса устройства (режим чтения)
  MOV A, 11H ;
  SETB ACC.0
  LCALL BYTE ; Запись адреса устройства
; Подпрограмма приёма байта в последовательной форме ; (Результат сохраняется в аккумуляторе)
  MOV R0, #08H ; В регистр R0 помещается ; количество принимаемых бит
RBIT:  
  SETB SCL ; Установка логической 1 на ; линии SCL
  MOV C, SDA ; Сохранение состояния ; линии SDA (бит информации)
  RLC A ; Сдвиг содержимого ; аккумулятора влево ; ( «вдвигается» принятый бит)
  CLR SCL ; Установка логического 0 на ; линии SCL
  DJNZ R0, RBIT ; Проверка условия выхода из ; цикла
  SETB SDA ; Установка логической 1 на ; линии SDA
   
  SETB SCL ; Установка логической 1 на ; линии SCL
  CLR SCL ; Установка логического 0 на ; линии SCL
  CALL STOP ; Вызов процедуры ; генерирующей «Stop»- ; условие
  RET ; Выход из подпрограммы

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

1 Что такое шина I2C?

2 Чем отличается Master от Slave устройства?

3 Каковы этапы приема байта информации от Slave устройства по шине I2C?

4 Какое устройство на шине I2C выдает сигнал ACK и в каком случае?

5 Для чего нужны старт и стоп условия?

4.7 Приём данных по протоколу Centronics

Основным назначением интерфейса Centronics является подключение к компьютеру принтеров. Поэтому распределение контактов разъёма, назначение сигналов, программные средства управления интерфейсом ориентированы именно на это использование. В то же время с помощью данного интерфейса можно подключать к компьютеру специально разработанные устройства сопряжения.

В таблице 4.1 перечислены все сигналы интерфейса Centronics и их назначение. Однако в минимальном варианте при передаче данных можно использовать только одиннадцать линий:

Data[0:7], Strobe#, Busy, Ack#.

 

Таблица 4.1 – Сигналы интерфейса Centronics

Сигнал I/O* Контакт Назначение
Strobe# I Строб данных. Данные фиксируются по низкому уровню сигнала
Data [0:7] I 2-9 Линии данных. Data 0 (контакт 2) – младший бит
Ack# О Acknowledge импульс подтверждения приема байта (запрос на прием сле­дующего). Может использоваться для формирования запроса прерывания
Busy О Занято. Прием данных возможен только при низком уровне сигнала
PaperEnd О Высокий уровень сигнализирует о конце бумаги
Select О Сигнализирует о включении принтера (обычно в принтере соединяется резистором с цепью +5 В)
Auto LF# I Автоматический перевод строки. При низком уровне принтер, получив символ CR (Carriage Return – возврат каретки), автоматически выполняет и функцию LF (Line Feed – перевод строки)
Error# О Ошибка: конец бумаги, состояние OFF-Line или внутренняя ошибка принтера
Init# I Инициализация (сброс в режим параметров умолчания, возврат к началу строки)
Slct In# I Выбор принтера (низким уровнем). При высоком уровне принтер не воспринимает остальные сигналы интерфейса
GND - 19-30 33 Общий провод интерфейса

 

Временные диаграммы цикла передачи данных приведены на рисунке 4.34.

 

 

 

Рисунок 4.34 – Временные диаграммы цикла передачи данных

 

I/O задает направление (вход/выход) применительно к внешнему устройству.

Перед началом цикла передачи данных компьютер должен убедиться, что сняты сигналы Busy и Ack#. После этого выставляются данные, формируется сигнал стробировния на линии Strobe#.

При получении строба, устройство сопряжения формирует сигнал Busy, а после окончания обработки данных выставляет сигнал Ack#, снимает Busy и снимает Ack#. Затем цикл повторяется.

На рисунке 4.35 приведён вариант подключения микропроцессорного устройств к LPT порту.

 

 

Рисунок 4.35 – Подключение микропроцессорного устройства к LPT порту

 

Листинг 4.42 содержит текст программы, выполняющей прием данных по протоколу Centronics и их сохранение в ОЗУ.

 

Листинг 4.42 – Прием данных по протоколу Centronics
STRB: BUSY: ACK: DATA: .REG P3.2 .REG P3.3 .REG P3.4 .REG P1 ; Строб ; Готовность ; Подтверждение/запрос ; Данные
  .ORG 0000H ; Адрес начала программы
  MOV DPTR, #0000H   ; В DPTR заносится адрес, по ; которому необходимо ; записать байт
NEXT:     CALL READ   JC NODATA ; Вызов подпрограммы чтения ; байта с LPT порта ; Проверка получения данных
  INC DPTR ; Инкрементирование ; адреса
  MOV A, DPH CJNE A, #08H, NEXT ; Проверка предела записи ; памяти и переход на начало ; цикла, если память заполнена ; не полностью
READ:     SETB DATA SETB STRB   CLR BUSY SETB ACK   ; Настройка порта P1 на ввод; Настройка разряда 2 порта P3; на ввод; Разрешение передачи данных; Установка линии ; подтверждения в исходное; состояние
  LAB0: LAB1: LAB2:   MOV R0, #07F MOV R1, #FFH MOV R2, #FFH     JNB STRB, RADY DJNZ R2, LAB2 DJNZ R1, LAB1 DJNZ R0, LAB0 SETB C RET ;;; Цикл ожидания строба; Если строб не приходит, т.е.; данные не посылаются, ; выполняется установка флага;переноса и выход из ;подпрограммы;;;
RADY:     MOV A, DATA ; Чтение данных из порта
  SETB BUSY     ; При приходе строба; устанавливается сигнал ;«Занято»
  MOVX @DPTR, A ; Запись байта в ОЗУ
  CLR BUSY ; Сброс сигнала «Занято»
  JNB STRB, $   ; Ожидание логической единицы; на линии стробирования
  CLR ACK SETB ACK ; Формирование подтверждения ; приёма байта
  CLR C RET ; Сброс флага переноса; Выход из подпрограммы
NODATA:   …

 

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

1 Каким образом может быть использован интерфейс Centronics в микроконтроллерных устройствах?

2 Какие сигналы интерфейса являются входными для микроконтроллерных устройства, подключенного к ПК?

3 Опишите временные диаграммы цикла передачи по интерфейсу Centronics.

Литература

1. 80C51 family hardware description. – Philips Semiconductors, 1995.

2. 80C51 family programmer’s guide and instructions set. – Philips Semiconductors, 1995.

3. Бирюков, С.А. Применение цифровых микросхем серий ТТЛ и КМОП / С.А. Бирюков. – М.: ДМК, 1999. – 240 с.: ил.

4. Гребнев, В.В. Однокристальные микроЭВМ семейства AT89 фирмы Atmel / В.В. Гребнев. – СПб.: FineStreet, 1998.

5. Гук, М. Аппаратные интерфейсы ПК. Энциклопедия / М. Гук. – СПб.: Питер, 2002. – 528 с.: ил.

6. Гук, М. Аппаратные средства PC. Энциклопедия / М. Гук. – СПб.: Питер Ком, 1998. – 816 с.: ил.

7. Измерения в электронике: справочник / В.А. Кузнецов [и др.]; под ред. В.А. Кузнецова. – М.: Энергоатомиздат, 1987. – 512 с.: ил.

8. Полупроводниковые приборы. Диоды высокочастотные, импульсные, оптоэлектронные приборы: справочник / А.Б. Гитцевич [и др.]; под ред. А.В. Голомедова. – 2-е изд. стереотип. – М.: КУбК-а, 1997. – 592 с.: ил.

9. Шило, В.Л. Популярные цифровые микросхемы: справочник / В.Л. Шило. – М.: Радио и связь, 1987. – 352 с.: ил.


Для заметок


Для заметок


СЫПИН ЕВГЕНИЙ ВИКТОРОВИЧ

ПОВЕРНОВ ЕВГЕНИЙ СЕРГЕЕВИЧ

ПАВЛОВ АНДРЕЙ НИКОЛАЕВИЧ

 

 

МИКРОКОНТРОЛЛЕР АТ89С51 СЕМЕЙСТВА АТ89 ФИРМЫ ATMEL. ОПИСАНИЕ И ПРОГРАММИРОВАНИЕ

Учебное пособие по курсам «Техника двоичной переработки информации», «Микропроцессорная техника и ЭВМ», «Основы проектирования приборов и систем», «Проектирование и моделирование радиоэлектронных устройств», «Цифровые измерительные устройства», «Аппаратные интерфейсы информационных систем», «Компьютерные технологии в приборостроении» для студентов специальностей 200106, 230201

 

 

Редактор …….

Корректор …..

Подписано в печать …… Формат 60×84 1/16

Усл. п. л. 6,8. Уч.-изд. л. 7,3

Печать — ризография, множительно-копировальный аппарат «RISO TR-1510@

 

Тираж …. экз. Заказ ….

Издательство Алтайского государственного технического университета

 

656038, г.Барнаул, пр-т Ленина, 46

 

Оригинал-макет подготовлен ИИО БТИ АлтГТУ

Отпечатано в ИИО БТИ АлтГТУ

659305, г.Бийск, ул. Трофимова, 29

 

 


 

vikidalka.ru - 2015-2018 год. Все права принадлежат их авторам! Нарушение авторских прав | Нарушение персональных данных