ВходНаше всё Теги codebook 无线电组件 Поиск Опросы Закон Пятница
3 мая
36308 Топик полностью
FDA (29.07.2005 15:28, просмотров: 1) ответил POV на Кто неаккуратнее, я или кейл?...
А я на PIC18 использую следующую функцию передачи байта... #define WaitTX() { while (!TRMT) CLRWDT(); } void PutUSART (char b) { #ifdef RS485 TxRx = TXD; #endif TXREG = b; WaitTX(); #ifdef RS485 TxRx = RXD; #endif USART_Error = 0; } Здесь байт загоняется в регистр передатчика и идёт ожидание самой передачи. Да, процессор в это время простаивает, но зато всё просто. Кроме того, при использовании RS-485 интерфейса не нужно заботится о ручном управлении направлением передачи. А вот приём данных я веду по прерываниям. Протокол транспортного уровня у меня WAKE с 8-битным CRC, который вычисляется обычным методом (не табличным), за счёт чего экономится 256 байт памяти. Хотя последнее не особенно важно для проих процов - там памяти 32 кбайта!