STM32 новичку в ARM что к чему

Кто любит RISC в жизни, заходим, не стесняемся.
Аватара пользователя
B@R5uk
Собутыльник Кота
Сообщения: 2896
Зарегистрирован: Сб ноя 13, 2010 12:53:25
Откуда: приходит весна?

Re: STM32 новичку в ARM что к чему

Сообщение B@R5uk »

a5021 писал(а):...оно по три раза одни и те же регистры прописывает одними и теми же значениями...
В компиляторе был установлен режим оптимизации "максимально близко к тесту"?
a5021
Друг Кота
Сообщения: 6452
Зарегистрирован: Пт сен 13, 2013 13:11:31

Re: STM32 новичку в ARM что к чему

Сообщение a5021 »

Оптимизация тут ни при чем. В разных местах выполняются одни и те же действия по инициализации.
Аватара пользователя
ChipKiller
Сверлит текстолит когтями
Сообщения: 1163
Зарегистрирован: Ср янв 05, 2011 16:25:15

Re: STM32 новичку в ARM что к чему

Сообщение ChipKiller »

a5021 писал(а):Идея этого куба, безусловно, здравая, но то, в каком он состоянии сейчас находится -- сей продукт разработчики, максимум, могли бы показывать втихаря друг-другу..
В этом нет ни чего удивительного. У ST-шников много софта сделано в стиле "отъе...ись" - взять ту же STVD. Они и сами это понимают, иначе как объяснить появление stm32snippets :) С другой стороны изобилие аппаратных возможностей лишим не бывает, да и стоят их творения весьма не дорого....
a5021
Друг Кота
Сообщения: 6452
Зарегистрирован: Пт сен 13, 2013 13:11:31

Re: STM32 новичку в ARM что к чему

Сообщение a5021 »

Сами камешки весьма неплохи, тут и спора быть не может. С учетом же соотношения фичи/цена, так и вовсе лучшие в классе. Но вот с экосистемой вокруг них уже не столь все радужно. Софт кривой, либы горбатые, доки дырявые. Конкретный пример из моей недавней практики, когда RM0360 описывает поведение камня не полностью и не совсем так, как это есть на самом деле: на странице 199 описывается "DMA one shot mode (DMACFG=0)" -- режим, когда контроллер DMA, приняв от АЦП (работающего в безостановочном режиме) требуемый объем данных, останавливает АЦП и отбрасывает результаты преобразования, если они успели появиться после завершения трансфера. Казалось бы, все просто, логично и пользоваться этим может быть удобно. Только выясняется, что мануал недоговаривает весьма существенные нюансы, а именно, когда точно АЦП будет остановлен. По логике вещей, АЦП должен уже быть остановлен, когда взводится флаг окончания трансфера. Только нифига это не так. АЦП продолжает себе барабанить и останавливается лишь по завершению очередного преобразования. Казалось бы пустячок, там времени то всего какие-то доли микросекунды. Только этот пустячок приводит к довольно неприятным последствиям, если до остановки АЦП успеть проинитить DMA, загодя готовя его под следующий трансфер. И вот тут случается совсем неожиданное -- АЦП не останавливается вовсе, а DMA начинает исправно набивать до упора буфер данными, которые появляются там совсем не в то время, когда нужно. Зато когда срабатывает триггер на запуск преобразования, никакого запуска не случается, т.к. канал DMA еще фиг знает когда отработал трансфер и данные давно тухнут в буфере. При всем этом бардаке не существует никакой сигнализации, что где-то что-то пошло не так, а в мануале нет ни пол-слова, что нельзя трогать DMA, пока АЦП не остановится.

Ну и какого хрена, спрашивается? Я должен каждую описанную в мануале процедуру проверять самостоятельно на предмет того, насколько точно она соответствует заданию и нет ли в этом описании существенных недомолвок? В общем, не очень радостно все это.
Аватара пользователя
Pavel_1978
Опытный кот
Сообщения: 830
Зарегистрирован: Пт ноя 16, 2007 11:21:37

