-
- За всех не скажу, но PIC24 ведет себя согласно документации. При ошибке переполнения буфера, прекращается прием новых данных. Данные в буфере должны быть прочитаны прежде, чем будет стерта эта ошибка, иначе они пропадут. Я там другой интересный Экспериментатор(422 знак., 29.01.2018 11:15, )
- Схожая задача была. Передавал единицы мегабайт за раз. dsPIC33EP. RTS/CTS с Silabs CP2102 терял байты. DMA не осилил, приём-передачу обрабатывал в прерываниях с кольцевыми буферами. Отказался от аппаратного RTS/CTS, поставил прерывание на вход Nikolay_Po(90 знак., 29.01.2018 11:52)
- Ошибки действительно не сбрасываю. Уповал на контроль пакета в МОДБАСе. При неправильном пакете читаю до пустоты приёмный буфер. и жду следующего пакета, не предполагая, что прием и прерывания могут блокироваться. shan(361 знак., 29.01.2018 01:31)
- Право, не полностью уверен, что приём UART у STM32 останавливается при ошибке, но такое: Nikolay_Po(119 знак., 29.01.2018 12:16)
- На самом деле сбрасывал только переполнение. - shan(30.01.2018 01:14)
- ЕМНИП, после Overrun Error приём клинит. Чтобы не заморачиваться, я установил OVRDIS в регистре CR3. Проверка целостности на другом уровне. - SciFi(29.01.2018 12:24)
- Логично. Всё равно контроль ошибок на уровне UART-железа не эффективен, вероятность пропуска ошибки велика. Отпишитесь, пожалуйста, по результату. - Nikolay_Po(29.01.2018 13:47)
- Такой контроль делается в основном для старинных протоколов, допускающих отмену передачи приемником. Ну и заодно для обеспечения правильной работы UART :) - VLLV(29.01.2018 13:51)
- Что отписывать? У меня давно всё работает :-) - SciFi(29.01.2018 13:50)
- Прошу прощения, перепутал с ТС. - Nikolay_Po(29.01.2018 15:19)
- Логично. Всё равно контроль ошибок на уровне UART-железа не эффективен, вероятность пропуска ошибки велика. Отпишитесь, пожалуйста, по результату. - Nikolay_Po(29.01.2018 13:47)
- Право, не полностью уверен, что приём UART у STM32 останавливается при ошибке, но такое: Nikolay_Po(119 знак., 29.01.2018 12:16)
- За всех не скажу, но PIC24 ведет себя согласно документации. При ошибке переполнения буфера, прекращается прием новых данных. Данные в буфере должны быть прочитаны прежде, чем будет стерта эта ошибка, иначе они пропадут. Я там другой интересный Экспериментатор(422 знак., 29.01.2018 11:15, )