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

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

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

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

Сообщение a5021 »

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

Сообщение ChipKiller »

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

Сообщение a5021 »

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

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

Сообщение Pavel_1978 »

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

Сообщение a5021 »

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

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

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

Сообщение 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 , глядишь скоро и озарение придет .
Уже не воспринимаются бредом наши с Стасом доводы, а ?
Друг Кота
Сообщения: 6452
Зарегистрирован: Пт сен 13, 2013 13:11:31

Сообщение 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 в прерываниях по окончанию тансфера проверяем состояние периферии - логично, не так ли?
Не логично в вашем случае тужиться тут с решением проблемы, которую я локализовал и описал возможный выход несколькими постами ранее.
Уже не воспринимаются бредом наши с Стасом доводы, а ?
Вы с размаху смачно въехали лицом в грязь. Ничего не меняется.
Друг Кота
Аватара пользователя
Сообщения: 3604
Зарегистрирован: Пн июл 28, 2008 22:12:01

Сообщение dosikus »

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

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


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

Сообщение a5021 »

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

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

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


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

Сообщение dosikus »

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

Сообщение a5021 »

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

Сообщение dosikus »

a5021 писал(а): И зачем вы тогда цитировали мануал, согласно которому там все уже остановлено и очищено?
Вилять и извиваться и кривляться это ваша прерогатива . Я все же ткну еще раз в ту самую фразу :
This avoids generating an
overrun error if there are still conversions which are started.
А именно во вторую ее часть которая ясно дает понять ту самую очевидную вещь - конвертирование не останавливается , замораживается взаимодействие ADC с DMA .
Как не останавливаются и другие модули периферии, например SPI коей имеет так же буферы FIFO за опустошением которых в none-circular mode надо так же следить и чистить вручную.
Осмыслите сие , перед набивание следующего словесного поноса ...
Друг Кота
Аватара пользователя
Сообщения: 8007
Зарегистрирован: Вс ноя 14, 2010 19:24:26
Откуда: Лукалэнд

Сообщение hybroid »

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

Сообщение a5021 »

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

Сообщение oleg110592 »

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

Сообщение a5021 »

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

Сообщение oleg110592 »

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

Сообщение hybroid »

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

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