Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
ЦМПУ / Новая папка (1) / ЦИМПУ(atmega 128).doc
Скачиваний:
102
Добавлен:
16.04.2015
Размер:
4.2 Mб
Скачать

8.2.8 Связь двух мк

VMLAB позволяет симулировать два микроконтроллера основанные на параллельном соединении, позволяя обмениваться цифровыми сигналами между обоими процессами, подобно UART, SPI, и другие связанные сигналы.

Оба соединения могут быть построены, используя полностью различные схемы, соединения, и т.д. и могут проходить с различным временем. Если два микроконтроллера в VMLAB должны быть соединены параллельно, имеется необходимость определить в каждом собственный .PRJ файл.

· Переходим к команде меню «Multiprocess», затем «Start 2nd VMLAB». После этого открывается второе окно VMLAB, устанавливая главные измерения окна таким образом, что оба окна VMLAB размещались на целом экране. Чтобы узнать, какое окно работает в качестве Мультипроцесса, главный заголовок окна будет отображать следующую надпись: «VMLAB (multiprocess)».

· Загружаем и строим каждый проект отдельно.

· Когда оба проекта безошибочны, нажимаем «Go» (зеленый свет); оба проекта будут работать синхронно.

· Нажатие в режиме Multiprocess кнопки «Go» and «Restart» в обоих проектах равнозначны: щелкающийся к кнопке «Restart» в одном VMLAB будет отправлен также в другой.

· Нажатие «Step» вынудит остановиться в следующей границе проекта, но только в окне, где был нажата эта кнопка. Очевидно, другой МК не может остановиться в границе проекта, так как время обоих проектов может быть полностью различны.

Ограничения

· Анимация кода не поддерживается в Мультипроцессе.

· Только цифровые сигналы могут быть обменены между обоими процессами. Любой узел с аналоговым поведением будет в виде прямоугольника, когда будет экспортироваться в другой процесс.

· Способ Мультипроцесса значительно замедляет моделирование, так как некоторый ЦПУ наверху необходим для связи меж-процесса и синхронизации.

Используйте EXTIN и EXTOUT. Связь фактически выполнена случайным названием компонентов.

Синтаксис:

X <inst_name> EXTIN (начальная логика) <node>

Компонент EXTIN предназначен, чтобы мультиобрабатывать приложения. Используйте это, чтобы управлять <node> с сигналом от процесса партнера, экспортируемого там при использовании компонента EXTOUT.

Параметр <начальная логика> должен быть 1 или 0, идентифицируя начальное значение цифровой логики. Это необходимо, так как VMLAB не может выполнить объединенный анализ системы цифрового управления между обоими проектами мультипроцесса. Обеспечьте, чтобы такое логическое значение было совместимо с тем, исходящим из его копии EXTOUT, иначе будет помечена ошибка во время моделирования.

Сигналы, проникающие через EXTIN, являются цифровыми. Фактически, компонент копии EXTOUT действует как спусковой механизм Schmitt (на 30 %-70 % уровня мощности).

Подключение с партнером EXTOUT базируется на название <inst_name> экземпляра класса.

Пример:

Давайте возьмём два проекта VMLAB: ONE.PRJ и TWO.PRJ, которые будут выполнены в режиме Multiprocess.

В ONE.PRJ:

Xlink1 EXTOUT PA0; Экспортируйте узел 'PA0'

Xlink2 EXTOUT my_node; Экспортируйте 'my_node' узел

В TWO.PRJ:

Xlink1 EXTIN (1) node_1; 'node_1', управляемый предыдущим 'PA0'

Xlink2 EXTIN (0) PD0; 'PD0', управляемый предыдущим 'my_node'

Экземпляр класса называет 'link1', и 'link2' - то, что фактически подключает узел EXTOUT с его партнёром EXTIN.

Программа №8 (связь двух микроконтроллеров).

Данная программа реализует связь 2 МК Atmega128 через УСАПП. Итогом нашей программы является передача символов из одного МК в другой. Сначала активируем Watchdog. Затем активируем регистры УСАПП: TX/RCV. После этого устанавливаем задержку при передаче символов. На осциллографе можно увидеть отображение символом через сигналы

Рис 8.12 Алгоритм основной программы

Рис 8.13 Алгоритм подпрограммы delay

Листинг проектного файла №8 для передающего МК

; ************************************************************

; PROJECT:

; AUTHOR:

; ************************************************************

; Micro + software running

; ------------------------------------------------------------

.MICRO "ATmega128"

.PROGRAM "pere.asm"

.TARGET "pere.hex"

.TRACE ;

.CLOCK 1.8432meg

X1 TTY(9600 8) PE0 EXT_RX ;

Xlink1 EXTIN(1) EXT_RX ;

Xlink2 EXTOUT PE1 ;

.plot v(PE0) v(PE1) v(EXT_RX)

Листинг программы №8 для передающего и принимающего МК

; ******************************************************

; BASIC .ASM template file for AVR

; ******************************************************

.include "C:\VMLAB312\include\m128def.inc"

.def temp =r16

.def j =r17

.def k =r18

; ***********************************************

; Reset aand Interrupt vectors

; ***********************************************

.cseg

.org $0

rjmp start ; Reset handler

.org URXC0addr ; UART выполнение прерываний,

rjmp uart_rx

.org UDRE0addr ; UART Данные регистра, пустое прерывание

rjmp uart_em

.org UTXC0addr ; UART Передача выполненного прерывания

rjmp uart_tx

; ************************************************

; UART RX service: it echoes the character into TX

; ************************************************

;

uart_rx:

in temp, UDR0

out UDR0, temp

reti

uart_tx: ;UART Передача завершена

reti

uart_em: ;UART Пустые данные TX

reti

; ************************************************

; Main

; ************************************************

start:

ldi temp, 0x08 ; Включение Watchdog

wdr

out WDTCR, temp ;

ldi temp, 11 ; Установить 9600 бод для 1.8MHz

out UBRR0L, temp

ldi temp, 0xF8 ; Чтобы активировать все прерывания и TX / RCV

out UCSR0B, temp

ldi temp,low(RAMEND)

out SPL,temp

ldi temp,high(RAMEND)

out SPH,temp

sei ; позволить прерывания

ldi temp,low(RAMEND)

out SPL,temp

ldi temp,high(RAMEND)

out SPH,temp

; **************************************************

; Infinite loop, watchdog activation demonstrator

; **************************************************

forever:

ldi j, 5

loop1:

rcall delay

dec j ; Задержка

brne loop1

wdr ; Watchdog сброса, после долгого перерыва

rjmp forever

delay:

ldi k, 255

loop2:

dec k

brne loop2

ret

Листинг проектного файла №8 для принимающего МК

; ************************************************************

; PROJECT:

; AUTHOR:

; ************************************************************

; Micro + software running

; ------------------------------------------------------------

.MICRO "ATmega128"

.PROGRAM "prim.asm"

.TARGET "prim.hex"

.TRACE ; Activate micro trace

; Following lines are optional; if not included

; exactly these values are taken by default

; ------------------------------------------------------------

.CLOCK 1.8432meg

Xlink2 EXTIN(1) PE0

Xlink1 EXTOUT PE1

.plot V(PE0) v(PE1)

Соседние файлы в папке Новая папка (1)