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

Кто любит RISC в жизни, заходим, не стесняемся.
Аватара пользователя
Eddy_Em
Собутыльник Кота
Сообщения: 2516
Зарегистрирован: Пт июл 12, 2019 22:52:01
Контактная информация:

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

Сообщение Eddy_Em »

[uquote="jcxz",url="/forum/viewtopic.php?p=3701798#p3701798"]Неужто на float было меньше чем на fixed даже с учётом добавившейся библиотеки эмуляции float?[/uquote]
Да, потому что пришлось пользоваться long'ами! А т.к. у МК нет аппаратного деления, то размер довольно прилично раздулся, когда софтовое деление long'ов подключилось.
Eddy_Em писал(а):Или у Вас библиотека эмуляции float уже где-то в программе используется и Вы поэтому её размер не учли? :)
Нет, больше нигде у меня флоатов не было. Я не тыкаю флоаты куда попало! И вообще, обычно стараюсь fixed point обходиться, чтобы не вылезать за пределы целочисленной арифметики.
jcxz писал(а):То есть, похоже, мы неудачно выбрали в качестве первого для изучения STM32F103.
Естественно! Это — самый неудачный камень ST. Эдакий "первый блин комом". У него и errata толстенная, и вообще косяков пруд пруди! Даже GPIO кривые... И регистры по-дурацки организованы.
afz писал(а):МК выбирается под задачу.
Не всегда. Если задачу можно решить на копеечном STM8S003, то почему бы и нет? Но все-таки, приятней работать с cortex'ами. Да и цены у них не такие уж высокие. Те же STM32F072 или пресловутый STM32F103 в LQFP48 стоят на али около доллара в партии 10 штук. Это всего лишь в 3 раза больше, чем STM8S003 (у которого к тому же и ног меньше, и периферия дохлей)!
Хотя, конечно, иногда очень не хватает cortex'а в каком-нибудь восьми-двенадцатиногом QFN...
Linux rules! Windows must die. Здравомыслящий человек добровольно будет пользоваться мастдаем лишь в двух случаях: под дулом автомата или под влиянием анального зонда.
Я на гитхабе, в ЖЖ
Реклама
Аватара пользователя
Oxford
Опытный кот
Сообщения: 819
Зарегистрирован: Вт окт 23, 2012 13:17:25
Откуда: Прокопьевск
Контактная информация:

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

Сообщение Oxford »

Eddy_Em не пори чушь про STM32F103
Инженер R@D

Telegram чат: https://t.me/radiowolf или в поиске приложения @radiowolf. Личка:@cncoxford
Реклама
Аватара пользователя
Eddy_Em
Собутыльник Кота
Сообщения: 2516
Зарегистрирован: Пт июл 12, 2019 22:52:01
Контактная информация:

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

Сообщение Eddy_Em »

Oxford, худшего дерьма, чем STM32F103 не сыскать!
Если бы оно не стоило по баксу за штучку, то никто бы им не пользовался! Потому что из более слабых есть отличные камни в нулевой серии, а из более дорогих — тот же F303!
Здесь чем-то ситуация на аврки похожа: никто в здравом уме не брал бы это [censored], но тут "внезапно" появляется абдурина на этом самом недомикроконтроллере. Все рады: никому не нужная продукция отлично продается, а рукожопые детишки с высоким ЧСВ могут почувствовать себя великими инженерами!
Linux rules! Windows must die. Здравомыслящий человек добровольно будет пользоваться мастдаем лишь в двух случаях: под дулом автомата или под влиянием анального зонда.
Я на гитхабе, в ЖЖ
Аватара пользователя
ARV
Ум, честь и совесть. И скромность.
Сообщения: 18656
Зарегистрирован: Чт дек 28, 2006 08:19:56
Откуда: Новочеркасск
Контактная информация:

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

Сообщение ARV »

Eddy_Em писал(а):а рукожопые детишки с высоким ЧСВ могут почувствовать себя великими инженерами!
вы-то точно не такой? помнится, неделю 1-wire мучали... и Cortex не помог.

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

Мой уютный бложик... заходите!
Реклама
Эиком - электронные компоненты и радиодетали
Аватара пользователя
Ярослав555
Поставщик валерьянки для Кота
Сообщения: 2081
Зарегистрирован: Пт май 31, 2013 17:14:38
Откуда: Украина, Винница

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

Сообщение Ярослав555 »

