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

 
 
> Мультипроцессорный обмен
Oleg_IT
сообщение Dec 16 2005, 08:54
Сообщение #1


Знающий
****

Группа: Свой
Сообщений: 922
Регистрация: 3-06-05
Из: Москва
Пользователь №: 5 709



Начал работать с мультипроцессорным обменом, для начала использую два МК. Написал программку, работает, но как-то странно.
Передаю следующий массив
char BuffTx[] = {0x55,AdrTo,0x23,0xCC,0x**,0xAA};
0x55 – преамбула
AdrTo – число, адрес МК куда посылаю, девятый бит 1.
0xCC – конец массива. По приёму этого байта подчинённый МК ставит флаг «приём завешён»
0x**(любой байт) и 0xAA – конец передачи для мастера. 0xAA в UART не посылается, по нему ресетится UART. Но без 0x** байт 0xCC не передаётся. Не пойму почему.
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
andk
сообщение Dec 19 2005, 05:08
Сообщение #2


Частый гость
**

Группа: Свой
Сообщений: 199
Регистрация: 17-12-04
Из: Миасс
Пользователь №: 1 519



Вот код.
Заточено под мои заморочки:
Отдельные выделеные буфера для передатчика и приемника.
Размер буферов - по 256 байт. Соответственно длины - char.
Реализован таймаут приема.
Реализована простейшая проверка целостности данных - ХОR.
Еще что-то, сейчас плохо помню.
Естественно, все это подкручивается в соответствии с необходимостью.
Go to the top of the page
 
+Quote Post
Oleg_IT
сообщение Dec 19 2005, 06:00
Сообщение #3


Знающий
****

Группа: Свой
Сообщений: 922
Регистрация: 3-06-05
Из: Москва
Пользователь №: 5 709



Цитата(Laptop @ Dec 18 2005, 19:51) *
Видимо ты проверяешь не "сдвиговый регистр пуст", а "буфер пуст". У AVR двойная буферизация, тебе нужно определять окончание передачи по прерыванию "сдвиговый регистр пуст".
В твоем случае происходит следующее:
0xCC успел передаться, начинается передача 0x**, ты натыкаешься на 0хАА и обрываешь передачу... у тебя хорошо если старт-бит успеет передаться...
Дождись окончания передачи и все будет в полном порядке.


Имеется два прерывания на передачу «Регистр данных USART пуст, UDRE» и «Передача завершена, TXC», "сдвиговый регистр пуст" имеется ввиду «Регистр данных USART пуст, UDRE»? Начал работать с UDRE, потом перешёл на TXC (естественно со сменой флагов инициализации) ситуация не изменилась.

Спасибо за код, разберусь, применю.

Товарищу или Господину назвавшему меня «не будь игоистом». Во первых не Игоист, а Эгоист. Не стоит сразу так о человеке, товарищ предложил поделиться кодом, я его попросил прислать его мне, без всякой задней мысли. Если кто хочет, может попросить выложить код. Давайте будем корректными друг к другу.
Go to the top of the page
 
+Quote Post
Laptop
сообщение Dec 19 2005, 10:21
Сообщение #4


Частый гость
**

Группа: Свой
Сообщений: 142
Регистрация: 19-11-05
Пользователь №: 11 103



Цитата(Oleg_IT @ Dec 19 2005, 09:00) *
Имеется два прерывания на передачу «Регистр данных USART пуст, UDRE» и «Передача завершена, TXC», "сдвиговый регистр пуст" имеется ввиду «Регистр данных USART пуст, UDRE»? Начал работать с UDRE, потом перешёл на TXC (естественно со сменой флагов инициализации) ситуация не изменилась.

Именно об этом и говорил... Странно...
Ты данные подсовываешь по "регистр данных пуст", а закрываешь передачу по "передача завершена"?
Нужно работать именно с двумя прерываниями, лучше именно с прерываниями, а не опросом флагов.
Реакция будет быстрее.
Если работаешь только по "передача завершена", то скорее всего попадаешь в логическую ловушку с отправкой...
Особенно если проверка на "передача завершена" стоит прямо после записи очередного байта на отправку.
Go to the top of the page
 
+Quote Post

Сообщений в этой теме
- Oleg_IT   Мультипроцессорный обмен   Dec 16 2005, 08:54
- - BVU   Цитата(Oleg_IT @ Dec 16 2005, 11:54) Нача...   Dec 16 2005, 10:59
|- - Oleg_IT   ЦитатаМожет Ваш контроллер на стороне приема не ус...   Dec 16 2005, 11:23
|- - BVU   Цитата(Oleg_IT @ Dec 16 2005, 14:23) Цита...   Dec 16 2005, 11:54
- - andk   Судя по всему, проиходит вот это: байт СС ложится ...   Dec 16 2005, 11:56
|- - Oleg_IT   Цитата(andk @ Dec 16 2005, 14:56) Судя по...   Dec 17 2005, 09:45
- - Roma_te   Цитата(Oleg_IT @ Dec 16 2005, 12:54) Нача...   Dec 16 2005, 15:04
- - Rash   Цитатаесли не сложно, то сбросьте код сюда iteris@...   Dec 17 2005, 10:20
- - Laptop   Цитата(Oleg_IT @ Dec 16 2005, 11:54) Нача...   Dec 18 2005, 16:51
- - Laptop   Кому интересно. Вот мой вариант. Внутри код для об...   Dec 18 2005, 17:12
|- - Oleg_IT   Цитата(Laptop @ Dec 19 2005, 13:21) Именн...   Dec 19 2005, 11:41
- - andk   >6. По приходу прерывания,… и по обнаружения в ...   Dec 19 2005, 12:05
|- - Oleg_IT   Цитата(andk @ Dec 19 2005, 15:05) >6. ...   Dec 19 2005, 12:24
|- - andk   Цитата(Oleg_IT @ Dec 19 2005, 17:24) Цита...   Dec 20 2005, 08:54
- - Laptop   Вот кусочек моего исходника по мультипроцессорному...   Dec 19 2005, 23:25


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

 


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


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