В компиляторе был установлен режим оптимизации "максимально близко к тесту"?a5021 писал(а):...оно по три раза одни и те же регистры прописывает одними и теми же значениями...
STM32 новичку в ARM что к чему
- B@R5uk
- Собутыльник Кота
- Сообщения: 2896
- Зарегистрирован: Сб ноя 13, 2010 12:53:25
- Откуда: приходит весна?
Re: STM32 новичку в ARM что к чему
Re: STM32 новичку в ARM что к чему
Оптимизация тут ни при чем. В разных местах выполняются одни и те же действия по инициализации.
- ChipKiller
- Сверлит текстолит когтями
- Сообщения: 1163
- Зарегистрирован: Ср янв 05, 2011 16:25:15
Re: STM32 новичку в ARM что к чему
В этом нет ни чего удивительного. У ST-шников много софта сделано в стиле "отъе...ись" - взять ту же STVD. Они и сами это понимают, иначе как объяснить появление stm32snippetsa5021 писал(а):Идея этого куба, безусловно, здравая, но то, в каком он состоянии сейчас находится -- сей продукт разработчики, максимум, могли бы показывать втихаря друг-другу..
Re: STM32 новичку в ARM что к чему
Сами камешки весьма неплохи, тут и спора быть не может. С учетом же соотношения фичи/цена, так и вовсе лучшие в классе. Но вот с экосистемой вокруг них уже не столь все радужно. Софт кривой, либы горбатые, доки дырявые. Конкретный пример из моей недавней практики, когда RM0360 описывает поведение камня не полностью и не совсем так, как это есть на самом деле: на странице 199 описывается "DMA one shot mode (DMACFG=0)" -- режим, когда контроллер DMA, приняв от АЦП (работающего в безостановочном режиме) требуемый объем данных, останавливает АЦП и отбрасывает результаты преобразования, если они успели появиться после завершения трансфера. Казалось бы, все просто, логично и пользоваться этим может быть удобно. Только выясняется, что мануал недоговаривает весьма существенные нюансы, а именно, когда точно АЦП будет остановлен. По логике вещей, АЦП должен уже быть остановлен, когда взводится флаг окончания трансфера. Только нифига это не так. АЦП продолжает себе барабанить и останавливается лишь по завершению очередного преобразования. Казалось бы пустячок, там времени то всего какие-то доли микросекунды. Только этот пустячок приводит к довольно неприятным последствиям, если до остановки АЦП успеть проинитить DMA, загодя готовя его под следующий трансфер. И вот тут случается совсем неожиданное -- АЦП не останавливается вовсе, а DMA начинает исправно набивать до упора буфер данными, которые появляются там совсем не в то время, когда нужно. Зато когда срабатывает триггер на запуск преобразования, никакого запуска не случается, т.к. канал DMA еще фиг знает когда отработал трансфер и данные давно тухнут в буфере. При всем этом бардаке не существует никакой сигнализации, что где-то что-то пошло не так, а в мануале нет ни пол-слова, что нельзя трогать DMA, пока АЦП не остановится.
Ну и какого хрена, спрашивается? Я должен каждую описанную в мануале процедуру проверять самостоятельно на предмет того, насколько точно она соответствует заданию и нет ли в этом описании существенных недомолвок? В общем, не очень радостно все это.
Ну и какого хрена, спрашивается? Я должен каждую описанную в мануале процедуру проверять самостоятельно на предмет того, насколько точно она соответствует заданию и нет ли в этом описании существенных недомолвок? В общем, не очень радостно все это.
- Pavel_1978
- Опытный кот
- Сообщения: 830
- Зарегистрирован: Пт ноя 16, 2007 11:21:37
Re: STM32 новичку в ARM что к чему
А если при этом пытаться пользоваться их ХАЛом то вообще мрак, у меня на работе коллега неделю пытается победить АЦП+ДМА но не так как в примерах, а как нам нужно...
Сидим курим мануалы и все больше склоняемся к передергиванию регистров ручками как на МСП430....
Ну нахрена спрашивается он этот Куб нужен....
Сидим курим мануалы и все больше склоняемся к передергиванию регистров ручками как на МСП430....
Ну нахрена спрашивается он этот Куб нужен....
Re: STM32 новичку в ARM что к чему
Ну пока его можно использовать, как ногораспределитель и посмотреть иногда, как тактируются блоки. Остальное, на данный момент, малоупотребимая штука.
- B@R5uk
- Собутыльник Кота
- Сообщения: 2896
- Зарегистрирован: Сб ноя 13, 2010 12:53:25
- Откуда: приходит весна?
Re: STM32 новичку в ARM что к чему
На мой взгляд, использования CMSIS вполне достаточно, чтобы удобно реализовать всё, что необходимо. И нет всяких заморочек с ХАЛом. То же самое ручное дрыгание портов, только константы и порты имеют более-менее человеческое название.
Re: STM32 новичку в ARM что к чему
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 , глядишь скоро и озарение придет .
Уже не воспринимаются бредом наши с Стасом доводы, а ?
Re: STM32 новичку в ARM что к чему
Давайте я за вас почитаю г-н теоретик аурдуньи :
Видимо только один раз почитать "за меня" вам явно не достаточно. Почитайте за меня три-пять раз подряд. Это цитата со страницы 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 в прерываниях по окончанию тансфера проверяем состояние периферии - логично, не так ли?
Не логично в вашем случае тужиться тут с решением проблемы, которую я локализовал и описал возможный выход несколькими постами ранее.
Уже не воспринимаются бредом наши с Стасом доводы, а ?
Вы с размаху смачно въехали лицом в грязь. Ничего не меняется.
Re: STM32 новичку в ARM что к чему
Да , весьма тяжелый случай . Из всего словесного поноса изреченного вами , можно сделать вывод что и образование и склад ума у вас гуманитарный . Ну значится будем повторять несколько раз ...
Выделенная мной фраза означает что, периферия живет своей жизнью и окончание передач DMA не означает окончание ее работы.
Это само-собой разумеющие вещи , но только не для аурдуино дрочера , в глаза не видевшего железа.
И так еще раз:
В none-circular mode в прерываниях по окончанию тансфера проверяем состояние периферии.
В зависимости от ситуации или ждем окончание работы периферии или выключаем ее.
Вперед любитель аурдуньи , вас ждет еще масса "открытий" и разочарований.
Выделенная мной фраза означает что, периферия живет своей жизнью и окончание передач DMA не означает окончание ее работы.
Это само-собой разумеющие вещи , но только не для аурдуино дрочера , в глаза не видевшего железа.
И так еще раз:
В none-circular mode в прерываниях по окончанию тансфера проверяем состояние периферии.
В зависимости от ситуации или ждем окончание работы периферии или выключаем ее.
Вперед любитель аурдуньи , вас ждет еще масса "открытий" и разочарований.
Re: STM32 новичку в ARM что к чему
dosikus писал(а): И так еще раз:
В none-circular mode в прерываниях по окончанию тансфера проверяем состояние периферии.
В зависимости от ситуации или ждем окончание работы периферии или выключаем ее.
О чем эти возбужденные фантазии, если вы же сами цитировали, что:
when a DMA_EOT interrupt occurs .. When the DMA transfer is complete
- содержимое регистра данных АЦП зафиксировано;
- идущие преобразования прерваны и результаты отброшены;
- если преобразования в этот момент продолжались, то нового запроса на трансфер не происходит;
- сканирование прекращено и последовательность установлена в начальное состояние;
- DMA остановлено.
И где тут про "проверяем состояние периферии", а главное, зачем бы оно тут нужно, если черным по белому написано, что "когда трансфер закончен", все относящееся к нему прервано и остановлено? Ну и кто тут выпускник библиотечного факультета с плохой успеваемостью?
Re: STM32 новичку в ARM что к чему
Вы в своей упертой тупости решили превзойти себя же?
Ранее ,когда вам популярно объясняли что в STM легко воплотить аппаратные реализации, надо было слушать и вникать а не вставать в позу и изливать словесные фекалии. И вот если до вас дойдет что периферия работает автономно и при остановках подобных окончанию трансфера DMA , ее (периферию) надо вручную чистить/инициализировать или ожидать готовности для повторного использования - может и снизойдет озарение.
Странно что такие элементарные вещи приходится объяснять человеку позиционирующему себя как профи. Наверняка он просто болтун , не так ли?
Ранее ,когда вам популярно объясняли что в STM легко воплотить аппаратные реализации, надо было слушать и вникать а не вставать в позу и изливать словесные фекалии. И вот если до вас дойдет что периферия работает автономно и при остановках подобных окончанию трансфера DMA , ее (периферию) надо вручную чистить/инициализировать или ожидать готовности для повторного использования - может и снизойдет озарение.
Странно что такие элементарные вещи приходится объяснять человеку позиционирующему себя как профи. Наверняка он просто болтун , не так ли?
Re: STM32 новичку в ARM что к чему
dosikus писал(а):Вы в своей упертой тупости решили превзойти себя же?![]()
И вот если до вас дойдет что периферия работает автономно и при остановках подобных окончанию трансфера DMA , ее (периферию) надо вручную чистить/инициализировать или ожидать готовности для повторного использования - может и снизойдет озарение.
И зачем вы тогда цитировали мануал, согласно которому там все уже остановлено и очищено? Виляете, досикус? Кривляетесь в обычной своей манере? Какое еще в баню талмудическое толкование RM0360 ?
Re: STM32 новичку в ARM что к чему
a5021 писал(а):И зачем вы тогда цитировали мануал, согласно которому там все уже остановлено и очищено?
Вилять и извиваться и кривляться это ваша прерогатива . Я все же ткну еще раз в ту самую фразу :
This avoids generating an
overrun error if there are still conversions which are started.
А именно во вторую ее часть которая ясно дает понять ту самую очевидную вещь - конвертирование не останавливается , замораживается взаимодействие ADC с DMA .
Как не останавливаются и другие модули периферии, например SPI коей имеет так же буферы FIFO за опустошением которых в none-circular mode надо так же следить и чистить вручную.
Осмыслите сие , перед набивание следующего словесного поноса ...
Re: STM32 новичку в ARM что к чему
Ваша беседа в очередной раз доказывает всю хреновость поддержки ST 
Re: STM32 новичку в ARM что к чему
dosikus писал(а):конвертирование не останавливается , замораживается взаимодействие ADC с DMA .
Завязываем с этими влажными фантазиями. Ничего там не "замораживается", с чего, собственно и начался разговор. Стоит только занести в каунтер DMA значение отличное от нуля, как эти "замороженные" дружно начнут набивать буфер в указанном объеме без каких-либо дополнительных стимулов. Приберегите это свое фуфло для кого-то более легковерного.
- oleg110592
- Друг Кота
- Сообщения: 3832
- Зарегистрирован: Сб сен 10, 2011 17:46:25
Re: STM32 новичку в ARM что к чему
доказывает всю хреновость поддержки ST
никто, наверное, и не обращался в поддержку, поиском по форуму подобной проблемы не нашел (или плохо искал)
https://my.st.com/public/STe2ecommuniti ... Items.aspx
Re: STM32 новичку в ARM что к чему
Проверить наличие проблемы очень просто. Всю информацию для этого я здесь привел.
- oleg110592
- Друг Кота
- Сообщения: 3832
- Зарегистрирован: Сб сен 10, 2011 17:46:25
Re: STM32 новичку в ARM что к чему
dosikusу больше доверяю - я его давно знаю 
Re: STM32 новичку в ARM что к чему
Термин "поддержка" шире. Документация - это тоже поддержка.oleg110592 писал(а):никто, наверное, и не обращался в поддержку, поиском по форуму ....