roboforum.ru

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

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

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



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

dccharacter » 24 окт 2013, 04:30

Мысль отправлять что-то в УАРТ в обработчике прерывания, безусловно, светлая. Но неправильная.

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

Angel71 » 24 окт 2013, 04:32

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

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

Илдар » 12 янв 2014, 18:09

отправка вне прерывания дала такой же плохой результат.
Рабочим оказался вариант отправки вне прерывания с предварительным отключением прерываний.

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

elmot » 12 янв 2014, 18:51

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

Чо не гуд-то? Думаю просто срабатывает прерывание по ушедшему байту тоже. Вектор там, кажется, один и тот же, в регистре данных завалялся байт на отправку.

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

dccharacter » 13 янв 2014, 19:02

в смысле кидать строки в уарт в прерывании - это гут?

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

elmot » 13 янв 2014, 19:47

Ну целые строки не гуд:) Разве что в другой уарт, где скорость многократно выше.


cron
Rambler\'s Top100 Mail.ru counter