реклама на сайте
подробности

 
 
> Мультипроцессорные режим ATmega88/168
Dёня
сообщение Oct 8 2008, 08:00
Сообщение #1





Группа: Новичок
Сообщений: 7
Регистрация: 31-08-06
Пользователь №: 19 981



Здравствуйте господа!

На шине один передающий контроллер (PIC18F252, 10MHz+PLL), один принимающий (ATmega168, 20MHz). Установлен режим мультипроцессорный:
Должно быть:
мега принимает свой адрес, распознает его, выставляет прием данных (lds rh_ucsra, UCSR0A; andi rh_ucsra, ~(1 << MPCM0); sts UCSR0A, rh_ucsra) и далее принимает блок данных длиной 256 байт, после приема запрещает прием данных.
Что выходит:
мега распознает адрес... принимает данные, причем принимает только первых 89 (!) байт и далее перестает принимать данные, затем опять принимает свой адрес, причем у него установлен (!) бит MPCM0. Распознает адрес, сбрасывает MPCM0, и т.д.
Бит MPCM0 я не выставляю, т.к. выставляется он только при условии приема 256-ти байт.
Скорости обмена выставлял в разных диапазонах - от 19.2К до 1.25М.
Пробовал и по UARTу непосредственно и по RS485.
Данные при приеме не искажаются (проверяю цифровым осциллографом 100MHz), в контроллере 89 принятых байт верные.
Алгоритм передачи-приема работает в симуляторе при любых скоростях...
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
AndyBig
сообщение Oct 8 2008, 12:57
Сообщение #2


Иногдящий
****

Группа: Свой
Сообщений: 691
Регистрация: 28-02-05
Пользователь №: 2 931



Нет, сам не выставляется. Бит MPCM должена устанавливать и очищать сама программа.
Смысл в следующем: устанавливаете этот бит и ждете прерывания от УАРТа (или просто ждете приема символа). Пока по шине не пройдет байт адреса (с выставленным старшим битом), УАРТ ничего не примет. Приняли байт адреса, сравнили со своим адресом, если совпал - очищаете бит MPCM и дальше принимаете весь пакет данных - фиксированной длины или переменной, но тогда в начале пакета должна быть обозначена его полная длина. Приняли пакет данных, опять установили бит MPCM и ждете следующего приема байта.
В процессе приема можно контролировать принимаемые данные на установленный старший бит в очередном принятом байте - флаг RXB8 в регистре UCSRB. Если установлен - значит пришел байт адреса, следовательно по каким-то причинам принят не весь пакет данных. Тогда действуете как Вам удобнее - или сразу сравниваете пришедший адрес со своим и далее как описывалось, или рапортуете хосту об ошибке...

Цитата
MPCM сбрасывается автоматом только при получении адресного байта (т.е. байта с установленным 9-м битом)

Где описано такое поведение этого флага?
Go to the top of the page
 
+Quote Post

Сообщений в этой теме
- Dёня   Мультипроцессорные режим ATmega88/168   Oct 8 2008, 08:00
- - _dem   Код в студию, может быть не там копаете, и ошибка ...   Oct 8 2008, 08:25
- - demiurg_spb   Цитата(Dёня @ Oct 8 2008, 12:00) Установл...   Oct 8 2008, 08:36
- - Dёня   Вот исходник...   Oct 8 2008, 09:06
- - Dёня   Те кто применял адресуемый UART, вообще, принимает...   Oct 8 2008, 11:23
- - GDI   А даташит и эррата что ан этот счет говорят?   Oct 8 2008, 11:39
- - AndyBig   Принимает без проблем, что-то у вас не то в коде.....   Oct 8 2008, 12:05
- - Dёня   Эратты я не встречал на эти камни, а в даташите пр...   Oct 8 2008, 12:22
- - Николай Иванович Приходько   MPCM сбрасывается автоматом только при получении а...   Oct 8 2008, 12:43
|- - Николай Иванович Приходько   Цитата(AndyBig @ Oct 8 2008, 16:57) Где о...   Oct 8 2008, 13:24
- - Dёня   Спасибо за разъяснение, впринципе так я и полагал:...   Oct 8 2008, 13:17
|- - Николай Иванович Приходько   Цитата(Dёня @ Oct 8 2008, 17:17) До точки...   Oct 8 2008, 17:49
- - AndyBig   Сорри, в ассемблере совсем не силен   Oct 8 2008, 16:03
- - Dёня   Инициализация счетчика в начале программы: КодMain...   Oct 8 2008, 20:11
- - Dёня   Тема закрыта. Нашел ошибку. Прога изначальна писал...   Oct 8 2008, 21:45
- - AndyBig   Ошибки, возникающие при copy-paste - обычное дело   Oct 9 2008, 06:25


Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 25th July 2025 - 12:53
Рейтинг@Mail.ru


Страница сгенерированна за 0.01385 секунд с 7
ELECTRONIX ©2004-2016