Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Лабы / Lab_moto / razrab 6_6.doc
Скачиваний:
11
Добавлен:
16.04.2013
Размер:
238.08 Кб
Скачать

2. Последовательный периферийный интерфейс.

Последовательный периферийный интерфейс предназначен для соединения микроконтроллеров друг с другом или с периферийными устройствами. На физическом уровне он организован сложнее, чем последовательный интерфейс связи (здесь задействованы не две, а четыре линии порта D:MISO,MOSI,SCK,SS; подробнее см. теоретическую часть). Использование двух линий данных (MISOиMOSI) позволяет реализовать дуплексную связь, а поддержка статуса ОЭВМ в сети (Master/Slave) дает возможность вести корректный арбитраж при пользовании сетью.

Схема соединения ОМ по SPI приведена на рис.3. Сигналы MISO,MOSI,SCK,SS иC0ведущего ОМ, буферизированы, а на ведомых ОМ кроме этого сигналыSS и С0проходят через логический блок, который формирует активный (низкий) уровень на входе выбора нужного ведомого устройстваSS (в зависимости от сигналаC0, поступающего от ведущего ОМ).

Рис.3 Схема соединения ОМ по SPI.

В данной лабораторной работе используется подключение ОМ по три (см. рис.3). При этом одна из них жестко сконфигурирована как ведущая (Master) и две как ведомые (Slave). Выбор одной либо другой ведомой платы для организации связи осуществляется младшим битом параллельного портаC (0 - ведомый ОМ1, 1 - ведомый ОМ2).

Рассмотрим работу SPIна примере, в котором демонстрируется обмен данными между ведущим и ведомым устройствами. Программы примера функционируют следующим образом. Командой с адресом $212 в программе 1 посылаются данные по сети. Затем программа дожидается окончания передачи (команда с адресом $214). Как только передача завершена (это значит, что завершен и прием данных, так как он протекает параллельно передаче), программа загружает полученное значение в регистрXи завершается. Конечно, во время передачи данных на ведомой машине должна выполняться программа 2. Ее задача - дождаться окончания обмена и увеличить полученное число на 1, чтобы в следующий раз отослать его обратно. Заметим, что командами $20C..$20F одновременно сбрасывается флаг окончания приема данных (RDRF).

Программа 1 должна запускаться на ведущей плате, программа 2 - на ведомой, причем программа 2 должна быть запущена на выполнение первой.

Программа 1:

200 LDA #$FF Конфигурируем портC

STA $6 на запись.

LDA #$1 Выбираем ведомый

STA $2 микроконтроллер 2.

LDA #$18 Конфигурируем портD

STA $7 (линии D3, D4 на вывод, остальные на ввод).

LDA #$54 Разрешаем передачу поSPIс выбранной

STA $A полярностью синхросигнала.

210 LDA $0 Посылаем число с переключателей

212 STA $C по сети.

214 BRCLR 7,$B,$214 Ждем окончания передачи.

217 LDX $C Считываем полученное значение.

219 BRA $219 Организуем бесконечный цикл.

Программа 2:

200 LDA #$4 Конфигурируем портD

STA $7 (линию D2 на вывод, остальные на ввод).

LDA #$44 Разрешаем прием поSPIс выбранной

STA $A полярностью синхросигнала.

LDX $B Сбрасываем

STA $C флаги.

20C BRCLR 7,$B,$20C Ждем окончания приема.

20F INC $C Инкрементируем полученный байт.

213 BRA $20C Возвращаемся на прием данных.

Поставьте точку останова по адресу $219 в программе 1 и запустите сначала программу 2, затем программу 1. В результате в регистрах AиXведущего микроконтроллера будут содержаться посланное и принятое значения соответсвенно (в регистреА- то, что установлено на переключателях дополнительной платы, в регистреХ- число $44). Запуская программу 1 несколько раз с различным положением переключателей, убедитесь, что приходящее с ведомой машины число на 1 больше того, которое передавалось на нее в прошлый сеанс связи.

Аналогично последовательному интерфейсу связи, при выполнении заданий следует учитывать, что адрес подпрограммы обработки прерывания от SPIдолжен заноситься в ячейки $1FF4 (старший байт) и $1FF5 (младший байт).

Контрольные вопросы и задания.

Соседние файлы в папке Lab_moto