Re: STM32 новичку в ARM что к чему

Сообщение Pavel_1978 »

А если при этом пытаться пользоваться их ХАЛом то вообще мрак, у меня на работе коллега неделю пытается победить АЦП+ДМА но не так как в примерах, а как нам нужно...
Сидим курим мануалы и все больше склоняемся к передергиванию регистров ручками как на МСП430....
Ну нахрена спрашивается он этот Куб нужен....
a5021
Друг Кота
Сообщения: 6452
Зарегистрирован: Пт сен 13, 2013 13:11:31

Re: STM32 новичку в ARM что к чему

Сообщение a5021 »

Ну пока его можно использовать, как ногораспределитель и посмотреть иногда, как тактируются блоки. Остальное, на данный момент, малоупотребимая штука.
Аватара пользователя
B@R5uk
Собутыльник Кота
Сообщения: 2896
Зарегистрирован: Сб ноя 13, 2010 12:53:25
Откуда: приходит весна?

Re: STM32 новичку в ARM что к чему

Сообщение B@R5uk »

На мой взгляд, использования CMSIS вполне достаточно, чтобы удобно реализовать всё, что необходимо. И нет всяких заморочек с ХАЛом. То же самое ручное дрыгание портов, только константы и порты имеют более-менее человеческое название.
Аватара пользователя
dosikus
Друг Кота
Сообщения: 3604
Зарегистрирован: Пн июл 28, 2008 22:12:01

Re: STM32 новичку в ARM что к чему

Сообщение dosikus »

a5021 писал(а):При всем этом бардаке не существует никакой сигнализации, что где-то что-то пошло не так, а в мануале нет ни пол-слова, что нельзя трогать DMA, пока АЦП не остановится.


Давайте я за вас почитаю г-н теоретик аурдуньи :
DMA one shot mode (DMACFG=0)
In this mode, the ADC generates a DMA transfer request each time a new conversion data
word is available and stops generating DMA requests once the DMA has reached the last
DMA transfer (when a DMA_EOT interrupt occurs, see Section 10: Direct memory access
controller (DMA) on page 151) even if a conversion has been started again.
When the DMA transfer is complete (all the transfers configured in the DMA controller have
been done):
• The content of the ADC data register is frozen.
• Any ongoing conversion is aborted and its partial result discarded
• No new DMA request is issued to the DMA controller. This avoids generating an
overrun error if there are still conversions which are started.
• The scan sequence is stopped and reset
• The DMA is stopped


И даже выделю дабы " меньше букав"

No new DMA request is issued to the DMA controller. This avoids generating an
overrun error if there are still conversions which are started.



a5021 писал(а):Ну и какого хрена, спрашивается? Я должен каждую описанную в мануале процедуру проверять самостоятельно на предмет того, насколько точно она соответствует заданию и нет ли в этом описании существенных недомолвок? В общем, не очень радостно все это.


Подобные высеры присущи новичкам привыкшим читать пережеванные мануалы аля "тыкай как я"
а не техническую литературу . Чтение коей само-собой подразумевает элементарные базовые знания.
В none-circular mode в прерываниях по окончанию тансфера проверяем состояние периферии - логично, не так ли?

А так прогресс на лицо - уже занялся периферией STM , глядишь скоро и озарение придет .
Уже не воспринимаются бредом наши с Стасом доводы, а ?
a5021
Друг Кота
Сообщения: 6452
Зарегистрирован: Пт сен 13, 2013 13:11:31

Re: STM32 новичку в ARM что к чему

Сообщение a5021 »

Давайте я за вас почитаю г-н теоретик аурдуньи :

Видимо только один раз почитать "за меня" вам явно не достаточно. Почитайте за меня три-пять раз подряд. Это цитата со страницы 199, на которую я, собственно, и ссылался, а вы мне тут ее божественным откровением представить пытаетесь. Нечего сказать? Не понимаете? Не нужно в разговор встревать.


