Разработка, производство и продажа радиоэлектронной аппаратуры
|
Требуется программист в Зеленограде - обработка данных с датчиков; 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.
Составить ответ | Вернуться на конференцию
Ответы