Значит так, всё крутится в мега1284. Делаю пересылку между юсартами, с первого принимаю, на второй передаю, со второго принима, н апервый передаю. RS485 на втором. Пока было без драйверов 485 (ADM485) две FT232 на два порта юсба в комп, всё бегало без проблем, а вот с драйвером - беда, беда, печалька... Симптом: по юсарт1 принимаю байты, на юсарт2 выдаю, ну и запущено две терминальные проги на компе, теряются байты, передаю 20, принимаю 17...20.
вот мои обработчики прерываний:
Код
ISR( USART1_UDRE_vect )
{
uint8_t cChar;
signed portBASE_TYPE cTaskWoken;
if( xQueueReceiveFromISR( xCharsForTx[1], &cChar, &cTaskWoken ) == pdTRUE )
{
RS485_tx;
UDR1 = cChar;
}
else
{
vInterruptOff(1); // запрещение прерывания UDRE1
}
}
{
uint8_t cChar;
signed portBASE_TYPE cTaskWoken;
if( xQueueReceiveFromISR( xCharsForTx[1], &cChar, &cTaskWoken ) == pdTRUE )
{
RS485_tx;
UDR1 = cChar;
}
else
{
vInterruptOff(1); // запрещение прерывания UDRE1
}
}
Код
ISR( USART1_TX_vect )
{
RS485_rx;
}
{
RS485_rx;
}
где косяк? подскажите плиз...