No new DMA request is issued to the DMA controller. This avoids generating an
overrun error if there are still conversions which are started.


Зачем вы суете цитату, не поняв сути мной описанного? Проблема, как раз и заключается в том, что не смотря на этот текст, реквест однозначно происходит при описанных мной условиях. Это как раз то место, где мануал противоречит наблюдаемой картине. Об этом я тоже уже говорил.

Подобные высеры присущи новичкам привыкшим читать пережеванные мануалы аля "тыкай как я"
В none-circular mode в прерываниях по окончанию тансфера проверяем состояние периферии - логично, не так ли?

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

Уже не воспринимаются бредом наши с Стасом доводы, а ?

Вы с размаху смачно въехали лицом в грязь. Ничего не меняется.
Аватара пользователя
dosikus
Друг Кота
Сообщения: 3604
Зарегистрирован: Пн июл 28, 2008 22:12:01

Re: STM32 новичку в ARM что к чему

Сообщение dosikus »

Да , весьма тяжелый случай . Из всего словесного поноса изреченного вами , можно сделать вывод что и образование и склад ума у вас гуманитарный . Ну значится будем повторять несколько раз ...

Выделенная мной фраза означает что, периферия живет своей жизнью и окончание передач DMA не означает окончание ее работы.
Это само-собой разумеющие вещи , но только не для аурдуино дрочера , в глаза не видевшего железа.
И так еще раз:
В none-circular mode в прерываниях по окончанию тансфера проверяем состояние периферии.
В зависимости от ситуации или ждем окончание работы периферии или выключаем ее.


Вперед любитель аурдуньи , вас ждет еще масса "открытий" и разочарований.
a5021
Друг Кота
Сообщения: 6452
Зарегистрирован: Пт сен 13, 2013 13:11:31

Re: STM32 новичку в ARM что к чему

Сообщение a5021 »

dosikus писал(а): И так еще раз:
В none-circular mode в прерываниях по окончанию тансфера проверяем состояние периферии.
В зависимости от ситуации или ждем окончание работы периферии или выключаем ее.


О чем эти возбужденные фантазии, если вы же сами цитировали, что:

when a DMA_EOT interrupt occurs .. When the DMA transfer is complete

- содержимое регистра данных АЦП зафиксировано;
- идущие преобразования прерваны и результаты отброшены;
- если преобразования в этот момент продолжались, то нового запроса на трансфер не происходит;
- сканирование прекращено и последовательность установлена в начальное состояние;
- DMA остановлено.


И где тут про "проверяем состояние периферии", а главное, зачем бы оно тут нужно, если черным по белому написано, что "когда трансфер закончен", все относящееся к нему прервано и остановлено? Ну и кто тут выпускник библиотечного факультета с плохой успеваемостью?
Аватара пользователя
dosikus
Друг Кота
Сообщения: 3604
Зарегистрирован: Пн июл 28, 2008 22:12:01

Re: STM32 новичку в ARM что к чему

Сообщение dosikus »

Вы в своей упертой тупости решили превзойти себя же? :)))
Ранее ,когда вам популярно объясняли что в STM легко воплотить аппаратные реализации, надо было слушать и вникать а не вставать в позу и изливать словесные фекалии. И вот если до вас дойдет что периферия работает автономно и при остановках подобных окончанию трансфера DMA , ее (периферию) надо вручную чистить/инициализировать или ожидать готовности для повторного использования - может и снизойдет озарение.
Странно что такие элементарные вещи приходится объяснять человеку позиционирующему себя как профи. Наверняка он просто болтун , не так ли? :)))
a5021
Друг Кота
Сообщения: 6452
Зарегистрирован: Пт сен 13, 2013 13:11:31

Re: STM32 новичку в ARM что к чему

