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

 
 
> Теряются данные при считывании по UART, STM32F103RD
Atlantis-
сообщение Oct 23 2015, 10:02
Сообщение #1


Местный
***

Группа: Участник
Сообщений: 491
Регистрация: 18-05-11
Пользователь №: 65 102



Здравствуйте!
Столкнулся с проблемой потери данных и не понимаю откуда ноги растут.
Суть такая: по таймеру с частотой 500 Гц я опрашиваю датчики. На одной шине UART расположены два датчика. То есть я отправляю команду, считываю данные (по DMA) с одного датчика, переключаю на другой датчик - считываю данные с него. Раньше у меня была передача по USB и я в прерывании, каждую 1 мс проверял, есть ли данные от датчиков, копировал в отдельный массив и передавал.
Сейчас мне надо перейти на UART и тот же самый алгоритм почему то дает непонятный сбой. Каждую 1 мс по UART присылаю команду "передать данные", в прерывании проверяю есть ли данные, перекопирую их в массив, в начало массива добавляю счетчик и кол-во данных. После запуска через несколько секунд возникает сбой - байт "кол-во данных" пропадает.
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
esaulenka
сообщение Oct 27 2015, 12:28
Сообщение #2


Профессионал
*****

Группа: Свой
Сообщений: 1 032
Регистрация: 13-03-08
Из: Маськва
Пользователь №: 35 877



Ничего не понял.
Данные из датчиков попадают в два разных массива, переключение между массивами - по команде с ПК.
Два этих процесса не синхронизированы. Так почему же оно почти всегда работает? :-)

Кто такой BuffUART[2] вообще неясно. Если он нигде не анализируется, на выполнение программы влиять он не должен никак.


--------------------
Тут обсуждается творческий порыв, а не соответствие каким-либо стандартам ©
Go to the top of the page
 
+Quote Post
Atlantis-
сообщение Oct 27 2015, 13:28
Сообщение #3


Местный
***

Группа: Участник
Сообщений: 491
Регистрация: 18-05-11
Пользователь №: 65 102



Цитата(esaulenka @ Oct 27 2015, 15:28) *
Ничего не понял.
Данные из датчиков попадают в два разных массива, переключение между массивами - по команде с ПК.
Два этих процесса не синхронизированы. Так почему же оно почти всегда работает? :-)

Кто такой BuffUART[2] вообще неясно. Если он нигде не анализируется, на выполнение программы влиять он не должен никак.

Даа не так. Данные приходят с датчиков на STM32, он по UART передает на C8051F320, а тот передает по USB. Чтобы вычленить проблему, я данные с датчиков вообще не трогаю. А по запросу от C8051F320 передаю ему фиксированный массив из 19 байт. И если меняю значение BuffUART[2], то получаю сбои.

Цитата(esaulenka @ Oct 27 2015, 15:28) *
Если он нигде не анализируется, на выполнение программы влиять он не должен никак.

вот именно!
Go to the top of the page
 
+Quote Post

Сообщений в этой теме
- Atlantis-   Теряются данные при считывании по UART   Oct 23 2015, 10:02
- - =GM=   Цитата(Atlantis- @ Oct 23 2015, 10:0...   Oct 23 2015, 10:17
|- - Atlantis-   Цитата(=GM= @ Oct 23 2015, 13:17) Вообще-...   Oct 23 2015, 11:32
- - r_dot   Цитата(Atlantis- @ Oct 23 2015, 13:0...   Oct 23 2015, 10:37
|- - Atlantis-   Цитата(r_dot @ Oct 23 2015, 13:37) ...   Oct 23 2015, 11:52
- - uriy   А вы уверены что микросхему 74HC126D переключаете ...   Oct 23 2015, 11:47
- - Atlantis-   Сделал на стороне STM32 постоянный массив, который...   Oct 24 2015, 13:34
|- - =GM=   Цитата(Atlantis- @ Oct 24 2015, 13:3...   Oct 26 2015, 10:14
|- - Atlantis-   Цитата(=GM= @ Oct 26 2015, 13:14) 1000/19...   Oct 26 2015, 20:07
- - esaulenka   Первый признак любимых граблей эмбеддера: слово ...   Oct 27 2015, 09:06
|- - Atlantis-   Цитата(esaulenka @ Oct 27 2015, 12:06) Пе...   Oct 27 2015, 10:56
- - psL   uart вообще может мусор с линии принимать, тем бол...   Oct 27 2015, 13:04
- - wangan   А ты не рассматривал вариант что когда когда ты пе...   Oct 27 2015, 15:20
- - Atlantis-   Кстати проблема появилась, когда стал передавать д...   Oct 27 2015, 15:36


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

 


RSS Текстовая версия Сейчас: 30th July 2025 - 15:53
Рейтинг@Mail.ru


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