SAM3 USART+PDC: хост-контроллер SAM3X8C обменивается со слейвом по усарт, перед приемом конфигурирует усарт и PDC, после чего выставляет на пине готовность к приему. проблемка следующая, почему прием стартует с задержкой и хост не успевает словить пакет?
init
Usart().get()->US_MR = /*US_MR_USART_MODE_RS485 | */ US_MR_CHRL_8_BIT | US_MR_PAR_NO;
Usart().get()->US_BRGR = SystemCoreClock / 16 / m_boudrate;
Usart().get()->US_RTOR = RECEIVE_TIMEOUT_TIME;
Usart().get()->US_CR = US_CR_RSTRX | US_CR_RSTTX;
Usart().get()->US_CR = US_CR_TXEN;
//start_receiving();
}
void start_receiving(uint8_t* buf, size_t len)
{
Usart().disable_irq();
Usart().get()->US_CR = US_CR_RSTRX;
Usart().get()->US_RPR = (uint32_t)buf;
Usart().get()->US_RCR = len;
Usart().get()->US_PTCR = US_PTCR_RXTEN;
Usart().get()->US_CR = US_CR_RXEN | US_CR_RETTO; // enable rx and rx time-out
Usart().get()->US_IER = US_IER_TIMEOUT;
Usart().clear_pending_irq();
//Usart().enable_irq();
}
... процесс
start_receiving((uint8_t*)&rx_pack_buf1,sizeof rx_pack_buf1); /// прием инициализируется раньше выставления пина готовности!!!
set_MR();
...
-
- я конечно могу ошибаться, но: Hives(253 знак., 23.04.2018 19:00, )