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

 
 
> Мультипроцессорный обмен
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
Ответов
Laptop
сообщение Dec 18 2005, 17:12
Сообщение #2


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

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



Кому интересно. Вот мой вариант. Внутри код для обработки погрызен.
SETB, CLRB, BIT макросы для установки, сброса и проверки бита в байте message.

#define analyse_it 7
#define first_ten 6
#define start_rec 5
unsigned char message = 0;
unsigned char mess_buf[387];
unsigned int index;


void message_process(void)
{
unsigned char c, lp;
int i;
c = _getchar(); /*printf(" %X%X ",c>>4,c&0x0F);*/
if (BIT(message,first_ten))
{
switch ©
{
case 0x10 : if (BIT(message,start_rec)) mess_buf[index++] = 0x10; break;
case 0x03 : SETB(message,analyse_it); CLRB(message,start_rec);
//.......................................................................
//здесь собственно обработка принятого в буфер

break;

default : if BIT(message,analyse_it)
{
/*restart receive*/
SETB(message,start_rec);
mess_buf[0] = c; index = 1;
}
}
CLRB(message,first_ten);
}
else
if (c == 0x10){ SETB(message,first_ten); }
else
if (BIT(message,start_rec)){ mess_buf[index++] = c; }
}

Сообщение отредактировал Laptop - Dec 18 2005, 17:16
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
- - andk   Вот код. Заточено под мои заморочки: Отдельные выд...   Dec 19 2005, 05:08
|- - Oleg_IT   Цитата(Laptop @ Dec 18 2005, 19:51) Видим...   Dec 19 2005, 06:00
|- - Laptop   Цитата(Oleg_IT @ Dec 19 2005, 09:00) Имее...   Dec 19 2005, 10:21
|- - 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 Текстовая версия Сейчас: 22nd July 2025 - 14:50
Рейтинг@Mail.ru


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