реклама на сайте
подробности

 
 
2 страниц V  < 1 2  
Reply to this topicStart new topic
> STM32 Прерывание UART, Странное поведение
KnightIgor
сообщение Apr 30 2014, 08:57
Сообщение #16


Знающий
****

Группа: Участник
Сообщений: 643
Регистрация: 29-05-09
Из: Германия
Пользователь №: 49 725



Цитата(demiurg_spb @ Apr 30 2014, 07:55) *
А зачем этот участок кода? Ведь по приходу нового байта статут формируется заново. Или я что-то упустил?

Думаю, ничего не упустили. Более того, операция записи нуля в SR бесполезна для битов ошибок, т.к. они Read Only, а для TC и RXNE может оказаться фатальной: смотрим мануал в части описания регистра SR и читаем:

The TC bit can also be cleared by writing a '0' to it. This clearing sequence is recommended only for multibuffer communication.
The RXNE flag can also be cleared by writing a zero to it. This clearing sequence is recommended only for multibuffer communication.
Go to the top of the page
 
+Quote Post
AHTOXA
сообщение Apr 30 2014, 09:31
Сообщение #17


фанат дивана
******

Группа: Свой
Сообщений: 3 387
Регистрация: 9-08-07
Из: Уфа
Пользователь №: 29 684



Да, эта часть бесполезна. Видимо, наследие какого-то другого контроллераsm.gif
Но вреда от неё тоже нетsm.gif


--------------------
Если бы я знал, что такое электричество...
Go to the top of the page
 
+Quote Post
adnega
сообщение Apr 30 2014, 09:38
Сообщение #18


Гуру
******

Группа: Свой
Сообщений: 2 724
Регистрация: 14-05-07
Из: Ярославль, Россия
Пользователь №: 27 702



Цитата(KnightIgor @ Apr 30 2014, 11:51) *
Интересно, зачем. Это же конфликт с CMSIS-согласованным файлом stm32f10x.h

WiFi-"модем" HLK-RM04. Там внутри Ralink RT5350F и кварц, по которому не видно, сколько MHz. Но еще раз: после добавления заплатки, действие которой заключается либо в задержке, либо в предварительном "тупом" чтении регистра SR, ошибка спорадической потери байтов забилась в угол до такой степени, что мы вчера в течение долгих тестов не смогли ее обнаружить.

Насчет битиков ответ простой: я не пользуюсь сторонними библиотеками.

Насчет UARTа я пока уверен, что накакие заплатки не нужны, т.к. железо работает отлично. Но если у Вас есть желание переубедить меня, то
я с радостью помогу. Ибо я лучше сейчас огребу, чем в будущем. В свое время я сталкивался с потерей байт, но не придавал этому особого значения.
Старался писать код не чувствительным к таким потерям (точнее допускающим редкие потери с гарантированным восстановлением за конкретное время/
число перепосылок). Сейчас, когда начал копаться детально (где-то месяц назад), понял, что так или иначе аппаратура не виновата в потерях - виноват
исключительно софт. Если Вы считаете вопрос решенным (для своего круга задач), то, думаю, и копать дальше не стоит (меня тоже сейчас все устраивает).
Go to the top of the page
 
+Quote Post
KnightIgor
сообщение Apr 30 2014, 10:11
Сообщение #19


Знающий
****

Группа: Участник
Сообщений: 643
Регистрация: 29-05-09
Из: Германия
Пользователь №: 49 725



Цитата(adnega @ Apr 30 2014, 10:38) *
Насчет битиков ответ простой: я не пользуюсь сторонними библиотеками.

Жесть sm.gif.
Цитата
Насчет UARTа я пока уверен, что накакие заплатки не нужны, т.к. железо работает отлично. Но если у Вас есть желание переубедить меня, то
я с радостью помогу.

Нет, я никого переубеждать не хочу, тем более человека, который даже библиотеками производителя процессоров не пользуется. Просто поделился информацией на случай, если кто сталкивался, но не понял, что происходит.
Go to the top of the page
 
+Quote Post
adnega
сообщение Apr 30 2014, 10:34
Сообщение #20


Гуру
******

Группа: Свой
Сообщений: 2 724
Регистрация: 14-05-07
Из: Ярославль, Россия
Пользователь №: 27 702



Цитата(KnightIgor @ Apr 30 2014, 14:11) *
Жесть sm.gif.

Нет, я никого переубеждать не хочу, тем более человека, который даже библиотеками производителя процессоров не пользуется. Просто поделился информацией на случай, если кто сталкивался, но не понял, что происходит.

Да, все нормально: просто я с STM практически с самого начала (тогда и библиотеки никакой не было), поэтому библиотеки у меня свои.
Библиотеками производителя я пользуюсь, но только в ознакомительных целях. И документацию читаю внимательно.
Если честно, то до сих пор не понятно, в чем собственно проблема UART на STM32 и почему только у Вас UART теряет байты.
За информацию спасибо: если что-то не работает в сложной системе, то нужно вставлять задержки и дополнительные чтения статусных регистров.
Go to the top of the page
 
+Quote Post
Golikov A.
сообщение Apr 30 2014, 11:03
Сообщение #21


Гуру
******

Группа: Свой
Сообщений: 4 256
Регистрация: 17-02-06
Пользователь №: 14 454



Да библиотеки производителя все (ну большинство точно )с дисклаймером - это только пример!!! они в курсе качества их программистов, так что тоже не сторонник брать не глядя, и по большей части не использую.

А у вас окружающее UART железо нормальное? У нас было такое дело на драйвере в RS232 конденсаторы на землю не запаялись и при ненасыщенном обмене все работало, а в каких то критических случаях иногда проскакивали ошибки, когда от вида данных или еще от чего что-то там разряжалось, недозаряжалось, и уровни перли тупо не правильные...

местные программисты добавили контроль целостности и успокоились, а я осциллографом потыкал и увидел весь этот кавардак, как уровни медленно дрейфуют, может они уплывают и байт теряется?


И еще из интересных тестов я бы первой командой в прерывании пришел байт поставил бы счетчик входа в прерывание, а по сохранению байта в буфер счетчик сохраненных байт, и поглядел не расходиться ли это по ходу дела? Есть у меня такая теория что когда приходит прерывание вы в него вваливаетесь, потом вас куда то дергают, и за это время старый байт затирается, и вы пришли в прерывание за символом, а внутри получили ошибку и не сохранили символ. что-то типа того....
Go to the top of the page
 
+Quote Post
KnightIgor
сообщение Apr 30 2014, 16:54
Сообщение #22


Знающий
****

Группа: Участник
Сообщений: 643
Регистрация: 29-05-09
Из: Германия
Пользователь №: 49 725



Цитата(Golikov A. @ Apr 30 2014, 12:03) *
Да библиотеки производителя все (ну большинство точно )с дисклаймером - это только пример!!! они в курсе качества их программистов, так что тоже не сторонник брать не глядя, и по большей части не использую.

Я о CMSIS говорил.

Цитата
А у вас окружающее UART железо нормальное?

Модуль WiFi и процессор находятся рядом на плате и общаются на TTL/CMOS уровне, без всяких RS-232. Я уверен, с этой точки зрения там все стабильно.
Go to the top of the page
 
+Quote Post

2 страниц V  < 1 2
Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 21st July 2025 - 16:08
Рейтинг@Mail.ru


Страница сгенерированна за 0.01416 секунд с 7
ELECTRONIX ©2004-2016