Size: a a a

2021 March 25

E

Evgen in Embedded Group
Andrew K
по IDLE запоминаю текущее состояние CNT запускаю таймер, по его прерыванию смотрю приходили ли еще байты, если нет прием окончен
да я вот за такую идею
она мне больше всего нравится, будь у меня rto вообще бы не костылил
источник

AK

Andrew K in Embedded Group
в прерывании нужно статус регистр от ЮАРТА вычитывать в локальную переменную, потому как его вычитка влияет на многое
источник

AK

Andrew K in Embedded Group
и повторное чтение уже будет неправильным по отношению к возникшему прерыванию
источник

E

Evgen in Embedded Group
Andrew K
в прерывании нужно статус регистр от ЮАРТА вычитывать в локальную переменную, потому как его вычитка влияет на многое
статус idle?
источник

AJ

Arm Jedi in Embedded Group
Ком 123
Я делал так: запускаю dma на заголовок пакета * 2 по прерыванию половины заполнения буфера в нём же считаю длины и прямо в регистрах меняю значения размера буфера и адрес приёма данных + чищу флаги. Работало как часы=)
Отличное решение имхо
источник

AK

Andrew K in Embedded Group
а если в заголовке нет длины?))
источник

A

Alexander in Embedded Group
Ком 123
Я делал так: запускаю dma на заголовок пакета * 2 по прерыванию половины заполнения буфера в нём же считаю длины и прямо в регистрах меняю значения размера буфера и адрес приёма данных + чищу флаги. Работало как часы=)
++
Красиво
источник

AJ

Arm Jedi in Embedded Group
Andrew K
а если в заголовке нет длины?))
В модбас есть
источник

A

Alexander in Embedded Group
Andrew K
а если в заголовке нет длины?))
Тогда принимаешь всё до талого, мониторишь изменение счетчика.
источник

К1

Ком 123 in Embedded Group
Alexander
++
Красиво
Спасибо)
источник

AK

Andrew K in Embedded Group
Evgen
статус idle?
я про USART->SR
источник

К1

Ком 123 in Embedded Group
Andrew K
а если в заголовке нет длины?))
Тогда только поллинг. Ну и idle.
источник

E

Evgen in Embedded Group
Ком 123
Я делал так: запускаю dma на заголовок пакета * 2 по прерыванию половины заполнения буфера в нём же считаю длины и прямо в регистрах меняю значения размера буфера и адрес приёма данных + чищу флаги. Работало как часы=)
попробую, если сейчас не получится пример собрать
источник

К1

Ком 123 in Embedded Group
Evgen
попробую, если сейчас не получится пример собрать
Перезапускать dma, кстати, в этом варианте как раз можно в перывании по окончании приёма.
источник

AK

Andrew K in Embedded Group
Evgen
попробую, если сейчас не получится пример собрать
почитай еще про IDLE в эррате что-то там было не так с ним в F1
источник

E

Evgen in Embedded Group
Andrew K
почитай еще про IDLE в эррате что-то там было не так с ним в F1
я там у дядьки нашел пример он на ф1 написал
поэтому надеюсь, что я протестирую, а своё на уже ф0 сделаю
где буду тупо по биту RTO мониторить конец пакета
источник

AK

Andrew K in Embedded Group
да F1 это уже не для новых проектов МК)
источник

E

Evgen in Embedded Group
Andrew K
да F1 это уже не для новых проектов МК)
я прост жду, пины для H7 отладка лежит пинов нет, а дома из плат больше ничего нет, на безрыбье и f1 сойдет
источник

AK

Andrew K in Embedded Group
H7 это круто
источник

AC

Alexander Chernigin in Embedded Group
Добрый день! Господа, портирую прошивку с STM32F072 на STM32L072.
Столкнулся с понятной особенностью при записи флеша. На L0 запись идет ну очень медленно, раз в 10.
Если раньше процесс обновления прошивки занимал 10 секунд, то сейчас почти 2 минуты. Гугление показало что я не одинок. Якобы помогает запрещение прерывания в момент
записи и перенос функций в оперативку. Пробовал - эффекта ноль.
Кто-нибудь сталкивался в медленностью флеша в STM32L0? Или что я делаю не так?)
источник