Romashki 0 12 октября, 2013 Опубликовано 12 октября, 2013 (изменено) · Жалоба ebdat7_00EnterDebugMode(); ebdat9_03SetModemdataToFL(TRUE); ebdat9_04SetUartdataToFL(TRUE); void init_uart(void) { FlMainUartDataFormat uartdataformat; FlMainUartFlowControlStruct uartflowcontrol; uartflowcontrol.dcebydte = FL_MAIN_UART_NO_FLOW_CONTROL; uartflowcontrol.dtebydce = FL_MAIN_UART_NO_FLOW_CONTROL; uartdataformat.uartFormat = FL_MAIN_UART_8N1_FORMAT; uartdataformat.uartParity = FL_MAIN_UART_ODD; // while(ebdat9_09ChangeMainUartBaudRate(115200)!=FL_OK){}; while(ebdat9_09ChangeMainUartBaudRate(9600)!=FL_OK){}; while(ebdat9_11ChangeMainUartDataFormat(uartdataformat)!=FL_OK){}; while(ebdat9_13ChangeMainUartFlowControl(uartflowcontrol)!=FL_OK){}; } Я подозреваю, что могло не правильно отображаться в программе терминала (я в хексе отправляю данные).... вечером попробую текст просто отправить в порт Изменено 12 октября, 2013 пользователем Romashki Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Romashki 0 13 октября, 2013 Опубликовано 13 октября, 2013 · Жалоба Разобрался! У меня на этом порту стоит ADM485 с ногой RX/TX, так вот на 115200 работает так: if(ebdat9_05GetSerialPortTxStatus()!=TRUE)return 0; ebdat6_04WriteGpio(pin_SW_RX_TX, 1); ebdat05_09delay(1000); ebdat9_02SendToSerialPort((char*)pBuff, LenBuff); ebdat05_09delay(10000); ebdat6_04WriteGpio(pin_SW_RX_TX, 0); а вот на 9600 приходила только третья часть буфера....пришлось сделать так и только тогда заработало (в смысле буфер полностью доходил): if(ebdat9_05GetSerialPortTxStatus()!=TRUE)return 0; ebdat6_04WriteGpio(pin_SW_RX_TX, 1); ebdat05_09delay(1000); ebdat9_02SendToSerialPort((char*)pBuff, LenBuff); ebdat05_09delay(20000); ebdat6_04WriteGpio(pin_SW_RX_TX, 0); Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
HDL 0 13 октября, 2013 Опубликовано 13 октября, 2013 · Жалоба Да, собсно в коде инициализации я ниче такого и не увидел. Поздравляю! ) Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
gegel 0 13 октября, 2013 Опубликовано 13 октября, 2013 · Жалоба У меня на этом порту стоит ADM485 с ногой RX/TX Эх, жаль, но EAT/OCPU далеко не realtime. Задержка отрабатывается весьма приблизительно (а также и начало реальной выдачи в UART после выполнения SendToSerialPort), и если ее установить с запасом, то часть ответа теряется (например, при опросе ДУТ). Мне кажется, без простенького внешнего МК (типа PIC10), управляющего режимом RX/TX в засисимости от старт-бита, тут никак не обойтись. Возможно, кто-то решил проблему по другому? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Romashki 0 14 октября, 2013 Опубликовано 14 октября, 2013 · Жалоба В принципе можно поставить adm с автоопределением и не трогать эту ногу вообще. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться