Реклама на сайте DatasheetsDatasheets

KAZUS.RUN - Электронный портал. Принципиальные схемы, Datasheets, Форум по электронике

Новости электроники Новости Литература, электронные книги Литература Документация, даташиты Документация Поиск даташитов (datasheets)Поиск PDF
  От производителей
Новости поставщиков
В мире электроники

  Сборник статей
Книги и журналы
FAQ по электронике

  Datasheets
Поиск SMD
Онлайн справочник

Принципиальные схемы Схемы Каталоги программ, сайтов Каталоги Общение, форум Общение Ваш аккаунтАккаунт
  Каталог схем
Схемы и проекты
Принципиальные схемы
  Программы
Каталог сайтов
Калькуляторы
  Форумы по электронике
Помощь проекту

Микроконтроллеры, АЦП, память и т.д Темы касающиеся микроконтроллеров разных производителей, памяти, АЦП/ЦАП, периферийных модулей...

 
Опции темы

Вопрос по мультипроцессорному обмену USART MEGA8

Непрочитано 10.08.2006, 14:55  
vikont-s
Прохожий
 
Регистрация: 23.09.2005
Сообщений: 3
Сказал спасибо: 0
Сказали Спасибо 0 раз(а) в 0 сообщении(ях)
vikont-s на пути к лучшему
По умолчанию Вопрос по мультипроцессорному обмену USART MEGA8

MEGA8 - ведущий проц и есть несколько ведомых MEGA8515
Проблема в том что нет фильтрации пакетов (по документации все не адресные пакеты игнорируються если установлен бит MPCM в регистре UCSRA). В действительности идет прерывание на ВСЕХ пакетах.
Может я что то не так установил в настройках?

Привоже свои программы:
Часть программы для Меги8
;************* инициализация и настройка USART *********************
USART_init:
; UCSRA
ldi temp,0b00000000 ; бит название значение пояснения
; 7 завершение приема
; 6 завершение передачи
; 5 опустошение регистра данных
; 4 ошибка кадрирования
; 3 переполнение
; 2 ошибка контроля четности
; 1 удвоение скорости обмена
; 0 режим мультипроцессорного обмена
;
out UCSRA,temp
; UCSRB
ldi temp,0b00001100 ; бит название значение пояснения
; 7 разрешение прерывания по завершению приема
; 6 разрешение прерывания по завершению передачи
; 5 разрешение прерывания при очистке регистра данных
; 4 разрешение приема
; 3 разрешение передачи
; 2 UCSZ2 формат посылок
; 1 8 разряд принимаемых данных
; 0 8 разряд передаваемых данных
out UCSRB,temp
; UCSRC
ldi temp,0b10000110 ; бит название значение пояснения
; 7 выбор регистра UCSRC or UBRRH
; 6 режим работы USART 0-асинхронный режим
; 5 UPM1 режим работы контроля и формирования четности
; 4 UPM0 -//-
; 3 кол-во стоп битов 0-одит стоп бит
; 2 UCSZ1 формат посылки
; 1 UCSZ0 -//-
; 0 полярность тактового сигнала в асинхронним режиме всегда0
out UCSRC,temp
;******************************************ОПР� �ДЕЛЯЕТ СКОРОСТЬ ПЕРЕДАЧИ******************
; UBRRH
ldi temp,0b00000000
out UBRRH,temp
; UBRRL
ldi temp,9
out UBRRL,temp
ret
; часть кода передающая пакет данных состояший из адреса и 8 байт данных
ldi Adress_Data,1
ldi DATA,1 ; передаем данные 1 плате
rcall USART_Transmit
;**************************************
ldi Adress_Data,0 ; дальше передаем данные
;**************************************
ldi r28,low(Skorost) ;
ldi r29,high(Skorost) ;
ld DATA,Y ; загрузили значение скорости и отправили по USART
rcall USART_Transmit
************************************************
;********************Передача одного байта данных с учетом 9 бита (Адрес или данные)
USART_Transmit: ; DATA - хранит пересылаемые данные
; Adress_Data- ханит инфу о том пересылаеться адресс или дата
;ждать очистки буфера передатчика
sbis UCSRA,UDRE
rjmp USART_Transmit
;скопировать 9-й разряд данных из r17 в TXB8
cbi UCSRB,TXB8
sbrc Adress_Data,0
sbi UCSRB,TXB8
;загрузить младший байт данных в буфер, начать передачу
out UDR,DATA
ret

И КОД ПРИЕМНИКА - - - -

;************* инициализация и настройка USART *********************
USART_init:
; UCSRA работаем в режиме мульпроцессорного обмена
; кадры не сожержащие адресс фильтруються
ldi temp,0b00000001 ; бит название значение пояснения
; 7 завершение приема
; 6 завершение передачи
; 5 опустошение регистра данных
; 4 ошибка кадрирования
; 3 переполнение
; 2 ошибка контроля четности
; 1 удвоение скорости обмена
; 0 режим мультипроцессорного обмена
;
out UCSRA,temp
; UCSRB
ldi temp,0b10010100 ; бит название значение пояснения
; 7 разрешение прерывания по завершению приема
; 6 разрешение прерывания по завершению передачи
; 5 разрешение прерывания при очистке регистра данных
; 4 разрешение приема
; 3 разрешение передачи
; 2 UCSZ2 формат посылок
; 1 8 разряд принимаемых данных
; 0 8 разряд передаваемых данных
out UCSRB,temp
; UCSRC
ldi temp,0b10000110 ; бит название значение пояснения
; 7 выбор регистра UCSRC or UBRRH
; 6 режим работы USART 0-асинхронный режим
; 5 UPM1 режим работы контроля и формирования четности
; 4 UPM0 -//-
; 3 кол-во стоп битов 0-одит стоп бит
; 2 UCSZ1 формат посылки
; 1 UCSZ0 -//-
; 0 полярность тактового сигнала в асинхронним режиме всегда0
out UCSRC,temp
;******************************************ОПР� �ДЕЛЯЕТ СКОРОСТЬ ПЕРЕДАЧИ******************
; UBRRH
ldi temp,0b00000000
out UBRRH,temp
; UBRRL
ldi temp,4
out UBRRL,temp
ret
;******************Подпрограмма обработки события - получение байта по шине USART***************************
USART_TX:
ldi data,0b10101010
out PORTB,data

