-
- ОверРан выключи!!! или обрабатывай! - IBAH(29.01.2018 19:47)
- Про UART вам уже насоветовали, а я про другое спрошу - как это информация в ОЗУ пропадает при ресете? Ресет сам по себе ОЗУ не чистит, другое дело что сишный стартап норовит инициализировать переменные, ну так есть атрибут __no_init. И какое у вас йцукен(47 знак., 27.01.2018 15:24)
- Согласен- перегружается быстро. Но тогда надо серьёзно переделывать инициализацию. Различать первый запуск (по питанию) когда надо всё задать "с нуля" и перезапуск по WDT или программный ресет. У STM это определить можно, но честно говоря немножко shan(1190 знак., 29.01.2018 00:35)
- Тема проверки ошибок UART так и не раскрыта. Не знаю, как у STM32, но у Microchip и Atmel UARTы виснут при ошибке стопового бита (framing error) до сброса ошибки Nikolay_Po(225 знак., 29.01.2018 00:46)
- За всех не скажу, но 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, )
- Тема проверки ошибок UART так и не раскрыта. Не знаю, как у STM32, но у Microchip и Atmel UARTы виснут при ошибке стопового бита (framing error) до сброса ошибки Nikolay_Po(225 знак., 29.01.2018 00:46)
- Согласен- перегружается быстро. Но тогда надо серьёзно переделывать инициализацию. Различать первый запуск (по питанию) когда надо всё задать "с нуля" и перезапуск по WDT или программный ресет. У STM это определить можно, но честно говоря немножко shan(1190 знак., 29.01.2018 00:35)
- Кварц внешний поставь. У внутреннего HSI неприемлемый для использования USART разброс. - il-2(27.01.2018 11:15)
- оно скорее лучше было бы. но у ТС сброс животворящ. обычно сброс практически не меняет температуру чипа и напряжение питания, т.е. на HSI влиять не должен - Vit(27.01.2018 11:51)
- Ну да, действительно. Но кварц все равно нужен, в диапазоне температур ТИПОВОЙ разброс составляет +-5%. Это много. - il-2(27.01.2018 14:43)
- В некоторых МК бывают хитрые встроенные генераторы, автокалибрующися во время работы. В таком случает сброс может повлиять схему калибровки и на частоту. Не знаю, есть ли в STM подобное. - AlexG(27.01.2018 13:22)
- оно скорее лучше было бы. но у ТС сброс животворящ. обычно сброс практически не меняет температуру чипа и напряжение питания, т.е. на HSI влиять не должен - Vit(27.01.2018 11:51)
- Посоветую прочитать значения регистров USART и своих переменных в этой ситуации. Может быть банальная ошибка в обработке сбойных ситуаций при приеме (если эта обработка вообще есть, конечно), или любая другая ошибка. VLLV(76 знак., 27.01.2018 09:45)
- +1. Нужно не забывать при наличии ошибок приема вычитывать регистр принятых данных - Vit(27.01.2018 09:48)
- +1. - SciFi(27.01.2018 09:45)
- Я обязательно во всех проектах при отсутствии обмена с минуту реинициализирую уарт. Также делаю и с остальными процессами вроде чтения рфид или обновления на ЖКИ. - vesago(27.01.2018 08:39)
- Можно ещё с бубном пританцовывать. - SciFi(27.01.2018 09:33)
- Я сейчас делаю первое устройство на STM32L071. Тоже связь с мастером через USART1. Столкнулся с тем, что периодически пропадает прием данных от мастера. Вставил пока такую пару вызовов, когда обнаруживаю, что мастер долго молчит: mmc(147 знак., 27.01.2018 02:06)