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

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

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

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

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

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

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

 
Опции темы
Непрочитано 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 18:56


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


Powered by vBulletin® Version 3.8.4
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd. Перевод: zCarot