2 Andy Mozzhevilov А какие ошибки кроме памяти - будьте так любезны? К сожалению опытная партия уже производится. В плате в принципе можно порезать дороги/проводками соединить. Многие я видел приемник драйвера 485 интерфейса включают постоянно - то есть управляющую ногу садят на землю. Предполагаю, что это действительно делается, как сказал Alex03, для контроля передачи. В общем спасибо за советы - буду перед передачей отключать прерывание на прием, а перед разрешением читать U0LSR и сбрасывать буфер приема. Кстати, немаловажный момент, получается, что отключить передатчик драйвера 485 в обработчике прерывания уарта нельзя, так как он контролирует освобождение буфера, но не сдвигового регистра. То есть приведенный код постоянно должен крутиться в основном цикле. Правильно я понимаю?
void UART0_CheckBuferEmty(void) { if(uart0.flags.tx_in_progress == 0) { if(U0LSR & (1<<U0LSR_TEMT_BIT)) { IO0CLR |= (1<<RS485_TX); //Отключим передатчик RS485 U0IER |= (1<<U0IER_RBR_Interrupt_Enable_BIT); U0FCR |= (1<<U0FCR_Rx_FIFO_Reset_BIT); } } }
|