Телесистемы
 Разработка, производство и продажа радиоэлектронной аппаратуры
На главную   | Карта сайта | Пишите нам | В избранное
Требуется программист в Зеленограде
- обработка данных с датчиков; ColdFire; 40 тыс.
e-mail:jobsmp@pochta.ru

Телесистемы | Электроника | Конференция «Микроконтроллеры и их применение»

Ответ: работайте через прерывания (+)

Отправлено Assm 06 октября 2008 г. 13:36
В ответ на: AT90S2313 через RS232 к ПК отправлено <font color=gray>Nashhh</font> 06 октября 2008 г. 12:35

1) на стороене ПК, как правильно указал "MBedder" никакого контроля
2) используйте вектор "URXCaddr"
... //фрагмент блока векторов прерываний:
.org URXCaddr ;UART RX Complete Handler.
rjmp I_RXD
...

;-- UART receive programm
I_RXD:
push TMP
in TMP,SREG
push TMP
;
rcall RXD ;Процедура приема данных.
;
pop TMP
out SREG,TMP
pop TMP
;
reti
;-------------------------------------

RXD: in TMP,UDR ; В TMP возвращается принятый байт.
ret

----------------
Это в простейшем случае, без всяких протоколов.
Если передаётся пакет, то желательно вводить подсчёт контрольных сумм (в простейшем слочае .xor., но лучше crc). Как вариант - можно возложить управление протоколом на ПК, руководствуясь принятыми от МК "эхо"- посылками (т.е. МК по приёму очередного байта, сразу же отпраляет его обратно на ПК).

А ещё необходимо вводить обработку таймаута ожидания приёма байта. Если приём пакета продолжается аномально длительное время, то нужно реинициальзировать UART.



Составить ответ | Вернуться на конференцию

Ответы


Отправка ответа
Имя*: 
Пароль: 
E-mail: 
Тема*:

Сообщение:

Ссылка на URL: 
URL изображения: 

если вы незарегистрированный на форуме пользователь, то
для успешного добавления сообщения заполните поле, как указано ниже:
введите число 89:

Перейти к списку ответов | Конференция | Раздел "Электроника" | Главная страница | Карта сайта

Rambler's Top100 Рейтинг@Mail.ru
 
Web telesys.ru