[uquote="Eddy_Em",url="/forum/viewtopic.php?p=3702180#p3702180"]а рукожопые детишки с высоким ЧСВ могут почувствовать себя великими инженерами![/uquote]
Это в точку. Приходят студенты устраиваться. Даешь задачу, например, модбас помониторить - и чет чсв поубавляется при виде потока хексов :)))
Реклама
Аватара пользователя
Мурик
Друг Кота
Сообщения: 3384
Зарегистрирован: Пн окт 11, 2010 19:00:08

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

Сообщение Мурик »

Eddy_Em писал(а):Потому что из более слабых есть отличные камни в нулевой серии
При этом забываете упомянуть что M0 аппаратно не поддерживает деление и не выровненный доступ к памяти из-за чего можно получить HardFault в том коде что прекрасно работает на упомянутых вами 103 и 303.
Реклама
Аватара пользователя
dosikus
Друг Кота
Сообщения: 3604
Зарегистрирован: Пн июл 28, 2008 22:12:01

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

Сообщение dosikus »

[uquote="ARV",url="/forum/viewtopic.php?p=3702196#p3702196"]помнится, неделю 1-wire мучали... и Cortex не помог.[/uquote]

1-wire на avr и на STM32 две большие разницы...
Аватара пользователя
Eddy_Em
Собутыльник Кота
Сообщения: 2516
Зарегистрирован: Пт июл 12, 2019 22:52:01
Контактная информация:

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

Сообщение Eddy_Em »

[uquote="ARV",url="/forum/viewtopic.php?p=3702196#p3702196"]помнится, неделю 1-wire мучали... и Cortex не помог.[/uquote]
Ну так вымучил же в конце-концов! Основной проблемой было то, что я пользовался библиотекой opencm3. Ее функции перевода режима таймеров выполнялись очень медленно, и получались "левые" выбросы.
Как только внутри стал оперировать только CMSIS, все заработало!
А после того, как создатели opencm3 поломали API, я решил, что зависеть от всяких нехороших людей не стоит, поэтому пишу сейчас на чистом CMSIS, без всяких библиотек.
Ярослав555 писал(а):модбас
Поубивал бы тех, кто в 21 веке этим пометом динозавров пользуется!!! Извращенцы чертовы.
dosikus писал(а):1-wire на avr и на STM32 две большие разницы...
С чего бы? Просто на аврках нет DMA, поэтому нужно на прерываниях делать. Но и на прерываниях я 1-wire делал — для STM8. А вот с аврками связываться не буду, хватило пары раз. Это просто ужас: дорогущий микроконтроллер, у которого возможностей меньше, чем у 16-рублевого STM8!!!
А если ты о абдуринщиках, то при чем здесь авр? (как-то встречал на каком-то форуме "реализацию" для абдурины: пока читается температура, ничего больше не работает!)
Мурик писал(а):забываете упомянуть что M0 аппаратно не поддерживает деление и не выровненный доступ к памяти
Не забываю: про деление я уже упоминал. А невыровненный доступ к памяти никто не любит. Вот только буквально пару часов назад я словил на STM32F103 hardfault потому что пытался во flash 59-байтные структуры писать... Написал зачем-то pragma ((packed)), хотя надо было оставить просто как есть — для выравнивания на 4 байта.
Linux rules! Windows must die. Здравомыслящий человек добровольно будет пользоваться мастдаем лишь в двух случаях: под дулом автомата или под влиянием анального зонда.
Я на гитхабе, в ЖЖ
jcxz
Мудрый кот
Сообщения: 1731
Зарегистрирован: Вт авг 15, 2017 10:51:13

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

Сообщение jcxz »

[uquote="Asmodey",url="/forum/viewtopic.php?p=3701917#p3701917"]Что сразу понравилось в периферии STM32, это прерывание по выходу напряжения на входе АЦП из заранее определенного диапазона. Этакий комбайн из АЦП и компаратора.[/uquote]Такое не только в STM32 есть. В других МК тоже видел аналогичное.
Последний раз редактировалось jcxz Вт сен 17, 2019 13:35:36, всего редактировалось 1 раз.
Аватара пользователя
ARV
Ум, честь и совесть. И скромность.
Сообщения: 18656
Зарегистрирован: Чт дек 28, 2006 08:19:56
Откуда: Новочеркасск
Контактная информация:

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

Сообщение ARV »

