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

 
 
> Обработка USART в прерывании, когда их много
toweroff
сообщение Jan 28 2017, 20:14
Сообщение #1


Гуру
******

Группа: Свой
Сообщений: 2 957
Регистрация: 19-09-06
Из: Москва
Пользователь №: 20 514



Боярины, вот ведь какая затыка вышла

Со всякими STM вроде как работало, но огульный (почти) копипаст ввел в ступор.
Несколько UART на одном прерывании (с 3 по 8)
сколько видел примеров - оно вот так (явно для одного):

Функция передачи
1. Смотрим на шайтан-флаг, если нормально: пишем в регистр, устанавливаем флаг прерывания. Если нет - кладем в буфер(если есть, куда положить). Шайтан-флаг в "мы запендюрили". Вернуни ок/плох

Прерывание
1. Есть в буфере? Отлично, отправляем.
2. Буфер пуст? Шайтан-флаг взлетел. Запретили прерывание

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

пните ногой у кого есть, сегодня совсем день тяжелый... победить быстро нужно



Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
uriy
сообщение Feb 1 2017, 11:59
Сообщение #2


Гуру
******

Группа: Свой
Сообщений: 2 429
Регистрация: 30-11-05
Из: Ижевск
Пользователь №: 11 606



Цитата
Поэтому, когда на передаче задано 2 стоп-бита, а на приеме один - работать будет, а вот наоборот не всегда.
Почти согласен, но по-моему в обратную сторону никогда работать не будет. Для STM оказывается можно даже задавать половинную длительность стоп бита.
Go to the top of the page
 
+Quote Post
gerber
сообщение Feb 1 2017, 12:07
Сообщение #3


Знающий
****

Группа: Участник
Сообщений: 750
Регистрация: 1-11-11
Пользователь №: 68 088



Цитата(uriy @ Feb 1 2017, 14:59) *
Почти согласен, но по-моему в обратную сторону никогда работать не будет.

Отчего же, если пауза между фреймами более 1 битового интервала, то работать будет - приемник воспримет эту паузу как продолжение стоп-бита, только и всего.


--------------------
"... часами я мог наблюдать, как люди работают." (М. Горький)
Go to the top of the page
 
+Quote Post
zltigo
сообщение Feb 1 2017, 14:14
Сообщение #4


Гуру
******

Группа: Свой
Сообщений: 13 372
Регистрация: 27-11-04
Из: Riga, Latvia
Пользователь №: 1 244



Цитата(gerber @ Feb 1 2017, 14:07) *
Отчего же, если пауза между фреймами более 1 битового интервала, то работать будет - приемник воспримет эту паузу как продолжение стоп-бита, только и всего.

Именно так. "Стоп" это гарантированная минимальная пауза между посылками для компенсации разбега скоростей. Максимальная абсолютно любая, хоть 100 лет по времени.
Так что если UART работает с одним стопом, то будет работать и с полутора и с двумя и с 200000000 в любых комбинациях.



--------------------
Feci, quod potui, faciant meliora potentes
Go to the top of the page
 
+Quote Post

Сообщений в этой теме


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

 


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


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