roboforum.ru

Технический форум по робототехнике.

STM32L1 Discovery USART NVIC = отправка попадает на вход

ARM7, ARM9, ARM11 etc.

STM32L1 Discovery USART NVIC = отправка попадает на вход

Сообщение Илдар » 24 окт 2013, 04:25

С роутера отправляю команды в STM32 - всё ок.
С СТМ32 отправляю данные в модем - всё ок.
Но при изменении логики с бесконечного цикла проверки новых данных в порту STM32 на прерывание NVIC для этого USART получаю трабл.
Трабл такой.
В процедуре обработки прерывания обратно отправляю "received "+полученный символ.
В результате возникает ощущение, что СТМ32 что отправляет, то и получает на вход сама себе.
вот результат команды cat /dev/ttyATH0 на роутере:
Код: Выделить всёРазвернуть

received  d

received  v

received  r

received


received  i

received  e

received  c

received  e

received  r

received  r

received


received


received


received


received


received

received  d


Илдар
 
Сообщения: 72
Зарегистрирован: 26 июл 2013, 02:35
Откуда: Москва

Re: STM32L1 Discovery USART NVIC = отправка попадает на вход

Сообщение dccharacter » 24 окт 2013, 04:30

Мысль отправлять что-то в УАРТ в обработчике прерывания, безусловно, светлая. Но неправильная.
Мой волшебник это я сам. Всю архитектуру программы придумал лично, а ребята помогли воплотить её. Я бы и сам мог написать, но лень учить язык и его конструкции.
Аватара пользователя
dccharacter
 
Сообщения: 4995
Зарегистрирован: 10 дек 2010, 13:16
Откуда: Красногорск МО
прог. языки: C, Python, wiring/processing
ФИО: Андрей

Re: STM32L1 Discovery USART NVIC = отправка попадает на вход

Сообщение Angel71 » 24 окт 2013, 04:32

если есть ощущение, скорей всего так и есть. а так... не отправляйте в прерывании, это не есть гуд. :) скидывайте в пул буфера (или как вы обычно с многопоточностью/многозадачностью боретесь) и потом вне прерывания отправляйте.
Аватара пользователя
Angel71
 
Сообщения: 10668
Зарегистрирован: 18 апр 2009, 22:18
Предупреждения: -1

Re: STM32L1 Discovery USART NVIC = отправка попадает на вход

Сообщение Илдар » 12 янв 2014, 18:09

отправка вне прерывания дала такой же плохой результат.
Рабочим оказался вариант отправки вне прерывания с предварительным отключением прерываний.
Илдар
 
Сообщения: 72
Зарегистрирован: 26 июл 2013, 02:35
Откуда: Москва

Re: STM32L1 Discovery USART NVIC = отправка попадает на вход

Сообщение elmot » 12 янв 2014, 18:51

Angel71 писал(а):если есть ощущение, скорей всего так и есть. а так... не отправляйте в прерывании, это не есть гуд. :) скидывайте в пул буфера (или как вы обычно с многопоточностью/многозадачностью боретесь) и потом вне прерывания отправляйте.

Чо не гуд-то? Думаю просто срабатывает прерывание по ушедшему байту тоже. Вектор там, кажется, один и тот же, в регистре данных завалялся байт на отправку.
Аватара пользователя
elmot
 
Сообщения: 5691
Зарегистрирован: 10 ноя 2011, 12:02
Откуда: Turku, Finland
Skype: elmot73
прог. языки: Java и все-все=все
ФИО: Илья

Re: STM32L1 Discovery USART NVIC = отправка попадает на вход

Сообщение dccharacter » 13 янв 2014, 19:02

в смысле кидать строки в уарт в прерывании - это гут?
Мой волшебник это я сам. Всю архитектуру программы придумал лично, а ребята помогли воплотить её. Я бы и сам мог написать, но лень учить язык и его конструкции.
Аватара пользователя
dccharacter
 
Сообщения: 4995
Зарегистрирован: 10 дек 2010, 13:16
Откуда: Красногорск МО
прог. языки: C, Python, wiring/processing
ФИО: Андрей

Re: STM32L1 Discovery USART NVIC = отправка попадает на вход

Сообщение elmot » 13 янв 2014, 19:47

Ну целые строки не гуд:) Разве что в другой уарт, где скорость многократно выше.
Аватара пользователя
elmot
 
Сообщения: 5691
Зарегистрирован: 10 ноя 2011, 12:02
Откуда: Turku, Finland
Skype: elmot73
прог. языки: Java и все-все=все
ФИО: Илья


Вернуться в ARM

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 2