[uquote="dosikus",url="/forum/viewtopic.php?p=3702278#p3702278"]1-wire на avr и на STM32 две большие разницы...[/uquote]
конечно, ведь реализовать его без DMA, 100500 таймеров и еще чего-нибудь чуденсно-волшебного периферийно-аппаратного запрещено кодексом настоящего программиста. лучше неделю потерять, зато не пользоваться некошерным дрыгоногом... кстати, 1-wire премило реализуется USART-ом - прямо-таки непосредственно printf-ами.
Eddy_Em писал(а):Поубивал бы тех, кто в 21 веке этим пометом динозавров пользуется!!! Извращенцы чертовы
скромнее надо быть и спокойнее. убивец нашелся, панимаш... :)))
если рассматривать человека снизу, покажется, что мозг у него глубоко в жопе
при взгляде на многих сверху ничего не меняется...

Мой уютный бложик... заходите!
jcxz
Мудрый кот
Сообщения: 1731
Зарегистрирован: Вт авг 15, 2017 10:51:13

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

Сообщение jcxz »

[uquote="Eddy_Em",url="/forum/viewtopic.php?p=3702010#p3702010"]Да, потому что пришлось пользоваться long'ами! А т.к. у МК нет аппаратного деления, то размер довольно прилично раздулся, когда софтовое деление long'ов подключилось.[/uquote]
Деление - это всего одна функция. В отличие от всей float-library. Разница существенная.
Аватара пользователя
Eddy_Em
Собутыльник Кота
Сообщения: 2516
Зарегистрирован: Пт июл 12, 2019 22:52:01
Контактная информация:

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

Сообщение Eddy_Em »

ARV писал(а):ведь реализовать его без DMA, 100500 таймеров и еще чего-нибудь чуденсно-волшебного периферийно-аппаратного запрещено кодексом настоящего программиста
Это запрещено здравым смыслом. Все элементарно.
ARV писал(а):кстати, 1-wire премило реализуется USART-ом
Я видел у кого-то реализацию через UART+DMA. Тоже вариант, но мне не подходит: на используемом для той задачи камне было всего 3 UART'а, мне все три нужны были + USB.
Ладно, что мы об этой дряни? Я вот потерял приличное количество времени на то, чтобы осознать всю никчемность датчиков DS18. Теперь прекрасно понимаю, что использовать их не нужно.
jcxz писал(а):Деление - это всего одна функция.
Советую посмотреть объем этой "всего одной функции"! Она чуть ли не килобайт для uint32 занимает! А для uint64 еще добавляется неплохо.
Последний раз редактировалось Eddy_Em Вт сен 17, 2019 13:31:20, всего редактировалось 1 раз.
Linux rules! Windows must die. Здравомыслящий человек добровольно будет пользоваться мастдаем лишь в двух случаях: под дулом автомата или под влиянием анального зонда.
Я на гитхабе, в ЖЖ
jcxz
Мудрый кот
Сообщения: 1731
Зарегистрирован: Вт авг 15, 2017 10:51:13

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

Сообщение jcxz »

[uquote="Eddy_Em",url="/forum/viewtopic.php?p=3702010#p3702010"]
jcxz писал(а):То есть, похоже, мы неудачно выбрали в качестве первого для изучения STM32F103.
Естественно! Это — самый неудачный камень ST. Эдакий "первый блин комом". У него и errata толстенная, и вообще косяков пруд пруди! Даже GPIO кривые... И регистры по-дурацки организованы.[/uquote]
Не приписывайте мне чужих слов!!! Я такого не писал.

[uquote="Eddy_Em",url="/forum/viewtopic.php?p=3702010#p3702010"]Не всегда. Если задачу можно решить на копеечном STM8S003, то почему бы и нет?[/uquote]Если "её можно решить на нём" значит он - "под задачу". :))) Согласен с Oxford.

Добавлено after 7 minutes 11 seconds:
[uquote="Eddy_Em",url="/forum/viewtopic.php?p=3702336#p3702336"]Советую посмотреть объем этой "всего одной функции"! Она чуть ли не килобайт для uint32 занимает! А для uint64 еще добавляется неплохо.[/uquote]Не верю. Там самый обычный цикл со сдвигами и вычитаниями. Не может он быть КБ.
Аватара пользователя
Ярослав555
Поставщик валерьянки для Кота
Сообщения: 2081
Зарегистрирован: Пт май 31, 2013 17:14:38
Откуда: Украина, Винница

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

Сообщение Ярослав555 »