; прочитать 9-й разряд данных и флаги состояния
in UCSRAm,UCSRA
in UCSRBm,UCSRB
;прочитать младший байт данных
in data,UDR
out PORTC,data
e:rjmp e
; в случае ошибки вернуть -1
andi UCSRAm,(1‹‹FE)|(1‹‹DOR)|(1‹‹UPE)
breq no_error
USART_Receive_ret:
ldi UCSRBm,HIGH(-1)
ldi UCSRAm,LOW(-1)
reti
no_error:
; выделить 9-й разряд данных
lsr UCSRBm
lsr UCSRBm ; 9 бит данных в флаге С

cpi data,1 ; АДРЕССССС ПЛАТЫ
breq adressPrav
reti
adressPrav:
ldi temp,0b00000000 ; отключаю режим фильтрации пакетов
out UCSRA,temp

rcall USART_Receive
ldi r28,low(Skorost) ; загрузить младший байт регистра Z
ldi r29,high(Skorost) ; загрузить старший байт
st Y,data ; сохранили константу в ОЗУ

rcall USART_Receive
ldi r28,low(uprSHIM1) ; загрузить младший байт регистра Z
ldi r29,high(uprSHIM1) ; загрузить старший байт
st Y,data ; сохранили константу в ОЗУ

rcall USART_Receive
ldi r28,low(uprSHIM2) ; загрузить младший байт регистра Z
ldi r29,high(uprSHIM2) ; загрузить старший байт
st Y,data ; сохранили константу в ОЗУ

rcall USART_Receive
ldi r28,low(uprSHIM3) ; загрузить младший байт регистра Z
ldi r29,high(uprSHIM3) ; загрузить старший байт
st Y,data ; сохранили константу в ОЗУ

rcall USART_Receive
ldi r28,low(uprSHIM4) ; загрузить младший байт регистра Z
ldi r29,high(uprSHIM4) ; загрузить старший байт
st Y,data ; сохранили константу в ОЗУ

rcall USART_Receive
ldi r28,low(uprSHIM5) ; загрузить младший байт регистра Z
ldi r29,high(uprSHIM5) ; загрузить старший байт
st Y,data ; сохранили константу в ОЗУ

rcall USART_Receive
ldi r28,low(uprSHIM6) ; загрузить младший байт регистра Z
ldi r29,high(uprSHIM6) ; загрузить старший байт
st Y,data ; сохранили константу в ОЗУ

rcall USART_Receive
ldi r28,low(uprSHIM7) ; загрузить младший байт регистра Z
ldi r29,high(uprSHIM7) ; загрузить старший байт
st Y,data ; сохранили константу в ОЗУ

rcall USART_Receive
ldi r28,low(uprSHIM ; загрузить младший байт регистра Z
ldi r29,high(uprSHIM ; загрузить старший байт
st Y,data ; сохранили константу в ОЗУ


ldi temp,0b00000001 ; включаю режим фильтрации пакетов
out UCSRA,temp




reti
;************************************************* ************************************************** ********
USART_Receive:
ldi data,0b10101010
out PORTC,data

; ждать загрузки данных в буфер приемника
sbis UCSRA,RXC
rjmp USART_Receive
; прочитать 9-й разряд данных и флаги состояния
in UCSRAm,UCSRA
in UCSRBm,UCSRB
;прочитать младший байт данных
in data,UDR
out PORTC,data
; в случае ошибки вернуть -1
andi UCSRAm,(1‹‹FE)|(1‹‹DOR)|(1‹‹UPE)
breq no_error1
USART_Receive_reti:
ldi UCSRBm,HIGH(-1)
ldi UCSRAm,LOW(-1)
reti
no_error1:
; выделить 9-й разряд данных
lsr UCSRBm
lsr UCSRBm ; 9 бит данных в флаге С

ret
Реклама:
vikont-s вне форума  
 
Опции темы

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
i2c_tiny_usb + Mega8 (slave) atsys AVR 3 06.11.2013 19:01
прошу совет по обмену данными между AVR'ами code-by Микроконтроллеры, АЦП, память и т.д 11 12.11.2008 03:03
Mega8 USART - TXCIE nerozero Микроконтроллеры, АЦП, память и т.д 0 29.05.2008 10:21
Mega8 тактирование day177 Микроконтроллеры, АЦП, память и т.д 0 25.01.2008 18:29
об АЦП на mega8 Слава Микроконтроллеры, АЦП, память и т.д 5 23.03.2005 17:56


Часовой пояс GMT +4, время: 16:25.


Powered by vBulletin® Version 3.8.4
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.