Сообщение a5021 »

dosikus писал(а):Вы в своей упертой тупости решили превзойти себя же? :)))
И вот если до вас дойдет что периферия работает автономно и при остановках подобных окончанию трансфера DMA , ее (периферию) надо вручную чистить/инициализировать или ожидать готовности для повторного использования - может и снизойдет озарение.

И зачем вы тогда цитировали мануал, согласно которому там все уже остановлено и очищено? Виляете, досикус? Кривляетесь в обычной своей манере? Какое еще в баню талмудическое толкование RM0360 ?
Аватара пользователя
dosikus
Друг Кота
Сообщения: 3604
Зарегистрирован: Пн июл 28, 2008 22:12:01

Re: STM32 новичку в ARM что к чему

Сообщение dosikus »

a5021 писал(а):И зачем вы тогда цитировали мануал, согласно которому там все уже остановлено и очищено?

Вилять и извиваться и кривляться это ваша прерогатива . Я все же ткну еще раз в ту самую фразу :

This avoids generating an
overrun error if there are still conversions which are started.


А именно во вторую ее часть которая ясно дает понять ту самую очевидную вещь - конвертирование не останавливается , замораживается взаимодействие ADC с DMA .
Как не останавливаются и другие модули периферии, например SPI коей имеет так же буферы FIFO за опустошением которых в none-circular mode надо так же следить и чистить вручную.
Осмыслите сие , перед набивание следующего словесного поноса ...
Аватара пользователя
hybroid
Друг Кота
Сообщения: 8007
Зарегистрирован: Вс ноя 14, 2010 19:24:26
Откуда: Лукалэнд

Re: STM32 новичку в ARM что к чему

Сообщение hybroid »

Ваша беседа в очередной раз доказывает всю хреновость поддержки ST :)))
a5021
Друг Кота
Сообщения: 6452
Зарегистрирован: Пт сен 13, 2013 13:11:31

Re: STM32 новичку в ARM что к чему

Сообщение a5021 »

dosikus писал(а):конвертирование не останавливается , замораживается взаимодействие ADC с DMA .

Завязываем с этими влажными фантазиями. Ничего там не "замораживается", с чего, собственно и начался разговор. Стоит только занести в каунтер DMA значение отличное от нуля, как эти "замороженные" дружно начнут набивать буфер в указанном объеме без каких-либо дополнительных стимулов. Приберегите это свое фуфло для кого-то более легковерного.
Аватара пользователя
oleg110592
Друг Кота
Сообщения: 3832
Зарегистрирован: Сб сен 10, 2011 17:46:25

Re: STM32 новичку в ARM что к чему

Сообщение oleg110592 »

доказывает всю хреновость поддержки ST

никто, наверное, и не обращался в поддержку, поиском по форуму подобной проблемы не нашел (или плохо искал)
https://my.st.com/public/STe2ecommuniti ... Items.aspx
a5021
Друг Кота
Сообщения: 6452
Зарегистрирован: Пт сен 13, 2013 13:11:31

Re: STM32 новичку в ARM что к чему

Сообщение a5021 »

Проверить наличие проблемы очень просто. Всю информацию для этого я здесь привел.
Аватара пользователя
oleg110592
Друг Кота
Сообщения: 3832
Зарегистрирован: Сб сен 10, 2011 17:46:25

Re: STM32 новичку в ARM что к чему

Сообщение oleg110592 »

dosikusу больше доверяю - я его давно знаю :)
Аватара пользователя
hybroid
Друг Кота
Сообщения: 8007
Зарегистрирован: Вс ноя 14, 2010 19:24:26
Откуда: Лукалэнд

Re: STM32 новичку в ARM что к чему

Сообщение hybroid »

oleg110592 писал(а):никто, наверное, и не обращался в поддержку, поиском по форуму ....
Термин "поддержка" шире. Документация - это тоже поддержка.
Ответить

Вернуться в «ARM»