[uquote="Eddy_Em",url="/forum/viewtopic.php?p=3702326#p3702326"]Поубивал бы тех, кто в 21 веке этим пометом динозавров пользуется!!! Извращенцы чертовы.[/uquote]
Живет и здравствует. Умирать не собирается. А что есть на замену на растояния 200-500м?
Для гурманов на собесе могу сименсовский профибас предложить - обмен вроде прост, но чтобы заставить станцию работать, ее нужно правильно и последовательно настроить прямо из протокола на лету. Ох и задачка была 8) , да еще и на АВРке пришлось :)))
Аватара пользователя
Eddy_Em
Собутыльник Кота
Сообщения: 2516
Зарегистрирован: Пт июл 12, 2019 22:52:01
Контактная информация:

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

Сообщение Eddy_Em »

Ярослав555 писал(а):А что есть на замену на растояния 200-500м?
Медленный CAN, например. Или даже радиосвязь. Ну и, вообще-то, ethernet никто не отменял.
А если не слишком много помех, то и обычного RS485 с контролем ошибок хватит! Зачем там древний протокол, где нужно выдерживать паузы и т.п.? Уже 21 век! Время релейных переключателей (откуда, собственно, паузы и взялись) давно прошло!!!
Linux rules! Windows must die. Здравомыслящий человек добровольно будет пользоваться мастдаем лишь в двух случаях: под дулом автомата или под влиянием анального зонда.
Я на гитхабе, в ЖЖ
Аватара пользователя
Asmodey
Друг Кота
Сообщения: 6427
Зарегистрирован: Сб янв 28, 2006 22:47:24

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

Сообщение Asmodey »

[uquote="Eddy_Em",url="/forum/viewtopic.php?p=3702010#p3702010"]
jcxz писал(а):То есть, похоже, мы неудачно выбрали в качестве первого для изучения STM32F103.
Естественно! Это — самый неудачный камень ST. Эдакий "первый блин комом". У него и errata толстенная, и вообще косяков пруд пруди! Даже GPIO кривые... И регистры по-дурацки организованы.[/uquote]
Ооо! Тогда я тоже начну с него. Поскольку мой житейский опыт полностью подтверждает пословицу "Тяжело в лечении, легко в гробу" :)))

Господа, что насчет кейл скажете? С учетом того, что я STM в живую до сих пор не видел (кроме уже впаянных во всяком разном), а хотелось бы сразу хотя бы ногой дернуть без шаманских бубнов. Сообщество одобряет или как? Мне со стороны Keil показался довольно простым, а как на самом деле? Много подводных камней?
Астролябия-сама меряет, было бы что мерять!!!
Аватара пользователя
Ярослав555
Поставщик валерьянки для Кота
Сообщения: 2081
Зарегистрирован: Пт май 31, 2013 17:14:38
Откуда: Украина, Винница

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

Сообщение Ярослав555 »

[uquote="Eddy_Em",url="/forum/viewtopic.php?p=3702390#p3702390"]Медленный CAN, например. Или даже радиосвязь. Ну и, вообще-то, ethernet никто не отменял.
А если не слишком много помех, то и обычного RS485 с контролем ошибок хватит! Зачем там древний протокол, где нужно выдерживать паузы и т.п.? Уже 21 век! Время релейных переключателей (откуда, собственно, паузы и взялись) давно прошло!!![/uquote]
Я вижу у Вас знание протокола на высоте :)))
Нет там обязательных пауз, там есть таймауты - время на ответ, после которого слейв считается отсутствующим.
Обязательные, четкие паузы есть в передовом профибасе. и там это не наследие релейных схем, а способ автонастройки скорости. Ага, представляете - слейв сам на ходу определяет скорость обмена и через 2-3 пакета начинет отвечать.
jcxz
Мудрый кот
Сообщения: 1731
Зарегистрирован: Вт авг 15, 2017 10:51:13

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

Сообщение jcxz »

