Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Как наладить обмен между ADUC7026 и PC через UART
Форум разработчиков электроники ELECTRONIX.ru > Сайт и форум > В помощь начинающему > ARM, 32bit
kiore
На PC есть программа написанная на С, работающая под ДОСом. ADUC собирает все данные с датчиков и должен отправлять на ПК, тот в свою очередь обрабатывает их , должен передавать свои данные ADUC. Я так понимаю это должно быть реализовано только через прерывание?
Перечитал на форуме все что связано с UART ADUC7026, но всеравно догнать немогу. Я новичок, помогите пожалуйста.
Сергей Борщ
QUOTE (kiore @ Mar 18 2011, 09:42) *
Я так понимаю это должно быть реализовано только через прерывание?
Не обязательно. Все зависит от вас.
kiore
Цитата(Сергей Борщ @ Mar 18 2011, 13:01) *
Не обязательно. Все зависит от вас.


На стороне PC я пользуюсь функцией bioscom для приема и передачи и приема 6 байтов.
int trans (int port)
{
for (i=0; i<6; i++)
{ while ((stat & 0x100) != 0x100)
stat = bioscom(3,0,port);
bit[i] = bioscom (2,0,port);
while ((stat & 0x2000) != 0x2000)
stat = bioscom(3,0,port);
bioscom(1,bit1[i],port);
}
}
int init_port (int port)
{
stat = 0;
stat=bioscom(0,0xE7,port);
stat=bioscom(3,0,port);
return stat;
}

Если с ПК посылаю байт по линии связи а адук занят чем-то другим то получаю одни только тайм-ауты в приемнике ПК.

мне бы пример на 2 стороны с коментами. Пользуюсь С компилятор Кейл
yashok
Цитата
Я так понимаю это должно быть реализовано только через прерывание?

Если у адука и так работы много и по времени жестких рамок не стоит, то создайте 2 циклических буфера для UARTа, на прием и на передачу. Разрешите прерывание на прием и на передачу. В прерываниях на прием пишите все в буфер. Придет время обработаете. Когда нужно отправить - пишите тоже в буфер, все через прерывание постепенно само и отправится. Пульте функцию обработки uartа раз в пол секунды (для обработки принятых данных). На стороне компа поставте тайм-аут по-больше.
Если не требуется мгновееный ответ на посылку от компа - описанный вариант достаточно неплох.
Сергей Борщ
QUOTE (kiore @ Mar 18 2011, 12:34) *
Если с ПК посылаю байт по линии связи а адук занят чем-то другим то получаю одни только тайм-ауты в приемнике ПК.
Если ADuC успеет освободиться до прихода следующего байта - то первый байт никуда не денется, будет лежать и ждать в приемном регистре UART. Если же ADuC может не успевать -то да, прерывания необходимы.
QUOTE (kiore @ Mar 18 2011, 12:34) *
мне бы пример на 2 стороны с коментами. Пользуюсь С компилятор Кейл
Под рукой ничего нет. На макетке распаян разъем UART, значит я его когда-то включал. Но это было давно и под IARом.
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.