[uquote="Eddy_Em",url="/forum/viewtopic.php?p=3702390#p3702390"]Зачем там древний протокол, где нужно выдерживать паузы и т.п.? Уже 21 век! Время релейных переключателей (откуда, собственно, паузы и взялись) давно прошло!!![/uquote]Причём тут реле? :shock:
Паузы (интервалы) в modbus - это маркеры границ пакета. Кодонезависимому протоколу нужны символы, которых нет в потоке данных. Но (так как данные - бинарные) нет такого значения символа, который можно было бы использовать как маркер границы кадра. Поэтому в modbus используется внеполосный сигнал - интервал. С таким же успехом можно было в качестве внеполосного сигнала использовать BREAK или дополнительные сигналы (всякие RTS/DTR).
В этом и есть минус modbus-а: необходимость таких внеполосных сигналов. Потому что как только нужно ретранслировать такой протокол в другой физический интерфейс, в котором таких сигналов нет (например: TCP-сокет, где просто поток байт) - сразу возникают проблемы.
Есть много других протоколов, тоже кодонезависимых, но в которых, в отличие от modbus, в качестве маркеров границ кадра используются не внеполосные сигналы, а экранирование символов из потока. Т.е. - объявляется, что некий кодовый символ == XX - является маркером границы кадра, а байты данных, равные по значению этому символу, заменяются специальной кодовой последовательностью (экранируются). Такие протоколы гораздо легче передавать через разные каналы связи, а не только UART/RS-485. Потому что они представляют из себя для любого нижележащего канала связи - просто поток байт. И также такие протоколы легко инкапсулируются в другие протоколы. Опять же - в отличие от modbus.
Но у этих протоколов есть конечно тоже недостатки. Например - увеличение числа передаваемых байт. Хотя оно обычно несущественное.

А почему modbus распространён повсеместно: Просто большинство новичков ничего больше не знают. Да и знать не хотят... :dont_know:

Добавлено after 1 minute 45 seconds:
[uquote="Ярослав555",url="/forum/viewtopic.php?p=3702380#p3702380"]Живет и здравствует. Умирать не собирается. А что есть на замену на растояния 200-500м?[/uquote]А какое отношение протокол имеет к расстоянию? Вы что-же - думаете, что после 500м метров modbus как-то портится и перестаёт быть modbus-ом? :)))

Добавлено after 3 minutes 38 seconds:
[uquote="Ярослав555",url="/forum/viewtopic.php?p=3702434#p3702434"]Я вижу у Вас знание протокола на высоте :)))[/uquote]
Протокол != интерфейс. А CAN - это интерфейс. А протокол - это то, что и в каком формате по нему (CAN) ходит.
Аватара пользователя
Ярослав555
Поставщик валерьянки для Кота
Сообщения: 2081
Зарегистрирован: Пт май 31, 2013 17:14:38
Откуда: Украина, Винница

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

Сообщение Ярослав555 »

[uquote="jcxz",url="/forum/viewtopic.php?p=3702437#p3702437"]Протокол != интерфейс. А CAN - это интерфейс. А протокол - это то, что и в каком формате по нему (CAN) ходит.[/uquote]
модбас - это протокол, интерфейс: для RTU/ASCII - 485/422, для RTU-TCP - ethernet. не пойму о чем спор.
я модбас реализовывал десяток раз что на авр, что на стм. Нет там никаких временных рамок. Только таймаут конца посылки и таймаут неответа.
https://ru.wikipedia.org/wiki/Controller_Area_Network
"Непосредственно стандарт CAN компании Bosch определяет передачу в отрыве от физического уровня — он может быть каким угодно..."
Как раз таки выходит что CAN это протокол. :dont_know:

Добавлено after 6 minutes 44 seconds:
Почитал немножко о CAN. Там что реально максимальная длина пакета 8 байт? Это позор какой-то :))) Мне вот сейчас нужно гонять 150 регистров в модбасе, это 300 байт. Это же сколько запросов надо сделать? :)))
А в модбасе это 1 посылка. Всё быстро и оперативно.

Добавлено after 2 minutes 9 seconds:
Кроме того покажите мне HMI панельку с CAN :)))
jcxz
Мудрый кот
Сообщения: 1731
Зарегистрирован: Вт авг 15, 2017 10:51:13

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

Сообщение jcxz »

[uquote="Ярослав555",url="/forum/viewtopic.php?p=3702449#p3702449"]модбас - это протокол, интерфейс: для RTU/ASCII - 485/422, для RTU-TCP - ethernet. не пойму о чем спор.
я модбас реализовывал десяток раз что на авр, что на стм. Нет там никаких временных рамок. Только таймаут конца посылки и таймаут неответа.[/uquote]
Как же нет? А как граница кадра определяется? :) (при передаче через RS-485/422 конечно)

Добавлено after 2 minutes 18 seconds:
[uquote="Ярослав555",url="/forum/viewtopic.php?p=3702449#p3702449"]Почитал немножко о CAN. Там что реально максимальная длина пакета 8 байт? Это позор какой-то :)))[/uquote]
Странно что Вы рассуждаете о CAN, а такой базовой вещи о нём не знали. :)
А зачем делать запросы? Просто передавайте 300/8 кадров подряд.
Ответить

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