Хочу вкатится в разработку на stm32. Сначала стоит вопрос выбора отладочной платы. Что лучше взять: NUCLEO-F401RE или NUCLEO-F303RE ? Или может вообще, что то другое. Нужно максимальное количество АЦП для обработки звука. Какую среду разработки лучше использовать?
>>339005 (OP) Тут есть ARM-тред, в котором ты вполне мог бы задать свой вопрос. Хотя действительно есть некоторый смысл в раздельных тредах. >Или может вообще, что то другое. Именно. Ты бы посмотрел какие АЦП используют для звука. У тебя в компьютере сколько разрядов в АЦП для звука? А сколько в STM32? >Какую среду разработки лучше использовать? Это не не оказывает существенного влияния на процесс вкатывания. Но если спрашиваешь, то это будет в самый раз: https://www.instructables.com/id/Quick-Start-to-STM-Nucleo-on-Arduino-IDE/
>>339005 (OP) Ждал этот тред больше 3 лет. Мимо начинал свой путь освоения контроллеров с AVR в AtmelStudio и теперь сижу на STM32 с STM32CubeMX как на герыче сука. Если совсем с нуля хочешь вкатиться, возьми на али пару простых отладочных плат и программатор:
Эти платы пригодятся всегда, когда надо будет собрать что-то относительно простое и оставить работать на неопределенный срок, чтоб не дергать основную плату.
STM32F030F4P6 - самое ходове дерьмо для проверки датчиков, дисплеев и создания всяких тестовых простых девайсов, кароче аналог ардуины, только быстрее и лучше. STM32F103C8T6 - второе ходовое дерьмо из-за своей дешивизны и предоставляемых возможностей, достаточно памяти, интерфейсов и всего остального, чтоб сделать йобу с кучей датчиков, цветным дисплеем и всякими передающими модулями или прицепить к пеке по USB.
У меня еще валяются такие же платы с STM32F103RET6 и STM32F103RFT6, когда нужно совсем много памяти для графики или больших массивов данных, да и в целом 103я серия очень нравится. Также есть STM32F429I-DISCO - это былая моя первая отладочная плата STM32, с которой я начал свое изучение и пилил тогда фо фан систему использующую DSP для распознавания цветов и простых форм с Omnivision камеры + наложение информации на кадры и трансляция через ESP8266 модуль по WiFi, чтоб через обычный браузер смотреть - было очень интересно.
Насчет Nucleo, так себе варчик, особенно если больше 1 покупаешь - неоправданная переплата за програматор на плате и кучу перефирии - она будет только мешать (не будешь же ты выпаивать каждый раз какую-то лабуду с нее, когда нужны будут ножки на которой она висит). Лучше взять у китайцев с голой разводкой (если имеются нужные тебе варианты) и навешивать все свое, единственную Nucleo которую я б купил это с контроллером STM32F334R8 из-за наличия в нем таймера разрешением 217 пикосекунд и отсутствия самого контроллера на али.
По звуку ничего определенного не могу посоветовать, но как писали выше - бери плату с DSP. А по среде разработки советую связку STM32CubeMX + Keil + STMStudio. Сгенерил проект в кубе и пишешь себе код в лучшей IDE для ARM, а потом тестишь всякие баги или проводишь наблюдения в STMStudio, которая будет строить график изменения значения наблюдаемых переменных хоть целый день.
>>339689 А зачем тебе куб нужен, только ради схемки тактирования и пинов? Я просто сразу с регистров начал и Keil и не понимаю зачем вообще эти говнокубы и говнохалы. Единственное - приходится читать исходники хала и комментарии ибо бывает сложно понять что и в какой последовательности врубать для того чтобы врубить какую-нибудь периферию ибо в RM не всё так понятно расписано.
>>339752 Ради инициализации периферии, меня это заебывало на AVR - постоянно лезть в мануал потому что на каждой атмеге свои регистры и комбинации флагов для одной и той же настройки частоты шима или параметров uart. Потом то я надрочился с ними и запомнил, но когда перекатился на stm, решил ну его нахуй пусть генерит - за 3 года никаких проблем не было, тем более HAL'овские функции довольно хорошо написаны, изи понимать что там происходит когда дебажишь. А в кубе все задал, оно сгенерило функцию с инициализацией двух десятков параметров и тебе не надо лезть каждый раз в мануал на 300 страниц если надо что-то изменить, особенно это касается всяких DCMI, FMC, встроенного LCD-TFT контроллера и прочего.
>>339829 Открыл шебм, изображение на экране посыпалось, все в полоску стало, пришлось ресет жать, теперь стремно снова открывать, что это за хуйня была.
От треда у меня сложилось впечатление, что вы тут обсуждаете тысячекратно оверпрайснутые аналоги ардуины. Лучше бы накидали литературы, желательно на русском. А также плюсы-минусы разных средств разработки. И все это желательно с ориентиром на массовую дурино-подобную плату с STM32F103C8T6, дабы вкатиться мог любой бомж.
>>339844 Тебе для чего? Как можно быстрее что-то сделать или основательно вкатиться? Если первое - бери ардуину. >литературы, желательно на русском. 1) Без книг по Си по любому не обойтись. Конечно можно это заменить каким-то кратким курсом, но тогда знания останутся поверхностными. Для начала микроконтроллеры можно вообще не трогать, а примеры с упражнениями компилировать под винду (или что там у тебя). Хороших книг тут две: - Подбельский и Фомин http://publ.lib.ru/ARCHIVES/P/PODBEL%27SKIY_Vadim_Valerievich/_Podbel%27skiy_V.V..html - Керниган и Ричи. http://publ.lib.ru/ARCHIVES/K/KERNIGAN_Brayan_Vil%27son/_Kernigan_B.V..html Но в этих книгах есть существенная проблема - не рассматриваются нововведения C99, без которых (хотя и совсем малой части) для микроконтроллеров не обойтись. Об этих нововведениях нужно где-нибудь прочитать, хотя бы статейку нагуглить. 2) Нужно что-то для понимания того что такое процессор. Нужно понимание о том что такое система команд, гарвардская/фон-неймановская архитектура, CISC/RISC и прочее. В рамках этого пункта, для общего развития, неплохо было бы разобрать систему команд какого-нибудь простенького процессора и написать десяток строк на ассемблере. Тут я не знаю какую литературу советовать. 3) Ядро Cortex-МЗ компании ARM. Полное руководство. Джозеф Ю. Стоит прочитать, хотя бы по диагонали. 4) После того как осилишь предыдущие пункты, остается только открыть документацию на микроконтроллер, посмотреть примеры и понять куда тыкать в IDE.
>А также плюсы-минусы разных средств разработки. Это по вкусу.
>И все это желательно с ориентиром на массовую дурино-подобную плату с STM32F103C8T6, дабы вкатиться мог любой бомж. Вообще без разницы. Все отличие этих плат лишь в наличии/отсутствии встроенного отладчика и количестве светодиодов.
>>339847 >Тебе для чего? Для махараек. >бери ардуину. С нее и AVR заинтересован в перекате. >Без книг по Си по любому не обойтись В дроч регистров, ногодрыг и битовые операции могу, книг особо не читал. Думаешь, стоит? Для аврок вроде знаний хватало. Библиотеки с классами и ООП, конечно, не делал, но оно мне вроде и не нужно. >Нужно что-то для понимания того что такое процессор. Нужно понимание о том что такое система команд, гарвардская/фон-неймановская архитектура, CISC/RISC и прочее Зачем? Вещатели о CISC/RISC и прочих общих определениях в 99% случаев тоже нихуя не смогут объяснить внутреннее устройство процессора, глубже чем "вот этот квадратик - АЛУ, а вот эти стрелочки - шина данных". >для общего развития, неплохо было бы разобрать систему команд какого-нибудь простенького процессора и написать десяток строк на ассемблере Так открываем даташит на те же аврки и пишем, список команд с кратким описанием там дан. Чего тут разбирать-то? Ну и смысла в этом нет, только для общего развития. >3) Ядро Cortex-МЗ компании ARM. Полное руководство. Джозеф Ю. Стоит прочитать, хотя бы по диагонали. По диагонали определенно стоит изучить. >После того как осилишь предыдущие пункты, остается только открыть документацию на микроконтроллер, посмотреть примеры и понять куда тыкать в IDE. Т.е. я уже практически готов к секасу? >Это по вкусу. Ну, допустим. А какие самые популярные у махарайщиков, с большим коммьюнити? >отличие этих плат лишь в наличии/отсутствии встроенного отладчика Вот, кстати, важный момент. Где на компе тестить и симулировать код внутри МК? С аврками Протеус в этом деле все решает, а вот с стм32 полные непонятки.
>>339849 >В дроч регистров, ногодрыг и битовые операции могу, книг особо не читал. Думаешь, стоит? Ну если ты можешь сказать (не подглядывая) чем отличается i++ от ++i и знаешь, что в выражениях типы короче чем int, неявно приводятся к int, то наверное не нужно ничего читать. Даже если не знаешь, то для махараек и так сойдет. >Зачем? В основном для общего развития. Для махараек вобщем то не нужно. Но можно ли нормально программировать те же AVR, не зная что у них раздельные адресные пространства кода и данных? А это уже отличие фон-феймановской архитектуры от гарвардской и модифицированной гарвардской. >Так открываем даташит на те же аврки и пишем, список команд с кратким описанием там дан. Чего тут разбирать-то? Ну и смысла в этом нет, только для общего развития. Может и нет смысла. Но дает некоторое представление о том что может процессор. Например, явно не лишним будет знать, что в cortex-M0 и M1 нет команды деления, а в M3 остальных она есть. Те же DSP инструкции, которые выше обсуждали.
>Ну, допустим. А какие самые популярные у махарайщиков, с большим коммьюнити? Бери кейл. Остальные варианты те же что для AVR - это практически любые, не заточенные под микроконтроллеры IDE. Преимущество тут во множестве мелочей, которыми IDE отличается от блокнота. Недостатки и так должны быть понятны.
>Где на компе тестить и симулировать код внутри МК? На компе - толком нигде. Пошаговая отладка и прочие штуки - прямо на микроконтроллере через ST-Link, J-Link и прочие. ST-Link, как видно из названия, только для ST. J-Link для всех ARM.
Посоны, я правильно понял, что CMSIS это самый такой байтоебский способ погромирования, с прямым обращением к регистрам и прочее. HAL сродни ардуиновскому языку. А по SPL какой положняк?
>>339859 >Посоны, я правильно понял Может правильно, а может и вовсе неправильно. Особенно подозрительно про "ардуиновский язык". >А по SPL какой положняк? В первом приближении это мало чем отличается от CMSIS. Вот например на картинке код одной из функций SPL. Как видно, берутся поля из структуры и практически напрямую запихиваются в регистры. Преимущество по сравнению с CMSIS в том что не нужно помнить какой бит в каком регистре и меньше шансов что-то пропустить и ошибиться.
ST постепенно отказываются от SPL, поэтому использовать SPL не стоит. Сейчас у них есть LL, которая мало чем отличается от SPL. Хотя может я в чем-то не прав, т.к. за STM наблюдаю издали, так сложилось что мне приходится использовать другие микроконтроллеры.
>>339862 >Как видно, берутся поля из структуры Дополню, а то вдруг не совсем понятно окажется. В эту структуру уже все вручную пихается. Получается что документацию в части регистров все равно, как правило, необходимо читать.
>>339859 CMSIS - по сути просто набор определений регистров, чтоб тебе не пришлось в одном контроллере писать значения в TFIT1 и TFIT2, а в другом для той же настройки в TFIT3 и TFIT4, можно с помощью CMSIS в обоих случаях задавать через REGISTER_ZALYPI_1 и REGISTER_ZALYPI_2.
SPL - набор высокоуровневых либ, по сути надстройка над CMSIS, тебе уже не надо вписывать значения в регистры, а просто вызвать функцию с параметрами и она сама их впишет или прочитает. Это говно лишилось поддержки 4-5 лет назад и оставило после себя кучи говна примеров русскоязычного комьюнити, которые теперь бесполезны.
HAL - так как SPL было корявым поделием с кучей багов и проблем переноски кода с одного контроллера на другой, ST создали новый набор либ с учетом всех проебов и он оказался просто 10 из 10, если тебе надо написать что-то сложнее мигания лампочки по таймеру.
LL - низкоуровневый API, который ST выкатили относительно недавно, по сути является аналогом CMSIS, но лучше и полностью совместим с STM32Cube и HAL, тоесть можно использовать в проекте написанном на HAL в качестве оптимизированных вставок.
>>339849 >С аврками Протеус в этом деле все решает Чет вообще вголос с этого, ведь есть AtmelStudio, купи только программатор нормальный и наслаждайся всеми плюшками бесплатной IDE от производителя микросхем.
>>339869 >SPL - набор высокоуровневых либ, по сути надстройка над CMSIS >LL - низкоуровневый API, который ST выкатили относительно недавно, по сути является аналогом CMSIS Что-то ты странное пишешь. Вот на на картинке код функции из LL, выше код аналогичной функции из SPL. Как говорится, найди 10 отличий (кроме имен). Ну да, записываются чуть разные биты (назначение функций немного отличается). Еще вместо переменных tmpreg в LL используется макрос MODIFY_REG. Но существенных отличий нет. >по сути является аналогом CMSIS Вот только как видно из приведенного кода, LL это такая же надстройка над CMSIS как SPL. И LL ничуть не заменяет CMSIS, а наоборот его использует.
>>339843 >Поморгаешь диолдами и положишь на полку. Анус ставлю.
Ну у меня есть конкретная, промышленная задача под STM. Нужно писать звук с АЦП и передавать в комп. Желательно минимум 8 каналов одновременно. Максимум 16 хотелось бы. Качество звука не волнует. Главное чтобы речь можно было разобрать.
>>339829 >>339878 Сразу не понял что это именно ты, а то похоже тут пишут уже все вкатывальщики подряд. Если не делать цифровую фильтрацию, то по вычислительным возможностям слишком жирно для твоих задач, впрочем это не плохо. Немного хуже то, что периферия там сложнее, будет сложнее освоить. Если цифровую фильтрацию не делать, то DSP инструкции тоже почти не пригодятся. Зато АЦП наоборот слабенький, но все равно должно хватить. Насколько я помню, у NXP были микроконтроллеры с более серьезными АЦП, но тебе это вроде не требуется. Я правильно понял, ты писать на компе собираешься? Тогда суммарная скорость передачи на ПК будет небольшая - 16 бит на канал, частота дискретизации максимум 16 кГц и на 16 каналов - получается 4 МБит/с, это вообще ерунда.
>>339883 >а COM порт на плате сможет пропустить столько? У него вроде максимальная скорость 128000 байт в секунду. На материнской плате компа? По разному, но я больше 921600 бод/с (это 737280 бит/с) я не встречал. А микроконтроллер вполне может несколько мегабит выдать.
У тебя два варианта - USB и Ethernet. На счет USB посоветовать ничего толком не могу, т.к. делал только HID и то давно. Знаю только что есть стандартный аудио класс, но не знаю можно ли в нем сделать столько каналов. Впрочем можно сделать составное USB устройство, т.е. чтобы компьютером виделось как несколько устройств. Другой способ - это использовать FT232H или другие микросхемы от FTDI. Программно это намного проще, только для компа придется что-то придумывать. Сам я это не делал, но пользовался устройством где они применялись для передачи видео из ПЛИС. С Ethernet все можно сделать совсем просто. Если воткнуть в сетевуху компа напрямую, то можно обойтись без TCP/IP и слать RAW пакеты. С TCP/IP тоже не сложнее, только требований к микроконтроллеру может быть чуть больше.
>>339878 Есть же прекрасные мемс-микрофоны с полкой 20-20000 Гц, которые выдают уже цифровой выход правда, нужна обработка фильтром. Один такой даже стоит на stm32f4discovery
>>339889 > С TCP/IP тоже не сложнее, только требований к микроконтроллеру может быть чуть больше. Я поднимал lwip стек на m4, работал прекрасно с потоком примерно 10мбит/с. Главное, с буферами не мельчить
https://www.youtube.com/watch?v=VYhAGnsnO7w Пссст, там Дейв создал хайп про китайские МК по 3 цента в розницу. На сайте производителя есть IDE и шиты на ангельском. Реально найти и купить программатор. Т.е. все есть, только разбирайся. Фанатики STM8, по 40 центов за штуку, массово режут себе вены и вешаются. STM32-господа тоже в легком недоумении от китайского чуда. Но есть один подводный камень: все эти мк однократно программируемые.
>>339975 И это еще что, на том сайте есть китайские 16-битные ЦАПы по 30 центов и 16-битные АЦП по 50 центов... Вот это реально ШОК. Полагаю, ОП ёбнется под стол от охуения.
>>339975 Ну а смысл? Будто есть разница для единичных самоделок - 100 рублей или два рубля. Обычно в любом изделии, микроконтроллер это не самое дорогое, если это конечно не мигалка одним светодиодом. Или ты свои поделки делаешь сериями по тысяче штук? Тематике треда тоже не соответствует. Это восьмибитный микроконтроллер, а тут тред про STM32.
>>339979 Ну, вообще в видео речь шла про массовое производство. Но народ все-равно набежал. Забавно, что вскоре после выхода видео все запас тех мк резко раскупили. Тем не менее, магаз с китайскими брендами - это охуенная находка. >>339978 >16-битные АЦП по 50 центов 24-битные, фикс Есть даже дешевле.
>>339978 >Полагаю, ОП ёбнется под стол от охуения. Полагаю ему будет без разницы. Тем более ты наверное про одноканальные или двухканальные пишешь. На диджикее PCM1681PWP с восемью каналами стоит 4 доллара поштучно. А еще, внезапно, разрядность и частота дискретизации - это не единственные характеристики АЦП.
>>339981 >Тем не менее, магаз с китайскими брендами - это охуенная находка. Ты свои самоделки делаешь сериями по несколько тысяч штук?
Есть вопрос по теме. Предложили работу с программированием STM32 и обработке инфы с него на компе, построение графиков и прочее. Контора вроде занимается машиностроением. Глубокими знаниями по теме я не обладаю. До этого только занимался PIC-контроллерами на поверхностном уровне. И тут вопросы? 1)Тяжело ли новичку адаптироваться к сфере? 2)Актуально ли вообще в 2018 году вкатываться в встраивыемые системы? 3)Стоит ли заниматься этим, если вообще нет знаний по электронике дальше закона ОМА? Прогать под железо нравиться на отладочниках, но не нравиться разводка плат, расчёты электротехнические и прочее... 4)Насколько это творческая деятельность и насколько оплачиваемая? Куда может расти разработчик дальше?
>>340287 У меня создалось впечатление, что он тоже особо плотно не занимается. Фотки одни и те же, готовых девайсов не показывал. Наверняка ошибаюсь, но впечатление создалось именно такое.
>>339877 Ок ладно, согласен, LL не заменяет CMSIS, но нет особой разницы использовать чистый CMSIS или LL, который используется для инициализации периферии, а потом код пишется снова на CMSIS. Я например вообще HAL'о адепт, не понимаю почему его постоянно поливают грязью в ру комьюнити, при том что за рубежом все пользуются и довольны кроме небольшого количества заядлых байтодрочеров.
>>340299 Та нечего показывать, разработал 2,5 девайса, собираю и продаю их (в течении пары дней паяю платы и подготавливаю корпуса, которые продаю за 1-2 недели, остальное время кинчики смотрю или играю - на жизнь и обновление пеки/смартфона каждые пару лет хватает), последний год ничего нового на STM32 не писал, кроме ковыряния всяких новых датчиков и дисплеев с али. Пару раз в месяц достаю с ящика ESP32 в ожидании того, что наконец-то запилили нормальные библиотеки для асинхронного веб сервера под ESP-IDF...
>>340304 Что за девайсы? Может дашь каких советов, как найти свою нишу? Я хиккан-программист-фрилансер, имею средненькие знания электроники, паю махарайки для себя. Крутится идея создать стартап какой-то или типа того, в общем делать реальные вещи.
>>340303 >Я например вообще HAL'о адепт, не понимаю почему его постоянно поливают грязью в ру комьюнити, при том что за рубежом все пользуются и довольны кроме небольшого количества заядлых байтодрочеров.
Потому что кроилово на себестоимости и вытекающая из него байтооптимизация головного мозга.
>>340486 >>340693 Не хочу палить то что я делаю, потму что довольно востребованная херовина среди обычных людей и продается изи.
Двигайся в направлении бытовых систем автоматизации, которые будут дешевые по себестоимости и при этом не будет особо аналогов, кроме китайского говна с али. Например простой контроль температуры и влажности при помощи тэна/лампы и увлажнителя/осушителя - он лежит в основе инкубаторов, сушилок, хранилищ продуктов, климат контроля в доме. Добавляешь к этому свои фишки которые нужны пользователям или которых еще никто не делал и у тебя уже несколько устройств для разной целевой аудитории но с одинаковым принципом работы и элементной базой.
17-30: инициализирую периферию 32: подключаю USART6_TX к PC6 34-42: светодиодик для индикации 44-50: настройка PC6 (AF) 52-56: инициализация USART6 58-64: шлю байтик
Так вот, светодиод моргает, но PC6 как сидит в +3В, так и сидит, никаких данных не передает. В чем косяк может быть? Собираю arm-gcc-none-eabi в linux x64, шью через openocd.
>>341412 >никаких данных не передает Осциллографом или логическим анализатором смотрел? Может у тебя скорость неправильная?
Возможно у тебя проблема из-за неправильного определения тактовой частоты. Я давно ничего не делал с STM32, могу ошибаться. Если я правильно помню, то в дефолтном startup файле вызывается функция SystemInit (это не только у STM32, кажется это требование CMSIS), которая включает тактирование от кварца. Функция USART_Init, для того чтобы правильно посчитать делители, определяет тактовую частоту с помощью еще одной функции, которая использует дефайны с частотами генераторов, которые определяются (если не были определены) в stm32f4xx.h.
Наверное тебе следует глобально определить HSE_VALUE. Ну и еще ты зря используешь SPL.
>>341418 Осциллографом, пик 2. Данные должны иди через канал 1 (желтый) сразу после включения светодиода (канал 2, синий). Тактовая частота вроде верно настроена, пик 1.
Все, решилась проблема. В USART_Init вызывалась RCC_GetClocksFreq, которая лезла в глобально объявленный массив APBAHBPrescTable. А там был мусор. Убрал модификаторы volatile и все заработало. Теперь вопрос к знатокам - какого хуя?
>>341437 >>341438 Это скорее вопросы по стандарту Си или к компилятору. Разве оно там не static volatile const в результате получается? Попробуй через objdump -t посмотреть в каком сегменте оказывался этот массив.
>>341440 я немного ошибся, массивов два, один объявлен статически в XXX_rcc.c (APBAHBPrescTable), второй - глобально в system_XXX.c (AHBPrescTable). если вернуть все как было, то AHBPrescTable попадает в секцию .data в бинарнике.
>>341442 >>341441 Возможно ты это и так знаешь, но на всякий случай скажу. Очевидно, что секция .data должна инициализироваться в самом начале из флешки. Код этой инициализации находится в startup файле. И в скрипте линкера это тоже должно быть отражено. Если все переменные из секции .data не инициализируются, то это может быть из-за неправильного startup или скрипта линкера.
Хватит ли ресурсов контроллера, чтобы захватывать и слегка обрабатывать (смотреть среднюю яркость и превалирующий цвет) цветное аналоговое видео PAL или NTSC?
>>345085 Цвет и яркость по всему кадру? Или по краям экрана? Мне кажется что микроконтроллер тут лишний, хватит какой-нибудь телевизионной микросхемы TDA для выделения цветоразностных сигналов. Для получения средней яркости так вообще достаточно лишь пропустить привязанный по уровню видеосигнал через RC-цепочку. На микроконтроллере выделить цветоразностные сигналы должно быть затруднительно, как минимум потребуется довольно высокая частота дискретизации.
>>345172 Спасибо. Немного не так выразился. Нужно разбить кадр на участки квадратно-гнездовым способом (т.е. что-то типа таблицы) и определить средние цвет и яркость каждого участка (ячейки таблицы).
>>345238 Ерунду выдумываешь. Достаточно лишь получить цветоразностные сигналы на какой-нибудь телевизионной микросхеме, пропустить их через ФНЧ (в соответствии с ячейками таблицы) и в нужные моменты времени запустить АЦП. Длительность строки 64 мкс, даже на ардуине можно сделать запуск АЦП в нужный момент, если конечно ячейки не слишком мелкие. Это скорее задача для компьютера (может одноплатника) с easycap для видеозахвата.
Так, я тут заказал простейшую stm32f103c8-базед плату и ст-линк в2 прошивальщик и надеюсь на то, что первое время поучусь без обвязки контроллера. Нормально жи? Я просто хочу с ним пообщаться с пекарни типа "посчитай мне корень из пи". Мне кажется, что после традиционного погромирования так проще будет. Я вообще адекватно задачи ставлю по вкату? Потом, если чё, докуплю макет за 200 рублёв с диодами разноцветными.
>>345384 Думаю, что это гораздо адекватнее чем покупать пачку модулей или всякие демоплаты типа дискавырей. Лично мне идеальным видится вариант покупки под конкретную задумку, когда сначала придумываешь охуительный велосипед, а затем подбираешь под него железо, которое и осваиваешь в процессе. мимо
>>345547 >Дискавери-боярин занимается написанием кода Велосипед потом поедет по назначению, а дискавери отправится в небытие. Это примерно как делать детей или дрочить.
>>345566 >Велосипед потом поедет в помойку, а Дискавери-боярин будет отлаживать код вывода на дисплей и работу с памятью. Данную связку велосипедо-нищенка не сможет спаять своими кривыми ручонками и забросит затею. А почтенный Дискавери-господин закончит написание кода, отрисует схему своего йоба-устройства, спокойно сочинит печатку и закажет ее изготовление китайским мастерам. Затем спаяет свое устройство и зальет в него отлаженный и рабочий код.
>>345570 >дисплей и работу с памятью То есть во всех твоих самоделках, кроме микроконтроллера, дисплея, памяти и может быть батарейки, ничего более существенного нет?
>>345578 Ну а смысл делать такое на STM32? Не проще ли и дешевле взять одноплатный компьютер? Толку от дискавери не так много. Допустим захочется отмакетировать синтезатор частоты для радиоприемника или часы на неонках, сильно поможет дискавери по сравнению с простейшей платой? Или взять к примеру задачу ОП-а, ему будет какой-то толк от дискавери только если он решит использовать ethernet.
>>345563 > usb-uart Пичаль, а что тогда вообще st-link v2 делает? Я читал, он и шьёт, и дебажит. Т.е. доступ к памяти МК у него есть. Так почему бы через него не возвращать результаты?
>>345696 >Я читал, он и шьёт, и дебажит. >Т.е. доступ к памяти МК у него есть. Это все верно. Но printf-ами удобнее срать в UART. В отладчик тоже можно, например через SWO или semihosting, но по моему это не так удобно. Так что USB-UART дополняет отладчик.
>>345699 Можешь нищепример кинуть? Просто плата 120, отладчик столько же, а эти уарты нахожу по 800. Проще тогда борду докупить за 200 и моргать диодами, так там ещё фоторезюки в комплекте.
>>347146 >SPI >serial pereprherial interface >SERIAL Ну почему в вопросе опять ответ, а задавший его этого не видит? Конечно можно! Главное не мешай ему работать и всё. Тебе надо слушать MOSI, MISO по тактам через SCK.
>>347161 >Тебе надо слушать MOSI, MISO по тактам через SCK. Я только вчера с ардуины слез. Всё в теории выглядит довольно очевидно. Но где посмотреть пример кода для стм?
>>347164 А что ещё может STM32 передавать nRF24I01+ , кроме команд и данных? Или тебе лень проверять ВЕСЬ ЭФИР, НА ВСЕХ АДРЕСАХ И КАНАЛАХ? А ведь там 5 байт на адрес, лол.
>>347268 Не игрался с 40x серией, но ради интереса попробую помочь. 1) Вроде бы светодиоды на той плате сидят начиная с 12. Т.е. ты должен написать: GPIOD->MODER |= GPIO_MODER_MODE12_0; 2) Для светодиода можешь не трогать GPIOD->OSPEEDR 3) GPIOD->PUPDR тоже, ибо там 0 должны быть 4) Ну и далее уже GPIOD->ODR = GPIO_ODR_ODR12; (вроде, так, но ты понял в общем). 5) Если светодиод не зажёгся, возможно, следует писать 0 для зажигания(Это зависит от того где он сидит - на минусе или плюсе).
>>347268 Для начала выкинул бы строчку GPIOD->OTYPER &= ~(GPIO_OTYPER_OT0); Заглянул в документацию (ни камня, ни название доски) что висит на выводе PD0 и чем зажигать светодиод (есть вариант что его надо нулем зажигать). Без схемы ловить нечего.
>>347274 >>347275 Доска на пике. Использую свой внешний LED, хочу его через пин зыжечь, так что должно с любого пина работать, или я ошибаюсь? Собираю из под линукса с помощью arm-none-eabi-gcc, флешу через st-link v2. Флешится всё без проблем (по крайней мере так говорит мне программер). Говорит ли это о том, что я правильно компилирую? Может я там флагов каких-нибудь левых понапихал или еще чего...
>>347293 Та плата, что на прошлом моём пике, оказалась чуть другой. Нашел схему своей. Можешь для PF9 хекс запилить, пожалуйста? Прошил своим - опять ноль эмоций.
>>347297 На 429 камне стартанул код. Здесь PG14 зажигается единицей. Пикрил горит красным и сеанс отладки за заднем фоне. Мне кажется как-то не так прошиваешь хекс или страницы памяти не чистишь. В самом дубовом варианте попробуй через uart прошить - кажется бут0=1 , бут1=0 и через какую-то утилиту от st можно по компорту заливать прошивку. Нужен преобразователь уровней, напрямую к компорту подключать нельзя. Нужен как минимум usb-uart ttl преобразователь.
>>347297 Есть один вариант на проверку.. "install: main.bin st-flash write main.bin 0x8000000" Обращаем внимание - тут бин файл указываем, а тебе кидался хекс. Использовал внешнюю программу чтобы из HEX получить BIN? Кажется в этом косяк. Так и гуглить hex2bin.exe - старая консольная программка и обратная ей bin2hex.
>>347303 > st-flash хексы тоже кушает "Flash binary files to arbitrary sections of memory, or read arbitrary addresses of memory out to a binary file." - четко же написано что двоичные файлы кушает, а шестнадцатеричные - не файлы, а размеры и смещения.
Из лога компиляции linking... Program Size: Code=496 RO-data=408 RW-data=0 ZI-data=1632 FromELF: creating hex file... На диске test.hex занимает 2600 байт, а не полкилобайта. Преобразуй HEX в BIN и еще раз попробуй.
>>347303 Еще мелочь - (как минимум в Keil) - после заливки прошивки (flash->download) ничего не происходит до тех пор, пока руками камень не перезагрузишь. Те или ресет на нем нажать или по питанию передернуть. Ребут после заливки делал?
Кста, раз уж тут про хэллоуворды спрашивают, я тоже спрошу. Есть ли разница в форме импульсов ШИМ при использовании таймера и простого ногодрыга? Реально ли на stm32f103c8t6 разогнаться на частоту, хотя бы 2-х мегагерц? В регистрах то максимальная скорость 50мгц проскакивает, но вот что она значит и не будут ли фронты завалены?
>>347318 > Есть ли разница в форме импульсов ШИМ при использовании таймера и простого ногодрыга? Что GPIO, что Timer используют одинаковый тип выхода - Push-Pull. Разницы нет. > не будут ли фронты завалены? Зависит от емкости того, что подключено к выводу. Чем больше емкость, тем больше будут завалены и искажены. Как вариант можно взять только один вывод - MCO, на который выводить системную тактовую частоту. Настроек нет, доступен только меандр и с жестко заданной частотой.
Лень гуглить@Спрошу анона STM32F407. На какие пины можно выставлять прерывания? Если на все, то как сконфигурировать прерывания? У меня все кроме PA0 не дают повесить на себя прерывания в кьюбе.
>>347367 По даташиту на (почти) любую ногу можно повесить. Единственное что есть аццкая подстава - нельзя получить более 16 внешних прерываний, тк прерывание от PA6 PB6 PC6.. Px6 - это условно одно и то же прерывание и слушается только один порт. Что бы получить все 16 прерываний - нужны разные выводы портов от 0 до 15, сам порт (A-H) не важен (те например PA9 PB4 PC0 PG5.. - уже 4 прерывания).
>>347370 Забей на кукареканья шизиков-HALовцев, CMSIS и подобных - тебе нужны регистры: SYSCFG_EXTICRх - задается какой порт слушается и какой вывод (всего 4 регистра, в каждом 4 линии - нужно указывать с какого порта слушать) EXTI_IMR - разрешить прерывания с линии (0-15) EXTI_RTSR - какие линии (0-15) должны вызывать прерывание по ВОСХОДЯЩЕМУ фронту (0->1) EXTI_FTSR - какие линии (0-15) должны вызывать прерывание по НИСХОДЯЩЕМУ фронту (1->0) EXTI_PR - записью 1 сбрасывать флаг сработки прерывания (из обработчика или из основного цикла, если просто смотришь - произошло прерывание или нет).
Регистрация/разрешения прерывания в NVIC NVIC_EnableIRQ(EXTI1_IRQHandler); - На первые 5 прерываний (0-4) индивидуальные обработки, далее сгруппированы по 5 штук EXTI9_5_IRQHandler и EXTI15_10_IRQHandler. Глобальное разрешение прерываний __enable_irq(); Настойки GPIO не трогать, они должны оставаться входами (подтяжка по желанию).
Нашёл в кубе как выставить прерывания на пины, тупанул изначально. Мне нужно записывать сигнал, в тот момент когда он изменяется на пинах. Попробовал пока послать на него I2C, но почему-то либо вешается ардуино, с которой посылаю, либо просто прерывания не срабатывают. >>347376 Вроде бы я и понял, что ты мне описал, а вроде бы и нет. Как понять какая линия к какому входу подведет и чем это отличается от 16 линий, про которые сказал >>347370-анон? Могу ли я назначить прерывания более чем на 16 пинов, и если могу, то при пересечении двух пинов с противоположными подтяжками/уровнями сигнала (лог. единица и ноль) на одной линии, что произойдёт?
>>347384 > записывать сигнал, в тот момент когда он изменяется на пинах Обоссанное крылатое школололо с пердуино треда? Настаивай сработку прерывания по обоим фронтам. Хоть и большая частота у STM, можно соснуть ( https://habr.com/post/161617/ ). Вопрос интересный, может поищу можно ли как-то через DMA ловить.
> Назначить прерывания более чем на 16 пинов Нет, тк регистры SYSCFG_EXTICRх не дадут - там только выбор порта (A-..H) для конкретной линии (0-15) прерывания. Невозможно назначить прерывание на одноциферные(? незнаю как сказать) выводы разных портов - те одновременно ловить прерывания по линиям например PD6 и PH6 или PA6 или PC6 - невозможно, будет слушаться только что-то одно. > при пересечении двух пинов с противоположными подтяжками/уровнями сигнала Читай выше - это невозможно. Прерывание будет приходить только с того порта, который указан в SYSCFG_EXTICRх, другой порт никак не будет влиять.
Задавай лучше односложные вопросы - на них проще отвечать. Если брать пердуину (в частности AVR микроконтроллеры) - на древних версиях было всего 2(3) прерывания по уровню (INT0 INT1 INT2(асинхронное)) - 2 жестко выделенных вывода с настраиваемыми фронтами и 2 обработчика прерывания. На версиях посвежее появилась фича - pin change interrupt - оно НЕ настраиваемое по фронтам, только задается на изменение (любое 1->0 0->1) и какие биты порта, на все 8 бит порта один обработчик. В STM есть 5 "выделенных" обработчиков прерываний (0-4) и 2 групповых по 5 выводов, оказавшись в которых нужно смотреть по какой линии произошло прерывание (в отличие от 0-4, которые однозначно говорят по какой линии было прерывание). Если прям хочется всю шину снифать - мне кажется нужно CPLD ставить на входе. Завести на нее шину, поставить конвейер из 2 D триггеров с компаратором, которым ловить изменения на входе и достаточно будет всего одного прерывания, которое будет оповещать об изменении любого бита на шине, а не 16 обработчиков прерываний на каждую линию. Если почти сразу 2 прерывания сработает - можешь соснуть, тк пока просрешся на первое есть шанс потерять данные из второго прерывания (см ссылку выше). это один и тот же анон
>>347306 Анонче, спасибо тебе за твоё вчерашнее время. Прошивал без стартап файла. Даже не знал, что он нужен был. Вот уж не думал, что буду когда-нибудь еще буду так радоваться загоревшемуся леду. Пошёл читать даташиты.
>>347389 >Обоссанное школололо с пердуино треда? Да. Ну ты заебал, я ж не школоло >Невозможно назначить прерывание на одноциферные выводы разных портов Ок >Если почти сразу 2 прерывания сработает - можешь соснуть, тк пока просрешся на первое есть шанс потерять данные из второго прерывания (см ссылку выше). Если на разных пинах сработает прерывание, оно же просто встанет в очередь, не? На частоте 165mHz, или сколько там пиковая, прочитать с нескольких пинов значение и записать время - должен вписаться во временные рамки. Если только не все 16 пинов изменят состояние единоразово, но такие состояния я не встречу
>Задавай лучше односложные вопросы - на них проще отвечать. Ок, логично.
Тогда простым вопросом уйду немножко в другую степь: Как настроить USB? Есть готовые примеры с BULK передачей? Те готовые примеры что есть, пока завести не смог.
> на разных пинах сработает прерывание, оно же просто встанет в очередь Да. На групповых прерываниях если не все скопом флаги сбросил - то по выходу из прерывания еще раз в него же попадешь и не надо в конце прерывания проверять не пришло ли еще одно прерывание. Если будет более 2 подряд прерывания на одной линии - очень велик шанс их просрать при медленной реакции, тк нет счетчика числа прерываний, увидишь что было только одно.
> Как настроить USB? Есть готовые примеры с BULK передачей? С USB говном не работал и ебись оно конем разбираться в этих помоях и реализаций под каждую ось. Сам то хоть нашел СДК или либы через которые собрался принимать помои с USB шины? Пикрил - немного погуглил и используя православный Ethernet сразу на 3 разных машинки лилось дерьмище броадкастом по UDP - Windows, FreeBSD, Linux - все приняли это. Дальше на том же питоне или сях import socket и вперед. По временнЫм меткам видно что срет примерно каждую миллисекунду (os.Delay(1)) как и задумывалось. Скорость сам прикинешь.
>>347493 >ебись оно конем разбираться в этих помоях и реализаций под каждую ось Libusb же, просто не разобрался как она работает и почему не могу с ней достучаться к STM. Пока читаю этот https://damogranlabs.com/2018/02/stm32-usb-cdc/ гайд
Либа LibUsb-1.0. На команду библиотеки libusb_open_device_with_vid_pid(ctx, USB_VENDOR_ID, USB_PRODUCT_ID);, STM с сгенерированным в кубе HID-кодом, отзывается как должна. STM с кодом же CDC-устройства сгенеренном там же, в кубе, с этим запросом не работает (возвращается Null). Так же, при этом, устройство определяется в системе как COM-6, но ни один терминал не с ним работает как говорится в примере из интернета, мы должны получать ответ в терминале, от сгенерированного кубом кода.
>>347510 Как мне кажется - всем по хуй. Троллинга ради попробовал создать проектик CDC. Ну и пиздец, осталась огромная куча вопросов по режиму отладки этого говна. Запустил отладку. При самом первом прогоне кода до строчки 121 ничего не происходит(????). После первого прохода 121 строчки появляется компорт. После появления компорта при попытке подключиться putty снова сосу - даже окно терминала не появляется пока еще раз не выполнится 121 строка (или криво тестил или в этот проход спам не шлется). После третьего и последующего выполнения 121 строки уже шлется спам в терминал. Определенно этот быдлокод поломал манямирок - U$B шина активна всегда, даже если ничего не передается летают какие-то пакеты опроса есть че? и при останове(?) выполнения кода соединение не рвется и компорт не пропадает. При выходе из отладки/перезагрузке компорт пропадает, но putty не говорит что компорт недоступен (как при выдергивании FTDI или PL2303 и подобных) и при повторном прогоне кода в терминале тишина, ничего не шлется, а если закрыть терминал и заново открыть - говорит иди на хуй, не могу открыть, хотя он виден в диспетчере устройств. Перезайдя в отладку - пропадет компорт и см начало поста. WTF?
>>347764 >Перезайдя в отладку - пропадет компорт и см начало поста. WTF? Потому что микроконтроллер перестает отвечать компу, а спецификация USB устанавливает определенное время на ответ.
>>339005 (OP) Гуры, расскажите как вы организуете расположение папок в проекте? Я уже заебался копировать примеры стм и корректировать их. Получается какая-то безумная ебала с папками библиотек и исходников. Как захуярить отдельно неизменяемое местоположение либ и прочих халов и облако/гит своего говнокода, чтобы его можно было быстро найти?
>>347916 Забыл дописать. Если нужна периферия, а готовой репы нет, то ты обязан сделать отдельный готовый репозиторий из ошметков интернета и запушить на гитхаб, таким образом ты сделаешь жизнь другим легче. Ну и кидаешь эту репу в сабмодули. Реюзабельность +, карма +++
>>348495 Насколько хватило моих знаний ангельского и мощности гуглопереводчика, понял, что для работы RTC от Vbat необходимо тактирование часов от LSE. В демонстрационной программульке от ST, дохуя завязано на тактирование от LSI и желания разбираться в дебрях их кода у меня нет. Сейчас засяду писать сам свои часы и попробую еще раз.
А вот эти вот примеры, типа TouchGFX_Demo, студии пишут или йоба-программисты одиночки? Этож охуеть можно сколько кода надо написать. Он только канпилируется 7 минут.
>>348566 Дохуя всего параллельно, и мне немножко лень. Пока пилю I2C повторитель. К стати, анонче, подскажите нормальный пример I2C-Slave на LL, а то я ничего найти не могу даже те примеры которые я нашёл на хале, какие-то укуренные и не прозрачные.
Но если совсем не лень, то не откажусь от след. инфы: 1. От чего (от каких действий на I2C шине) срабатывает I2C1_EV_IRQHandler? 1.1 Возможно ли где-то прочесть, какой адрес всплыл на шине? Просто флаг ADDR в I2C_SR1 настораживает. 2. Как определить/обнаружить STOP и START на линии? ACK/NACK? 3. Как отправить NACK/ACK на мастера/слейва в передаче/приеме? 3. Как прижать SCL к нулю? Я понимаю, что ручной доступ есть не ко всем перечисленным вещам если мы говорим об аппаратном I2C, но мне пока не найти даже нормальный пример слейва на LL, так что сам не раскопаю даже то, к чему доступ получить явно можно. P.S: про STOPF в I2C_SR2 знаю, но без понимания всего процесса и того, как что срабатывает (особенно эвенты), я делать выводов не берусь
Даже нет, не так, подправлю: В принципе то понятно, когда срабатывает эвент сейчас с позиции слейва: как настроишь - на приходе адреса, при заполнении буффера, при срабатывании BTF, при получении стопа. Только не ясно, как понять, что на линии был старт. Или оно тогда и не надо, даже если это повторный старт? Просто в таком случае получим задержку в ~2 пакета. Хотелось бы конечно минимизировать, но если что - не смертельно. А NACK/ACK я хочу ставить сам, тогда когда мне удобно.
>>349270 Да вы батенька походу Reference Manual не открывали, или увидев овер 1К страниц открестился, закрыл и забыл как страшный сон. Что у тебя за побрякушка как платка называется и что за камень (полное название)? Мыльница говно. Открываю древний мануал Да, он бумажный, 4 страницы на листе. Как минимум его можно читать в сортире, делать пометки и пиздить им тех, до кого с первого раза не доходит. > 1. От чего (от каких действий на I2C шине) срабатывает I2C1_EV_IRQHandler? На странице 843 есть замечательная табличка, где видно как двумя битами включить и прерывания и события от блока I2C. Только вот незадача - два бита действуют глобально, те нельзя выбрать например автобус сломался и ошибка подтверждения. Очень внимательно почитай раздел Inter-Integrated circuit interface - он короткий. На первый взгляд только 2 адреса слейва себе можешь назначить. Остальное - через особо жесткие костыли. Возможно SPI+EXTI поможет ловить произвольные адреса. Что меня напрягает в IIC - нет таймаутов и можно основательно повесить шину, которая отвисает только после ребута по питанию или руками давать STOP, но это не всегда корректно, так как некоторые слейвы очень привередливы и STOP например после 5 тактовых импульсов игнорируют.
>>349288 У меня реф мануал немного отличается (RM0090 Rev 17), но суть та же. На эти страницы (IIC Functional Description) не обратил внимания, сейчас почитаю. Железка STM32f407. >Что меня напрягает в IIC - нет таймаутов и можно основательно повесить шину, которая отвисает только после ребута Так то в том же референсе есть намёки на то что можно и без этого перезапустить шину. Как минимум я видел что настраиваются какие-то тайм-ауты, есть определение подвешенной линии и контроль недопустимых состояний на шине. А сбросить шину ты можешь и программно, но это не точно
>>349270 Масштаб троллинга неуклонно растет и достиг опасных показателей. Собрал из подручного хлама - F429 под эмулятор, мега328 - для первоначальной отладки шины, онанокомп с линуксой под тестилку ебать она медленная, особенно i2cdump - на каждый байт оно дает команду записи адреса и потом команду чтения, но похуй - нашел говнокод на си - он чуть быстрее работает , логический анализатор, пара микросхем памяти и... CPLD на 64 макроячейки - может получится из нее сделать костыль I2C->SPI. На STM32F4 SPI умеет или 8 или 16 бит. Интересно, это все говно взлетит?
>>349363 Через жопу читал и мануал и пост повыше. В классической IIC нет таймаутов вообще. Таймауты в SMBUS (в компе можно найти). Повисший контроллер IIC можно попытаться "перезагрузить" через отключение и включение, но выше писалось про СЛЕЙВА, который считает такты и только спустя 9 тактов поймет команду СТОП и отпустит шину и игнорирует сигнал СТОП в другие моменты времени. Где-то видел описание подобных случаев.
>>349470 Посмотри проект если не сложо. Сгенерировал в кьюбе инициализацию, при установке адреса слейва1 зависает SCL на земле (пикрил). Если вернуть адрес в ноль, то всё нормально. Сравниваю с примером из интернета , вроде последовательность инициализации похожа, в функцию тоже всё приходит норм. Это на f103. https://yadi.sk/d/CDEei4OVxVj1DQ
>>349475 Кое как подогнал смехоту. 5 макроячеек из 64. Здесь за одно хорошо видно как тупит железка на линуксе и мне похуй. Это же proof of concept. Как у меня ебануло.. Черную магию что ли еще раз почитать? CPLD настолько нежная, быстрая и суровая, что ловит отраженку с конца никуда не подключенного примерно 40 см шланга и считает ее за реальные импульсы/фронты. Временно отключил - уже нет аномалий. Если правильно понял вывод - оно легко прожует и не подавится от IIC с тактовой 50 МГц. Смотреть на 7 и 5 анал, их "сумма"- 6 анал. Если включить мозги - догадаешься что это за костыль сбоку.
>>349485 Точного камня не знаю, но серия F1 оставила тяжелые воспоминания.. Сам поищешь подобное, тем более что или здесь или в пердуино треде говорилось что F103 и IIC - крайне хреновая затея из-за аппаратных глюков. Поэтому ебитесь как хотите со своей F103.
>>349475 Пока что переехал на циклон для обкатки. С учетом реального риалтайма есть бага, которую не пофиксить - возможна ошибка кадрирования не проверял еще. Поломали rarjpeg или нет?. Анал 5+6 - входные данные, анал 0+1 - "подогнанные" под формат SPI, которым в теории могу перехватывать с линии все, полностью игнорируя - мой не мой адрес. Это аццки тупая штука, которая дает ответы на вопросы > Как определить/обнаружить STOP и START на линии? Смотри фронты 2 и 3 анала. > ACK/NACK? В 8 бит не впишешь и по идее на хуй не надо, но выводится в отдельную линию - 4 анал.
Это не к месту в данной железке-коверкалке I2C в SPI >Как отправить NACK/ACK на мастера/слейва в передаче/приеме? I2C_CR1 Bit 10ACK: Acknowledge enable This bit is set and cleared by software and cleared by hardware when PE=0. 0: No acknowledge returned 1: Acknowledge returned after a byte is received (matched address or data)
> 3. Как прижать SCL к нулю? Руками, сделав перенастойку порта с периферии AFxx на режим GPIO и выдать 1, прижав линию к земле. Или снова заглянуть в I2C_CR1 Bit 7 NOSTRETCH: Clock stretching disable (Slave mode) This bit is used to disable clock stretching in slave mode when ADDR or BTF flag is set, until it is reset by software. 0: Clock stretching enabled 1: Clock stretching disabled
Пагни, кто-нибудь заводил этот(1.8 TFT ST7735S SPI 160x128) дисплейчик на stm32? Сначала заработал, подключил на следующий день, а у него только подсветка загорается и всё. Как понять что не так. Провода прозванивал тестером, все в порядке.
>>349475 Как оно меня заебало.. Какая-то странная фигня в виде глитчей, пропусков и прочей радости было когда подцеплен анализатором к одной из линий (scl или sda). Сделав из CPLD буфер-повторитель - как-то получше стало, минимум полдня просрал на шараду - одна и та же схема на FPGA работает, на CPLD - нет, зависимость от фазы луны не обнаружена, осциллографом с ходу ничего не нашел - поймать иголку(?) среди потока говна. Жуткая асинхронщина в CPLD, выдает глитчи (под конец виден). Пока нет идей где или из чего синхру взять. Анал 0+1 - исходные данные, анал 2+3 - закос под SPI, служебные сигналы (местами дублирующиеся) - аналы 4-6. Можно начинать дрючить STM32F429.
Анончики, поясните за I2C в STM32F10x. Что там за глюки страшные на практике? Смогу я к нему подключить часики? Там же вроде можно программно i2c, так?
>>349701 Ты отключал его перед тем, как он перестал работать? Пины точно не перепутал потом? Я как-то ебался с JLX жк экраном 20 минут, выясняя, почему он сегодня ничего не показывает, а потом наконец заметил перепутанные SDA и SCK. Прототипы на ардуинах - они такие.
>>349756 Мне удалось его запустить и потом не разбирая отложил всё в сторону. На следующий день он уже не запустился. С этих дисплейчиков можно считать какие-нибудь данные, чтобы понять что там с ним внутри происходит?
Где школота? Уроки учит? Или референс мануал раскуривает? Как у него успехи? Такой вот тупой быдлокод, пропитанный насквозь индусами и их стилем программирования подает признаки жизни. Здесь нет никакого буфера захваченного спама, как захвачен байт через SPI- сразу шлем через VCP. То что что-то теряется - поебать. Оно уже подает признаки жизни, дальше тюнинг всего этого. 0x15 (0x2A) - это и есть сам слейв на STM42F429, который косит под память 24_02 (256 байт). Походу ACK некорректно захватывается - идет задержка на цикл обмена. Делать сдвиг на 1 такт? Может и получится, надо только мозги для укрощения CPLD.
>>349864 http://we.easyelectronics.ru/khomin/i2c-programmnyy-stm32.html Если кратко - сам в соответствии с протоколом выключаешь-выключаешь выходной транзистор (включая - получаешь 0 на линии, отключая - получаешь 1 на линии). Например для условия СТАРТ SCL должен быть отключен (те 1 на линии) и включить выходной транзистор на линии SDA - притянется к 0. Если же отпустишь SDA - будет СТОП. Потом включаешь выходной транзистор на линии SCL - она притягивается к 0. Все, сигнал СТАРТ выдан и шина условно захвачена. Выход типа Push-Pull нельзя использовать, только OpenDrain.
>>349850 Реальные кулстори только в гугле и тематических форумах типа electronix.ru . Школота - это ты, тк в еррате написано - может ёбнуть в любой момент. Может сразу, может через час, может через пару калобайт, может вообще не проявиться. Баг описан, известен и подтвержден производителем, пробуй. Никто не запрещает, но предупреждают что возможен BSDM. Сам запилишь кулстори как перекопипастил программный IIC. Впервые с ним столкнулся на F103ZC и DS2482-100
>>349667 Братишка, ты отвечаешь на вопросы, но не на те, что я задаю. Я спрашивал как это всё делать на встроенном I2C. Ответ на определение стоп старта прост - запрограммировать логику. А на ACK/NAK так же в ручную не ответить. Ты мне ответил как это делать с твоими девайсами. Я спрашивал как прижимать SCL к нулю, в контексте действующего ресива/трансмита, ты мне ответил как вообще в принципе прижать. Ну ты понял. Про флаги в CR я в курсе, но там не очевидно как этим пользоваться. Нужен пример из кьюба например, но охуительные ребята из STM не могут добавить примеры, которые конвертировались бы в их собственную IDE
>>350047 Сейчас особо некогда пилить железку или быдлокодить - хотя на первый взгляд там мелочь осталась - кольцевой буфер вклеить. Fail. Пришла платка и могу 407 попробовать запустить и на работе иногда работать надо. Задам вопрос проще - нарисуй сигналы на шине и явно отметь моменты когда хочешь делать гадости. Рисовать максимально подробно, что бы были видны каждый такт шины и фронты + свои камменты - какую гадость хочешь сделать в данный отмеченный момент. Если собрался делать гадости прямо посреди передачи байта - без адовых костылей ничего не выйден.
>>350050 Я хотел решать, когда мне отвечать на ак/нак мастеру, беря это знание у слейва. Полагаю, это считается прямо посреди передачи байта. Жеппа. Самое тупое, что не могу до сих пор завести аппаратный I2C в Slave-режиме вообще. Ни на готовых Cube-примерах только что сообразил как их запустить в трустудио, ни просто написав код. Всё равно получается какая-то срака.
>>350056 Илья, залогинься. > Я спрашивал как это всё делать на встроенном I2C. > Ответ на определение стоп старта прост - запрограммировать логику. Нет. Нет. Нет. Просто START и STOP на линии блоком IIC не поймаешь. Бит START устанавливается только если твой блок IIC, настроенный в режиме слейва (увидел старт) И (увидел свой адрес на шине), после чего битом ACK или говоришь что я тут или шлешь NACK мастера. Аналогично со СТОПом - только если твой слейв понял что с ним общение УЖЕ ведется, тогда он распознает сигнал СТОП на шине и установит бит STOPF и ТЕБЕ надо будет подтвердить стоп. Аналогично с растяжкой/остановкой обмена на тупняк - он и так есть "stretches SCL low" если сильно не менял настойки - пока тупишь, твой аппаратный блок IIC держит SCL в нуле, говоря - помедленней, я записываю, думаю и туплю. Очень внимательно посмотри на картинки на 846-847 странице.
> А на ACK/NAK так же в ручную не ответить. Жопой читаешь.. или не понимаю вопроса. Бит ACK.
> Ты мне ответил как это делать с твоими девайсами. Снова жопой читал - они только ДЛЯ ЗАХВАТА. На обмен они не влияют, а то что в посте >>349831 виден в самом верху ответ 0x15 (0x2A) - это отвечает слейв на встроенном в STM32F429 IIC из блока I2C3 - видна независимая и одновременная работа захвата и слейва на одной железке. По поводу внешних костылей - покажи как захватывать данные с IIC шины, ИГНОРИРУЯ адрес назначения? Можешь обоссать и сказать заведу в SPI - допустим. Только вот у тебя 9-ти битовые посылки, а SPI умеет 8 или 16 бит. Ну принял 8 бит, а дальше? Ушел в прерывание чтобы сбросить настойки модуля SPI и перезагрузить его для стирания огрызка из 1-го бита ? Ну изъебнулся, сделал. Как условия Старт-Стоп на шине ловить ? Прерывание на SDA вешать и при передаче 0x55 или 0xAA каждые 2(1) такта шины уходить в прерывания?
> Я спрашивал как прижимать SCL к нулю, в контексте действующего ресива/трансмита, ты мне ответил как вообще в принципе прижать. Еще раз - бит ACK.
> Я хотел решать, когда мне отвечать на ак/нак мастеру, беря это знание у слейва. Еще раз - бит ACK.
> Полагаю, это считается прямо посреди передачи байта. Жеппа. Да, тк никто среди передачи байта такую хуйню не делает. Пробовал думать - можно таймером считать такты и после нужного такта через DMA записать в BSSR (не проверял) 1 чтобы прижать SCL к нулю, остановив обмен. Еще раз - ты ебанулся посреди (именно посреди, а не после) передачи байта обмен останавливать ? Прямая дорога повесить шину, введя в ступор настоящих аппаратных слейвов.
> Самое тупое, что не могу до сих пор завести аппаратный I2C в Slave-режиме вообще. Тоже немного думал гадал что не так, ни ответа, ни привета. Перебор шин, настоек - мимо. Потом понял что туплю и... Ответ прост и повыше.
Такое ощущение что от возможностей отладчика шараешься как от огня и понятия не имеешь как его запускать и пошагово выполнять программу. Можешь обдристать, с openocd не работал, только шкодинг и дебаггинг через Keil.
Прости меня грешного Может это попробуешь попилить https://habr.com/post/357918/ ? Как всегда все упрется в скорость, ты же не говоришь чем управляешь. Может ядерным реактором/андронный коллайдером где критичны задержки или время с часов читаешь. Может у тебя там бегущая строка и по хуй что буквы с интервалом в пару раз дольше будут обновляться. Но и тут проблемка - будешь видеть трафик только до себя, пролетающий мимо спам не виден, а это условие есть в ТЗ...
Посоны, вкатился недавновчера, СИ не знаю, инглиш не знаючитай долбоеб. Есть плата Nucleo на STM32F303RET6, пытаюсь пердануть символом в UART без использования кубов и библиотек периферии. Нахуячил простыню говнокода, само-собой, через отладчик работает, отдельно железка нет. Если выполнять программу пошагово, то данные в регистр TDR записываются, вроде как положено, но когда включаю плату и смотрю на выводах RX/TX saleae logic'ом, там нихуя нет. Сам говнокод, гляньте где обосралсяпо жизни: https://pastebin.com/fZS79ui5
>>350210 >NVIC_EnableIRQ(USART2_IRQn); // Пока прерывания не использую, но пусть будет А в дефолтном обработчике прерывания бесконечный цикл. Придет на вход байт - все повиснет. >SystemInit(); Эта функция вообще-то вызывается из startup-а, перед main-ом. >void delay (uint32_t time){ >uint32_t i; И эта задержка без volatile может сломаться в любой момент, особенно при включении оптимизации.
Ничего конкретно подсказать не могу, т.к. STM-ами не занимаюсь. Но ты попробуй вместо "зажечь светодиод просто так" не зажигать, а инвертировать, чтобы мигал, тогда будет видно зависло оно или нет.
>>350212 Поправил цикл. while(1) { GPIOA->ODR = GPIO_ODR_5; delay(300000); if ((GPIOC->IDR & GPIO_IDR_13) == 0) { delay(1000);//задержка в 1000 чего-то там USART2_Send ('1');//отправить символ } } Светодиод мигает. Ради эксперимента отправил на плату единицу через терминал, не зависла, продолжала мигать. Говорит ли это о том, что уарт вообще не запустился? Может я проебался где с настройкой. Но, NVIC_EnableIRQ все же закомментировал, на всякий случай. Почему же тогда в отладке, регистр TDR все же принимал значение?
>>350210 Этот антон >>350212 прав > >NVIC_EnableIRQ(USART2_IRQn); // Пока прерывания не использую, но пусть будет > А в дефолтном обработчике прерывания бесконечный цикл. Придет на вход байт - все повиснет. Дописал бы для вида затычку void USART2_IRQHandler(void) {unsigned short tmp; tmp = USART2->RDR;}; Это первый косяк - закомменти прерывание пока не раскуришь референс -> USART2->CR1 |= USART_CR1_RXNEIE; Второй косяк - при BRR 0xEA6 скорость 2135 бод, при 0x3A8 - 8556 бод (по анализатору). Третий косяк - "Подтяжка 13 ножки PС к Vcc" и "if ((GPIOC->IDR & GPIO_IDR_13) == 0)" - без подачи 0 или земли на PC13 не войдешь в цикл. Проверял на STM32F3-Discovery (STM32F303VC)
>>350214 Поздравляю, у тебя походу хуита творится. Или быдлокод, или плата не але или еще что(сторожевого пса завел?).. Светодиод мигать НЕ БУДЕТ.. ты постоянно пишешь одно и то же значение в порт. Как он зажегся, так и будет гореть. Возможно вакаба съела символ исключающего ИЛИ - "^" - если он есть в этой строке "GPIOA->ODR = GPIO_ODR_5;" перед знаком присвоения, тогда да, будет мигать. у меня с частотой 3.33 Гц по анализатору.
>>350215 >закомменти прерывание пока не раскуришь референс Закомментил, хотя мк не зависал, когда я отправлял ему что-либо, складывается впечатление, что уарт не поднялся, не отправляет, не принимает. Все глухо.>>350215 >при BRR 0xEA6 скорость 2135 бод Я считал по: USART_BRR = (fck + baudrate /2 ) / baudrate, где fck - частота шины APB1. В эту формулу я подставил 36мгц - максимальную частоту шины. Какая частота там в реальности, я не знаю, поскольку мк работает от внутренней цепочки, с дефолтными делителями. Думал заняться настройками, когда распаяю внешний кварц. Может тут и проеб.>>350215 >без подачи 0 или земли на PC13 не войдешь в цикл На Nucleo пользовательская кнопка включена по схеме. >>350216 >(сторожевого пса завел?).. Он нужен мне на данном этапе? Если да, то объясни, интересно. >Возможно вакаба съела символ исключающего ИЛИ Yep.
Анончики, какие подводные в разводке ЮСБ на плате для stm32f103? Нужно ли располагать контроллер как можно ближе к разъему, могут ли соседние компоненты давать наводки на подводящие дорожки д+ и д- и т.п.? Где можно почитать об этом? Гуглятся только статьи о работе с уже готовыми платами.
>>350221 > хотя мк не зависал, когда я отправлял ему что-либо, складывается впечатление, что уарт не поднялся, не отправляет, не принимает. Давай с начала. Через что подключил UART к компу? К выводам 2,3,5 компорта? Через USB-UART преобразователь? Как соединял выводы ? RX-RX TX-TX или RX-TX TX-RX? Землю не забыл? У ЮАРТа нет подтверждения доставки или получения. > Я считал по: Если 9600 поделить на 2135, то получишь 4.5, и поделив 36 на 4.5 получаем.. получаем.. 8МГц.. Прямо частота HSI. Вот это поворот. Намек понял? Попробуй BRR около 0x341 - должно быть около 9600 бод.
>>350244 >Через что подключил UART к компу? FT232RL, TX-RX RX-TX, земли объединялхотя и мк и USB-UART подключены к одному источнику. Смотрел через Saleae, мк на уарт ничего не выдает. BRR пересчитывал на 8мгц, да, там 0х341. Сейчас на pastebin код с крайними правками. Не работает.
>>350247 Может в инструкцию(схему) заглянешь ? Через какую задницу подключился к PA2 и PA3? На пердуиновские выводы они НЕ подключены, а идут на отладчик. Тебе повезло если выводы не попалил, что очень реально. Сам переведешь текст на скинах из документации? Код то у тебя рабочий, а вот в схеме куча ошибок.
>>350261 Блять, кто бы мог подумать?! Действительно, на ст-линк вывели, а я к ST morpho подключал. Забавно, в бумажном буклетике, что с платой шел, об этом ничего не сказано. Работает. Спасибо за помощь всем кто отвечал. Как опять проблемы появятся, я сюда вернусь. Короче, всем спасибо, всем по пирожку!
>>350304 На первый взгляд - просто забить хуй. Даже в серийных железках народ не боится пускать "SerDes interface includes a 1.25 Gbaud data signal with a 625 MHz clock." через обычные штыри на 2.54мм и 2.0мм. Если не сильно забивать - посмотреть хотя бы начало правой книги - волновое сопротивление и как оно зависит от ширины проводника, высоты подъема, расстояния между ними. Подобрать соотношения для импеданса 90 ом и спокойно спать.
>>350317 Спасибо, анон. Я и вижу, что все вроде не заморачиваются с разводкой юсб, но несколько раз сталкивался, что некоторые устройства не работают с кабелями, с которыми больше ни у чего нет проблем.
>>350056 Школотрон, ты где? Запилил слейва? Впилил кольцевой буфер. CDC давится потоком говна, пропуская 2 или 3 байта. Впилил адовый костыль-задержку, что не очень то хорошо, но выдает все говно без зажевывания байтов. По идее все. Концептуальная модель на 100 КГц завелась и подает признаки жизни. Нет, не все - можно прикола ради запилить правку памяти слейва через компорт. Пикрил 1 (dump0) - слева виртуальный компорт, справа склейка из 3 окон терминала. Как видишь - захват работает и ему поебать к кому обращение идет. Пишет всех, все и вся, проебывая бит ACK (не занимался этим, поэтому "+" от фонаря стоит). Реальные слейвы IIC - 0x50, 0x57,0x41. Слейв на STM32F4 - 0x15, который косит под память 24__02 (256 байт), которая после старта забита нулями и командами i2cset заполняется вполне осмысленным текстом и читается обратно. Пикрил 2 (dump1) - как выглядит внутри собранный дамп с шины (с багом и с отключенной отправкой в компорт здесь и на dump2) - 0100 - старт, С0хх - Адрес, 0300 - стоп. Пикрил 3 (dump2) - первые 4 шорта - это команда записи в EEPROM по адресу 0х50 байта 0х50, оставшиеся - захваченный обмен с шины при чтении содержимого настоящего слейва (памяти) с адресом 0x50 блоками по 32 байта (особенность i2cdump c режимом "i" - i2c block data). Тут дольше всего идет преобразование байтов + отправка по виртуальному порту. Захваченный поток говна можно и на самом STM пофильтровать между 0100 и 0300 (старт и стоп на шине) и слать только нужное для большего риалтайма или готовить больший буфер отправки и не по одному байту слать, а по несколько или вообще все что было между состояниями 0100 и 0200 (старт-повторный старт) и 0200(0100) - 0300 (повторный старт(старт)-стоп).
>>347463 Прошло 9 дней тишины. Школьник или познал дзен шкодинга или клал большой болт на затею-реализацию или его душа таки улетела на небеса... R.I.P. школота. Скучно без траллинга. USB CDC как оказалось не совсем отборное, костыльное и вонючее дерьмецо или говнокод из кубика все хорошо скрывает.
Нужно разработать USB устройство класса CDC на STM32 с помощью библиотеки SPL в среде Keil. Не могу найти примеры в инете, может у кого есть инфа по этой теме?
>>351786 Возьми готовый пример с сайта ST. Если примера нет, то возьми код от какой-нибудь радиолюбительской поделки. Все, тут делать нечего. >с помощью библиотеки SPL Такая формулировка не запрещает дополнительно пользоваться еще какими-нибудь библиотеками. Можно взять весь код на LL или HAL и сбоку приделать что-нибудь на SPL.
>в среде Keil Надеюсь ты понимаешь, что все компиляторы следуют стандарту и практически нет разницы каким компилятором пользоваться?
>>351786 Вот погуглил немного за тебя. https://www.st.com/en/embedded-software/stsw-stm32046.htmlКогда-то сам на этом в институте делал, еще никаких кубов тогда не было. Достаточно было в гугле задать период с 2000 по 2010 год, сайт st.com и тогда по "usb library" оно находится в первой строке. Там же готовый кейловский проект, тебе вообще ничего делать не нужно было.
>>351786 Ленивый пидорас ты, а не студень. Мне преподы ни разу не отказали, если я приходил и говорил, что технология списана, давайте я возьму более новое решение.
>>351804 Будто есть разница на чем учиться. Все равно, если он пойдет работать по специальности (что сомнительно), то не факт что будет касаться микроконтроллеров вообще. А даже если и будет, то не факт что STM32. И если я правильно помню, то библиотека >>351793 не использует SPL, там только CMSIS. SPL там в примерах только для настройки портов, тактирования и прочего. В SPL, если я правильно помню, нет ничего связанного с USB.
>>349488 Я вот, кстати, уже не в первый раз встречаю нарекания на серию f1 и рассказы о том, что её особо не поддерживают. Какую серию тогда взять взамен, чтобы близко по фичам и производительности?
>>352114 Кто бы его знал. При взгляде со стороны F2=F4, особняком F373 - для любителей анальных утех с 16 битными сигма-дельта АЦП. Когда-то работал в связи реально днище - знать надо дохуя, получаешь нихуя и были попытки воссоздать клон Netagent CP504B (верхняя левая). У "конкурентов" (нижняя центральная) SNR ERD 3.2 - atmega644+enc28j60, более новая версия на stm32f407 https://nag.ru/user/notes/25598/kak-rojdayutsya-erd-pro-mini-fotki-.html . У нас же (только для внутренних нужд) - железки на stm32f107 (центральная вверху) и на Wiznet W7500P (это и cortex-m0 и phy в одной микросхемке). Умерло после первых тестов и ухода из той помойки. Тупо шарясь по алиэкспрессу в происках плат с 2хCAN и 2xRS485 - нашлись только на stm32f407. Так вот и делался выбор - на чем can (до)изучать + в даташитах есть пара страничек про совместимость между сериями (как минимум F1-F2-F4) - где и что предусмотреть на плате для установки конкретной серии. Если надоели баги одной серии, можно заменить на другую. Если не работаешь с аналогом и точными измерениями - бери любой, хоть F2, хоть F4.
Я правильно понимаю, что отладка в TrueStudio должна работать через этот свисток? У меня почему-то студия его видет, даже предложила обновить прошивку, заливает мой говнокод в микроконтроллер, но не работает пошаговая отладка. Так и должно быть с этим китайским клоном или я что-то не так делаю.
>>352268 > Дело скорее всего в прокладке между клавиатурой и монитором. И какое может быть дело? Установил куб, TrueStudio, stm32 utility. Дровишки встали при установке студии. При первом подключении студия обновила прошивку свистка. stm32 utility также видит свисток.
stm32ldiscovery в которую встроен стлинк работает корректно.
>>352271 Если обновился, значит китайским остался только bootloader. Сомневаюсь что bootloader может оказывать такой эффект, хотя все возможно. Схема тем более не будет так влиять, она по идее везде практически одинаковая, за исключением разъемов и согласования уровней.
Суп радиач, решил тут вкатиться в STM, будучи гуманитарием (да-да я вообще охуел). Собственно взял Nucleo 303, пошел курить погромирование этого чуда. И тут я прихуел, везде всё равное, кто-то под HAL, кто под SPL, кто с регистрами напрямую работает. В ру-сегменте адекватных уроков/учебников нет. Наткнулся тут на MBED, довольно интересно в плане, что не надо читать мануалы на 2к страниц чтобы помигать светодиодом (привет ардуине). Суть вопроса - есть какие-то ресурсы русскоязычные по MBED? По STM вообще ресурсов негусто, видимо специфика что МК скорее проф. уровня накладывает свое говно на вентилятор и никто не хочет делиться опытом разработок (которые скорее всего продают, в отличие от ардуиновских).
>>352782 Задрачивай HAL и не обращай внимания на кукаретиков требующих вникания в букву даташита и кодинга регистров. Потом, когда отдуплишь, что к чему, переходи уже на LL
>>352794 Вся фигня в том, что надо же сгенерить еще, а чтобы генерить надо все эти регистры, тактирование и прочее знать еще лучше чем в случае с ручным написанием.
>>352791 Да, буду кукарекать - Reference Manual наше все. Те же сраные параметры функций настойки где брать будешь? Взять тот же кусок инициализации RCC RCC_OscInitStruct.OscillatorType = RCC_OSCILLATORTYPE_HSE; RCC_OscInitStruct.HSEState = RCC_HSE_ON; RCC_OscInitStruct.PLL.PLLState = RCC_PLL_ON; RCC_OscInitStruct.PLL.PLLSource = RCC_PLLSOURCE_HSE; RCC_OscInitStruct.PLL.PLLM = 4; RCC_OscInitStruct.PLL.PLLN = 120; RCC_OscInitStruct.PLL.PLLP = RCC_PLLP_DIV2; RCC_OscInitStruct.PLL.PLLQ = 5; if (HAL_RCC_OscConfig(&RCC_OscInitStruct) != HAL_OK) или I2C hi2c3.Instance = I2C3; hi2c3.Init.ClockSpeed = 100000; hi2c3.Init.DutyCycle = I2C_DUTYCYCLE_2; hi2c3.Init.OwnAddress1 = 132; hi2c3.Init.AddressingMode = I2C_ADDRESSINGMODE_7BIT; hi2c3.Init.DualAddressMode = I2C_DUALADDRESS_DISABLE; hi2c3.Init.OwnAddress2 = 0; hi2c3.Init.GeneralCallMode = I2C_GENERALCALL_DISABLE; hi2c3.Init.NoStretchMode = I2C_NOSTRETCH_DISABLE; Что за поеботина написана справа после знака равно? Где список всех значений смотреть? Список сочетаемых и непротиворечивых значений? Или то же ссаное GPIO GPIO_InitStruct.Pin = GPIO_PIN_13|GPIO_PIN_14; GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP; GPIO_InitStruct.Pull = GPIO_NOPULL; GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW; HAL_GPIO_Init(GPIOG, &GPIO_InitStruct); Здесь только с ходу видно что только 13 и 14 вывод настраивается. Остальное- неведомая хуита, которая смотрится с расшифровкой в том же RM. Думаешь совсем ньюфаг поймет что тут написано? С простой периферией - ничего не знаю, CMSIS наше все, для USB и Ethernet - не выебывался, использовал то говно, которое дают в кубике. Reference Manual однозначно надо читать. Просто тупо несколько раз прочитать раздел не особо вникая, хоть что-то да запомнишь что видел что-то похожее в описании регистров, а не гадать что это за поебень тут написана. Школотрон - можешь подглядеть настойки IIC.
>>352796 Частично согласен. Знать периферию надо ВСЕГДА, а это чтение RM чуть чаще, чем постоянно. Когда знаешь как все работаешь - тебе без разницы на чем писать - что HAL, что SPL, что CMSIS. На CMSIS может даже проще будет делать прямые обращения, чем искать тормозные библиотечные функции с кучей проверок, а всякая логика типа for; while; if живет сама по себе. GPIOC->BSRR = GPIO_BRR_BR3; вывести в линию PC3 лог1 GPIOC->BSRR = GPIO_BSRR_BR8; вывести в линию PC8 лог0 Неужели это какие-то страшные заклинания?
>>352796 > Вся фигня в том, что надо же завести двигатель еще, а чтобы автозапуском пользоваться надо все эти степени сжатия, цикл Карно, механику движения поршней и прочее знать еще лучше чем в случае с ручным поворотом ключа.
>>352800 За меня это говно пишет куб, и меняет он же. Прежде чем пиздеть, покажи свой код чтения-записи файлов с длинными именами в FAT на цмсис, папаша. Поговорим за хал после этого.
>>352803 Лол, порвался. CMSIS - это управление периферией, а не логикой, которой является твой высер про FAT. Максимум что увидишь - это чтение/запись блоков на flash/sd карту, сама же логика работы FAT - независима и можно хоть на 8051 запустить.
>>352801 Неуместное сравнение. Это ты скорее для ардуинки описал. Тут ближе будет завести двигатель на самолете типа боинга 737 То есть проверить состояние аккумов, включить питание, подключить шину переменного тока, запустить топливные насосы (не один а дохуя, каждый отдельный тумблер), ВСУ, генератор ВСУ, воздухоподачу, etc...
>>352808 Так-то никто не говорил, что использование хал освобождает от чтения рефмана, и особенно от доки о самом хале. Кубик просто генератор, но этот генератор сильно облегчает процесс создания инициализации. Я когда начинал, буквально за пару часов разобрался с кубом по ютубам, и впоследствии стал им пользоваться.
Все эти типы которые топят за цмсис в массе своей дальше мигания диодом не ушли, зато цмсисом помигали, ага. Без USB, Ethernet и SD-карты домашние проекты, за редким исключением - мертворождённое говно, и то с чем цмсис-пердолик будет ебаться неделями, на хале пишется за несколько дней. Однако строитель сарая будет смеяться над башенным краном, типа смотрите какие лохи, молотка не держали, ровно до тех пор, пока он строит сараи, потом же
>>352791 >для USB и Ethernet - не выебывался, использовал то говно, которое дают в кубике.
Вот и весь его боевой задор. Любители цмсис - лицемерные пидоры.
>>352817 >Ethernet Делал без всяких халов, только не на STM32. Ничего такого сложного в этом нет. >SD-карты Когда-то делал на ассемблере чтение и запись секторов. Не для практических целей конечно, а для тренировки и изучения. Тот анон все правильно пишет >>352804 Там по части взаимодействия с периферией микроконтроллера достаточно сделать только инициализацию, чтение и запись секторов карты, все остальное есть в FatFs и прочих. Это всего лишь несколько команд, ничего сложного.
Способ настройки периферии вообще не столь существенен, это ведь обычно совсем небольшая часть программы получается.
>>352839 Именно. Претензии к хал начинаются когда открывается файл сгенерированный кубом, хотя хал и куб никак не связаны. В библиотечных файлах функции названы корректно, что называется самодокументируемо, сопровождены описанием и принимаемыми/возвращаемыми значениями, что куда лучше записей цмсис. Никто не запрещает для повышения быстродействия использовать в критических секциях цмсис или ассемблер, это необходимо для серийных устройств, но видимо цмсис юзеру кажется что это элитный клуб.
Tl;dr новичку и доморощенному эмбеду куб, хал и лл подойдут больше чем цмсис, профессионал в советах не нуждается.
>>352848 >лл Ты точно видел LL? LL это набор функций, в основном только распихивающих поля из структур по регистрам в нужном порядке. Для использования LL или SPL нужно знать назначения битов в регистрах, точно так же, как для использования CMSIS. Преимущество LL только в том, что снижается вероятность ошибки. Поэтому противопоставлять LL и CMSIS это как-то очень странно. Просто невозможно научиться использовать LL и при этом не научиться использовать CMSIS.
Более того, если использовать LL без HAL, то для управления SysTick, NVIC и MPU, по любому придется использовать функции из CMSIS.
>>352864 Видел, даже i2c -> uart на 103 поднимал, в связке LL + RTOS, генерация полностью кубом, иде - трустудио. Цмсис проект был такой же, только без ртос и в вижуалгдб. Хал однозначно понравился больше, но для оптимизации программ и направления развития, лл после хал выглядит прекрасно.
Пагни, я пытался прикрутить bluetooth HC-06. С USB uart он работает нормально в оба направления. А с СТМа bluetooth принимает, только если подключить логический анализатор к RX блютуса. Что за бред?
>>353256 Конечно, используем. 1. Сохраняется прогресс. 2. Можно откатиться если понял что за день хуйню наделал. 3. Если не стыдно то можно подрочить лайки на гитгабе
>>353264 >>353290 Ок. Спасибки за ответы. Буду изучать Git. А насчет организации папок проекта, свою используете или STM-овскую Templates из архива с демонстрациями и примерами?
Есть готовые решения для работы с картами памяти micro SDHC по SPI? Файловая система не нужна. Требуется чтение и запись блоков.
Что-то я туповат для реализации этого с нуля. Инициализацию сделать получилось. Но при записи блока размером 512 байт, все значения 0хАА и последующем чтении этого блока, получаю какую-то херню. Идут 7 байт как положено 0хАА, а восьмой мусор, дальше все повторяется до конца считанного блока.
Заебенил пучок хуевин для изучения погроммирования своей дискавери. Пятый год валяется, а я только сподобился залить в нее демо от TouchGFX и поморгать светодиодом. В этом году думаю таки немного подучить клятый Си и одолеть 1-Wire, энкодер, шим, датчик влажности и emWIN
>>353363 А они там разве есть? Там есть возможность подключить библиотеку для фат, но без реализации доступа к карте по spi или sdio ничего не будет работать
>>354554 Да, с недавних пор тут модератор совершенно ебанутый и похоже в радиотехнике совершенно не разбирается. Напиши вопрос еще раз, может не удалит (можешь еще в /d/ продублировать). Для ЦОС кортексы не особо подходят, весьма вероятно что ты собрался делать ерунду.
>>354555 Если не подходит, то что именно гуглить? Раньше тут писали что STM32 самое то для вката в DSP. Нужна простейшая железяка, в которую я бы смог грузить короткие импульсы в WAV, чтобы сделать кроссовер со своими настройками для АС.
>>354559 Ну так-то ЦОС можно делать на абсолютно любом микроконтроллере, вопрос только в требуемом быстродействии. Но я не понимаю твой вопрос. >грузить короткие импульсы в WAV Что это значит? Ты хочешь сделать КИХ фильтр, импульсную характеристику которого называешь "короткими импульсами"? Если так, то все зависит от частоты дискретизации и порядка фильтра. >сделать кроссовер Но зачем для этого ЦОС?
>>354564 Чтобы вместе с кросовером можно было вхардкодить эквализацию, и всё это вбить в один короткий импульс. а точнее по импульсу на каждый из динамиков, в типичной стереосистеме этих динамиков 4 штуки. Частота дискретизации? Ну не знаю, по идее 96кгц хватило бы, лично мне по крайней мере точно. Мне надо понять что именно гуглить для этого, я не очень въезжаю.
>>354564 В любом случае кажись я понял куда копать, в сторону эмуляции гитарных кабинетов, там эта тема будет нормально раскрыта, т.к там в обязательном порядке в результате процесса звукозаписи формируется импульс для конволюции.
>>352794 Не слушай этого дебила. Ставь system workbench for stm32 и stm32cubemx. Последний генерирует код для первого, периферия тупо кнопками настраивается. В настройках генерации выбирай SW4STM32 IDE, генерируй, дальше уже код меняй, и дрочи HAL.
>>354567 Можешь написать то же но на русском или на английском, а то ничего не понятно. >один короткий импульс. >импульс для конволюции О чем ты вообще? Открой любой учебник по ЦОС - там не будет таких терминов.
>что именно гуглить для этого, я не очень въезжаю. Естественно, для начала терминологию изучи. >в сторону эмуляции гитарных кабинетов Можешь сколько угодно копать, но от этого STM32 не станут лучше подходить для ЦОС.
>>354732 Открываешь две вкладки в браузере, в одной набираешь в гугле Atollic TrueStudio, в другой STM32CubeMX. Обучалка есть в ютубе на канале NordicEnergy.
>>354951 Наверное к кейлу по нормальному действительно сложно приделать сторонний программатор/отладчик. С программированием проблем не должно быть, достаточно лишь использовать "Use External Tool for Flash Programming". http://www.keil.com/support/man/docs/uv4/uv4_fl_usingflashmenu.htm А с отладкой наверное никак, кейл вроде как не умеет работать с gdb. Большинство IDE нормально работают с gdb, но тебя угораздило выбрать кейл. >понадобился встроенный UART Наверное ты и так знаешь, но на всякий случай напишу. Отладочную информацию можно выводить с простым ST-Link через SWO.
>>354961 >Отладочную информацию можно выводить с простым ST-Link через SWO. Там только в одном направлении, а я хочу как в ардуине, чтобы и туда послать можно было. Приходится подключать дополнительный UART-USB. >Большинство IDE нормально работают с gdb На какой-нибудь atollic truestudio это натягивается?
>>354996 Гитом создаёшь локальный репозиторий, или клонируешь его в папку. Потом в эту папку генерируешь кубом проект трустудио, и открываешь. Если репо подцепился, то в трустудио рядом с названием в project explorer (список проектов слева) рядом с названием появится [твойгитрепо] и становятся доступны действия из пкм->Team. Хотя GitKraken по-прежнему удобнее, чем из трустудио.
>>354999 >>354976 Только правильнее будет написать, что для эклипса есть плагин EGit, который по умолчанию установлен в этой студии. Этот плагин можно установить в любом поделии на эклипсе. Причем установка плагинов через marketplace аналогична установке дополнений в браузере - открыл каталог, ткнул в нужное и готово.
>>354998 >Как использовать этот отладчик с эклипсом вполне находится гуглом Ну если бы я нашел в гугле, я бы не полез сюда. Можно ссылочку. С меня большое спасибо.
>>355158 >ничего не понял. Я тоже все это не идеально знаю, но попробую объяснить ничего не напутав. Хотя ты может и так это все знаешь. GDB - это консольная программа со своими командами, которые можно выучить и отлаживать без IDE. Для отладки, IDE запускает GDB и передает туда команды, аналогично тому, как если бы это делал человек вручную. При использовании GDB-сервера вроде OpenOCD (ST-LINK GDB-server, J-Link GDB Server и прочие) сначала запускается GDB сервер, потом запускается сам GDB, в который передается адрес, порт сервера и elf-файл. При использовании Black Magic Probe вместо адреса сервера задается порт, естественно другой командой.
Соответственно IDE нужно настроить таким образом, чтобы оно не пыталось подключиться к серверу (через TCP) или не пыталось запустить как нативную программу. А все необходимые для подключения команды (порт, elf-файл) передавать либо через опцию командной строки "-ex" либо сохранить в отдельный файл как скрипт и передавать уже его. Для начала, если ты этого еще не делал, я бы попробовал все эти команды ввести вручную, без IDE. Но лучше возьми J-Link и не пользуйся кривыми поделками.
>>355168 GDB сервер там работает и даже програмируемый микроконтроллер видно. Осталось понять как заставить Трустудио подключаться к отладчику не по TCP, а через COM порт. В обычном эклипсе это есть, в Трустудио это куда-то упрятано.
>не пользуйся кривыми поделками если не осилю просто перешью Блюпилл, который отдадчик, обратно в ST-link. Но хочется COM порт в отладчике, чтобы не подключать кучу лишних кабелей.
>>355170 В чем тогда проблема использовать обычный эклипс? Либо, если иначе никак, можно попробовать соорудить костыль - скрипт, который подменяет или переопределяет команды для GDB. Вроде как такое проще сделать на питоне посредством gdb-py. Как-то так https://github.com/in4lio/mdr1986x-JFlash
А VisualGDB на рто как раздавали, так и раздают. GDB да в вижуал студио 2017, ух бля. Куб генерит искаропки под него почти все. Не генерил у меня только связку LL+FreeRTOS, остальное норм.
Сап радач, дело в том, что есть одна отладочная платка STM32F407Discovery, и вот такие видеоуроки https://www.youtube.com/watch?v=VD8OaPyAEtI&index=11&list=PL8OgDYWys_b6XtOjCejd37aVv0ic24jqV Если я освою все это, то мне этого хватит, чтобы найти работу инженером микропроцессорных систем, или нужно еще что-то? из МК знаю только MCS-51, и вот сейчас стм32 начал ковырять
>>355245 > ух бля black magic probe заработал в визуал студии с VisualGDB. Регистры видно, можно рулить светодиодом прямо из отладки. Аж обои от стен отклеиваются. Пойду удалять Эклипс.
>>355275 Для начала хватит чтобы ваять программы, а остальное зависит от работодателя. Хотя в будущем придется изучать самостоятельно дальше и больше всякие фичи из даташита. Ну и сами уарты-хуярты с прочими интерфейсами читай. Он вроде не объясняет. А в работе нужно знать. И учти что у него в первом видосе не полностью указывается как создать проект (он это объясняет где-то в 4ом видео или около того) и откуда качать библиотеки ищи в комментариях под нужным видео. Сайт обновился и инструкция в ролике немного не актуальная. Добра тебе Ps сам изучал по этим роликам и год с лишним пользуюсь кейлом +stdperiph
>>355275 >найти работу инженером микропроцессорных систем ЗАБУДЬ.Будешь сосать последнюю залупу по этому направлению. Учи лучше Java, будешь получать чуть больше, чем дворник или сантехник из ЖЭК-а. https://www.rbc.ru/newspaper/2016/07/05/577a08e19a794717070ba97b "R&D в России — это дешево. Например, китайский software-инженер стоит $150 тыс. в год, это приближается к зарплатам в Калифорнии. Те, кто занимается computer science, — $200–250 тыс. в год. Наши инженеры стоят в разы дешевле."
Здравствуйте. Такая проблема у меня. Есть один микроконтроллер. И есть SD-флешка. Подключаю её по SPI. Пока флешка была новая и чистая всё работало, флешка инициализировалась, файловая система монтировалась, файлы записанные на неё читались. После того как я очередной раз записал на неё парочку файлов, флешка внезапно перестала инициализироваться. Купил новую флешку, закинул на компьютере на неё файлы, вставил - всё опять прекрасно работает. До того момента когда я ещё раз не попытался записать на неё ещё на компьютере. После этого она аналогично перестала инициализироваться. Причём на компьютере обе карты без проблем читаются и пишутся. На пиках мой код. Красным подчеркнул там где обнаруживается косяк - в этом месте возвращаемый переменной ans ответ функции transfer =-1, то есть нет ответа по линии MISO. Смотрел осциллографом - SCK, MOSI - всё ок, то есть команда отсылается, CS тоже вроде всё на месте. Дальше идут тактовые сигналы по SCK - а ответа нет, на MISO остаётся единица. Пробовал на разной скорости - и на 32МГц, и на 250кГц - ничего не меняется, причём новая флешка работала на любой. На MISO у меня включена подтяжка. Что я делаю не так?
>>356116 Всё, уже разобрался. Вот, выделил то, что пофиксил. После этого всё заработало. Пробовал вообще выпиливать этот кусок - тоже работает, видимо это для каких-то совсем древних флешек предусматривают. Кстати, пробовал ещё втыкать простую флешку (не НС) на 2 Гб. Думал что будет определяться как тип 1, но нет. Определяется как тот же тип 2, только без блочной адресации (номер сектора при доступе нужно умножать на 512). Ещё у меня теперь инициализируется на частоте 250кГц, потом если ок, то переключается на 32МГц. Так, на всякий случай, хотя оно и на 32МГц инициализируется.
>>356221 Для тех, кто подключал sd флешку вполне должно быть понятно, так как непосредственную работу с интерфейсом тут всегда нужно прописывать ручками. Так что не понимаю твоего подрыва, мог бы просто пройти мимо.
Дороу, хочу вктатиться в ARM и смотрю на две платы: NUCLEO-F767ZI и NUCLEO-H743ZI. Разница -- 300 рубасов. Какую взять? На бумаге H7 интереснее, а на практике?
>>356263 H-серия не поддерживается многими сторонними штуками вроде micropython , mbed, embedded rust etc, или поддерживается на уровне "быстрый F7". Но это пока что.
>>356222 И да, аноны. Ещё одно наблюдение. Библиотека FatFs глючит, если в настройках ИАРа включён уровень оптимизации выше среднего. Уж не знаю чего он там накрутил, разработчик сей библиотеки. Мне пока лень разбираться. Возможно как-нибудь прослежу в отладке, возможно проставить нужно где-то volatile. Пока что допилил их для быстрой загрузки картинок через DMA - как минимум раза в два быстрей стало выводиться на экран.
>>339005 (OP) Решил перекатиться с авр на стм, короче вопрос такой - есть у меня самописная либа для управления дисплеями типо 1602 по 4 wire интерфейсу, но она под авр, я хочу ее переделать под стм, но уже в самом начале возникла проблема: у меня либа состоит из файла с самой прогой и файла с расширением h, в h прописывается к каким портам что подключать вот таким образом: // порт к которому подключаем шину данных #define DPORT PORTD #define DDDR DDRD #define DPIN PIND
// порт к которому подключаем RS, RW, E #define CDDR DDRD #define CPORT PORTD
Похоже в стм порты называются несколько по другому чем в авр, потому что на PORTD, DDRD, PIND и т.д. компилятор ругается (Error: Identifier "DDRD" is undefined in "lcd.cpp", Line: 8, Col: 6). Вопрос - где можно глянуть названия портов для стм? И нужно ли для того подтягивать какие либо либы типо io.h как в авр?
>>356552 >А ссылочку можешь кинуть? А? Ты трудный какой-то. Какой у тебя камень? В каком IDE пишешь? https://st.com все мануалы, даташиты, сопутствующее ПО, драйвера и прочая чухонь.
>>356535 Гугл в помощь. Порты там перебить и всё будет работаь. Для вывода значения в порт есть регистр PORTx->ODR - аналог PORTx у атмеги, для атомарного вывода на пин PORTx->BSSR - аналог операций PORT{x}_Bit{y}={1 или 0} (или ассемблерных команд sbi/cbi) у атмеги. Библиотечные функции HAL_WritePin использовать можно, но дисплей будет работать раза в полтора-два медленнее, чем при работе напрямую с портами через BSSR.
>>356535 И да, для работы по SPI для начала лучше используй библиотечные функции из библиотеки HAL - самая главная для тебя это HAL_SPI_Transmit(), для вывода пикселей лучше использовать HAL_SPI_Transmit_DMA() - быстрей будет работать. Но для этого придётся устанавливать STM32CubeMX, либо изучать всё это дело и инициализировать вручную, либо самому накатывать библиотеку HAL.
>>356554 IDE - mbed, камень stm35l053r8. Ок я понял, просто на стм не работал вообще поэтому могу тупить. >>356557 Вот теперь уже несколько понятнее стало.
>>356573 >IDE - mbed Проиграл с мани. Установи нормальное ПО уже наконец и не еби моск. Используй СТМ-кубик - он упрощает вхождение в СТМ. Ты бы ещё в Atollic программу писал. >stm35l053r8 Хотя куда тебе программировать, если ты даже название своего процессора без ошибок не можешь написать. опытный иараст
>>356594 Ну не ругайся, я же писал что совсем нуб в стм. После авр с которым 3 года проработал все очень необычно. Даже названия микроконтроллеров. Борду купил, мозги и руки не купил. Кстати mbed мне тоже много чем не нравится. Мне бы какую-нибудь IDE с автоматическим поиском методов по всей структуре программы как ко всяких Visual Studio, Sharp Develop и т.д. >>356652 Короче как я понял вместо DDRD в стм нужно писать GPIOD, вместо RS 5 писать RS GPIO_Pin_5, а вместо CDDR |= (1 << RS) нужно писать GPIO_SetBits(CDDR, RS); ну и GPIO_ResetBits(CDDR, RS); соответственно. Правда не совсем понятно как сконфигурировать несколько портов одинаковым образом, например мне нужно сконфигурировать 4 порта определенным образом. Для конфигурации 1 порта на выход с подтяжкой к земле нужно написать вот такую телегу: GPIO_InitTypeDef data;
data.GPIO_Mode = GPIO_Mode_OUT; // Выход data.GPIO_OType = GPIO_OType_PP; // Хз зачем надо data.GPIO_PuPd = GPIO_PuPd_DOWN; // Подтяжка на землю data.GPIO_Speed = GPIO_Speed_2MHz; // Скорость низкая data.GPIO_Pin = GPIO_Pin_2; // 2 вывод
GPIO_Init(GPIOD, &data); И так для каждого вывода чтоли? Это же ебнутся можно. Есть способ это сократить?
>>356656 Если надо сконфигурировать одинаково несколько пинов одного порта, в структуре параметр pin можно писать несколько ножек через ИЛИ GPIO_Pin_1|GPIO_Pin_3
>>356662 О! Вот то что надо. Знал же что должен быть способ. >в структуре параметр pin можно писать несколько ножек Вот так чтоли? data.GPIO_Pin = pin1; data.GPIO_Pin = pin2; data.GPIO_Pin = pin3; data.GPIO_Pin = pin4; >>356663 А зачем тактирование врубать в данной ситуации вообще? Тип возможно и неверный. Не отрицаю.
>>356667 Тактировние надо включить, потому что у тебя работать иначе не будет. В стм по умолчанию почти вся переферия отключена. Перед использованием надо поднять соответствующий бит в регистрах rcc, чтобы подключить нужную фигню к тактировние шине.
>>356656 > CDDR |= (1 << RS) нужно писать GPIO_SetBits(CDDR, RS); ну и GPIO_ResetBits(CDDR, RS); Да. Но лучше всё-таки с регистрами портов атомарно обращаться, также как в атмеге. Здесь всего-то выучить как правило: GPIOA->BSSR = 1<<(pin1|pin2) - установить ноги GPIOA->BSSR = 1<<((pin1|pin2)+16) - сбросить ноги value=GPIOA->IDR - считать состояние ногю >Ну не ругайся >ебнутся Как на тебя не ругаться, если ты даже русский язык не осилил. В таком случае тебе лучше использовать библиотечные функции, как в ардуино иде, а инициализацию генерировать в кубике, тамм уж совсем для дебилов всё сделано чтоб освоили.
может для кого-то банальный вопрос (тому респект и уважуха за ответ), но прошу пояснить. Начал изучать FreeRTOS и там написано что мол все круто, псевдопараллельность выдается за счет того что каждый равный промежуток времени обработчик задач (sheduler) забирает выполнение от одной задачи, сохраняя все данные в стек, и дает поработать следующий квант другой задаче.
Появилось два не связанных вопроса 1) Если у меня задача скажем выполнится за время, меньшее чем системный квант, он пойдет по новому кругу выполнения или отдаст власть обработчику? (написал и думаю ответ в самом вопросе --> новая итерация бесконечного цикла в задаче. Но все равно жду ответ знающих) 2) Если системный квант равен скажем 1мс, а одновременно работающих задач у меня скажем штук 200. Значит ли это, что если одна из задач выполняет обработку клавиатуры, то со стороны человека она будет как-бы тормозить? Реакция на нажатие же 200мс = 200 задач, слишком частое нажатие тупо не сможет обработаться
Привет анон. У меня возникла проблема с Дискавери (stm32f407g disc1). Настраиваю порт B как показано на первом пике. Но при работе, вижу охуительную картину - висящая в воздухе дискавери, не подключенная ни к чему, детектит единицу на входе PB6 (второй пик). Я что-то делаю не так? Тут есть какой-то нюанс, который надо учитывать? На порте E такой хуйни не нашёл.
Нужно собрать проект, в котором stm32F103 работает с EEPROM. Думаю использовать для этой цели BluePill, а вот как память подключить хз. И в инетах никаких гайдов нет
>>357344 Любишь BDSM? Бери что-то типа 24LC64 и подключаешь по IIC, который может зависнуть в любое время, или писать программную реализацию IIC. Не любишь BDSM? Берешь что-то типа 95512 https://www.st.com/resource/en/datasheet/m95512-df.pdf - EEPROM с SPI интерфейсом. Где-то посередине - 93С66 и подобные 93 серии. Если верить производителю - хуй вам, а не EEPROM - используйте одну/../ из страниц FLASH памяти(с).
>>357404 F100 серия была первопроходцем, самая горбатая из всех. Описания вообще всех проблем есть в Errata shit на любое семейство. Пользуйте F0/F2/F3/F4/L серии, 100 слишком горбата, много отличий. На любую серию МК есть листок "миграция с 100й серии" что как-бы намекает, что даже производитель считает их мусором
>>357488 >цена: до 2$ Сильно растяжимое требование. Цена при покупке в каком месте? При каких партиях? >аппаратный TRNG Чем не подходит младший разряд с АЦП? Можешь еще диод с обратным смещением приделать, чтобы сильнее шумело.
>>357488 >аппаратный TRNG Вещь сомнительной полезности. F405 с ней, в китае они по 3,5$. По остальным требованиям ближе всего пойдет старшие F0 семейство (16кб озу)
>>357562 >Да и сдается ты пиздишь безпруфно в тред https://item.taobao.com/item.htm?id=544907210814 Конкретно у этого продавца беру и F4 и F0 серии, ADUMы различные, АЦП, Токовые ЦАПы. Разницы с деталями с маузера/фарнела/тме не заметил ни визуально ни в работе. Можете брать смело. Если детали не оригинал или Б/У это пишут в описании. Например SP485 Оригинал https://item.taobao.com/item.htm?id=549197050879 Китайская копия https://item.taobao.com/item.htm?id=524754218256 Как видите разница в 10 раз. Копии кстати хорошо работают. Единственно что, подтяжки внутри у них более высокоомные. Ну и на "живую" длинную линию я не рискнул бы ставить без испытаний переходных процессов. Выбор есть, ультрадешевые китайские копии, или дешевые оригиналы. То же самое и дисплеев касается, 16х2 классический стоит меньше доллара. Большой ассортимент, в десятки раз больше чем могут предложить где угодно. Особенно COG графические. С местных цен хуею давно. Но знаю точно одну вещь, если цена с доставкой и всеми расходами ниже в 2-2,5 раза чем в космодроме - смело берите, это оригинальные детали.
>>357577 Разве что сальваж. Не может новая стоить 60р.
Вам барыги это втюхали в головы. Все детали в китае дешевле раза в 3 как минммум из-за отсутсивия импорт/экспорт пошлин, НДС, барыжинга, зарплат монагеров и машин директора. По своему опыту - видишь цену, дели в уме на 2-3 раза, это то, что ты заплатишь за поставку напрямую с китая, где стоят эти заводы где клепают эти микросхемы.
>>357599 >космодроме Как он меня заебал, блядь. Гандоны, блядь, в 2к19м году не иметь https? Сайт из 90х. Вы если цены заломали, то сделайте хоть сайт удобный.
>>356316 Выбросил бы ты fatfs, и взял бы littlefs. Меньше памяти, wear leveling, также можно монтировать в комп через блочное устпоймтво. Fatfs оперативно тебе флешку ушатает.
>>357614 >2к19м Не продолжай, все с тобой понятно. Что с ценами не так, примерно +- как у других. Космодром, VDMAIS и РКС в принципе полностью перекрывают потребности для прототипов. Для серии даже 10шт - китай.
>>357649 Окей, каким должен быть сайт радиокомпонентов? Свистелки и перделки? Или как у РКС конченое глючащее жабаскрипт говно? Зато новое. По личному опыту формирования закупок на 200+ позиций, удобнее космодрома пока не видел сайтов
>>357650 По приоритету 1. АШ ТИ ТИ ПИ ЭС блядь. Не заказать все эти 200 позиций, не слив провайдеру/СБУ/твоей мамке их содержимое вместе с твоим номером телефона именем и адресом 2. Поисковой движок говно, только точное совпадение или соси хуй. Фильтров нет, иди нахуй. Категоризация только если повезет и найдешь страницу линейки чипов. 3. Даташитов часто нет, пиздуй гуглить. Ой, не гуглится? Мы же заказали это у ноунейм китайцев, на плате ни обозначений нихуя, ну сорян придумаешь что-нибудь. 4. Вырвиглазный дизайн, каждая страница самая блять разнообразная по стилю. 5. В корзине блядь не узнать что ты там назаказывал, только наименование товара (50% их собственное) и пиздуй обрать искать в их "движке" этот товар чтоб понять что это.
>>357650 В догонку, пидарасы разбросали все по двум магазинам, шоб и дальше быть ФОПами и наебывать налоговую. Из-за этого самому заехать и забрать не получится, обязательно придется ездить и туда и туда. Ну или заказывать по НП в тот же город, но доставка минимум 4 дня получается. Обычно в среду заказываешь, в понедельник забираешь.
>>357599 >Конкретно у этого продавца беру >Согласно соответствующим местным законам и правилам и политике Taobao, этот товар не может быть отправлен в вашу страну или регион. Кто-то запизделся.
Подскажите, пожалуйста, что будут спрашивать на собеседовании на программиста микропроцессорных систем. Наконец-то судьба дает мне шанс, а я не готов, и времени до пятницы.
Привет анон. Странная ситуация - никак не могу настроить I2C Slave при помощи Cube/Hal. (пробовал на f103 и f407). Вроде составляю всё правильно, но при попытке обратиться на выбранный мною адрес - не получаю никакого прерывания (в кубе они конечно выбраны). ЧЯДНТ? Есть годный пример? А то гугл направляет только на встроенные кьюбо-примеры, которые мне нихуя не понятны.
>>357688 >Кто-то запизделся Я где-то говорил, что продавец напрямую отправляет мне детали? Нет, я пользуюсь услугами доп склада, заказываешь хуйни, детали, кастомные изделия, материалы, химию, жидкости, печатки с jlcpcb, небо и даже аллаха. Все локальной доставкой складывается в гуанджоу, а потом я решаю сам, сколько это стоит (декларация) как это упаковать и чем отправить, самолетом, поездом.
Вы блять как типикал рагули, если вы не знаете как это делается, значит все пиздят атата.
>>357737 >Аноним Но зачем ты пиздишь, что камень тебе обходитмя в дорар? Добавь услуги посредников, доставку, растаможку и вкаля, цена одного контроллера нихуя не отличается от цены электронщика. Только заместо Путина, тв кормишь китайского кормчего и кучу барыг присосавшихся к доставке
>>357750 >Но зачем ты пиздишь, что камень тебе обходитмя в дорар? Добавь услуги Как вы заебали... Окей, хотите полную цену контроллера - доставка по китаю примерно как новая почта. 1$. Накладные расходы с учетом банковских процентов переводов, складу - 15%. Доставка 10$/кг Стоит ли напоминать вес контроллера. Короче этот сратый 401RCT6 обойдется в 1.2$
>>357750 Притом за доставку ты платишь в любом случае, не важно кто доставляет, телепорты не изобрели. Все поставщики покупают ровно также. Только к этой цене (1,2$ при учете что ты покупаешь не один МК а сразу все детали на все необходимые устройства), ты добавляешь 100% жадности и 20% налогов и получаешь ровно ту же цену того же космодрома. Заебали, как нищеброды считаете каждую копейку в ссылках. Я говорю как есть в сухом остатке - 2-3 раза дешевле обходится ящик деталей например на 10 устройств. Дисплеи, кнопки, корпуса, платы (кстати ПП довольно тяжелые), короче все что нужно затариваешь и особо не колупаясь в ценах ты гарантированно экономишь в 2 раза
>>357762 Насчет ерунды я уже говорил, ты сам выбираешь что покупать. >если можно на диджикее Поехавший? Барыжинг значительно похлеще хохломагазинов, цены оттуда выйдут еще дороже нем просто сходить в магазин. Есть конечно позиции которые производят не в китае, тогда цена что в европе, что в китае одинаковая или даже дешевле из европы. Недавно светодиоды японского производства покупал с TME, вышли более чем в 2 раза дешевле чем с китая. Конечно, такие позиции нужно смотреть отдельно. Но речь изначально шла о цене деталей в целом, вам барыги вбили в головы, что если вы можете купить что-то в 2-3 раза дешевле, то это подделка. Конечно нет, подделка стоит в 10-20 раз дешевле, просто барыгам выгодно чтоб вы так думали.
>>357772 Господи, как обычно, абы ляпнуть что. Речь о позиции оригинал и копия, что китайцы предоставляют выбор, а не про какой-то конкретный радиоэлемент, это было бы достаточно глупо.
За бсоды не знаю, я не пользовался особо этими конвертерами, просто привел пример на том, что первое пришло в голову, но опять же CP2102N в китае ровно в 2 раза дешевле диджикея.
Личный выбор на то и личный, у меня к китаю достаточно положительное отношение, особенно если что-то заказывать напрямую с завода под заказ, не единично конечно же. Например заказать пьезоэлементы по своим чертежам в европе/США обходится 7-8$ за штуку на сотне, то же самое сделать в китае - 0,6-0,8$ за штуку при той же партии. Хотя это и так очевидно.
Рассуждать где лучше покупать нужно после сборки изделия, передачи заказчику, засунуть руку в карман и поглядеть сколько у тебя в итоге осталось, тогда и делать объективный выбор.
>>357764 >вам барыги вбили в головы, что если вы можете купить что-то в 2-3 раза дешевле, то это подделка Но ведь т ы можешь посмотреть цены на сайте ST и убедиться, что 401rc стоит 2.43 от 10к штук. Как же добрая китайца продает по дорару? Сальваж? Подъебка? Или злой СТ вбивает нам в головы, что 2.43 это нормальная цена?
>>357788 Цены на сайте производителя указаны с учетом интересов дистрибьюторов, просто чтоб не срать им. Опять же, цены для покупателя. Это легко проверить, у того же VDMAIS цены на продукцию Analog Devices ниже чем цены на сайте AD, поставки у них прямые от AD без дополнительных посредников. В некоторых случаях (если они брали большую партию чего-либо) у них цены даже ниже чем в китае, но это не особо часто такое. Texas например указывает что цена может сильно варьироваться от условий. Так что эти цены хороши для быстрой оценки в большую сторону, например заказчик спрашивает, сколько это будет стоить? Берешь цены с сайтов производителей и будь уверен что не проебешься, т.е. она будет "с запасом"
Вот вопрос тогда, сколько стоит законченное рабочее изделие с внутренним ПО, конфигурация примерно такая msp430fg4618 XC2C32A-6VQG44 msp430fg2112 max9202 dg403 mc1350 tc4427 2 4х слойная ПП 8080мм штук 10 операционников типа 358х, 4 оптрона, диоды, батерая, 2576, конденсаторы, мелочевка, кварцы 2ши, несколько светодиодов, дроссели короче как обычно Вот сколько навскидку это стоит?
>>357793 Тут стоимость будет в основном определяться потраченным на разработку временем, а не стоимостью деталей, если конечно это не относительно большая серия. За единичное устройство я бы обсуждал от $1500 самый минимум.
>>357792 Нет. У всех вендоров цены на сайте включают только маржу вендора без учета дистрибьютора. Тексас, например, можно вообще поштучно купить и оплатить кредиткой, дистрибьютора в цепочке не будет. Далее, каждый вендор имеет свою стратегию - тексас имеет высокие сайтовые цены, но может сильно снижать квотные цены, особенно на коммодити, 300мм пластины помогают. Девицы наоборот. Им нет смысла продавать крутой аналог задешево, особенно после покупки Linear - конкурентов почти не осталось. Есть простой лайфхак: конечная цена в РФ примерно равна сайтовой. Ну то есть дистик получит скидку от вендора, накрутит свою маржу и НДС - то на то и выйдет. До 50к штук приблизительно работает.
>>357800 >Им нет смысла продавать крутой аналог задешево, особенно после покупки Linear - конкурентов почти не осталось. Куда смотрел швятой антимонопольный комитет? У них же там вроде как такие сделки запрещены.
>>357800 Абсолютно верно. Вот эти НДС, маржа и прочее и дает 100% цены товара. Именно об этом я и говорил, что цены на сайтах - индикативные. Покупая в китае вы фактически покупаете со склада с которых отгружают дистрибьюторам. Отсюда и разница в цене в 2 раза. Если вы сами захотите продавать эти детали, купленные в китае, вы добавите налог, свою прибыль и получится ровно то, что и в магазине. Тут нет никакой магии, нет подделок продукции, просто многие люди забывают, что цена товара в стране составляет едва ли 30%, все остальное - накрутки, налоги
>>357799 Если что - 65$ цена. Я это к тому, что это законченное изделие, проверенное, настроенное. Пример привел лишь для того, чтоб показать истинную дешевизну радиокомпонентов
>>357803 Просто именно эти радиокомпоненты уже многократно окупили свою разработку и выпускаются настолько большими партиями что практически стоят копейки. Стоимость сырья, издержки производства, логистики, амортизации станочного парка просто растворились в количестве уже реализованного
>>357802 Тексас и ADi уже прекращают отгрузки в Китай, оставив по одному большому дисти. Скоро и вендоры второй-третьей руки будут делать то же самое - ты или лидер рынка, или следуешь за лидером. Никому не охота ебаться с реэкспортом. Маржа и прочее - это треть цены максимум. 100% накрутки будет если покупать со склада. Но опять же через пару лет ты со склада купишь только коммодити. Нужен тебе будет проц или что повеселее - добро пожаловать в мир квот и лид таймов. А цены в Китае.. Сегодня они есть, потому что у Фоксконна эппл не выбрал весь объем аудиокодеков, завтра нет, потому что в этот раз выбрал.
>>357793 Без учета памяти и керамических конденсаторов, я готов сделать тебе такую плату за 22-23 доллара тут в РФ. В партии от 5к штук. Керамику достаешь сам, я не буду связываться с керамическими конденсаторами в партиях менее миллиона.
Ничего не меняется, зашла речь о цене деталей и покупке, все свели к глобальной политике, каким-то фоксконн, эпл, блять, каким-то хуем какие-то аудикодеки приплели, все что "слышал звон", все высрали в тхреад и довольно урчат. Двач такой двач
>>357829 >я не буду связываться с керамическими конденсаторами в партиях менее миллиона
Вся русня в одном предложении. Нахуй вы кому нужны с такими запросами. Китаец сделает все гораздо лучше и качественнее при партии в 100шт за меньшие деньги. Ведь они не столь брезгливые господа.
>>357853 Не сделает. Сейчас на керамику ебанутая аллокация по всему миру. Или 35 недель, или трехкратная цена, или искать по стокам. Последнее очень времязатратно.
>>358187 Я давно на игле джетбрейнса, поэтому да. Знакомая и привычная для меня среда, все красиво собирается через cmake, есть дебаг и вообще все как положено. я вообще на работе на джаве прогромирую, микроконтролёры только как хобби
>>357730 На F407 работает (спс), но на F103 не генерируются прерывания.
И я не совсем понял принцип, того что у тебя происходит и как мне то же самое реализовать на HAL. Я р разобрался как по-отдельности прочитать и записать в I2C, а как делать всё вместе как у тебя - не понял.
>>358191 А я сосу хуи в eclipse. Просто она работает, но блядь, как же бесит в мелочах. А переходить на другую ide, это cubemx настраивать, линковщик, openocd ублажать и тд.
>>358191 Все хорошо, только оперативки многовато жрет и тормозит. Иногда это создает некоторые неудобства.
>>358624 >cubemx настраивать Не знаю что вы все в этом cubemx настраиваете, т.к. не использую STM32. Но при использовании CMake файлы проекта IDE генерить уже не нужно. Необходимо только написать (или найти готовые) скрипты CMake. Настройка IDE в результате сводится практически только к заданию правил автоформатирования. Один раз сделаешь по нормальному через CMake и у тебя будет все одинаково компилироваться в любой IDE (без IDE тоже), где есть поддержка CMake или хотя бы make.
>openocd ублажать А мог бы взять J-Link, который не требуется ублажать.
Котаны, кто-то сталкивался с RTC на STM32? По интеренетам люди пишут, что абы какой кварц не подходит, что нужен какой-то с низкой ёмкостью и т.п. У меня из десятка разных кварцев более-менее стабильно работает один, и то, после холодного старта (при том что бекап батарейка есть) часы останавливаются, и нужно тыкать reset. Бесит пиздец. Может есть какой-то пердолинг тайный?
Нагородить можно много чего, но я просто впилил кврц в STM32F4discovery, ножку резервного питания подвесил куда нужно, большего огорода городить не охота, в т.ч. и всякие буферы для кварца. Предвосхищая вопросы - дорожки к отладочным пинам отключены, кварц впаян на штатное место с конденсаторами.
>>358726 По таблице ищещь параметры Gm_crit_max которые меньше Gm в 5 и более раз, или меньше Gmcritmax хотя бы на 20% Gm и Gmcritmax - из даташита на МК, на пикчах для STM32F407 Учти, что Cload это не емкости конденсаторов, а общая емкость между выводами кварца, т.е. Сшунт + (Сконд+Свходов)/2 Т.е. если берешь ABRACON ABS06 c Сшунт 1,7пФ, и Сload 4пФ, тогда твои конденсаторы будут равны С = ((Сload - Сшунт)*2) - Свх =~0, т.е. без конденсаторов вообще В F4хх меньше F411 очень слабые генераторы, прям вот очень.
>>358740 У тебя скорее всего стандартный кварц с Gm примерно 1,5 (типа Geyer и любой другой ширпотреб), т.е. в желтой зоне - нестабильный запуск и работа. На на платах все равно делай места под конденсаторы, +-1-2пФ могут очень хорошо подстроить частоту кварца особо не влияя на работу его
>>339005 (OP) Разрабам примеров для STM32F4 приготовили особое место в Аду? У меня пердак уже полыхает просто. Пытаюсь состряпать голый темплейт со STemWin и нихуя не работает. Вроде все подключил, в хидерах прописал, компилируется без ошибок, а на выходе ЗАЛУПА.
>>359073 Дарагой дневничок! Сегодня я забил на самостоятельную сборку проекта с emWin и запилил его в Кубике. Сразу нарвался на неповорачиваемость дисплея с помощью команды GUI_SetOrientation. Вылечилось увеличением памяти в GUIConf.c до 180кБ. Может кому сэкономит пару минут в гугле.
Или "Error message from debugger back end: Connection timed out", в зависимости от того, выбираю ли в настройках автоматический коннект к GDB серверу. Полагаю, что просто не заводится GDB-сервер. Как проверить, и как пофиксить?
>>359965 Проверь хотя бы права, посмотри вывод lsusb для начала... Зачем вообще взял эту хрень? Мог бы из репозитория поставить Qt Creator или тот же эклипс.
>>359969 Какие права? На исполнение в папке с GDB? Так вроде ж стартует, пишет что гдб стартед. Выбрал потому что искаропки и есть на винду и Линукс. Планировал переходить на Эклипс + ОпенОСД, но позднее.
Как считать read-only memory на скрине те самые 4 адреса которые надо считать? Пытаюсь считать как EEPROM: uint32_t ByteRead(uint32_t addr) { return ((__IO uint32_t)addr); } Получаю хард фаулт. КАК ЭТУ ХУЙНЮ ВООБЩЕ СЧИТЫВАТЬ БЛЯДЬ?
>>359992 Читаешь uint32_t, а в имени функции byte. Что-то тут не так. Ну и читаешь то по невыровненным адресам похоже, для Cortex-M0/M1 так нельзя. На Cortex-M3 уже можно, но вроде как не для всех инструкций, хотя может я что-то путаю.
>>359995 Читай только по выровненным адресам. uint32_t - по кратным четырем, uint16_t - по четным, либо читай только uint8_t. Ты лучше сам посмотри, может ли твой микроконтроллер читать по невыровненным адресам.
>>339005 (OP) Анон, поясни за waveshare OpenF3-D/Open407V-D/Open429Z-D - Standard. Какие подводные? У меня есть все эти дискавери и несколько модулей кажется совместимых с этими мезонинами (lcd, ethernet, камера и тд), хочу просто играться с этим барахлом без ебли с проводами и макетками.
>>360170 Ну, у меня есть Open407Z. Недостатков три с половиной: материнка занимает много места на столе; никаких защёлок у разъёмов для модулей не предусмотрено, держится только на трении; с другой стороны — мезонинный модуль входит (и выходит) в гнездо на материнке OCHE туго, так что легко можно погнуть ножки, когда вытаскиваешь; ну и все сразу модули подключить ко всем разъёмам не получится, надо смотреть как там выводы микроконтроллера используются.
Еще есть отладчик с интерфейсом SWD. Я контролеры ни разу не прошивал и паяльник в руках ни разу не держал, подскажите, что нужно делать чтобы из первой платы сделать ардуину и программировать её из арудино иде. Или как её программировать на имеющемся оборудовании. С программированием разберусь - в школе бейсик и паскаль проходили. Если интересно буду выкладывать результаты.
>>360435 Если это ардуина, то не лучше ли пойти к ардуинщикам? Или это у тебя просто микроконтроллер с минимальной обвязкой? Ты для начала с этим определись. >загрузчик Там уже есть загрузчик, только он не не ардуиновский и вообще тебе не нужен. >как её программировать на имеющемся оборудовании Подключаешь свой J-Link к этой плате, запускаешь на компе сеггеровский J-Flash, выбираешь файл прошивки и нажимаешь кнопку F7. Или еще как-нибудь.
>>360439 Они меня оттуда сюда выслали, это STM32 в минимальной обвязке. Тем загрузчиком что есть можно как-то пользоваться? У J-Linka штырьков больше, а тут я так понял, 4 боковых это отладочный интерфейс. В каком порядке их подключать, можно J-linkom управлять из CooCox?
>>360440 >4 боковых это отладочный интерфейс Они там подписаны прямо на плате. Все очень просто — SWDIO (SWIO) этой платы подключаешь к SWDIO отладчика, так же поступаешь с SWCLK и GND. Отдельно как-нибудь подключаешь питание.
>>360440 >Тем загрузчиком что есть можно как-то пользоваться? Читать документацию - для слабаков? Ну тогда ищи в гугле "STM32F103 bootloader". Но этот загрузчик тебе не нужен.
>>360443 Товарищ, ты хорошо объясняешь, спасибо! Это я давно понял, загвоздка в том, что в j-linke выводов с таким названием нет https://www.segger.com/products/debug-probes/j-link/technology/interface-description/ >>360446 Вот так прямо и искал, только без букв F103, выдает мануалы по написанию собственного загрузчика и как работает загрузчик и вообще, попробую с указание полного наименования контролера. В основном предлагает через UART, это готовый встроенный, на плате есть усб гнездо и всё сводится к тому, что сначала надо залить через уарт собственный загрузчик, чтобы грузить потом через усб. Адаптера uart нет, есть jlink, на форумах о нем в основном нахожу сначала вопрос "А чо, он работает, да?" Потом сложные слова, а картинки как подключить его к SWD найти не могу. Не серчай, товарищ, все были нюфагами, подскажи что гуглить? Спасибо, товарищ!
>>360449 >>360450 Товарищи, спасибо! Благодарю за справедливое товарищеское порицание! Впредь буду внимательнее, чтобы не досаждать окружающим своей тупостью. Благодарю за потраченное на меня время! Надеюсь эти дамы охладят ваше справедливое негодование. >Возьми компьютер с COM-портом. Этот компьютер у меня уже сломался.
>>359965 Смотри вывод lsusb и ищи VID/PID своего донгла. Потом иди в /etc/udev/rules.d и ищи там файл, который поставился с пакетом ст-линка. Добавь туда такую же строчку, как сейчас там, только поставь VID/PID, которые ты выяснил в начале. После этого нужно будет либо перезагрузиться, либо выполнить от рута udevadm control --reload-rules && udevadm trigger и, возможно, переподключить донгл. После этого всё должно взлететь.
Как бы говорят можно экзешники делать... Но как их запускать на x86 как их делать не говорят, про знаю симуляцию, писал симуляторы. Есть инфа, о чем они?
>>360700 О том, что можно из TrueStudio компилить и под микрухи, и под пеку. То, что можно переиспользовать код проекта между этими двумя таргетами - это уже дело второе
>>360703 Ну типа готовой магии нет, которая позволила бы софт сделать бридж между микрухой и пекой, для симуляции отдельных частей? Типа, вам дан конпелятор. Ебитес.
>>361793 Открыть даташит на микроконтроллер и посмотреть там? При желании UART можно сделать программно, тогда можно подключать почти к любым выводам. Уточни что именно требуется и зачем.
>>361796 В FT232RL (у тебя на первой картинке) есть bit-bang, посредством которого можно писать в ПЗУ с SPI и I2C. Дополнительный микроконтроллер для этого не нужен.
>>361796 Осторожней с этим горбатым говном. Да здравствует IIC на серии F1! BDSM Любишь же? Зачем uart? Может usb-cdc (виртуальный компорт)? Немного порвал в свое время шаблон - из кубика довольно быстро собирается рабочий пример. >>357344 >>357367 >>357404 >>357418 >>357419
>>361794 У меня вопрос по UART. На пике 1 >>361793 есть гнезда по бокам, там есть RXD, TXD, RXL, TXL. Еще слева пины RX и TX. Какие из них использовать? Под эту плату конкретного даташита нет, только под ft232, там ничего такого не нашел
>>361803 Олсо, где взять 3.3V и GND для UART? На stm вижу вот такие гнезда (пик 1), но не уверен что это для внешнего устройства. Еще на st link есть две пары пинов с 3.3 и GND, одна из пар занята по д stm32 (пик 2). Может быть можно использовать другую пару?
>>361806 >Под эту плату конкретного даташита нет Совсем глупый? Даташит на микроконтроллер, берется с сайта производителя. Схема этой китайской платы элементарно находится в гугле по названию микроконтроллера. Не представляю как ты будешь это программировать, если даже этого найти не можешь.
Но еще раз повторю — микроконтроллер для такого не нужен, ну просто совсем.
>>339005 (OP) кстати по звуку хочу на матарошку сигнал - звук боевой фуры да да вот это ТА ТА с басухой и прочей хуйней... но ставиь кампрессор ... да сначала была идея с воздухом и клапаном от выхлопа но... сейчас есть не хуевая такая компактная акустика = излучатель - нет проблем его раскачать проблема в том чтобы именно как в мад максе было - тое парой мультивибраторов хуй обойдешся тое как минимум там 4-6 нужны гармоник да я знаю что по басухе даже близко не подойду к воздуху но всеже есть ли какие идеи? желательно без контроллеров
Аноны, посоветуйте что почитать чтобы вкатиться? статей-то куча, но везде вброшены куски кода, а никакого объяснения толком нет. Вот по авр есть крутой курс на изи электронике, есть ли что-то подобное по стм, чтобы разжевывалось все детально, для самых маленьких?
>>362161 Читай Reference Manual, лол. Вообще, а чего ты ждёшь от чтения? Микроконтроллеры - это не наука какая-то, здесь нет никакой теории, формул, законов. Какую периферию с ядром тебе барин даст, такую и придётся использовать. Это тупо макакинг, и опыт здесь приходит только при решении практических задач. Это как если бы ты по книгам учился водить машину или боксировать. Более того, всё микроконтроллеры друг от друга принципиально ничем не отличаются
>>362167 я понимаю что именно сам язык он один, но объявление портов у авр и арм выглядит по разному, и именно вот эти вещи мне непонятны. Спасибо, буду курить маны, правда так и не могу определиться что взять, нуклео или что-то с али и ст-линк. >>362171 спасибо.
>>339005 (OP) Аноны, у меня есть мечта детства - умный дом своими руками. В микроконтроллерах я совсем нуб. Программировал разве что AVR в атмел студио когда учился. Очень нравилось. С чего начинать вобще?
>>362219 >ПЛК Йобу дал? Он пятнашку выложит за говно которое годится только лампочками моргать заместо светодиодов. Нахуя нубу предлагать промоборудование за сотни нефти?
>>362235 >2001 года рождения? Ващет еще в 80-х усачи лепили акустические включалки света от хлопка одной ладони, датчики присутствия на лампах и прочую умноту
Сап анонче. Сегодня начал писать программную реализацию I2C. Отлаживаюсь на STM32f4 Discovery (камень f407). Решил работать с шиной таким образом: два пина будут использоваться для прерываний (PD10, PD11), два пина будут использоваться для подтяжки на землю (PD8, PD9). Прерывания пока никаких проблем не доставили, а вот пины подтяжки вызвали вопрос: включаю выход в режиме Open Drain (в интернетике пишут, что это самый правильный вариант), и при подключении пина в шину I2C он повторяет форму сигнала на шине. Если же отсоединить пин от шины, то он выдаёт то, что я от него и ожидаю. Если подключить или отключить встроенную пожтяжку к питанию, ситуация не меняется. Проверяю при помощи логического алианализатора и ардуино (A4 и A5 подтянуты к питанию). Подскажи анон, я правильно понимаю, что мне придётся поставить по лишнему транзистору на линию? Или задуманное можно осуществить стандартным набором подтяжек?
>>362347 Нихрена тебя не понял, но у тебя что-то странное начинается отсюда: >подтяжки на землю >Open Drain Разве на картинке у тебя подтягивающий резистор к земле?
>>362376 Все равно не понимаю в чем у тебя проблема. Может быть ты не понимаешь что такое открытый сток (коллектор)? Дополнительные внешние транзисторы не нужны, если что.
>>362394 У меня устройство будет слейвом, если что. Принципиально разницы не должно быть, но на случай если я чего-то не понимаю. >Но зачем тебе дополнительный транзистор? Ну, так как у меня встроенный вывод не справляется с задачей, я думал подтягиваться на землю открытием транзистора.
>>362402 В каком это месте оно у тебя не справляется?
Допустим взяли вывод микроконтроллера с открытым стоком и подключили его к другому устройству (допустим ведущему) тоже с открытым стоком и притянули все это резистором к питанию. 1) Ведущий выдает лог. 1, тогда на проводе будет: 1.1) лог. 1 если ты выдаешь лог. 1 с микроконтроллера 1.2) лог. 0 если ты выдаешь лог. 0 с микроконтроллера 2) Ведущий выдает лог. 0, тогда на проводе будет лог. 0 вне зависимости от того что выдает микроконтроллер.
>>362402 Ты опять выходишь на связь, школотрон? Сделай простой тест на вшивость - возьми любой вывод, подключи его через резистор 1..10К к питанию. Настрой вывод как open-drain и проверь, что когда в выходном регистре ODR 0 - на выводе напряжение питания, записав 1 в ODR - получишь ноль на выводе. Как минимум покажет правильно-не правильно быдлокодишь управление уровнями на шине.
>>362403 >>362405 01 канал - SCL, 03 канал - PD9, 05 канал - SDA Первый кадр - подтянутый к питалову PD9 - как видно, форму выдаёт как надо. Второй кадр - PD9 включен в шину, повешен на SDA. Тут уже то о чем я и говорил. Походу где-то в коде косяк, правда очень странно.
>>362468 Настойки порта PD9? Полные, куда что пишешь. Каким говнокодом определяешь когда выдавать 0 на шину? На пиках очень разный масштаб. Может свой говнохал неуспевает продристаться? Если включил аппаратый iic-slave - то снова читай тред выше. Если программно - см чуть выше про хал или на каких костылях пишешь - потестируй чем-то другим снаружи на разных скоростях.
>>362467 Не понимаю тебя, ты делаешь что-то очень странное и нелогичное. Зачем ты подключаешь логический анализатор, если у тебя подозрение на то что микроконтроллер в режиме с открытым стоком как-то не так работает? Например микроконтроллер не перешел в режим с открытым стоком или мощи не хватает чтобы притянуть выходной уровень к земле. Тут нужно мультиметром в статике тыкать (без I2C вообще), приблизительно как советовал анон выше >>362405
>>362478 Потому что я так и сделал, и увидел что косячит код. И теперь переделываю код. >>362469 Хал пока успевает тут как видишь - на первой диаграмме с PD9 можешь видеть импульс. Нашёл в чем был косяк, сейчас подправил. Пойду пилить дальше.
Посоны, купил на алике значт ЭТО. stm32 Smart 2.1 ебать. Ну лохонулся, зажал сотку на программатор. Короче dmesg выдаёт такую хуйню: new full-speed USB device number 13 using ehci-pci device not accepting address 13, error -32 unable to enumerate USB device А теперь вопрос, как реализован последовательный интерфейс на эстээмах? У ардуины какой то преобразователь на плате стоит из сериала в усб, а у stm вроде имеет какое то готовое решение на борту которое надо заливать в прошивку или я ошибаюсь? USBasp 2.0 можно переделать в программатор stm32?
>>364545 Ты вообще отличаешь микроконтроллер от отладочной платы с микроконтроллером, или это для тебя одно и то же? Возьми схему своей платы. Может ты не умеешь "читать" схемы? Как ты вообще без схемы собрался что-то программировать?
В самих микроконтроллерах STM32 (а также многих других) есть масочное (т.е. неперепрошиваемое) ПЗУ, в котором записан бутлоадер. Этот бутлоадер может грузить прошивку через UART, а также через другие интерфейсы в зависимости от микроконтроллера. Поэтому для программирования STM32 а также других кортексов достаточно переходника USB-UART.
>>364545 > А теперь вопрос, как реализован последовательный интерфейс на эстээмах? У конкретно этого МК на борту есть контроллер usb. Но без бутлодера, или другого ПО, которое его настроит, он не будет просто так работать. > а у stm вроде имеет какое то готовое решение на борту которое надо заливать в прошивку или я ошибаюсь? Да, у них прошит первичный бутлоадер, но он работает только через uart > USBasp 2.0 можно переделать в программатор stm32? Чтобы залить бутлоадер тебе нужен usb uart ttl конвертор, как написал анон выше. Внимательно проверь напряжение, стмки рассчитаны на 3.3В Как через него залить ардуиновский usb бутлоадер можно почитать здесь https://habr.com/ru/post/395577/
>>364629 >Внимательно проверь напряжение, стмки рассчитаны на 3.3В Там эти выводы 5V-tolerant. Из популярных переходников USB-UART наверное только в CH340 могут быть пятивольтовые уровни. Если сравнить логические уровни CH340 и STM32, то будет видно что проблем не должно быть. >ttl А КМОП значит не подойдет? >Как через него залить ардуиновский usb бутлоадер можно почитать здесь Мерзость. И для отладочной платы бессмысленно, потому что есть дешевые отладчики (J-Link и другие).
>>364678 Я выебнулся только в том месте где написал что это мерзость. Разве это не мерзость? Про то что не подойдут пятивольтовые - подойдут, это не критично. Писать usb uart ttl тоже не стоит, потому что ТТЛ тут часто абсолютно не при чем.
Далее st-flash write led.bin 0x8000000 всё нормально работает, после прошивки я могу его ресетать кнопкой иил прошивать ещё.
А вот если я попробую скопилировать arm-none-eabi-gcc вот этот bare-metal пример - https://github.com/bjornfor/stm32-test/tree/master/bare-metal (make all ; st-flash write main.bin 0x8000000), то я получаю ситуацию, что программа работает, но st-flash двайс больше не видит. Если нажать кнопку ресета, то программа больше не работает, а st-flash его снова видит и можно прошивать. Если я после этого нажму ресет, выполню st-flash reset, то теперь уже нажатие кнопки просто ребутает чип и он исполняет программу. Однако, st-flash'ем теперь зписать сложно: нужно зажать ресет, запустить st-flash и отпустить ресет после начала работы но до таймаута. Не очень круто.
Это как-то связно с BOOT0 и его подключением на gnd или 3v3, видимо, но я не очень понял, как именно и почему бинарник из того проекта по ссылке таких проблем не имеет.
Разве st-link не должен сам сбрасывать девайс перед прошивкой? Пробовал подключать st-link RST -> NRST, ничего не поменялось. (st-link у меня китайский клон, v2).
Собственно, кто виноват и как сделать так, чтобы я мог и прошивать постоянно, и после ресета программа запускалась?
>этот bare-metal пример Для начала выкини из него все лишнее, включая настройку RCC (функция clock_setup). Микроконтроллер вполне можно подвесить если неправильно настроить тактирование. Оставь только настройку вывода к которому подключен светодиод. >Это как-то связно с BOOT0 У этих микроконтроллеров есть отдельный не перезаписываемый кусок памяти из которого начинает выполняться программа после включения питания. Эта программа проверяет уровни на выводах BOOT и либо переходит к выполнению бутлоадера, либо к выполнению кода из флешки либо еще что-то. >Разве st-link не должен сам сбрасывать девайс перед прошивкой? Пробовал подключать st-link RST -> NRST На счет st-link не знаю, но обычно это настраивается.
>>365400 >Для начала выкини из него все лишнее Вот это хорошая была идея, спасибо.
Значит, там в main.c было: >GPIOC->MODER = 0x01 << (LED_IR2); >GPIOC->MODER |= 0x01 << (LED_BLUE2); >GPIOC->MODER |= 0x01 << (LED_GREEN*2);
А у меня-то диод подключён к 4-ому пину GPIO, поэтому я тут просто заменил всё на GPIOA, и дефайны LED все сделал равными 4-м, лень было удалять и потом разгребать ошибки компилятора. И вот "GPIOA->MODER = 0x01" всё ломает, так как SWDIO и SWCLK же к на пинах PA13 и PA14 висят.
Правда, почему после ресета программа не выполнялось не очень ясно, есть идеи?
>>365400 Я похоже угадал на счет тактирования. >RCC->CFGR |= 10 << 18; // PLLMUL[3:0]: set PLL input clock multiplier Умножение частоты HSI/2 на 12, получается 48 МГц, вроде как не превышает допустимую. Однако флешка не может работать на столь большой частоте и перед переключением на тактирование от PLL необходимо настроить количество тактов ожидания при чтении памяти.
Вызывает у контроллера бугурт: Breakpoint 1, main () at src/main.c:48 48 int x = 20; (gdb) s 49 int y = x / 10; (gdb) s ^C Program received signal SIGINT, Interrupt. WWDG_IRQHandler () at device/src/startup_stm32f030.s:148 148 b Infinite_Loop (gdb) bt #0 WWDG_IRQHandler () at device/src/startup_stm32f030.s:148 #1 <signal handler called> #2 0x08000894 in ?? () #3 0x08000574 in main () at src/main.c:49
на 2-4-8 и прочие степени двойки делить могу. Что за фигня-то, даже attiny справляется ведь, и без какой-либо возни с моей стороны. Где я обосрался?
В листинге ( https://pastebin.com/NZN1tRnW ) всякие __divsi3 сгенерились, что-то там он должен бытать сделать, но, похоже, не может: >(gdb) s >46 int y = x / 10; >(gdb) si >0x08000344 46 int y = x / 10; >(gdb) si >0x08000346 46 int y = x / 10; >(gdb) si >0x08000348 46 int y = x / 10; >(gdb) si >0x080001ec in __divsi3 () >(gdb) si >0x080001ee in __divsi3 () >(gdb) si >0x08000894 in ?? () >(gdb) si >WWDG_IRQHandler () at device/src/startup_stm32f030.s:148 >148 b Infinite_Loop
При этом в __divsi3 нет никакого 1ee: >080001ec <__divsi3>: > 80001ec: e3510000 cmp r1, #0 > 80001f0: 0a000043 beq 8000304 <.divsi3_skip_div0_test+0x110>
Так и какого хрена он туда прыгает? Или почему не идёт дальше по по адресам, пока до 1f0 не дойдёт, чё за хуйня?
>>366484 Очевидно, конпиляктор нагенерил какую-то хуйню, видимо не тот опкод. Судя по твоим листингам и ошибкам, компилятор хотел сгенерить 32-битную инструкцию, но процессор воспринимает её как короткую 16-битную, поэтому инкрементирует pc на 2 байта и неверно читает следующую инструкцию, что вызывает исключение. Ты каким-нибудь gcc наверное пользуешься? > на 2-4-8 и прочие степени двойки делить могу. Там компулнятор простой сдвиг подсовывает > всякие __divsi3 сгенерились Встроенная функция деления для процессоров без аппаратной инструкции деления Ты стандартную библиотеку откуда берёшь? Возможно, она не от той архитектуры, проверь флаги компилятора
>>366507 >Ты каким-нибудь gcc наверное пользуешься? Да.
>Ты стандартную библиотеку откуда берёшь? О, спасибо. Я запутался с ними и в итоге просто пару путей добавил в мейкфайл и забыл, в надежде, что оно само магически нужное берёт, ведь типа работало. Поменял на thumb/v6-m/libgcc.a и всё заработало.
Объясните, плез, как с помощью таймера: а) сгенерировать положительный импульс шириной 10 микросекунд? б) измерить ширину импульса? Не на примере, а по хардварной части: что и как считается. Ну там частота таймера, прескейлер, CCV счётчик - как всё это связано.
>>366711 Подумывал, но как-то на кусок говна похоже. Как минимум используется только половина штатной sdram, немного в ебенях разъем пердуины и... СУКА НЕТ GPIO. ВОТ ПРЯМ ПРАКТИЧЕСКИ НИХУЯ. Вещь в себе. Нет огромного простора для подключения всякого барахла. С натягов 429-disco тоже не очень. Хоть и все выводы выведены, но и при этом почти все заняты какой-либо периферией, что накладывает довольно жесткие ограничения.
>>366714 >Нет огромного простора для подключения всякого барахла Огромный простор у меня есть на 429-диско. Eval-борда со всякими GPIO стоит ебаных сотен нефти. А тут вроде куча периферии и вся уже распаяна, только код меняй. Таки попробую.
>>366719 >Огромный простор у меня есть на 429-диско. Можешь показать как например ВСЕ uart-ы использовать? Как-то пробовал - со скрипом только 3 пары rx-tx нашел. Или например все SPI разом использовать?
>>366730 Слушай, это демоплата для работы с fmc и lcd контроллером, этож не usart плата, кому вообще придет в голову на демоплате использовать больше 2х портов? Ты еще бы пожаловался, что ты не можешь использовать ВСЮ переферию одновременно. Если тебе нужны порты, то это уже целевая плата - делай ее сам. Ей богу, как долбоебы обезумевшие.
>>366728 Я только вариант Nucleo видел из недорогих. Discovery вроде даже на него нет. Зато этот проц на 40-нм техпроцессе сделан вместо 90, как у F7, что позволило частоту аж 400 МГц поднять.
>>366754 И это, там ST жи заебенило йоба-контроллер двухядерный и платку на нем STM32MP157A-DK1 , но как по мне, это уже перебор для домашнего усачества.
У меня тупой вопрос по USART'у. Если я делаю что-то типа консольного управления МК, мне нужно каждую отправленную букву назад высылать, чтобы не печатать в пустоту? Или на клиенте local echo должно быть включено?
А то, например, в screen'е локал эхо даже нет. В tio оно странновато работало (иногда по букве, а иногде только сразу после всей строки появлялось). Из примеров реализаций низкоуровненых имеется только esp8266 рядом, и там как раз каждый символ мне назад и высылается, поэтому с local echo будет дублироваться (диод мигает, без rx линии я будто ничего не печатаю, но если перед \n подключу, то нормально всё отвечает).
Пытался загуглить но что-то ничего полезного не нашёл, будто я один дурак такой. Но в примерах кода я никакого такого побуквенного эхо не видел. У всех в клиенте всё нормально печатается без лишних движений (например, тут https://visualgdb.com/tutorials/arm/stm32/uart/ ).
>>366845 > мне нужно каждую отправленную букву назад высылать, чтобы не печатать в пустоту? Да, везде так. Даже ssh на Линукс через сеть точно так же работает, каждый символ эхом обратно отправляет
>>366872 А как тогда правильно структурно организовать передачу данных, если по прерываниям из буферов отправляется и приходит символ во время передачи данных? Не из прерывания же отправлять эхо это. Отключать прерывание по приходу данных на время передачи, чтобы другая сторона остановилась? Или просто докладывать пришедшие данные в буфер на передачу, чтобы он их после всего предыдущего сообщения отправил? Вроде бы что-то похожее на второй вариант я обычно вижу, если скопирую-вставляю, например, много комманд сразу. Или вообще иметь два буфера: обычный и для "эхо"?
>>366888 Наверное платиновый вопрос - есть ввод ПАРОЛЕЙ и прочей конфиденциальной инфы? Исходи из этого. Если нет - рискнул бы один большой входной буфер и конченный автомат, посимвольно разгребающий эту кучу говна. Как отличить границы команд? Магический перевод строки. Со стрелками курсора интересно будет - они выглядят примерно так "^[[A".."^[[C", бекспейс и делете немного иначе выглядит. В свою бытность быдлокодил меню и.. местами сосал хуй, правда терминалы не помню. Показывалась только одна строка в самом низу или цвет строки(выделение) не восстанавливалось ESCAPE последовательностью (погугли - ими можешь и цвет менять, и курсор в любое место экрана запихнуть с этого места печатать. Если твой терминал не умеет в escape последовательности - увидишь в явном виде бред в стиле ^[[C" т подобный)
>Если нет - рискнул бы один большой входной буфер и конченный автомат, посимвольно разгребающий эту кучу говна. Не совсем понимаю, что именно ты имеешь в виду, и зачем мне один большой входной буфер. Вот, например, вызвал я >peredat'_sto_bait() { > memcpy(outbuf, sto_simvolov, 100); > enable_txe_interrupt(); >} Данные пошли передаваться, и на 50-ом символе нетерпеливый пользователь берёт и кнопку тыкает, на мк срабатывает RXNE прерывание. Что тут нужно делать? Записать пришеший байт в коне outbuf'а, записав предварительно записав куда-нибудь текущее количество байт в нём, и жить спокойно? Или вообще не обрабатывать приём, когда идёт передача, а потом уже гарантировано иметь себе пустой выходной регистр?
Почитал Mastering STM32, так там в примере с использованием HAL'а вообще нельзя одновременно и передавать, и принимать (ну, внутри HAL'а самого), и прерывания отключаются, и проверки при входе в фукнции есть. Да и код у него немного странный, намешаны Receive/Transmit и Receive_IT/Transmit_IT. Так и надо, что ли? При этом readUserInput() стоит проверка флага, который выставляется в 'data transfer complete' хендлере, который вызывает по окончанию приёма который может начаться лишь после вызова HAL_UART_Receive_IT, который вызывается лишь когда этот флаг выставлен. Нигде инициализации его я не видел, может пропустил, конечно, бегло посмотрел. Ну и он там просто берёт и отправляет назад только что полученный символ без всяких прерываний наплевав на всё. То есть, я зря выдумаваю себе лишние проблемы, что ли? Проверка на состояние TXE флага ведь выполнится в "обычном" коде лишь тогда, когда прерывания по нему прекратятся и отключатся, верно?
Просто опять у него какое-то получается "описание возможностей", которое и в reference manual'е найти можно, а мне бы "реальный пример" хотелось бы, а не вроде бы работающую штуку, но делают ли так в жизни не сказано. Ну знаешь, как бывает, вот мы нахуярили тут что-то, а в следующей главе "но это всё не очень правильно и приведёт к ошибкам".
В общем, байтоёбить не проблема, мне бы высокоуровненый обзор стандартной общепринятой реализации или типа того.
>>366888 > Не из прерывания же отправлять эхо это. Чому нет? Отправка байта по уарту - это обычно всего лишь одна инструкция записи в регистр передачи. То есть, в прерывании читаешь байт из регистра приёма, сохраняешь его в свой буфер, либо делаешь обработку какую тебе там надо, и тут же записываешь в регистр передачи уарта. Ну получится у тебя в обработчике прерывания на одну инструкцию больше - говно вопрос. Можно примерно так почувствовать, что при обработчике прерывания в 16 инструкций при тактовой частоте 16МГц прерывание будет выполняться за 1 микросекунду. При этом время передачи одного бита через уарт на скорости 115200 примерно в 8.6 раз дольше, чем выполняется прерываение, а если взять передачу одного байта, то ещё умножь на 10 > Отключать прерывание по приходу данных на время передачи, чтобы другая сторона остановилась? Нет, зачем, уарт же дуплексный. > Или просто докладывать пришедшие данные в буфер на передачу, чтобы он их после всего предыдущего сообщения отправил? Глупости какие. Ты слишком заморачиваешься. Ты пойми, никакой, даже самый заядлый прогромист, не сможет набирать на клавиатуре тысячи символов в секунду, где у тебя бы встала проблема с быстродействием и нужно было бы принимать специальные меры. В расчёте выше показано, что даже если полностью загрузить уарт на скорости 115200 и делать всё на прерываниях, то нагрузка на процессор всё равно будет мизерной. Чтобы почувствовать какие-то проблемы с быстродействием, тебе нужно умудриться написать обработчик прерывания больше, чем на тысячу тактов, чего, конечно же, делать не стоит
>>366899 >Чому нет? Тогда туда ведь надо ставить и while (txe != set)? Ведь туда только что могло txe прерывание записать данные, которые я отправляю. Вот меня это ожидание немножко волнует, ведь это как раз и ждать передачу целого байта, что долго. Или тоже фигня?
Я не то чтобы о быстродействии забочусь, а скорее об, эм, стойкости, что ли, ну что б внезапно вдруг не сломалось что-то.
>>366904 Это нужно, если ты только, вот прям только что, записывал какое-то значение в регистр передачи, и передача этого байта ещё не успела закончиться. Но, так как скорость приёма и передачи у тебя одинаковая, и ты записываешь значение для передачи только по прерыванию приёма, ты физически не сможешь записать что-то в регистр передачи, когда передача предыдущего байта ещё не завершилась. Ты можешь оставить эту проверку на всякий случай, она всё равно будет сразу же выходить > Ведь туда только что могло txe прерывание записать данные, которые я отправляю. Не понял, что за прерываение? Ты сам записываешь в TDR внутри прерывания по приёму. Прерывания на передачу не нужны
>>366898 >>Если нет - рискнул бы один большой входной буфер и конченный автомат, посимвольно разгребающий эту кучу говна. >Не совсем понимаю, что именно ты имеешь в виду, и зачем мне один большой входной буфер. Вот, например, вызвал я Еще раз - один огромный кольцевой буфер, куда валится все входящее говно. (утрированно) "команда1 параметры1"0x0d"команда2"0x0a"команда3 параметры1 параметры2"0x0d0x0a"команда4" Идешь посимвольно с самого начала буфера и анализируешь что пришло. Здесь основная магия именно в кольцевом буфере и побайтовом разборе.
>>366898 >на 50-ом символе нетерпеливый пользователь берёт и кнопку тыкает На некоторых свичах (кажется DES-3200-28 и подобных от D-link) - используется первый вариант. Можно дать далеко не одну команду настройки, а с 10-20-30, и пока он их поочередно выполняет - ему глубоко похуй что там пользователь тычет и нет возможности прервать выполнение команды вида "config vlan default delete ports 1-28" при локальной настройке через консоль не актуально, а вот по сети.. кому надо - поймут какая это боль в этой команде. После выполнения всех команд отображаются вводимые пользователем символы.
У тебя кажется просто шиза на realtime исполнение. Не ядерным реактором же управляешь. Просто дописал в мануале - пока не выполнится текущая команда, данные новой команды не отображаются, пока не закончится выполнение программы. Спишь спокойно. При одиночном вводе символов, а не копипасты пачки команд эти строчки не актуальны и будет "эхо" в реальном времени.
>>366845 Я бы как-нибудь все это разделил. 1) Для начала сделать функции чтения/записи по одному символу в кольцевой буфер (FIFO). Желательно сделать так, чтобы эти функции принимали указатель на сам кольцевой буфер, чтобы можно было сделать произвольное количество буферов без копипаста функций. 2) Сделать два кольцевых буфера с помощью функций из пункта 1, сделать прием данных в один кольцевой буфер и отправку из другого. И не столь важно по прерываниям это будет, через ПДП или просто через ожидание в цикле. 3) Написать функции копирования строк в буфер на передачу. Можно с использованием sprintf. 4) Сделать массив структур с описанием имеющихся команд. В структурах должна быть строка с именем команды, указатель на функцию соответствующей команды, что-то указывающее на тип аргумента и прочее что требуется. 5) Написать функцию разбора команд. Для большей универсальности, особенно если каждая в отдельности команда короткая, эта функция может принимать просто по одному символу в какой-то свой небольшой буфер. Эта функция должна отделять команду от аргументов (если они есть), и искать соответствующую структуру в массиве из пункта 4, а потом вызывать соответствующую функцию по указателю из найденной структуры. 6) Все соединяешь и готово. Эхо вставляешь куда угодно, при таком разделении это не потребует много кода.
В результате получишь более-менее универсальный код, который сможет работать на любых микроконтроллерах с минимальными изменениями. Какая-то зависимость от аппаратной части будет только в пунктах 2 и 6. Пункты 3-5 совсем никак не зависят от аппаратной части и от того куда ты вставил эхо.
>>366944 SDK это что такое? Компилятор вместе с CMSIS/SPL/HAL и прочим в одной коробке? Так просто возьми gcc и пиши мейкфайлы руками. А что тебе мешает взять кейл? Новые версии под XP не работают? Так возьми старую версию.
>>366947 ну есть ноут с Win 10, но я боюсь его сжечь по неопытности. >>366954 >Так возьми старую версию. Смотрел Keil 4, там нет серии Fxxx вообще, только какие-то uPSD
>>366978 >только какие-то uPSD У этих архитектура 8032. Значит ты скачал кейл для 8051, а не для ARM. И пофигу вообще на все эти списки микроконтроллеров в кейле. Это всего лишь предустановки линкера и флагов компилятора. Может лучше с ардуины начнешь, если такого не понимаешь?
>>366981 Не понял. Бред какой-то. Говнокод - это что? Кейл? Или твой код, запускаемый в кейловском симуляторе?
>>366986 >Может лучше с ардуины начнешь, если такого не понимаешь? нет, это по учебе. Да и зачем ардуино, понимания от этого не прибавится же, это просто поиграться.
>>366989 >Да и зачем ардуино, понимания от этого не прибавится же Пердуина это плата с программируемым микроконтроллером, только несколько помедленней чем STM32 и с более слабой периферией. Так что если ардуина не даст никакого понимания, то STM32 тем более. >да Это сильно. Для этого, для начала тебе придется взломать симулятор, потом... Просто бред. Да и вообще не обязательно запускать код в симуляторе. Или твой код неким чудодейственным способом сломает компьютер при загрузке в микроконтроллер? Ладно бы ты еще боялся пожечь порты, это еще как-то возможно, но это просто невероятный бред.
Кстати, 5-ых кейлов много разных версий. Там даже компилятор практически сменили в одной из версий - был на основе gcc, стал на основе llvm. Какие-то версии кейла 5 наверняка должны работать под XP.
>>366995 >Так что если ардуина не даст никакого понимания, то STM32 тем более Какого понимания? Что конкретно? Ты тут писал >>366986 >У этих архитектура 8032. Значит ты скачал кейл для 8051, а не для ARM. >И пофигу вообще на все эти списки микроконтроллеров в кейле. >Это всего лишь предустановки линкера и флагов компилятора. >Может лучше с ардуины начнешь, если такого не понимаешь? При чем тут ардуино вообще?
>Это сильно. Для этого, для начала тебе придется взломать симулятор, потом... Просто бред Ладно, я наверное ошибся. Дело не в моем коде, а скорее в правильно спаянной схеме, и исправности компонентов. Может быть что-то где-то замкнет, и...
>>367006 >Какого понимания? Вот и я про то же. Про какое понимание ты писал? Про понимание общих принципов работы микроконтроллеров? Так для этого ардуина вполне подходит, и не сожгешь ничего. И зачем ты процитировал фразы, касающиеся архитектуры? Еще раз повторяю: ты взял 4-ый кейл не для ARM. Кейл бывает для архитектур ARM Cortex-M, 8051, C166 и 80251. Все это разные компиляторы и IDE. Потом, даже если в списках кейла нет твоего микроконтроллера - это не помешает компилировать в кейле код для твоего микроконтроллера. Для этого нужно выбрать архитектуру, задать параметры для линкера и некоторые флаги компилятора. Необходимо только чтобы в этом кейле был компилятор для нужной архитектуры (ARM Cortex-M).
>Может быть что-то где-то замкнет, и... И нихуя, если только не подашь на вход 220 В или что-то в том же роде. Но даже если так боишься, то грузи программу в STM32 через UART с гальванической изоляцией, тогда даже если киловольт подашь, все равно компьютеру ничего не сделается. Теперь понял?
>>366905 >Прерывания на передачу не нужны Как не нужны, не блокируя ж высылать данные. А в главном while'е постоянно проверять не хочется, всё намешано в одну кучу в итоге будет.
>на realtime исполнение. Просто дописал в мануале - пока не выполнится текущая команда, данные новой команды не отображаются, пока не закончится выполнение программы. Никого риалтайма, я и не против такой иметь, даже лучше, когда не смешивается.
Ты почему-то всё на обработку входа упор делал, но у меня вопрос-то был лишь о синхронизации передачи из двух мест (ответ на команду и эхо).
>ты физически не сможешь записать что-то в регистр передачи Это если я только эхо имею, не? Но ведь я могу и, скажем, ответ на предыдущую команду в этот момент передавать. Вот, например, такой код — https://pastebin.com/aNMj0gvi. Скорость 300 выставил, разумеется, чтобы наблюдать за всем. При нажатии кнопок (в любой момент) диод мигает, счётчик циклов инкрементируется, соответствующее количество сообщений отправляется, то есть всё куда и когда надо приходит. Но вот никакого эхо нажатых во время получения сообщения кнопок нет, потому что регистр перезаписывается отправкой сообщения, о чём я и говорил. (Не очень понимаю, правда, почему он проверку на TXE проходит.) Раскомментировав строку 22 всё выходит нормально — и сообщение приходит, и эхо (смешивающееся с сообщением, да). Ну или проверку отправки сообщения тоже можно на if ((USART1->ISR & USART_ISR_TC) == USART_ISR_TC) заменить, но почему-то везде TXE используют.
В общем, спасибо, буду пытаться делать через кольцевые буферы. И >>366918 тебе тоже.
>>367020 Без понятия на счет всех этих регистров, т.к. c STM32 очень давно ничего не делал. Но у тебя получается примерно такой алгоритм: 1) Если что-то пришло, то отправить на выход. 2) Если буфер передатчика пуст, то вывести очередной символ из usart_out_buff. 3) Перейти к пункту 1. Ну и что ты хотел? Выводишь в пункте 2 символ и не дожидаешься окончания передачи, в результате сразу можешь перейти к пункту 1, когда буфер передачи еще не пуст. Это как-то нелогично.
Почему бы не выводить только из одного единственного FIFO? 1) Сделать два FIFO, один на передачу, другой на прием. 2) По прерыванию записываешь принятый байт в приемный FIFO. 3) Где-нибудь выдаешь байты из FIFO на передачу в регистр TDR. Это можно сделать как угодно - по прерыванию или задействовать ПДП. 4) В основном цикле переписываешь байты из приемного FIFO в FIFO на передачу и делаешь разбор команд и выполнение команд. Там же дописываешь в FIFO на передачу свои сообщения. В результате ничего не путается и все хорошо. Конечно, в этом случае эхо будет ждать пока не выполнятся команды, но разве это плохо? Наоборот, вывод команды не будет путаться с эхом. Даже циклы вида while ((USART1->ISR & USART_ISR_TC) != USART_ISR_TC) {} при таком подходе не требуются.
Какого хуя, у меня ломается ШИМ на таймере, если в совершенно другом месте добавляю заполнение структуры данных? Грешу на то, что у меня максимальная оптимизация в кейле, но это прям хуй знает что за магия. Памяти в коде вроде занято всего 130кб из 256, так что это не должно влиять. В довесок вопрос, а можно ли включать оптимизацию отдельных кусков кода, а не всего целиком?
>>367039 У тебя в структуре где-то наползание данных на другие, на переменные твоего шима. Смотри адреса пепеменных и ближайшие массивы, вполне возможно что вылез за пределы чего-то если пользуешься указателями, 90% что твой проеб
>>367025 >Ну и что ты хотел? Не, я примено это и ожидал, просто тот анон говорил, что никакие ожидание не нужны и хоть в прерывании сразу отвечай (забыв про не эхо оказывается), что меня смутило, вот я и проверил.
>но разве это плохо? Это даже хорошо и я именно так всё и сделаю, да.
>>339005 (OP) Почаны, пришла тут моя стм32ф746, вся красивая такая. Ну я заебенил "Хэлоу Ворлд" и решил залить взад демку. Откомпилировал, залил, а тут такая хуйня. Картинки не картинки, а одни полосы. Это плата наебнутая или что-то с Кейлом?
>>367297 >картинки побились Всё оказалось намного хуже. Там бинариник весит 18 мегов и прошивается только с внешним загрузчиком. Я пока еще до конца не отдуплился.
Не знаю, забросили ли уже этот тред, но у меня снова вопросы.
Есть SPI и DMA и флеш память.
Во-первых, нормально ли смешивать и DMA, и обычный блокирующий способы вместе? Например, если нужно отправить 1-2 байта. Например, делать вот так: >send_instruction(instruction) { SPI->DR = instruction} >send_address() { SPI->DR=addr[23:16]; wait_for_busy_clear(); [16:8]..., [7:0]... ; } >send_data() { dma->cndtr = size; dma->maddr=out_buf; enable_dma_tx_ch(); }
При только отправке можно было бы и в буфер запихнуть команду с адресом и разом выслать, а вот при приёме-то как быть? Если запихнуть команду и адрес в буфер, то первые 4 байта приёмного буфера будут мусором. Может есть ли какой-то красивый способ это обойти? Мне в голову приходит только использование с с n-ого байта (что как-то глупо), либо двойное включение tx dma за одну "транзакцию". (tx, затем tx и rx.).
И вообще, правильно ли я понимаю, что в SPI для работы rx dma нужно делать вот так: >rx_dma->cndtr = size; >rx_dma->mar = inbuf; >tx_dma->cndtr = size; >tx_dma->mar = outbuf; // musor >rx_dma_enable(); >tx_dma_enable(); ? Ведь без отправки данных ничего получено не будет. Вроде тот же HAL именно это внутри и делает.
Может есть где хорошие гайдланы по работе со всеми этими интерфейсами не в стиле "вот есть spi, там sck, miso mosi, такты биты пишутся,", а затем сразу хуяк и hal_receive() используйте. А как именно это всё в коде организовано на низком уровне нигде не описано, только код библиотек читать если.
И ещё, можно ли писать в в выходной буфер DMA во время передачи данных? Хотел для дисплея сделать dma в circular режиме, который бесконечно высылает данные и обновляет экран как можно быстрее. А когда у меня кадр изменяется, я просто пишу в этот буфер и не волнуюсь ни о какой необходимости запускать передачу данных. Но что-то не работало и чип крешился. Вполне вероятно, что я криворук и проблема совсем в доругом была.
>>368924 >На SD карте небыло ничего Ну закинь туда тхт-файл попробуй. Ты с чего решил, что если там стоит стм-камень, то в этом треде все обмазываются бегущими строками? Там с таким же успехом мог стоять камень от NXP, TI, Microchip, etc.
>>368929 А что конкретно из этого должно помочь? Предполагается методом подбора подтыкнуть софтину? >>368926 Нет, тхт файл не катит. Должен быть специальный софт, которого овер дохуя, потому что, как я понял, все эти строки собираются кустарным способом и софт может писаться под конкретный модуль конкретным сборщиком. Кстати, как залить тхт файл на устройство без СД слота, при условии, что винда не видит его как диск?
Если бы можно было определить модель и скачать под нее софт, я б не дергал тут всех тупыми вопросами.
>>368931 >Если бы можно было определить модель и скачать под нее софт, я б не дергал тут всех тупыми вопросами. Ты дольше тут ебешь мозга, чем поустанавливал бы десяток софтин и попробовал бы поуправлять своим бегущим говном.
>>368932 Я ебу мозга и попутно как раз этим и занимаюсь. Но пока шо то нихуя не выходит. На самом деле, я надеялся, что местные сталкивались с этими моделями и гомоебли с подбором софта будет намного меньше. Похоже не фартануло, поэтому возвращаемся к плану А - подбор софта наугад.
В SPI1->TXCRCR лажа какая-то, какой бы полином ни выбирал. При этом их описание работы crc калькулятора из application notes'ов именно это и выдаёт (если я руками реализую их алгоритм). Приходится руками софтварно считать другим способом ( https://www.pololu.com/docs/0J1?section=5.f ).
>>339005 (OP) На сайте ST есть какая-нибудь загогулина, чтобы не выкидывало из авторизации через пять минут? Нахой они такую хуйню сделали? Чай не банк-онлайн.
>>369211 >Они починили авторизацию? А когда она ломалась? Меня просто заебало выкидывание из авторизации минут через двадцать. Будто йоба-секретный сайт какой-то.
>>369126 Слушай, с той софтиной всё заработало, огромное тебе спасибо! Может ты и для такой модели софт знаешь? https://ledcl.ru/produkciya/beguschaya_stroka_mini.html Модель называется P5. Я действительно пытался гуглить и подцепить её к такому же софту, как и предыдущую.
>>369439 >огромное тебе спасибо! Может ты и для...
Не в тему, но как обычно "ой спасибо, а может ты это еще сделаешь, а может потом это?" Естественно за спасибо, возможно даже большое. Я не тот чел, который тратил на тебя время и искал твое говно, но блять, имейте совесть, ты собирался платить кому-то деньги за это, ну кинь на кефир тому анону хотя бы 20% от того что ты собрался заплатить. Именно из-за такой хуйни перестал кому-либо в чем-либо помогать, хотя иногда даже хочется и все на то имеется, но идите нахуй, вот что я думаю.
>>339005 (OP) Сап, оч нужна помощь с курсачом. Есть даташит STM32, https://www.st.com/resource/en/datasheet/cd00210843.pdf Предположим я беру микросхему пикрил 1. Вопросы: 1) Пик 2 - что из этого обвязка, а что нужно выкинуть? Выдрал это из другой схемы, без понятия что для чего. 2) В какие конкретно пины втыкать Пик3 ? оптопара (1 выход), терморезистор (1 выход), реле (2 выхода). 3) Есть дисплей Пик 4, как его через I2C прихуячить?
Я не особо надеюсь на помощь тк постинг тут крайне не высокий, но вдруг.
>>369600 >помощь с курсачом Судя по вопросам тебе скоро нужна будет помощь в наматывании портянок и подметании плаца ломом. Как ты собрался писать курсач абсолютли нихуя не понимая? Из обвязки тебе понадобится только питание, кнопка сброса. Тактирование врубишь от внутренних генераторов. Подключаешь на какой тебе порт нравится. Терморезистор надо на вход ADС. Как дисплей твой по I2C подключить, никто тебе не расскажет по твоей картинке. Давай название и нормальную распиновку.
>>369795 >Цена Но микрочиповские даже немного дешевле вроде как. Конечно если не рассматривать алипомойку. Но при чем тут вообще цена? Все равно на остальные компоненты потратишь на порядок больше. >комьюнити Зачем? Хватает вменяемой документации. >дешевизна китайских программаторов Программатор для этих микроконтроллеров - это переходник USB-UART. А отладчики тоже не намного дороже, например клоны J-Link.
>>369799 Я немного про другое. Почему эта книга только по STM32?
>>369800 >Почему эта книга только по STM32? У автора спроси, нравится вот ему стм.
Потому что он там объясняет всё на примерах STM'овских библиотек. Да, есть и "общая" часть, и краткие описания всяких протоколов, но это больше прикладная книга, а не теоретическая я всю не прочитал ещё, могу и ошибаться, поэтому и написать её обобщённо для всех кортексов, чтобы хоббиисту васе, которому просто диодом плавно помигать через pwm хочется, было понятно, как это реализовать именно на его мк, вряд ли было бы возможно. Ну, наверное и можно было, но тогда всё через CMSIS и вилкой делать, всех распугаешь и на ардуину уйдут.
>>369824 >изучить документацию на микроконтроллер Толку? Например, на usb ядро в stm32 документация завязана на hal. Чистого описания этого ядра я не нашел.
>>369969 >Какой же из ультрадешевых? Шизоид, почитай мнение другого анона >>357418. Если любишь ловить глюки и простреливать себе копыта через AFIO - удачи, бери F1 и не выебывайся потом что глючное дерьмо купил.
>>369973 Я тот анон, что писал >>357418 В чем шизоидность? Я пробовал все эти процессоры, без SPL/HAL/LL/Интернета, руководствуясь только документацией и говорю как есть на мой взгляд. Возможно тот кто пользуется обертками, и не сильно заметит разницу, но конкретно в железе они отличаются не в пользу F1.
>>369969 >Какой же из ультрадешевых? Что в твоем понимании ультрадешево? Ты возьми любое изделие и посчитай его цену, доля микроконтроллера едва ли 10% наберет от всей стоимости. Скорее нужно спрашивать не "что самое дешевое?", а что наиболее подходящее для твоих задач Если что-то рутинное, простое, подобное изделиям на ардуино, примочки, управление дисплеями, датчиками и всяким таким - смело покупай F0 Применения для F2 при их цене я не нашел, производитель видимо тоже, их ассортимент ограничен несколькими моделями без какого либо изюма. Хорошее количество ОЗУ, но отсутствие FPU ограничивает его применение для обработки сигналов, где ОЗУ нужно. Разве что для применений с большим экраном, изображениями или перепаковками каких-то тяжелых пакетов, не знаю, правда. F3 -хорош также как F0, более могучий DMA, аналоговая периферия и особенности типа субнаносекундных таймеров и медленных но 16 битных АЦП, осторожно, мало ОЗУ, хороши когда хочешь повысить точность своих поделок на F0 и применять числа во float. Для обработки сигналов подходят слабо ввиду малого ОЗУ, нет такой приятной вещи как в F0 сигнал DE для RS485. Ну и F4 - щедрый процессор, хорошо подходит для обработки спектра, фильтрации, и прочих обработок сигналов. Хорош всем, кроме одного, и это не цена, это значительно большее количество регистров и новичок просто охуеет и даже не сможет настроить RCC чтоб включить его (про генераторы кода типа Куба не упоминаю) и скорее всего выкинет на полку.
Если ты не знаешь что тебе нужно - бери F0. Жопа не пригорит, 48МГц считает все довольно резво. На F071 даже на 1024 точечный БПФ ОЗУ хватит. Купи макеток с 030F4P6 по $1 и делай свои махарайки, а там сам поймешь что тебе надо.
>>369991 > Я пробовал все эти процессоры, без SPL/HAL/LL/Интернета, руководствуясь только документацией Было бы хорошо услышать конкретику, возможно, даже baremetal-код, на котором глючит f103. Все-таки инженеры, а не в церкви богу молимся.
>>369991 >доля микроконтроллера едва ли 10% наберет от всей стоимости. Вот на картинке почти универсальное устройство. Только вместо монитора приделать светодиод. Еще можно оставить только одну кнопку, нуль/единицу определять длительностью нажатия.
>>370006 Лично у меня на F103zc - стандартный глюк с iic и при включении FSMC - не отключался сигнал NADV или какой-то такой в районе PB9-PB14 - из-за него нельзя было использовать IIC на этом выводе.
>>370525 Обновлять сразу после покупки не надо? А то с аспами китаёзы до сих пор старую прошивку льют последняя версия вышла в 2011, сука, году, а они ещё более холодный труп ебут.
>>370549 >вшить blackmagic probe и использовать как swd отладчик Не советуй глупости. >С клонами jlink'а та еще лотерея Ну прошил и готово, подумаешь проблема. У кого-то и так нормально работает. Либо можно взять оригинальный недорогой J-Link EDU.
>>370560 >Не советуй глупости. Поясни плз, чому глупости? Ещё удобно и то, что у bmp на виртуальном com-порту gdb-server и не надо ебаться с openocd >Ну прошил и готово, подумаешь проблема. Каждый раз прошивать внешним отладчиком при выходе обновления? У меня от этого уже пара защелок на корпусе отломалась - часто разбирал. А если не прошивать - алерты об устаревшем firmware. > У кого-то и так нормально работает. Лотерея же. > Либо можно взять оригинальный недорогой J-Link EDU. 5-6к руб против 200руб, да ещё и алерты об educational purposes.
Хотя сейчас поставил бутлоадер из "стены плача" и обновился до 6.46g, но виндовый файрвол успел блокировать попытку сходить jlink-config'а в инет - сейчас бы и мой serial id в blacklist попал.
>>370717 Как вариант - видел реализацию синуса или еще чего ШИМом. Таймер сам выгребает нужные значения по прерываниям, а не заходишь и выходишь из прерывания каждый раз при переполнении или совпадении.
>>370718 >Таймер сам выгребает нужные значения по прерываниям По каким прерырваниям? dma? >а не заходишь и выходишь из прерывания каждый раз при переполнении или совпадении. что dma прерывания обрабатываешь, что tim - не вижу разницы.
>>370876 >А есть вариант Есть. Выучить ангельский и сидеть самому переводить. У меня была мысля, поэтапно изучать книженцию и переводить яндекс-транслейтом. Но потом чота перехотелось.
>>370914 Нету исходников и я не собираюсь писать новую. Я хочу дампнуть текущую прошивку, дизассемблировать ее (опыт ковыряния бинарников для ARM есть) и пропатчить где надо.
Я уже прочитал что на чипе можно установить защиту от чтения путем установки байт опций RDP. Хз установлена она или нет в устройстве которое ко мне едет, но проверять буду.
В общем, я вроде разобрался что мне нужен программатор ST-Link. Один из. Там разные версии и от разных вендоров. Какой посоветуете?
И как подключиться программатором к микрухе чтобы хотябы проверить стоит ли там защита на чтения или нет? К каким пинам и в каком режиме?
>>370919 >Я уже прочитал Молодец, вот так бы сразу. >я вроде разобрался что мне нужен программатор ST-Link Или можно через bootloader слить прошивку.
Присоединюсь к мнению анона выше, похоже что модератора-мудака. Есть несколько вариантов: 1) Есть схема. Тогда ты пишешь прошивку самостоятельно. Не знаю что ты там собрался контролировать, но вряд ли это сложное устройство. 2) Схемы нет, но есть бинарник. Ну, тогда можно подредактировать строки и что-то еще по мелочи, не особо вникая в алгоритм работы. Но для этого нужно этот бинарник получить, что при включенной защите от чтения и отладки (которая там есть) будет затруднительно и вообще не целесообразно. 3) Рисуешь схему по печатной плате самостоятельно и далее как в п.1. В любом случае, занимаешься ты ерундой.
>>370920 Ты просто не читал что я в треде своем написал >>370903 (OP) (OP) Там все черным по серому написано нахуя мне это нужно и с чем мне предстоит работать.
И еще раз - мне нужна помощь по выбору именно инструментария. Че там уже дальше с устройствои и прошивкой делать - я сам разберусь. >ST-Link. Один из. Там разные версии и от разных вендоров. Какой посоветуете? >И как подключиться программатором к микрухе чтобы хотябы проверить стоит ли там защита на чтения или нет? К каким пинам и в каком режиме?
Если есть ссылки где подобное все достпно описано, можно их кинуть.
>>370948 >Нельзя. Вот и я о том же. Если защита не стоит, то можно. А если защита стоит, то проще написать все заново. Также может оказаться что проще подключиться к UART для доступа к бутлоадеру, чем к SWD. Поэтому переходник USB-UART может пригодиться. Плата не многослойная? Так просто перерисуй с платы схему и прошивку сам напиши.
>По поводу выбора ST-Link вопрос все еще акутальный. Бери любой. Сам можешь убедиться, что в этом треде многие пользуются чем попало с алиэкспресса. Гальваническая изоляция тебе же не нужна?
>>370955 Не для программатора, а для отладчика. Очевидно что для случаев, когда земли у компа и отлаживаемого устройства разные, с разными потенциалами, и соединять их нельзя. Например, когда устройство запитывается от сети через блок питания без гальванической изоляции.
>>370949 >Поэтому переходник USB-UART может пригодиться. Уже имеется.
>А если защита стоит, то проще написать все заново. Овчинка выделки не стоит. Устройство не сказать что сложное (повторюсь, это контроллер для водянки с OLED дисплеем), плата двуслойная. Но оно и из коробки в общем то нормально работает, а через патч прошивки я хотел небольшие косяки поправить и немного кастомизировать. Так что если там окажется защита, я просто забью.
>Гальваническая изоляция тебе же не нужна? А какая цена вопроса? Подобные плюшки лишними не бывают.
В принципе, я этот контроллер хочу запитать от отдельного испульсного БП, но там же должен быть понижающий трансформатор который и обеспечит гальваническую изоляцию.
Кстати, в таком случае, когда комп и отлаживаемое устройство от разных БП запитаны, пусть и в обоих есть гальваническая изоляция, можно объединять земли? Что-то я не задумывался над таким вопросом.
>>370965 > Кстати, в таком случае, когда комп и отлаживаемое устройство от разных БП запитаны, пусть и в обоих есть гальваническая изоляция, можно объединять земли? Ну если у тебя интерфейс дифференциальный между компом и железкой, можешь и не объединять, а если обычный - как оно у тебя работать-то без земли будет?
>>370984 >>370985 Не скажу что явно тестил, но осторожно скажу что нет, не нужна земля. Одна железка питалась от обычного БП с 2 выводами в розетку и псевдозаземленный комп. Работало только через 1 пару, без земли.
>>370981 >если у тебя интерфейс дифференциальный между компом и железкой, можешь и не объединять Бред. Особенно если USB или LVDS, например. Или взять к примеру простейший дифференциальный усилитель на двух транзисторах. Бывают разные дифференциальные интерфейсы, некоторым нужна земля, а некоторым нет.
Без земли может только трансформатор, например, в Ethernet, или оптопара. У всего остального есть лимит на common mode voltage, и если земли с разных сторон имеют разный потенциал, то может не работать, работать плохо, сгореть и проч.
>>371032 Это ты так хитро выебнулся? Ну можешь взять как пример обыкновенный компаратор.
>>371024 >common mode voltage По-русски это называется синфазным напряжением. Только для трансформаторов и оптопар тоже будет ограничение, пусть и значительно выше.
>>371035 Наверное тот анон имел в виду такие крайние случаи вроде >>370957 Ну а так то действительно, обыкновенным компараторам для работы требуется определенный диапазон синфазного напряжения, который не всегда будет обеспечиваться, если земли не соединены.
>>371034 >Только для трансформаторов и оптопар тоже будет ограничение, пусть и значительно выше. Можешь нарисовать путь тока пробоя межобмоточной изоляции при гальванической развязке трансформатором?
>>371068 К чему этот вопрос? Ты сам что-ли не можешь? Какие-то SPICE-модели еще захотел... Ты или траллишь или просто идиот. Вон выше была картинка со схемой блока питания без гальванической развязки. Допустим соединили выход этого блока питания с землей (например через корпус компьютера), что будет в результате? Если соединить не напрямую, а через пробитый трансформатор или оптопару, то что-то существенно изменится?
>>371073 Ты вообще о чем? Тебе рассказать чем ноль от фазы отличается? Обойдешься, за этим - в гугл и учебники. Шизиком и гуманитарием тут только ты себя показываешь.
>>371079 Зачем мне это делать? Твою безграмотность ликвидировать? Тебе уже ничего не поможет. Что ты вообще пытаешься доказать? Что гальваническая развязка - это глупости и она никогда не нужна?
>>371084 >допустим тут пробило Блядь, даун, я спрашивал про это? Где в эзернет трансформатор соединен с нейтралью? Хули вы кукарекаете про синфазное, если такая схема пробоя не работает с устройствами на батарейках? Может дело не в синфазном, пиздоболы-дебилы без высшего образования?
>>371085 Одним концом одна обмотка эзернетовского трансформатора соединена с корпусом компа, пусть не напрямую, а через какой-нибудь маломощный транзистор или еще что-то полупроводниковое. Корпус компа соединен с землей, а земля соединяется с нулем где-то там.
>>371086 >одна обмотка эзернетовского трансформатора соединена с корпусом компа, пусть не напрямую, а через какой-нибудь маломощный транзистор Во бред
>Корпус компа соединен с землей, а земля соединяется с нулем где-то там. C защитным нулем. Вообще, хуй его знает, что ты спизданул своим сленгом электриков из жэка. Понят однозначно невозможно.
>где-то там Мм, сам точно не знает, а гонору как у первокура.
>>371086 >Во бред Бред у тебя в голове. Эзернетовский трансформатор ни с чем не соединяется? Или минус компьютерного блока питания не соединяется с землей?
>>371089 >Какой землей? Очевидно с той, которая в розетке. >сигнальной, защитной, силовой? И что, у этих земель настолько сильно разные потенциалы и сопротивления, чтобы это было существенно в данном случае?
https://ru.wikipedia.org/wiki/Синфазный_сигнал >Синфазный сигнал — составляющая аналогового сигнала, присутствующая с одним знаком, амплитудой и фазой на всех рассматриваемых выводах. В электронике, где сигнал передаётся с использованием напряжения, синфазный сигнал определяется обычно как полусумма напряжений Напряжений относительно чего, применительно к трансформаторной развязке? Должно быть относительно общего провода приемника или передатчика сигнала. Если уровень сигнала намного меньше синфазного напряжения, то синфазное напряжение будет приблизительно равно напряжению между обмотками трансформатора. Естественно, что при каком-то уровне напряжения трансформатор пробьет и он в результате перестанет выполнять свои функции. Аналогично с оптопарами.
И что дальше? Если между твоими GND1 и GND2 включить источник напряжения на много киловольт, то трансформаторы пробьет. Если не включать, а оставить болтаться в воздухе, то естественно ничего не будет, кто тут с этим спорил?
>>371098 Помимо того что у тебя на схеме соединяются два выхода, еще и соединяются Vcc диодных мостов. И полярность питания зачем-то отрицательная. Так значит все-таки нет никаких ограничений по величине синфазного напряжения для гальванической развязки с трансформаторами или оптопарами?
>>371240 На википедии определение неправильное? >В техническом универе ты тоже так бредил? Я же самоучка, ты что? В такой параше как ты, не имел удовольствия обучаться.
>>371240 Так или иначе, синфазному напряжению будет равно напряжение между какими-то двумя точками в устройстве. Или ты с этим тоже поспоришь? При каком-то определенном напряжении между двумя проводниками, возникнет пробой. С этим тоже будешь спорить? Соответственно при определенном уровне синфазного напряжения возникнет пробой и для любого устройства будут определенные ограничения по синфазному напряжению. Тоже мне, дипломированный специалист нашелся. Не удивительно что у нас электроника в такой жопе, если выпускают таких специалистов.
>>371240 Каков же все-таки пиздец. Отрицать то, что при определенном напряжении между чем бы то ни было, не будет возникать пробой. Напомню, что придрался ты к высказыванию о том, что ограничения по синфазному напряжению будут и при трансформаторной развязке.
>>371244 >ограничения по синфазному напряжению будут и при трансформаторной развязке. >даже при батаречном питании >хотя при чем тут синфазное? не знаю, я дебил.
>>371068 Ну даже не знаю, а это что такое? >>371068 Заметь, там не было утверждений что без общего провода дифференциальные интерфейсы с трансформаторной развязкой вроде эзернета не будут работать. В ответ на утверждение о том, что для трансформаторной развязки будет ограничение по синфазному напряжению, ты стал придираться, причем весьма невнятно. Внятных высказываний с твоей стороны не было, вообще трудно было понять к чему конкретно ты придирался. Может у тебя с русским языком плоховато? Или просто читал жопой? Или ты хотел сказать, что любые дифференциальные интерфейсы без гальванической развязки способны работать без земли?
>>371250 > ты стал придираться, причем весьма невнятно. Что? Просто попросил показать путь тока, или дать spice-иллюстрацию. По-моему, невнятен ты, абсолютизируя синфазность.
>>371249 Где я писал про питание от батареек? У тебя глюки пошли. И да, ограничение будет вне зависимости от источника питания. Потому что где ты в этих >>371243 рассуждениях увидел конкретный источник питания?
>>371255 Ты случайно не жопой тред читаешь? Последовательность событий была такова: 1) Кто-то написал, что дифференциальные интерфейсы будут работать, если не соединять земли. 2) Я уточнил, что не все. Например LVDS так может работать фигово. Кстати, это может относится не только к передаче цифровых сигналов, но и к передаче аналоговых сигналов. 3) Какой-то анон написал про токи, которые будут от этого течь. Я такой ситуации представить не смог, для случая когда между землями приемника и передатчика не стоит источника напряжения, если что. 4) Ты потребовал от него spice-иллюстрацию. Если честно, то я знаю что такое spice-модели, но без понятия что такое spice-иллюстрация. 5) Он в ответ тебе написал что для всяких дифференциальных входов без гальванической изоляции требуется определенный диапазон common mode voltage, который может не обеспечиваться, если не соединять земли. 6) Я, в ответ на это написал, что определенный диапазон синфазного напряжения требуется и для других устройств. Да хоть для проводов на изоляторах. Также я удивился зачем тебе понадобилось spice-моделирование, когда можно было обойтись моделью из нескольких резисторов и источников тока или напряжения. 7) И тут ты начал выебыватся на меня.
Как мне надо было понимать такое? Вот я и не понял о чем ты. До сих пор не понимаю твой лепет. Но в результате этого идиотского обсуждения у меня остался единственный вариант - ты утверждаешь, что для некоторых многополюсников нет никаких ограничений по синфазному напряжению.
>батарейки Потому что это абсолютно ни при чем. Ты бы еще написал что в данном случае будет какая-то разница в зависимости от топлива, на котором работает электростанция.
>>371267 Вместо генератора на электростанции ставишь хорошую такую батарейку, что от этого изменится? Само по себе максимально допустимое синфазное напряжение не зависит от способа питания какого-то абстрактного устройства, потому что это характеристика этого устройства самого по себе. Ты теперь будешь спорить с тем, что максимально допустимое синфазное напряжение будет отсутствовать даже просто для проводов, висящих на изоляторах?
Так что тред ты читаешь жопой, в результате чего несешь бред.
>>371269 А если ты про то что синфазное напряжение может быть определено относительно земли (в горшке с цветком), то при определенном напряжении все равно случится пробой. Между корпусом устройства и этим горшком, например.
>>371277 >>371278 Где ты там равные напряжения увидел? Еще раз из википедии: >синфазный сигнал определяется обычно как полусумма напряжений Вот я нарисовал картинку. Ты будешь спорить с этим? Допустим Е1 и Е2 равны, чему будет равно синфазное напряжение?
>>371282 Я уже писал, что эти напряжения относительно общего провода или корпуса. Или еще какой угодно точки, находящийся внутри устройства. И тогда у тебя не нашлось возражений на это утверждение. А сейчас ты просто пытаешься извернуться. Может ты напишешь, что для компаратора синфазное напряжение нужно определять не относительно общего провода компаратора, а относительно чего-то еще?
>>371301 >А сейчас ты просто пытаешься извернуться Нет, я лишь пытаюсь понять, что ты хочешь сказать. Ок, давай страницу из книги с математизированным определением. Статья в википедии уровня пту.
ололо, анон, ты не учишь матчасть и пытаешься спрятать свое невежество за узлами, полюсами и spice моделями.
для LVDS стандарт TIA/EIA-644 указывает, что синфазное напряжение на входе должно быть в пределах от 0 до 2.4 вольт. для трансформатора Ethernet типичное напряжение пробоя изоляции 1,5 киловольта, для оптопары от 2,5 киловольт и выше. за этими пределами поведение твоего приемника, трансформаторе, оптопары не определено. то есть может быть что угодно - и бывает.
если ты, анон, не соединил земли приемника и передатчика (и если электрик дядя вася не сделал это за тебя), ты не можешь гарантировать, что синфазное напряжение останется в каких-то рамках, а твой приемник LVDS, трансформатор, оптопара не гарантируют, что будут работать так, как ты ожидаешь. ты можешь понадеяться на авось да небось, и будет, как всегда.
к примеру, летит самолет, в хвосте стоит датчик чего-то с передатчиком LVDS, в кабине сидишь ты с приемником. земли приемника и передатчика не соединены, потому что все на батарейках. в самолет попадает молния, и приемник выпускает тонкую струйку дыма. или, к примеру, ты сдвинул модную фетровую шляпу на свой эбонитовый затылок и звдумчиво тронул твою конструкции пальчиком, и приемник тихо отправляется в мир иной. или просто твой передатчик лежит на бабушкином финском холодильнике Розенлев, и каждый раз, когда он включается, LVDS перестает работать. ты не можешь гарантировать, что оно будет работать, и поэтому что-то обязательно случится, может быть, не сразу.
Обьясните на пальцах и конкретном примере, почему во втором случае, как вот с такой херней >>370957 когда в БП нет гальванической развязки с розеткой, объединять земли нельзя и лучше USB через гальваническую развязку подключать? Что может произойти?
Как запустить на F429 SPI NSS pulse mode? Есть один и тот же код для SPI, взятый с L051, где он работал нормально. На F429 он никак не хочет дёргать CS. Пляски с OTYPER и PUPDR ни на что не влияют. TI mode работает нормально, но он мне не нужен.
Здарова бандиты! Короче пришли ко мне из китая аж три голубые таблетки. Ноги припаяны, CMSIS скачан, st-flash скомпилен, non-eabi-gcc скросскомпилен. Но вот стал я рыться в гайдах и заметил одн интересный совет. Ннада кровь из носа включить SWD https://eax.me/stm32-on-breadboard/ Если чип прошить без поднятого сериала то перепрошить его будет геморно?
>>339869 >Чет вообще вголос с этого, ведь есть AtmelStudio Так, стоп, в божественной атмел студии можно программировать под стм32? А то я ставил плагин под вижл студию для этих целей.
>>374301 >>374334 Даже не в этом дело, оно генерит столько говна вокруг себя, что просто охуеть. Вся стилистика когда личная рушится.
Ради бога, инициализация периферии это довольно малая и единоразовая часть работы. Нахуя это отдавать программе, говно за которой ты будешь еще дольше вычищать?
>>374519 >говно за которой ты будешь еще дольше вычищать? Примеры говна в тред, пожалуйста? Куб довольно аккуратно генерит, ты его может со FrontPage-м времен 00-х спутал?
>>374532 Хз уебищно. Я люблю писать наглядно и максимально понятно, что бы как книга читалась. Куб срет своими комментами и очень кривым интерфейсом функций.
>>374534 Пик, понятно, что высрать прототип на нем в 100 раз быстрее, но блядь, дрочить строки как на 2ом пике в главном цикле - уебанство дикое.
Я тоже пользуюсь, плюясь, т.к. для GPIO западло свою либу писать, а готовых что-то не находил. Но стараюсь заворачивать глубоко-глубоко и получается чисто, наглядно и аккуратно Так же согласен с использованием HAL для тяжелой периферии типо USB, так как там низкий уровень чрезвычайно сложен, а пары месяцев на поверхностное вкуривание нет.
Но вот инициализировать АЦП, где надо 3-4 бита вписать вот этими строками, хуй знает, пиздец какой то. И хер бы с ним, но куб не дает это дело нормально завернуть в человеко-читаемые оболочки, т.к. требует определенную структуру проекта и это ебет мозги.
Посоны, обесните! Скачал либы к стмке. Ну всё понятно вроде, HAL и прочее выкинул пока. Оставил CMSYS, но там в комплекте ещё были файлы core m3, они в хедерах ни к селу ни к городу, ни одного упоминания. Их куда совать та? Или они там нужны для всяких RTOS? Я не понимат.
А ещё тама ассемблерные фалики есть. В папке startup, они то нахуй нужны? Я так посмотрел там всякие кучи да стеки обозначены, с какого адреса должны начинаться. С ними то чта делать. В кубах они конпелируются и цепляются к остальным бинарникам. А если без кубов? Как указывать адреса стеков и кучи если я ковыряю на голом компиляторе без сред.
Как я понял, суть такова - компилим strart.s, и собираем по скрипту линковщика вместе со всеми остальными объектными файлами. Посоны, а шо такое Handler? Я как то не понел. А асм файле указатели на прерывалния? И чо, мне штобы делать прерывания изменению уровня по ноге надо будет в асм лезть что ли? Ткните носом где это расписано, на русском языке. Курить целиком Reference Manual я пока не готов, слишком дохуя всего и сразу.Листаю Варрен Гея, но он тоже на буржуйском. А вкуривать новые абстракции на чужом языке сложно.
>>374757 так я и пытаюсь на голом GCC усё сделать. Просто я полностью самоучка и у меня охуительные пробелы в знаниях. Про скрипты линковщика вобще впервые узнал. Чего я понял за пару часов беганья в инетрнетах. В .ld скрипте мы указываем компилятору сколько у нас памяти откуда растёт стэк и например что он не должен быть больше чем чего то там. Вся эта информация на прошивку не влияет, а только позволяет бить линейкой по рукам при компиляции и орать что памяти не хватит. Ассемблерский файл start.s это что то вроде таблицы с адресами прерываний. В кубовском ещё в нём же реализован resetHandler, который просто обнуляет SRAM. Нахошёл проектик на гитхабе, где заместо асма был сишный файл с описанией всей этой хуйни. Я всё правильно понел?
>>374661 > А ещё тама ассемблерные фалики есть. В папке startup, они то нахуй нужны? Затем и нужны: таблица векторов прерываний, плюс чистка памяти (и копирование значений переменных из ПЗУ в ОЗУ) перед запуском main(). Именно ассемблер там, кстати, необязателен (остался в качестве реликта времён ARM7 и ARM9), можно на чистом C всё сделать: https://www.eevblog.com/forum/microcontrollers/cortex-m-startup-files-without-assembler/
Снова избитый вопрос, посоветуйте плату, подходящую для вокального процессора, хочу поиграть со звуком. я почейтал, советуют с dsp, пока смотрю на stm32f4 discovery Буду благодарен за актуальные ссылочки с али.
Ух ебать! Эта хуйня замигала!!!! бинарник размеров в 777 байтов. Итого использовано: либа ST, выдрал оттуда буквально только то что относится к CMSIS, стартовый асм файл. Из кубатуры спиздил ld скрипт и ключи компиляции.
Но вот мне решительно непонятно, а откуда я должен в идеале знать и применять эти стопитсот ебенячьих ключей конпеляции GCC. Как же херово без норм образования... А ещё эти ебаные расширения GCC которые не входят в стандарт, всякие __atribute__ _IO Как вобще копать в эту сторону? И насколько необходимо это знать. Установочная цель устроится байтоёбом за жрат. Что бы хоть как то вкотиться в ойти ололо.
>>375183 >Как же херово без норм образования... Лол, чет мне вспомнился директор одной из ИТ контор, дядька за 55, который пытался набирать с образованием людей, в итоге у него проект полугодовой, пилили года 3. Мне очень интересно, где тебя поучат внутрянке GCC или еще каких компиляторов.
>Но вот мне решительно непонятно, а откуда я должен в идеале знать и применять эти стопитсот ебенячьих ключей конпеляции GCC. Берешь и пользуешься человеческими инструментами и не знаешь.
>Установочная цель устроится байтоёбом за жрат Ты пиздец не в том направлении уебал. Тебе надо в высоту идти, а ты вниз идешь. Кроме пачки дебилов с линукс.орг какого, всем похуй на ручную компиляцию и это точно, не то, что потребуют с рекрута. Тебе надо устройство, работающие создавать и быстро. Всем похуй КАК, пока оно отвечает ТЗ и вписывается в требования по бюджету.
Тебе надо брать сейчас FreeRTOS, Modbus, Ethernet, wi-fi , CAN, bluetooth, TFT дисплей, тач, RFID, пяток промышленно популярных серий МК, желательно на разных ядрах. Вот все это задействовать и научится пользоваться. Потом взять книг и АЦП\ЦАП, запиздячить чего прецизионное и хуй знает, в принципе можешь идти искать работу, даже с половиной этого списка оторвут с руками.
А вот твой дроч компиляторов никому не нужен, этим владеют конечно крутые ребята, но не по причинам первой необходимости.
>>374767 Всё так. От себя добавлю modbus не нужен, лучше изучить протокол Owen, как наиболее распространенный в РФ. Ну и обратить внимание на оборудование этой фирмы.
>>375183 Чегото геморно всё это я посмотрю по сравнению с "обычными" АВРками. Чем больше читаю,тем больше охуеваю. Лежат несколько СТМок. Правда мне тут порикомендовали IAR . Как народ оценивает данный продукт ?
>>375210 Всмысле? Это некоторое время назад, по мненеию некого круга независимых экспертов, лучший компилятор для микроконтроллеров.
Как IDE - ну она говно, как и все остальные, Keil чуточку потехнологичнее.
Вообще, если ты такой разпиздатый ебатель компиляторов - бери Embedded GDB и MVS и захуяривай там. Вот это действительно хороший вариант. Потом, еще можешь туда компилятор IARовский прикрутить.
А если еще гайд напишешь, так вообще охуенно будет.
>>375184 Какой то ты неправильный. Надо было крикнуть RTFM, а не бубнить про крутых ребят. В результате метаний меня посетила светлая мысль что reference manual бывает не только у МК. Скачал таковой для GCC, и о чудо, там есть описание всей той хуйни что меня интересовала. Если кому интересно, в кубах есть три интересных ключа компиляции: -ffunction-sections, -fdata-sections, -fstac-usage Суть в краце, каждый объект\функция комплилируется в отдельный загон, чтобы оптимизующий линкер смог безболезненно их ёбнуть, если выяснится что в рантайме они не будут использованы.
>есть три интересных ключа компиляции >Суть в краце, каждый объект\функция комплилируется в отдельный загон, чтобы оптимизующий линкер смог безболезненно их ёбнуть, если выяснится что в рантайме они не будут использованы.
Всю жизнь так живем. Что у тебя за мания дрочится в кишках инструмента? Что мешает настраивать опции компилятора через гуй?
>>374760 > Вся эта информация на прошивку не влияет Неправильно.
В ld-скрипте можно разбивать память на секции под различные задачи, которые будет выполнять программа, например, часть под стек ОС, часть под буферы памяти какого-нибудь быстрого интерфейса или графики, часть под хранение переменных данных в eeprom. В частности, на некоторых контроллерах DMA имеет доступ только к некоторым областям памяти, и приходится для работы с ним объявлять функции и буферы в этих областях. Можно конечно прибить их гвоздями к конкретному адресу типа 0x20001000, но это некошерно, лучше объявлять секции в ld и потом указывать в атрибутах мнемоническое обозначение секции, а уж линковщик пусть сам размещает. Аналогичным образом приходится действовать, если у тебя применяется внешняя память.
Сап, радач Заказал на али BluePill, платки на чипе stm32f103. Описание и отзывы читал жопой, приехали платки с контроллером cks32f103. Чтобы прошить st-linkом приходится нажимать ресет кнопку, отладчик в keil не запускается, говорить cant reset core или internal command error. Но прошивки заливаются и исправно моргают светодиодами. Пробовал различные комбинации reseta, connect under reset и прочее, все без толку. Кто-нибудь сталкивался? Есть вариант их подружить с отладкой?
>>375667 Вывод ресета подключал к STLINK или только SWDIO+SWCLK c текстом и так сойдет? Без него "различные комбинации" не имеют никакого смысла. Что за говнокод льешь? Может быть он отключает режим отладки по JTAG/SW. В кубе надо явно разрешать отладку, иначе соснешь хуйцов при попытке отладиться.
>>375697 Рефман это правильно, мне вот терпения не хватает его изучать. А так гугл в помощь, по крайней мере самые ходовые вещи вроде примеров работы с линкером обычно хорошо описаны на всяких буржуйских сайтах типа stack-overflow или mcuoneclipse. Встречаются информативные примеры также на форумах производителей микроконтроллеров. Ну и проекты для демоплат изучать, само собой. По большей части там говнокод из разряда "лишь бы заработало", но встречаются и полезные вещи.
>>375783 тот же самый ЧИПиДИП, Но голубой пилюли там нет, есть дискавери по цене игры на мыловарне3. Алсо, в моей мухосрани Ижевск ещё есть два магазина Радио, которые чуть ли не со времён совка существуют, ну с 90х точно и ещё какой то магазинчик в одном ТЦ, не помню названия.
Посоны, я тут копнул чуть глубже и пришёл к выводу, что для мелких задач охуенно подходят регистровые команды. Но если надо пилить что то действительно суръёзное то без RTOS ну нахуй никак. А этих ртосов дохуя и больше. Как красноглазый адепт пожирателя мозолей я конечно первым делом наткнулся FreeRTOS. Но есть же ещё всякие амазоны Чем отличаются, напичканы ли дрова говном как HAL и тысяча вопросов, которых я пока не знаю, о которых честно говоря надо бы отдельный трэд делать.
>>375824 Насколько я понимаю, микроконтроллерные RTOS отвечают только за ядро и задачи. Всю периферию ты реализуешь сам, как тебе надо и любыми драйверами.
>>375843 Ну может ты прав, не секу в этом вопросе. Есть у меня смутные воспоминания, что раньше какая-то муть была с подробной документацией на freertos, то ли за нее платить надо было, то ли ещё что-то. А сейчас вроде вообще все доступно
>>375848 Amazon сделала свой форк freertos (я так и не понял нахуя). Сама базовая FreeRTOS абсолютно свободна, есть доступная документация на офсайте, там же есть pdf-книжка.
>>375941 > (я так и не понял нахуя) Амазон начал люто двигать вперёд интернет вещей, и чтобы сократить расходы на НИОКР тупо дали бабла разрабам фриртос на интеграцию своих библиотек безопасности и прочей хуйни связаной с интернет подключением.
>>375667 Во первых как тебе уже тут сказали надо обязательно включать в cube mx режим swd отладка, а во вторых надо включать режим software reset mode в настройках swd самого keil. В этой плате (blue pill) аппаратный резет банально не подключен и работает только программный
>>339005 (OP) Поднимаю вопрос. Некоторое время назад, вооружившись всеми гайдами СРУнета (по той причине, что из-за сраной политики ютуба, все завалили однотипным говно без смысла и полезной инфы и за рубежом 1в1 как у нас инфа). И всетаки осилил CustomHID + Ответный софт на ПК. Более менее разобрался с написанием дескриптора и точках выхода инфы из драйвера. На ПК - аналогично, научился считывать\отправлять инфу в драйвер.
Вот только все эти знания без понимания внутрянки драйвера - не особо нужны, т.к. кроме как повторить пример с некоторым кол-вом отсебятины оно не позволяет.
Че делать? Самое ебанутое, что в референс мануале стм, о усб пара страниц. Кто осилил USB в комплексе? Подскажете куда посмотреть?
>>376195 Зачем предлагаешь сразу easy-way? Можно начать с пикрила - MOS6502 на рассыпухе https://monster6502.com/. А то сразу - на тебе готовые логические элементы. Пусть сам собирает из транзисторов.
>>376210 Когда-то я хотел спаять это, но оттолкнул сингл-борд дизайн. Лучше и красивее был бы вариант более компактной мат. платы, со слотами под отдельные функциональные модули.
>>376334 >>376331 >>376330 >>376308 Зафига вам для миганий диодом и автоматизации унитаза брать такие процы? В чем прикол, купить ардуино, залить готовый скетч и подключить к унитазу, не легче ли купить готовый унитаз, дешевле выйдет.
>>376334 >>376335 Отчасти соглашусь. Одна из причин, почему иногда рядом с процессорами ставят мелкие микроконтроллеры - это жесткий realtime. Редко, но бывают случаи где крайне важны задержки. На больших процессорах - хуй посчитаешь задержки и джиттер, на contex - уже чуть проще, даже используя RTOS, на avr/pic - уже по тактам можно посчитать гарантированное время. Из побочных эффектов - энергопотребление. Поставь свою малину на счетчики воды в сортире. Сколько она на батарейке проживет? Сколько проживет какой-то STM32 в режиме глубокого сна? На ESP или MSP430? Сколько секунд стартует малинка? Ебать колотить, ты программируешь bare metal? Почему раньше не сказал? Сколько стартует код на STM32 или подобных МК без ОС?
>>376336 >Сколько секунд стартует малинка? Ебать колотить, ты программируешь bare metal? Почему раньше не сказал? Сколько стартует код на STM32 или подобных МК без ОС? Ты перефантазировал и приписал мне много качеств. Я в душе не ебу, я обычный байтоеб.
На самом деле я просто имел ввиду, что создание всяких говноподелий это сорт селфчеленджа. А взять 240МГц проц, залить туда ОС и запустить готовый экзешник - так себе челендж. В добавок он будет абсолютно не эргономичным и дорогущим. Вот да, несколько миллиардов транзисторов сливают за тобой говно.
>Одна из причин, почему иногда рядом с процессорами ставят мелкие микроконтроллеры - это жесткий realtime. На самом деле нет или не совсем. Новомодные контроллеры имеют сорт спинного мозга (DMA + Сигнальную систему, позволяющую триггерить одну периферию другой, без вмешательства ядра). А RTOS, работающие на десятках МГц, вполне себе позволяют гарантировано реагировать на события, гораздо быстрее 8биток, просто из-за огромнейшей частоты. Ясен хуй, такие монстры в этих ситуациях не спят, но вот в хальте вполне себе могут стоять.
Все это относится к устройствам с постоянным питанием. С батарейными конечно так не получится, но F4 и мобильные устройства - очень специфичное сочетание, если тебе так нужно потребление, хули ты EFM8 не возьмешь какой?
>>376347 От мигания светодиодом до задания цвета точки на TFT экране через SPI всего неделя. Берешь экран и пишешь код, можно взять готовый код и под свои нужды подстроить. Можно взять готовый рабочий код (если найдёшь, лол) и сразу рисовать красивости. Можно взять потом датчики, пачку датчиков, массу проводов и датчиков и сделать очередную нужную только тебе погодную станцию со свистелками и перделками. А можно сделать смыватель унитаза с веб камерой, чтобы знать кто не смыл. Если подключить ещё микрофон и динамик через усилитель, то можно и поругать его за то, что не смыл. Главное - идея, а не тип процессора/микроконтроллера/системы_на_чипе.
>>376439 Если тебе хочется пилить ось, ты берешь и пилишь ось. Ну светодиодом поморгаешь разве.
Все. Тебе не нужны крутые процы или еще что то, самый обоссаный контроллер пойдет.
>>376437 >От мигания светодиодом до задания цвета точки на TFT Увы нет. По гайду можно сделать и за вечер. Многих в ступор не алгоритмы и сам процесс вводит. А среды и инструменты. И все затыки самые жесткие именно там.
Посоветуйте как организовать меню, с возможностью изменения параметров через дисплей с помощью кнопок. Основная проблема что я не понимаю как делать, если на одной строке есть несколько переменых которые можно начать изменять
>>376793 Строка массив, а если скажу тебе, что три участка в строке надо менять и как выбрать , например, второй участок и изменить его? При этом первый и третий участок должны быть неизменными. Как?
Дальше, в меню (в той части, которая работает с кнопками), изменяешь те значения, которые тебе надо изменить. typedef enum{ ITEM_PIPA = 0, ITEM_POPA = 1, NUM_OF_MENU_ITEMS; }MENU_ITEM;
MENU_ITEM current_menu_item; uint8_t p_item = 0;
void menu (void){ while (1) { switch(button_pressed) { case влево: p_item = p_item - 1; break; case вправо: p_item = *p_item + 1; break; case кнопка_перехода: increaseCurrentMenuItem; break; default: break; } } }
Тут конечно дохуя чего нет, например, считывания кнопок, или самой процедуры вывода на экран, или "подсветки" изменяемого элемента. Да и писать/форматировать в окошке двача не оч удобно. Но касательно меню ты меня понял в общих чертах, я думаю. Это, если что, для 2х - 3х кнопочного устройства.
>>376827 Всегда делал меню: Список с контентом меню Номера списка закинуты в массив, повторяющий структуру меню. Переменная с текущим отображаемым номером списка. В которую функцией навигации помещается номер позиции списка и откуда он считывается функцией дисплея.
>>376843 Ну в принципе у меня так же запилено. Только в моей рабочей реализации, котнент меню был в массиве, и сразу оттуда вызывались по текущему номеру. Просто он спросил как менять разные параметры в одной строке если я правильно понял, вот я и родил это нечто.
>>376847 >котнент меню был в массиве Жирновато же, да и на пюр-си получается переусложненно. + больше операций, если отображается динамический контент (приходится паковать в массив, потом его оттуда брать). + не получится "легкого" оверфлоу пунктов меню (если хранить номера, а не контент, можно зарезервировать на пустой\ошибочный\переводящий и пр).
>>376849 >не получится "легкого" оверфлоу пунктов меню Вообще я чот подумал посидел, вспомнил что там было я просто не могу сейчас код этот прочитать, он на бывшей работе - у меня скорее действительно то, что ты описал: есть массив с указателями на элементы, а элементы это структурки содержащие контент, указатель на функцию привязанную к элементу и всякие сайдовые параметры
>Жирновато же, да и на пюр-си получается переусложненно. Ну хз, возможно, у меня так было сделать вполне целесообразно. Готовых вариантов я не нашёл нихуя почему-то, а то что получилось выглядело вполне лаконично. У меня просто в самом меню хуева гора подменю и привязанных действий, и экран может одновременно отображать только один пункт меню. Двухстрочный, 1602, я не придумал чем было бы полезно отображать за раз больше одного пункта меню, и в итоге просто заполняю весь экран согласно текущему пункту. Получилось ок. Получившийся в итоге код содержит один универсальный обработчик для всех меню/подменю, с возможностью настройки/выбора действий по кнопкам в текущем уровне меню.
Короче не сказал бы, что сильно переусложнено, на плюсах вышло бы не проще (и работало бы не быстрее, хотя это, по большому счету, похуй).
>больше операций, если отображается динамический контент Не совсем понял о чем ты, у меня "динамический" контент был, и в примере он тоже "динамический" - просто триггеришь по изменению значения (или по таймеру) изменение строки и всё, а по изменению строки триггеришь вывод оной на экран.
>>376793 если представить строку как массив, то надо в этой строке найти число и представить его еще как число а не как строку. Еще и иметь в виду, что число там может быть не единственное. >>376827 дисплей графический 128 на 64 >>376820 Камень stm32F407
У меня есть в наличии клавиатура с кнопками вверх/вниз/влево/вправо и кнопки enter и esc. Сами кнопки как мне кажется роли не играют, пусть даже у меня будет энкодер вместо кнопок. У меня нет особых проблем если мне надо реализовать в меню чисто визуальную информацию или если в одной строке у меня находится только одно число, которое я могу начать изменять нажатием кнопки enter(например). Но если в строке находится несколько параметров которые можно изменять независимо друг от друга, тут уже проблема. Как банальный пример настройка даты. В одной строке находится три числа (день, месяц и год). И я как бы должен иметь возможность менять каждое число отдельно. При этом еще было бы хорошо изменять по разрядам, иначе дрочить кнопку 30 раз чтобы изменить дату с 1го на 30ое такое себе удовольствие.
Я делал на другом проекте меню с помощью структур и указателей на соседние меню. Но там было мое ограничение на одно число в строке, и то не смотря на это было куча костылей потому что некоторые строки при нажатии должны были выполнять разные действия.
>>376866 и при всем этом сама структура меню не должна по идее быть монолитной, т.е добавление новых пунктов меню в произвольных местах не должно сопровождать анальной болью
>>376866 Бля, ну я чот совсем тупею, не могу такие простые вещи на словах объяснить, прости анон. Если я тебе описываю не то что тебе надо, поясни что именно ты хочешь услышать: структуру, реализацию в сях или ещё что. Просто так я буду долго распыляться, но ничем полезным не помогу.
>добавление новых пунктов меню в произвольных местах не должно сопровождать анальной болью Тут я тебя не понял, какое тогда меню ты считаешь монолитным? СвитчКейс для каждого пункта меню?
>Но если в строке находится несколько параметров которые можно изменять независимо друг от друга, тут уже проблема. Надо подумать, как это запиливать. Я с ходу вижу такой вариант: переходить для настройки к экрану калибровки текущей величины (просто отдельный обработчик для кнопок и строк вызываешь), и там, в зависимости от текущего выбора меняешь определенную величину. Чтобы не закрашивать весь экран пустотой, а сделать красиво (как будто ты находишься всё ещё в том самом меню) перерисовывай только ту строку, в которой меняешь настройки.
>>376868 Монолитное меню в моем понимании это когда тебе например надо добавить где нибудь в середине новую строку с вложенным меню, но чтобы это добавить и заставить нормально работать необходимо пройтись по всему коду навигации или отрисовки и в куче мест(или даже в нескольких местах) сделать небольшие изменения
Просто чтобы такой хуйни не происходило, надо разделять объекты на экране. В случае того, что я пытаюсь советовать, объектами являются строки.
Я, честно говоря, не знаю как объяснить тебе что делать. Начни с малого, напиши что-то простое (сам, чтобы понимать как жто работает), а потом скрести ужа с ежом. Посмотрю ещё сегодня код с того проекта, может пришлю что-то. Но не факт.
>>376596 Делал такое кучей методов, но нашёл-таки идеальный: массив из структур, каждая из которых описывает пункт меню. Для каждого пункта описан его тип и union, в котором для этого типа описаны параметры, например, ссылка на подменю.
>>377036 А как решается несколько параметров в одной строке? Тоже делал через структуры, но как и описывал проблему выше, когда несколько параметров в строке и которые можно изменять все превращается в Франкенштейна
>>377039 Рассматриваешь каждый параметр как подпункт меню с особыми свойствами, переключаешься между ними влево-вправо по аналогии, как ты ходишь по меню вверх-вниз.
>>339005 (OP) У меня тут вопросик с претензией на платину. А существуют ли симуляторы для этих ваших стм32? Или под 32 битный камень писать симулятор это уже за гранью? Блять удобно же, чем по 1000 раз свой говнокод туда сюда перепрошивать изнашивая контроллер.
>>377173 >>377072 Сорян, я такого не писал, лишь вбросил идею, как подобное реализовывал бы я сам при необходимости. 10 лет эмбедед-макакинга в энтерпрайзе.
>>339005 (OP) Лежала у меня stm32f4discovery, я поробовал на ней реализовать простенький проект, с 4 светодиодами, которые должны мигать с разной частотой и шимом регулировать яркость, и что-то охуел мальца. За последние несколько лет сделали либы, чтобы писать код просто как на ардуине, или stm32 все еще для илитных господ, которые могут 1000 страниц мануала прочитать и закончили профильный университет?
>>377185 Это разрабы так облегчают переход на их контроллеры, лол, сам в ахуе с этих дегенераторов. Хотя асм у них во многом похож на атмеловский всякие мовсы хуевсы, но с углубленным познанием иховской архитектуры.
>>377186 Ног мало, цап и ацп всратые, мощи недостаточно для чего-то связанного с хоть какими-то вычислениями на контроллере, а стоит ненамного дешевле.
>>377494 >>377500 Не, ну выбирая между ним и долбаебами заполонившими рунет которые показывают как набивать на клавиатуре функции и дефайны из стандартных библиотек, я конечно лучше его позырю.
>>377559 >>377601 Курс дихальта в том, что уделив буквально 5 уроков ассемблеру и хорошему, компетентному разбору AVR — он позволяет самому легко изучать нужные ядра.
Я так понял cubeMx используют в основном для удобства работы с частотами, типа чтоб голову не ебать прописывая, натыкал мышкой и пиздец, или я не прав?
>>378217 Он столько говна побочного генерит, что лучше уж самому. Хз куб использую для тяжелой периферии, т.к. там заебешься сам писать.
По поводу всяких АЦП\Таймеров и прочей хуйни - хуй знает их по хорошему один хуй приходится по РМ изучать, после которого уже можешь сам растолкать биты, чем переписывать эти тонны дефайнов.
Spl бывает удобно для периферии подгрузить, но хуй знает не более, нахуя?
Кто-нибудь делал задержку на DWT? Почему она запускается только при хард резете(кнопкой на плате)? И если сделать софт резет снова ложится. Что я упускаю?
>>381009 Ну поэтому спрашиваю, что подойдет для такой задачи, попроще чем stm32f4, шобы свой микро, да и без наворотов менять голос риал тайм, пару эффектов, тон эхо.. все дела хотя куда я замахнулс, сначала на ардуино сделаю фпесду
>>381081 > смисол спрашивать у вас если вам пох на вопрос Смысл тебе отвечать, если ты не слушаешь никакие ответы, кроме тех, которые подтверждают твою маняточку зрения? Это называется confirmation bias, если что
>>381081 Сделай все для начала на компьютере, тогда будут яснее требования к микроконтроллеру. А потом просто перенесешь код с компа на микроконтроллер. И покупать для изучения цос какие-то платы не нужно. Ну просто совсем не нужно. Но, как пишет анон выше, ты явно не последуешь совету.
>>381088 >>381087 Совет приму, начну с матчасти dsp А когнитивное искажение которое мне приписали, нет >> Смысл тебе отвечать, если ты не слушаешь никакие ответы Обратная связь тухлая, вот и сделал выводы, но начну с курения dsp
>>381093 > 2 ответа на следующий день > уточняющие вопросы > дельные советы > НЕТ У МИНЯ КАГНЕТИВНЫХ ИСКОЖЕНИЙ!!!! ЭТА АБРАТНАЯ СВЯСЬ ТУХЛОЯ!!! Понятно, нахуй иди даун
Как вы относитесь к заимствованию чужого кода? Например понадобилось работать с картами памяти по SPI. Вместо того чтоб разбираться, как её там инициализировать я тупо спиздил код с гитхаба. Кубом сгенерировал проект тыкнув с поддержкой FatFs. Малость допилил и оно даже работает. Но чувство своей никчемности остается.
>>381105 Сначала делаю лишь бы работало, из КУБовской зелёнки и библиотек с гитхаба или видеоуроков. Потом уже раскуриваю и переписываю все самостоятельно.
>>381105 Не имеет смысл как ты относишься. Имеет смысл как ты ДОЛЖЕН относится.
А должен полностью положительно. Тут блядь уже больше полувека ебутся над модульностью и если что то встало со свистом и удовлетворяет требованиям - не трож! Не потому, что сломаешь или еще что-то, просто потрать время на что то более полезное.
О твоем опыте будут судить по реальным устройствам, а не количеству велосипедов внутри.
>>381117 >>381105 В догонку, ширина опыта в подавляющем большинстве случаев гораздо более важна. Если тебе нужно будет завелосипедить FAT - поверь ты завелосипедишь, поебешься может, но результат будет 100%. Это тривиальная обыкновенная задача. То, что кто то всрал месяцы и ее решил - молодец, но нахуй тебе это повторять, ради чего? Реально полезных новых знаний ты получишь крохи.
Другое дело, когда твои познания раскинуты аки щупальца в максимальном числе направлений и благодаря чему, ты можешь очень хорошо планировать структуру и архитектуру решения. Вот это действительно не тривиальная хуйня. Ее нельзя просто взять и изучить по документации.
Так, что не еби мозги себе, поебаться в глубь ты еще не раз успеешь.
>>381118 >ты можешь очень хорошо планировать структуру и архитектуру >решения. Это под час несколько даже важнее велосипедов. Ибо убив тучу времени на "ковыряние" , и прокачав скилл. На выходе может получиться монстр.
>>381171 Малаца, хорошо зделали. Сам камень позиционируется, как переходная форма от МК к процессорам, когда у тебя задача с реалтаймом, но ещё хотелось бы иметь и линукс. По софту - заебись, всё, как обычно, опенсорсное, но при этом, в отличие от других вендоров, специфические патчи по-максимуму пушатся в апстрим, так что ты всегда сможешь пользоваться свежими версиями ядра/либ/инструментов и свободно конфигурировать всё, как тебе надо. Из всей полезной информации половина - сам семинар, половина - комментарии из зала. Собственно, на подобные мероприятия ходить и стоит хотя бы ради того, чтобы послушать кулсторей от опытных специалистов.
>>381118 А теперь представь что есть области разработки встраиваемых систем,и их достаточно много(думаю ты догадаешься какие), где нельзя иметь ошибки в коде, а ты заимствуешь чужой код и не смотришь под капот. Какие варианты событий могут быть, как думаешь? Количество проектов не показатель, так как работая с железом ты всегда уходишь в долгосрочную поддержку своих решений.
>>381182 Если ты хочешь работать с мк не на полную нагрузку, то бери РТОС, если тебе прям вообще пиздец реал тайм надо, чтоб подстройка по фазе на высокоскоростной шине была, обработка пакетов на самом низком уровне, всякие CRC, коррекция ошибок и т.д, то только напрямую через регистры надо.
>>381190 Эти сферы во первых оплачиваются, а значит вся ебля велосипедов - тоже оплачена, во вторых, разрабатываются группой людей, знающих что они делают.
>>381190 >заимствуешь чужой код и не смотришь под капот Так этого никто и не пропагандирует, особенно в указанных областях. Если уж лезть в высокие материи, то там положено иметь полноценный процесс разработки, который начинается с проектирования и включает в себя тестирование и верификацию, так что там уже не важно твой код или нет. Тем более, что какой-нибудь FatFS прошёл гораздо большую проверку временем и лучше отлажен, чем свой велосипед. >>381194 Да так и делаю, анон. А конкретно с MP1 в том и прикол, что там в одном корпусе кортекс-м и кортекс-а. На первом крутится всё как ты сказал, а на втором - линукс с вебом, гуями, питонами, машинным зрением, нейронками и прочим. При всём при этом, реалтаймовая часть и линуксовая друг другу не мешают и имеют возможность быстро обмениваться данными через разделяемую память. >>381195 Я это скорее к потому, что, как мне кажется, куб с халом и так уже достаточно простыми сделаны. Да, надо напрягаться и изучать, потому что ещё проще уже некуда - стм32 в принципе сложнее авр. Если дальше упрощать - то получится совсем примитив, негодный для реального применеия.
>>381214 Все так. Тут по ходу сидят либо те, кто все и так понимают с полуслова и им ничего не надо доказывать, либо те, кто понимает очень мало и сами не понимают что говорят. А между ними молчуны, которые осваивают и им некогда болтать)
>>381218 А хули говорить, на вопросы, что знаю - отвечаю, на те что нет - не отвечаю.
Все кто не знает основ - сидят в ардуине, на арм в принципе идут люди вкатившиеся и как минимум тупые вопросы умеют гуглить, так что переходы и сменя ядер происходят бесшумно.
Никто не рассказывает тут про свои проекты или кулстори, не обсуждает идеи. Для сложных вопросов форума лучше.
>>339005 (OP) Итак! В будуещем потребуется создать сеть из микродатчиков по всей избе и участку. Смотреть в сторону стм8 не собираюсь ввиду копеечных ценников на младшие стм32. На чем посоветуете планировать сеть? САN? Modbus?
>>384938 Если нужна НАДЕЖНОСТЬ и отсутствие влияния фаз луны, соседей со сварочниками, пердежа от телефонов и прочих радостей радио - то только кабель. Если поиграться и не управляешь ядерным реактором - можешь послушать >>384950 Если надо будет за раз передавать больше 8 байт - то готовься к пердолингу используя MODBUS (over RS485). Если сильно ленив - то CAN твой лучший друг. Аппаратные фильтры 11(29) битного адреса (в modbus их сам делаешь и максимум около 240 устройств), авторазрешение коллизий - твое дерьмо будет ГАРАНТИРОВАННО доставлено единым куском. В самом же STM - у тебя будет прерывание, уйдя в которое читаешь присланное число байт из mailbox и туда же пишешь данные на отправку. Красота. Никакого пердолинга с таймаутами, фильтрами, CRC..
>>385021 >С модбасом так то поменьше ебли, не? Он банально более любительски освоен. Нет. Самый минимум ебли - это CAN, который умеет передавать за раз до 8 байт. Можно даже 0 байт передавать. С модбасом или DCON будет намного больше ебли и он не умеет в push режим - у тебя один(два.. как их арбитраж собрался делать?) мастера, которые опрашивают слейвов, а слейвы сами при поступлении какого-то события сами не могут ничего отправить мастеру(ам). Надо сказать что CAN - это все лишь физический уровень передачи данных, как и RS485. Но отличия очень большие - в RS485 идет побайтовая передача без разрешения коллизий, а в CAN - передача фреймами, внутри которых уже есть и адрес получателя (адреса отправителя нет) и он же приоритет, контрольная сумма фрейма, до 8 байт данных и даже бит получения другими устройствами (в RS485 - срешь в пустоту и не поймешь - принял кто или не принял или есть ли вообще кто-то на шине, в CAN - есть спецбит, который устанавливают все другие устройства, говоря что на шине кто-то есть и этот(эти) распознали и подтверждают прием фрейма с шины. Просто прием, а не то что программой обработан)
>>385042 Для дебага не поленись собери типа такой хуйни https://full-chip.net/shemy-na-mikrokontrollerah/108-usb-can-interfeys-ili-prosto-can-haker-svoimi-rukami.html . Яростно не гонял, как минимум соединив 2 между собой - получалось отправлять спам с одного на другой. Может зайдет такого плана https://habr.com/ru/post/256493/ (не проверял на практике). Если внимательно читал прошлый пост - в пустую шину (где ты один) не отправишь данные, кто-то еще должен быть живым и настроенным на шине. Хоть тот же сниффер не в режиме только прослушки, да и тестовые фреймики сможешь покидать-посмотреть при первичной настройке и настройке фильтров адресов.
>>385041 >RS485 - срешь в пустоту и не поймешь - принял кто или не принял или есть ли вообще кто-то на шине На каждый запрос от хозяина раб выдаёт ответ-подтверждение.
>>385046 Драверы - не драйверы, это просто PHY, а вот MAC тебе уже потребуется либо софтом реализовывать и я честно его не находил - тыкните, если есть. Либо покупать МК с ним. В то же время для модбаса нужен уарт который есть везде, а PHY RS-485 стоят то-же копье.
Это не отменяет то, что писал анон выше, но иметь ввиду стоит.
>>385041 Я еще предлагал PLC, что думаешь? Мне кажется очень интересное и прикольное решение.
>>385172 >Либо покупать МК с ним 32f072 от 101р у нас. Заказал у китайцы пяток 32f103cbu за 650р, т.е. по 130р/шт У них памяти жирно, по 128кб, периферии дохуя. Даже как-то жалко использовать для таких прозаических целей. Хотя нету смысла изголяться с более дешевыми ибо 100-130р это таки совсем копейки для десятка датчиков.
Покупать обвязку, ебатся с коммутированием 5 и 3.3, разводить и травить заебные схемы? В плане иногда легче купить не STM32 за 100р, а PIC16 за 200 и иметь удобный корпус,маленькую плату и без ебли с периферией.
>>385147 >На каждый запрос от хозяина раб выдаёт ответ-подтверждение. Если он есть на шине и с правильным адресом. Про таймаут на время ответа не забыл? Будешь бесконечно ждать ответа слейва? Изначально же архитектура модбаса - запрос-ответ. Просто так в произвольный момент времени ответ мастеру не вышлешь - у него же нет адреса и принимает ответы только когда был запрос с его стороны. В CANе даже если не совпадает фильтр маски - это устройство отвечает и подтверждает прием фрейма. Да, это не ответ устройства и не показатель что нужное устройство живое, но оно хотя бы говорит о том что на шине мы не одни.
>>385183 >ебатся с коммутированием 5 и 3.3 Зачем? >Покупать обвязку Конденсатор штоле? >PIC16 за 200 и иметь удобный корпус,маленькую плату и без ебли с периферией Т.е. в него прямо датчики с периферией встроены? Только Крону к двум ногам остается подкинуть?
>>385223 >Если он есть на шине и с правильным адресом. Согласен. >Про таймаут на время ответа не забыл? Будешь бесконечно ждать ответа слейва? Время на обработку запроса задаётся на стадии проектировки. Прописали, скажем, что время между запросом и ответом 10 мс - тогда ждем 11 мс. >Изначально же архитектура модбаса - запрос-ответ. Просто так в произвольный момент времени ответ мастеру не вышлешь - у него же нет адреса и принимает ответы только когда был запрос с его стороны. Мастер постоянно опрашивает все слейвы, и если один слейв пропал(не отвечает) это выяснится - какой именно раб пропал.
>>385251 Сразу нахуй. Я не смогу обеспечить стабильное питание дворовых датчиков. Там думаю применять L-серию с микропотреблением и йоба-способностями ко сну, и прочем гибернациям.
>>385260 > Там думаю применять L-серию с микропотреблением и йоба-способностями ко сну, и прочем гибернациям. И как это тебе поможет при нестабильном питании? И почему ты считаешь, что нестабильное питание для esp это проблема, а для stm32l серии нет? С чего ты взял?
>>385235 >Зачем? Потому что многие датчики с алиэкспресса работают от 5В, многая периферия работает от 5В.
>Конденсатор штоле? >Т.е. в него прямо датчики с периферией встроены? Только Крону к двум ногам остается подкинуть? Ну если у тебя из обвязки один конденсатор идет - можешь и арм ставить. А я в рот ебал травить 0.2 платы, просто ради того, что бы мочь срать говнокодом.
Привет, форумчане! Хочу вкатиться в эти ваши стм32... Подскажите, плиз, какая библиотека на сегодняшний день я является самой актуальной и популярной? HAL, CMSIS или STDPeriph?
почитал тред малеха, увидел что тут диспут по поводу стака утил и решил поделиться своим долго искал классное иде, но в конечном итоге бросил это гиблое дело и пишу все в текстовом редакторе, компилирую(arm none eabi gcc) все и заливаю(https://github.com/texane/stlink) через терминал из куба достаю мэйкфайл, правлю его немного, дописываю пути, иногда флаги, убираю баги(куб глупенький и иногда оставляет ненужные символы в мейкфайле) все делаю под линой, на дебиане и убунту все фурычит из железа использую ща диско борд, но китайский stm32f103 тоже отлично работает пысы в цмсисе и по сей день баги(хотя могут быть и в железе), время от времени сталкиваюсь с проблемой, что некоторые юарт\спай\i2c могут читать, но не писать или наоборот, тогда перекидываю все на другой порт и там все работает. Было еще пару космических багов, когда например глобальная переменная, которая была проинициализирована нулем(сейчас то я знаю что это было необязательно) не меняла своего значения(а вторая, которая была рядом меняла) в рантайме, хз в чем была проблема, это я к тому что если что-то не фурычит - эт не всегда ты долбоеб, но это не точно
у меня такой вопрос, кто-нибудь пытался обновить прошивку на atwinc1500 модуле без приблуд атмеля, а то не хочется брать стак бордов, который мне нахуй не сдался только для того что бы обновить прошивку
>>385450 В студенческую пору запускал виртуалку вин98 на древнем андроиде с одноядерным ARM6 800 мгц и 512 мб памяти. Считай, что практически виртуалка в виртуалке. Да, тормозило сильно, но в остальном работало без проблем. Грузилось в пределах пары минут, как помнится. На самой виртуалке запускал и гонял самописные СУБД на делфи, лолблядь. Все работало. Препод даже пожал руку, для него были открытием такие возможности у смартфона. Так что производительности современной демоплаты с жирным ARMом должно хватить с лихвой. мимо
>>386752 >Это тот самый Это цикл, в котором байты из массива перекладываются в DR. Само собой, в этом же цикле имеется ожидание бита TXE в регистре статуса или что-то подобное. Даже до простых прерываний наш любитель HAL-а похоже не дорос.
>>386745 При отладке копаться в коде этого порождения индусов под названием HAL как-то не оче. А при LL или CMSIS сразу видно в ожидании установки какого регистра всё встало колом. Ну и в ЛЛ код не такой мозговыносящий получается, никаких там УОБА->ДВОЩ &= ~ПРАВАЯ_ПЯТКА_ЛЕВОЙ_НОГИ_66_ИНДУСА
>>386769 Всего лишь описал содержимое функции HAL_UART_Transmit. Для передачи по прерываниям там есть HAL_UART_Transmit_IT, судя по всему. Если ты про использование HAL_UART_Transmit в прерываниях, то это уже просто бред. И я ничего не закидываю, потому что использую STM32 очень редко.
>>386968 Совсем нет, но последствия иногда бывают аналогичные. Вон чуть выше пример с функцией HAL_UART_Transmit, которая тупо в цикле тратит время на ожидание флага. Конечно и такие функции иногда нужны, но также весьма часто такое не подходит. А любитель HAL, судя по отсутствию аргументов, выучил одну эту функцию, как аналог ардуиновской, и даже не подозревает о других возможностях, которые тоже есть в HAL.
>>386971 >И ардуинщиков тоже никто не презирает, пока они выебщиками не становятся и\или в про сферу не лезут Сталкивался с дизайнером по профессии, у которого было ардуино головного мозга. Он всерьёз настойчиво советовал юзать вместо STM32 в TQFP-корпусе в серийных изделиях ардуинки-модули, которые вставлялись бы в PLS-разъёмы на платах.
>>387190 Не стоит утверждать так категорично. Вполне можно найти случаи, когда это будет ничем не хуже других вариантов. Например, что может быть плохого в том, чтобы таким образом сразу после включения питания выдать в UART номер версии прошивки? При желании можно даже найти случаи, когда иначе вообще никак. Например, в Cortex-M0/M1 нельзя изменить положение таблицы прерываний через регистр VTOR. А значит, в бутлоадере придется не использовать прерывания. В некоторых микроконтроллерах (кажется всех STM32) это можно обойти, но не везде. Так что нет ничего плохого в том, что такая функция имеется в HAL.
>>387259 >який програматор ??? Встроенный. Разобрался уже. В ст-линк надо было экстернал лоадер подключить, тому що малюнки льются в нанд-флеш распаянный на плате
>>387562 Всего есть три основных способа. Ожидание флага в цикле, передача по прерываниям и ПДП. В зависимости от решаемых задач, целесообразно использовать один из этих способов. HAL_UART_Transmit и подобные - это блокирующие функции. Все останавливается, за исключением прерываний. Это не плохо, только часто целесообразнее использовать не блокирующие способы.
Сразу говорю - я даун и не шарю. Есть одна плата с алика на STM32F103C8T6. Брал для баловства, не осилил и забросил. Сейчас надо организовать автополив раз в 3 дня, а ардуинки нет под рукой и не скоро придёт из Китая. Подумал - чего добру пропадать и решил сделать автополив на stm32. Написал код в несколько строчек через задержку:
>>387678 Нет, максимальное значение 232-1=4294967295. >больше 4294967295 миллисекунд это 49 дней. Однако, если микроконтроллер должен делать что-то еще кроме мигания светодиодом с таким периодом, то эту функцию нет смысла использовать.
народ, кто-нибудь пробовал подключать стм32 компьютеру через microUSB и передавать данные с МК на комп?? Сложно ли такую фигню реализовать?? Просто искал в интернете и нигде ничего не нашел
>>387706 > только Vbat подключи Тупа батарейку или аккум на 3.3В подключить к выводам Vbat и GND? >>387710 > если микроконтроллер должен делать что-то еще кроме мигания светодиодом с таким периодом, то эту функцию нет смысла использовать Это я уже понял. Пока что только полив. Если удастся разобраться, то повешу на него и реле светодиодов досветки растений. Пока что я даже чужой код позаимствовать не могу, потому что ничего не понимаю. Но я уже сейчас понял, что даже с обычной задержкой на 72 часа обосрался, потому как запитал контроллер от обычного блока питания. Если вырубят свет, контроллер перезагрузится и начнёт считать заново.
Хочу шимить 12В вентиляторы на частоте 25 кГц (high frequency pwm). Вентиляторы 4 пиновые: +, -, тахо и шим-вход.
Правильно ил я понимаю, что понадобится: три таймера с CC0, счётчик импульсов PCNT и мультиплексор (для переключения канала тахо с трёх вентилей на вход счётчика импульсов).
Помимо управления вентилями мк сможет выполнять другую работу? Вроде обмена данными по SPI \ ногодрыга.
>>387743 >подключать стм32 компьютеру через microUSB и передавать данные с МК на комп Берешь КУБ, включаешь там USB. Затем надо добавить в проект вот это(в соответствующие места)
/ USER CODE BEGIN Includes / #include "usbd_cdc_if.h" / USER CODE END Includes /
/ USER CODE BEGIN 4 / void SendToUSB(const char text) { CDC_Transmit_FS((uint8_t)text, strlen(text)); } / USER CODE END 4 /
И можно в бесконечном цикле отправлять что-нибудь. SendToUSB("Sup ra\r\n");
Интересует мнение про интернет вещей. Что это такое в целом, из чего состоит? Чисто с моего дивана мне это представляется как некая работа с теми же микроконтроллерами, но с достаточной примесью высокоуровневых языков и связанной работой между этими двумя компонентами.
>>388198 Интернет вещей это когда ты спроектировал 3D-дилдак новой оптимальной конструкции и не выходя из дома запилил пробную партию из 100 штук на заводике в Китае.
Это построение взаимодействия между устройствами, сервисами и потребителем. Конкретная реализация в этом контексте не важна.
Это могут быть пакеты молока с автозаказом по опустошении. Может быть ардуиноунитаз с подсветкой и голосовым управлением и автоматическим нагревом душа по вылезанию какашечки. Камеры на дорогах - суть тоже IOT. Защиты всяких коммуникаций с вызовом ликвидаторов и тд и тп.
Короче это дохуя широкое понятие, но ОБЫЧНО его употребляют именно в первых двух вариантах. Т.к. в 3 и 4 работают серьезные дядьки и им не до хипстерского сленга. А вот в 1 и 2 очень много разводил, выебщиков и мутных фирм, там процветает всякие модный сленг и прочее.
Привет, аноны. Кто сталкивался с POE? Попросили сделать устройство с доступом по сети, и POE-питанием. Искал готовые решения, нашёл пока только https://robotdyn.com/poe-module-9v.html. Во всех POE-схемах из гугла, Data-каналы идут через фильтр (Magnetic Interface Circuit).
Вопрос: 1. Как в моём случае должна выглядеть нормальная схема подключения MCU к RJ-45 коннектору (с POE и PHY)? 2. Существуют нормальные, не дорогие решения PHY+POE? (Т.е. либо одна микросхема, совмещающая PHY, POE и устанавливающаяся на плату, либо готовый модуль, желательно с RJ45-разъемом, и выводом питания.)
Запускал вчера SPI на STM32F103, а он не запускается. То амплитуда сигнала 0,2В, то несинхронно с SCK MOSI работает. Пару раз пересобирал в STM32Cube, на разные частоты ставил, в результате запустилось. Вопрос, что ещё не работает нормально в серии F103, кроме I2C и SPI?
>>389022 >Разносит куб и сам камень, как будто это не единый, комплексный продукт Ты ещё скажи, что я должен под каждый микроконтроллер либы вручную писать. мимокрок
>>389114 Основная проблема этого буфера то, что он имеет фиксированный размер.та если придет чуть меньше или чуть больше, есть большой риск что потеряются необходимые данные
>>389302 Ну и что? Чисто гипотетически представим что ц тебя буфер на 10 символов, а прислали 12. Аппаратно у тебя не никакое прерывание про эти 2 байта не сообщат. Только если ты сам будешь вручную чекать регистры или на крайний случай включить аппаратный захват конца сообщения для modbus rtu(там мк сам отсчитывает время молчания в 3.5 символа и включает прерывания или типо того, не помню точнее)
>>389304 1. Иметь буффер на 10 байт когда у тебя можно быть всего пару буфферов — дизилизм, а при буфферах большего размера вероятность таких ситуаций резко падает. 2. Как только буффер заполнится наполовину/полностью, ты получишь прерывание, в котором ты, скорее всего, тупо скопируешь буффер в большой буффер, если данных в текущем недостаточно, при этом вторая половина буффера продолжит писаться, пока ты выполняешь свой код прерывания (или копируешь пол буффера в свой больший буффер, в т.ч. используя mem2mem)
>>389305 Мне кажется что ты что-то путаешь. В некоторых микроконтроллерах одновременно есть и ПДП и аппаратный FIFO. Для примера LPC1768. В чем разница? Зачем так сделали?
>>389330 ПДП копирукт данные без участия процессора, а ФИФО позволяет хранить ждущие для чтения или для передачи байты локально. Это уменьшает количество прерываний и/или активации ПДП во время работы периферии.
>>389628 Если ты делаешь какую-то обработку звука, то советую для начала отладить на компьютере. Вот серьезно, чем код для компа будет отличаться от кода для микроконтроллера? Если нормально напишешь, то будет отличаться только ввод/вывод.
Сап STMаны, нужно выбрать малопотреблящий камень, обязательные требования 1 ЦАП, 2 SPI на 4 Мбит/с (прием от внешних АЦП), UART должен выдавать не менее 4 Мбит/с. Первый взгляд был на STM32L451, но потом оказалось, что там много ненужного фарша, сейчас смотрю на STM32L412. Может есть еще что попроще да подешевле? Бывают у STM датчики температуры?
>>387921 Анон, возникла проблема... Когда я первый раз подключаю мк к компу, то всё происходит прекрасно, данные передаются правильно. Но затем, когда я отключаю USB и подключаюсь снова, то комп выдает ошибку код 43 (сбой запроса дескриптора устройства). Если же отключить питание микроконтроллера и потом подключить снова, то первый раз все пройдет успешно, а после вытаскивания юсб и подключения будет опять возникать эта ошибка... в чем может быть проблема? Пробовал обновлять драйвера, ничего не помогло
>>390415 У меня ф4 дисковери с 407 контроллером, которая без дисплея и с аудио-выходом. ЮСБ работает норм. В примерах были баги, например в примере с ЮСБ звуковой карточкой кривые настройки ПЛЛ были и что-то ещё. Давно игрался.
Чот говно какое-то. Анончики, поясните пожалуйста. Нужно быстро сделать устройство, которое будет иметь Web интерфейс с 2 страницами (1 - периодически изменяющиеся результаты измерений, 2 - настройки устройства). Есть отладка STM3210C, но нашёл на неё только слегка запутанный пример, где не до конца понятно, как формируются вэб-страницы. Думал взять что-нибудь из примеров в кубе, какой-нибудь WebServer на FreeRTOS, но на мою плату ничего нет. Есть пример который предоставляет сама FreeRTOS, но под IDE Rowley CrossWorks, которая у меня отказывается работать. Есть какой-нибудь совет, анонче?
>>390810 > Думал взять что-нибудь из примеров в кубе, какой-нибудь WebServer на FreeRTOS, но на мою плату ничего нет. Если на твою плату есть LwIP, то веб-сервер уже не зависит от модели платы, и любой сервер, работающий поверх LwIP будет работать На твою плату встаёт LwIP?
>>391058 Имеет смысл добавить еще VTref (VDD Target). В принципе по минимуму хватит SWCLK, SWDIO и GND. Если не нужно экономить место на плате, то ставь 20-контактный разъем, как на нормальном ST-Link, а не китайском поделии. Тогда можно будет втыкать в плату простой шлейф от отладчика, а не возиться с отдельными проводками.
>>391058 >дебага через st link >дискавери платы В дискавери встроенный ST-Link, зачем что-то еще? И как соотносится дискавери с тем что у тебя на картинке? А еще у тебя к выводам OSC32 подключен кварц на 25 МГц. Выводы, которые называются подобным образом, обычно предназначается для низкочастотных кварцев под RTC. Там обычно ограничение по частоте.
>>390933 Спс, но у меня на плате не заработало. Почему - разбираться не стал. >>390827 А вот это заработало. Взял LwIP, накатил на него httpd как в примере, идущем с STM32F4xxG.
Только не могу понять одну вещь, как мне в LwIP в рантайме сменить IP и MAC адреса? Чтобы не костыльно (костыльно и так могу).
>>391922 > как мне в LwIP в рантайме сменить IP и MAC адреса? Мак-адреса с айпишниками никто на лету не меняет, или ты хакер кокойто? Мак адрес по-хорошему должен быть уникальным и привязанным к конкретному устройству. IP адрес можно получить динамически по DHCP от роутера при включении в сеть, dhcp_start() в lwip
>>391965 Не, нужно статический Мак и Айпи, без дхцп. Я уже передумал на лету менять, придумал что просто настройка мака и айпишника будет в отдельном режиме, всех устроит я думаю. Мне лично так нравится даже больше.
>>339689 >А по среде разработки советую связку STM32CubeMX + Keil + STMStudio. Сгенерил проект в кубе и пишешь себе код в лучшей IDE для ARM >в лучшей IDE для ARM А при чём здесь Eclipse?
>>339847 >1) Без книг по Си по любому не обойтись. Справочника Шилдта хватит с головой. А через год уже полностью выучиваешь язык и книга становится не нужна.
>>391965 > Мак адрес по-хорошему должен быть уникальным и привязанным к конкретному устройству. Мак-адрес может быть почти любым, даже ты на своей сетевухе скорее всего можешь поменять его в любой момент в настройках драйвера. А еще можно поменять два младших битика в старшем октете и получить locally administered address. В этом случае главное - отследить уникальность адреса в пределах твоей сети, и все. >>391992 > придумал что просто настройка мака и айпишника будет в отдельном режиме Двачаю, тоже так сделал, зависимости нет, брат жив.
>>392774 Ну в зависимости на сколько ты ебанутый. Некоторые считают хорошим тоном идеально знать приоритеты операторов и всякие понты типо запятых в условиях. Но что бы писать хороший, код это вообще противопоказано. Нет ничего хуже долбоеба понтующегося знанием приоритета операторов, просто хуже червя пидора.
Железо + указатели + знакомство с высокоуровневым языком, пару месяцев плотных упражнений и ок.
>>392775 > Мак-адрес может быть почти любым, даже ты на своей сетевухе скорее всего можешь поменять его в любой момент в настройках драйвера Я не говорил, что его невозможно поменять. Мой пост был не про то, как можно, а про то, как надо. Да, на сетевухе его возможно поменять, но зачем? Она точно так же перезапустит DHCP и получит айпишник от роутера, привязанный к новому мак-адресу. Меняют его, например, когда человек поменял сетевуху на новую, а в роутере жестко прописан мак адрес от старой, и нужно, чтобы новая тоже заработала со старым мак-адресом. Но это довольно специфическая ситуация, и таким в 2019 редко кто занимается
>>392937 Про то, как надо, говорит 1 разряд старшего октета Мак-адреса, а он говорит о том, что если твоя железка не предназначена для выхода в глобальную сеть, ты вправе ставить ей любой адрес и не платить деньги дядям из IEEE за диапазон абсолютно уникальных адресов.
>>393038 >example1 Если мы говорим о какой то переносимости - какой нафиг int? Неявное приведение туда же. Тернарник в аргументе - туда же.
Ты сам заряжаешь сраное ружье, а потом кичишься, что уворачиваешься от пуль.
Все эти примеры вглядят компактно и пиздато, только когда это примеры, как только они переезжают во что-то прикладное - это превращается в лютейший пиздец.
Тебе жалко строк текста? Мне жалко например времени, даже сраных 500мс, которые я буду вчитываться в ебучий тернарник в аргументе. В примере, он очевидный, но ты сам знаешь (должен) во что это превращается в прикладной программе. Я вообще это дерьмо использую только что бы явно обозначить, что я куда-либо BOOL загружаю, а не 159 или 0.
https://ideone.com/R8ejI7 ЖИРНО, зато ребенок после 3х статей с гугла прочитает и сам будешь просто пробегать глазами и понимать. За исключением доп функционала компилируется в тоже самое. Вопрос тогда нахуя все эти выебоны?
>>393046 >>393038 Что бы совсем ебанутся можно еще iso646 использовать, но то совсем для поехавших уже. Хотя я вот все задумываюсь, но как раз не начинаю с оглядкой на то, что следующий человек обплюется с непривычки.
>>393046 Так вот и я о том же. >Железо + указатели + знакомство с высокоуровневым языком К этому нужно добавить хотя бы осознание о существовании неявного приведения типов. А откуда оно возьмется без чтения хоть чего-то? А потом добавить еще кучу всего, только чтобы не стрелять себе в ногу.
>>393051 Оно же как раз возьмется от знания железа и машинного представления данных.
Ну я черт знает, если у тебя в голове укладывается представление о UINT в железе, при этом ты используешь SINT и не пробовал задуматься а как оно выглядит - считай уже без колена.
И к слову, при сравнение знакового с безнаковым, оно разве не должно ворнинг выписывать?
>>393052 >Оно же как раз возьмется от знания железа и машинного представления данных. Нифига. Что мешало неявно привести к типу большего размера, раз уж программист вдруг захотел такое написать? Ну да, в железе это будет куча операций с битом переноса, но что с того?
>Ну я черт знает, если у тебя в голове укладывается представление о UINT в железе, при этом ты используешь SINT и не пробовал задуматься а как оно выглядит - считай уже без колена. Свои фантазии постарайся держать при себе. Я не то что на ассемблере хелловорлды писал, но и самодельный процессор на ПЛИС делал.
>>393056 >Что мешало неявно привести к типу большего размера То, что через месяц будешь сидеть и думать, нахуя я тут к болшему типу привел. Си не самый читаемый язык и все очень хотят его на кой то хуй усложнить и добавить побольше труднопредсказуемой хуйни.
>>393059 >добавить побольше труднопредсказуемой хуйни. Поэтому давайте разрешим сравнивать знаковые числа с беззнаковыми, а предупреждения будем выдавать только при каком-то флаге компилятора, который попробуй еще найди. >И к слову, при сравнение знакового с безнаковым, оно разве не должно ворнинг выписывать? В gcc эти предупреждения включаются через -Wsign-compare -Wconversion, но -Wall -Wextra это не делают.
>>393274 >как выглядит GET-запрос >Я думал это обычная текстовая страница Запрос это явно не страница, по любому. В заголовок HTTP нужно "Content-Type: application/json". Где это в LwIP я без понятия.
>>393320 >Поставь wireshark, открой любую страницу и увидишь Раньше канало, сейчас во времена httpS - хуй. Надо искать незащищенный сайт или через отладчик в браузере смотреть запросы и ответы.
>>393304 Ок, я понял. >В заголовок HTTP нужно "Content-Type: application/json". Где это в LwIP я без понятия. Если правильно понимаю, можно подставить это в файлах в fsdata А возможно я понимаю неправильно. Хуй знает. >>393331 Ну и в пакете с самим LwIP идёт овер дохуя всего. Например тот httpd (в котором есть службы cgi и ssi). >>393327 Ок, открыл пикрил в лисе. А запостить этот запрос как?
>>393377 Эмм если я не ошибаюсь GET\POST это текстовые запросы по TCP (в частности) Т.е. так текстом и шлешь. Ну может заголовок отличается и какой двоичный. И за кодировку не скажу.
>>393378 >>393379 Ну сейчас у меня получается, так и происходит. Или нет? Я просто по GET запросу возвращаю текст в json-формате (ну это который { x: nn}), без <html> в заголовке и каких-то ещё тегов.
Решил накатить http-netconn. В примерах для F4xG есть LwIP+FreeRTOS+NetConn. Ну прикрутил я к своему проекту FreeRTOS, вчера полдня ебся чтобы запустить на нём LwIP и NetConn. Закончилось тем, что я пососал писос: - LwIP инициализируется, всё нормально, винда STMку видит если вбиваешь arp -a. - Тред с netconn создаётся. Микроконтроллер регулярно приходит в это тред. - В процессе исполнения netconn приходит в "sys_timeouts_mbox_fetch" и остаётся там навсегда..
LwIP не передаёт какие-то сообщения операционке? Не пойму, что за херня и куда смотреть.
>>394126 Как-то странно ты пишешь. lwIP кроссплатформенный. Код, непосредственно взаимодействующий с периферией микроконтроллера не входит в состав lwIP. Так что ничего не должно мешать использовать любую версию.
>>394130 Ты не понял о чем я. Я пишу, что у меня в примерах может быть версия самого LwIP иная, чем у тебя (или не у тебя, а у более раннего анона, если вы не одно лицо). Потому у тебя и отличается реализация "sys_timeouts_mbox_fetch".
Попробуй проверить приоритеты задач tcpip_thread и software_timer из freertos, и еще какие там у тебя есть. Может из-за неверных приоритетов нужная задача блокируется этим таймером.
Я кончил Как оказалось - я просто провафлил несколько важных моментов - 1. Я оставил NetIF config от "RAW" версии. В ней не был установлен указатель на неправильную функцию (ethernet_input вместо tcpip_input, но это я заметил и поправил раньше), и в конце я каким-то образом не заметил, что в FreeRTOS версии создаётся симафор и тред с "ethernetif_set_link". 2. Когда пофиксил это, Keil ругнулся ворнингом на макрос инициализирующий тред. Оказалось, что функции в ethernetif должны учитывать, что они работают с осью. Функции из RAW примера, ясен хуй, не подошли. Скопипастил в проект функции из примера F4, подправил под свой мк, и оно заработало. Не совсем понял, почему не работает режим RX_POLLING, только RX_INTERRUPT. 3. Забыл, что надо добавить обработчик прерываний на Ethernet, и не мог понять, хули МК зависает. В отладку даже не заходил, потому что я хуй пойми, как отлаживаться с FreeRTOS'ом. А ещё, как оказалось, MII_INT выход PHY не имеет никакого отношения к ETH_RX_INTERRUPT, да.
Теперь осталось сообразить, как перейти в режим RMII. В тупую поменять ETH_MEDIA_INTERFACE_MII в "low_level_init" не прокатывает.
>>394319 Я винду буду переустанавливать через какое-то время или комп поменяю. И зачем он мне? Просто чтобы снять табличку "Активация шиндошс"? Лично мне не мешает, а больше и некому.
Анон, поясни за АЦП-шку в f10x серии. Мне нужно ~16к раз в секунду снять и записать значение с 2 микрофонов. Что стоит использовать, 2 АЦП или 2 канала одной АЦП? Какие настройки должны быть у АЦПшки? Снимать собираюсь по таймеру.
>>394408 >~16к раз в секунду снять и записать значение с 2 микрофонов Я хуй его знаю. Купил дискавери-746, на ней 2 микрофона присутствует. Примеры использования должны быть в кубе
>>394285 > я хуй пойми, как отлаживаться с FreeRTOS'ом Навешать себе rtos и lwip и пытаться починить это все без отладчика - так себе идея. Да хоть бы просто в отладчик зашел, просто при этом ты не увидишь, в каком потоке находишься. Да хоть бы и сделать отладочный вывод через UART/ITM_Trace, включив в freertos и lwip опции отладки и трассировки, и выводя в отладочную консоль Кейла. Да хоть бы и поставить TrueStudio, в котором все готовое из коробки бесплатно без мокрых писечек и смс, еще и редактор кода в 100 раз пизже, потому что eclipse.
>>394516 >MP34DT01 Как ни странно, но есть в электронщике. Для речи вполне хватит встроенного АЦП. Даже 8 бит хватило бы. Если тебя это устраивает, то какие проблемы? Усиливаешь, к примеру, на операционнике и на микроконтроллер.
>>339005 (OP) Собрался рисовать UI на 746-дискавери, вдохновившись Экспансией и Прометеем, и ожидаемо соснул. Для подобных интерфейсов необходимы разрешения минимум 3840х2160. Со посоветуете почитать про UI на мелких дисплеях, типа 480х272?
>>394539 >Да хоть бы просто в отладчик зашел Ну так я захожу в отладчик, только т.к. не понятно какой поток в каком состоянии - сосу бибу. >Да хоть бы и поставить TrueStudio, в котором все готовое из коробки бесплатно без мокрых писечек и смс, Да, я его первым накатил. Только почему-то начал работать в кейле, хз почему. Может потому что надо было начать с готового примера, а под TrueStudio он не заработал. И ещё потому что у меня отладчик - древний jLink V6, и мне было лень его настраивать. >редактор кода в 100 раз пизже Чот мало, я бы сказал что разница в редакторах как между кейлом и ардуино - небо и земля просто. >>394540 >Как ни странно, но есть в электронщике. Мне нужен MP34DT05 (у него нужные мне характеристики). И для него, как и для MP34DT01, нужен кодек. Их я найти не смог. Если пояснишь, как искать такое - буду признателен. Мне нужно, чтобы было в наличии в рашке. >Для речи вполне хватит встроенного АЦП. Вопроса в том что встроенный АЦП подойдёт - у меня не возникает. У меня возникает вопрос, какие настройки нужно выставлять ему для моей задачи (включить измерение в непрерывном режиме или по запросу, какое время сэмплирования, частота тактирования, постоянный использовать 2 отдельных АЦП на каждый микро, или просто можно использовать 2 канала одного ацп). Ну и ещё вопрос, в том можно ли охватить диапазон 30-130дб одним микро и этим 12-битным АЦП.
>>339005 (OP) На работе в конторе сказали, что avr и pic это старое говно и теперь переходим на stm32, вот уже с месяц его изучаю. Я правильно понял: в AVR хардварные настройки(частота тактирования, сторожевая собака, напряжение питания и т.д.) задаются прошивкой фьюзов, а в stm32 их прописывают в начале программы?
>>392862 >приоритета операторов В каждом компиляторе может быть разный. Тот же MISRA C указывает задавать приоритет скобками, чтобы не было двусмысленности трактования приоритета.
>>394636 >фьюзов Там обычный епром а не фьюзы, емнип. Но в остальном да, тут вся хуйня выставляется в начале проги. Даже небо, даже Аллах. Как происходит работа с DSP в моделях где он встроен - не знаю, вероятно тоже так же. В начале, у тебя МК заводится на встроенном генераторе, дальше ты идёшь его конфигурировать, потом работаешь как тебе надо. Сакральный смысл в том, что ты можешь менять частоту в процессе работы, и снижать потребление устройства.
>>394623 >30-130дб Как-то все странно. Что это означает? дБ - это просто логарифм отношения одного числа к другому. Может ты имел в виду дБа? Но даже если так, то 100 дБ это изменение по мощности в миллиард раз, а по напряжению в 100 тысяч раз. А у тебя АЦП 12 разрядов. Может тебе нужно использовать АРУ?
>>394738 >АРУ Нет, мне нужно без АРУ, мне всегда нужно знать точный уровень. >по напряжению в 100 тысяч раз Это тоже правда, что посоветуешь?
Читаю мануал, там есть такая табличка (пикрил). Но не могу понять 2 вещи: 1. Почему Vdda сделан отдельным выводом, если он должен быть равен Vdd обычному? Точно так же с Vssa и Vss. 2. Примерно то же самое с Vref- почему от должен быть равен Vssa?
>>394738 >в миллиард раз 10^10 - это 10 миллиардов, тут я написал не правильно, а про 100 тысяч тем не менее правильно.
>>394748 >Это тоже правда, что посоветуешь? Знать бы еще что тебе нужно. Может ты из ардуиновского треда с дурацким шумомером? >Но не могу понять 2 вещи: Электромагнитная совместимость, разделение земель и все такое. У ST наверняка есть что-то с названием вроде "EMC design techniques", где написано про все такое применительно к их микроконтроллерам.
>>394748 > Нет, мне нужно без АРУ, мне всегда нужно знать точный уровень. 100 дБ это слишком дохуя для 12 разрядов без АРУ. Тут уже скорее 24 надо, и то еще не хватит, т.к. эффективная разрядность меньше окажется.
>>394751 Про 100к раз я тоже посчитал, иначе бы подправил >Может ты из ардуиновского треда с дурацким шумомером? Йап Есть предложения? Можно, конечно, сделать как у Gravity, с их Decibel Level Meter'ом (один микрофон, несколько операционников, аналоглвый мультиплексор и мк, мне так же, только без мультиплексора), но если можно на двух каналах - то лучше на двух каналах.
>>394767 Потому что у меня есть овердохуя каналов АЦП в МК. >>394768 >Зачем тогда тебе микроконтроллер? Не проще ли обойтись одним логарифмическим усилителем? Потому что мне нужно получить данные о уровне звука в микроконтроллер, а потом делать с ними одному мне известные дела. >По твоему, что такое каналы АЦП в микроконтроллере? Это аналоговый мультиплексор и есть. Ну тоже правда, но это не снимает моего вопроса о настройках АЦП и необходимости использовать два АЦП вместо двух каналов. Так понимаю, нужно поставить режим непрерывного измерения, выбрать нужные каналы, по таймеру ~16к раз в секунду снять данные с 2 (или больше) каналов?
А пикрил - то что упомянул в прошлом посте, Gravity Decibel Level Meter. Если правильно понимаю, сигнал подаётся с микрофона на 4? операционника с разным КУ, через мультиплексор, на микроконтроллер C8051F330, дальше преобразует это в какую-то линейную шкалу и выводит на ЦАП, судя по всему. Только мне не до конца понятно, как работает параллельное подключение к 4 ОУ одновременно (как избавляются от негативных эффектов) и для чего 2 сборки по 4 усилителя. Если я хуйню где-то несу, я прошу чтобы анон меня поправил, если что.
>>394789 >в какую-то линейную шкалу Не понимаю такого. Микрофоны и так более-менее линейные. Может ты имел в виду логарифмическую шкалу? >Потому что мне нужно получить данные о уровне звука в микроконтроллер Как раз для этого можешь взять логарифмический усилитель, например AD8310.
>>394835 >Ты понимаешь, что требуешь решение без АРУ, приводя в пример схему с АРУ? Ну, во-первых, я ничего не требую, лол. Я тут вроде как не в позиции, чтобы что-то требовать. Я спрашиваю совет. Во-вторых пример - это просто датчик уровня звука, который измеряет шум в помещении, и в зависимости от КОЛИЧЕСТВА ДЕЦИБЕЛ устанавливает напряжение на выходе. "АРУ" там выполняется микроконтроллером. Пример тут от того, что мне нужно получить данные в микроконтроллер, примерно так же, как получает он. Дальше как с ними работать, и как исполнить собственную "АРУ" - я вроде как знаю. >>394826 >Может ты имел в виду логарифмическую шкалу? Simple Conversion: linear analog output, 0.6~2.6V linear correspondence 30~130dBA, no complex algorithm is required >Как раз для этого можешь взять логарифмический усилитель, например AD8310. Вот всё в нем заебись, даже в чипдипе есть, только не могу найти готовую плату с ним в наличии.
>>394789 > Так понимаю, нужно поставить режим непрерывного измерения, выбрать нужные каналы, по таймеру ~16к раз в секунду снять данные с 2 (или больше) каналов? Ну видимо да, раз так стоит задача. А зачем два АЦП или два канала? Если для двух разных диапазонов, то видимо придется делать автоматическое переключение диапазонов, т.е. переключение между каналами.
>>394855 >correspondence 30~130dBA Это означает, что напряжение на выходе этой платы пропорционально логарифму от интеграла входной мощности (или квадрата входного напряжения). В этом контексте, шкала это то же что и масштаб. Тут даже не понятно к чему относится масштаб, но про линейность это странно. >только не могу найти готовую плату с ним в наличии. Какая нафиг плата? Это SOIC-8, ты еще отладочную плату для простого резистора запроси.
>>395004 >А зачем два АЦП или два канала? Из-за того что он хочет обеспечить 100 дБ перекрытие.
>>395006 >Из-за того что он хочет обеспечить 100 дБ перекрытие. this. К стати, есть какие-то советы/мысли на этот счет? >Какая нафиг плата? Это SOIC-8. Ну я хотел какой-то референс дизайн, чтобы не паять и не настраивать сейчас самому это вот всё.
>>395004 >Если для двух разных диапазонов, то видимо придется делать автоматическое переключение диапазонов, т.е. переключение между каналами. Ну я буду смотреть, если превышено значение на мелком усилении - читать, что происходит на втором.
>Ну видимо да, раз так стоит задача. Вопрос в выборе именно настроек АЦП. Я не очень понимаю, что мне даст выбор континьюс мода, и что мне даст выбор определенной продолжительности семплирования (например 13.5 циклов АЦП, или 71.5 цикл АЦП, или вообще 1.5 цикла). И ещё, как континьюс мод будет работать с аналоговым мультиплексором - не внесёт ли это доп помеху.
>>339005 (OP) >Хочу вкатится в разработку на stm32. Зачем? Лучше в веб вкатываться и делать сайтики, стабильный спрос хоть в офисе, хоть на фрилансе и нормальный доход. На микроконтроллерах и плисах работы кот наплакал и платят за неё копейки - ненужное говно.
Привет анон. Я ранее (месяц назад) спрашивал про POE-модули. Подумав, поковырявшись и поняв что времени ждать посылку с алика нет, я решил собрать POE самостоятельно. Кто-нибудь из местных анонов, собирал POE-модуль самостоятельно? В процессе гугления понял, что понадобится: RJ45 разъем (простой 8-контактный, без встроенного трансформатора), сигнальный трансформатор (вроде H2019), диодный мост, POE интерфейс, DC-DC преобразователь. Вопросы такие: 1. Напомните, где искать? Нужно из наличия. И желательно, чтобы было овер дохуя. Смотрел на ЧипДипе, там нет нихуя - ни разъемов нормальных с трудом подбирается SMT разъем без трансформатора, но и без светодиодов, к сожалению, ни H2019 в наличии, ни ху я. 2. Какой RJ45 посоветует анон? Если со встроенной индикацией - то вообще заебись было бы. 3. Нужен DC-DC преобразователь с 48 на примерно 7.5V (можно чуть больше, можно чуть меньше). Мощность хотелось бы соответствующее возможностям схемы на пикрил. Что посоветуешь, анонче?
Привет анон, это снова шумомер-кун. Подскажи, пожалуйста, что улучшить.
У меня источник питания - стабилизированные 5.0В(IN_5V), они же пойдут через делитель 1/2 на AVCC микроконтроллера. Оттуда же, планирую взять питание для стабилизатора 3.3, с которого питается микроконтроллер.
Насколько правильно использовать такую конструкцию? Сделал как в микрофоне Adafruit'а (AVCC, AGND через феррит), но не знаю, насколько это годно.
Объясните на пальцах что такое полуслово, слово, двойное слово? Я так понимаю это некий объем данных (байт, два байта, 4 байта), но его размер зависит от разрядности ядра? Одинаково ли слово в 8 битных AVR и 32 битных STM? Какой размер слова, полуслова будет для обоих платформ?
>>396479 Из Википедии: Машинное слово — машинно-зависимая и платформозависимая величина, измеряемая в битах или байтах (тритах или трайтах), равная разрядности регистров процессора и/или разрядности шины данных (обычно некоторая степень двойки).
В чём сакральный смысл существования и использования R огрызков везде и всюду >>396588, если есть V с FSMC + 30 ног с ценой вопроса на половину доллара?
>>396715 С существованием прояснилось, а с использованием - не особо. Если это отладка типа Nucleo или какой-то open source multi-tool, а не стиральная машина или паяльник, то от MVP-экономиста и его огрызка будет страдать юзер девайса. Хотя, если ты не лох юзер, а индиец из ST, то можно и 767 выпустить в трёхногом корпусе, справедливо откусив у него всю периферию. Всё равно за нормальным чипом чуть позже придут и ещё шекели принесут.
>>396721 >можно и 767 выпустить А мне нравится фирма Боинг и ее старичек старушка Королева Небес 747. Подгонишь пару-тройку пассажирских Боингов 747-400?
>>396779 >Добавлю, что если нет привязки к архитектуре или ранее не объявлено обратное, скорее всего имеется ввиду 16бит Только на интелах и на винде, короче на всём, что имело корни в те времена. АРМы, МИПС, Альфы и прочее - слово 32 бита.
>>396856 >>396914 >>396998 рукожопый хуй репортинг ин. у меня тут куча глюков внезапно возникла с эклипсом, переустановка не помогала. Он даже перестал компилировать свежесгенеренный кубом проект и срал дикими ашибками. Оказалось, у меня тут ембитц был установлен. снес его, переустановил эклипс и всё снова работает.
ребзя, у меня какая-то херня, захотел сделать элементаруню штуку сделать 103 стмка + экранчик, и вот иничу массив для пикселей на ~1000 байт(uint16_t). Перед этим в кубе выделил норм размер кучи/стека. И вот почему-то в определенных участках(примерно от 300 элемента до 500 байтов) какая-та хуйня, мусором забито(в других участках все по нулям), и пытаясь взаимодействовать с этими элементами появляется HardFault. Ну изначально там(в скачанной либе) юзался мемсет на весь массив, после которого сразу hardfault уходило. Потом уже тупо циклом я попытался пройтись, где на каком-то элементе такая же херня происходит. Хз, что делать, помогите
здесь все мои друзья, поэтому спрошу. в этой строке (unsigned long)(0x40023830) |= 0x8; нахера нужны вторые скобки? и без них компилируется. Нахера нужна вторая звездочка?
Хочу поковырять ентот ваш стм32. Можно ли брать f103c8t6 самое популярное предложение на алике сейчас +st-link для ознакомления, или лучше не жмотиться, и взять чего по-дороже? Задач, кроме посмотреть из любопытства, никаких нет.
>>397783 В смысле не припаянный вообще ни к чему? По ряду причин такое обычно не целесообразно. Программируется либо через JTAG или SWD, либо через бутлоадер. Для первого варианта потребуется ST-Link или какой-нибудь другой -Link. Для второго варианта в зависимости от микроконтроллера, более старые и те что попроще можно через переходник USB-UART, а в тех что поновее есть DFU бутлоадер, с которым достаточно воткнуть микроконтроллер напрямую в USB.
>>398476 Референс мануал не открывал Тут нет ошибки. У регистра хххх_MODER адрес(смещение) 0х00. Тут показывают что порты А и В особенные из-за JTAG-а и у них отличающиеся начальные значения в регистрах MODER. Конкретно адреса начала блоков регистров под конкретный банк регистров ищи выше в размеле memory map.
двощ, почему, чисто теоретически, может не работать кусок кода, заключенный в цикл for? там вывод в порт через odr. без цикла фор высирается в порт, с ним - нет.
>>398778 нене, хуйня. с "нормальными" типа j=0; j>8; j++ тоже не работает. а в приведенном выше говнокоде макака сожрала знак умножения между j и 2. я там хочу последовательно ноги перебирать.
не, двощ, ты не прав пикрелейтед не работает, на всех ногах единицы тупо. предельное значение переменных менял до миллионов - тупо 1 на всех ногах (все диоды горят)
>>398876 оно и со стрелками во всех направлениях и бес стрелок с == не работает. хотя у меня есть подозрение что частота слишком высокая. потому что при заливке прошивки индикаторы горят ярче чем при работе программы. думал что компилятор оптимизирует пустые циклы и пробовал их нагружать - нихуя. если закомментить выделенный кусок говногода - индикаторы горят ярче.
>>398878 >>398878 Вообще ебануться. Цикл в цикле, где у верхнего цикла переполнение переменной при сравнении будет... Похуй на переполнение, сам прочти что за хуйню написал: Для каждого i от нуля ебашить (содержие цикла), до .. сука, счетчик переполнилняется и никогда не достигнет нужного значения. Содержимое цикла - бесконечное увеличение а, которое как и i будет каждые 4м проходов переполняться. Верни старый вариант >>398868, стрелки "<" и допиши volatile перед объявлением i j.
крч заработало. но именно с <=. не стрелка и не == а именно <=. переполнение - фигня, с малым конечным значением переменных тоже не работало. volatile уже давно пробовал - тоже не помогло.
>>398885 >но именно с <=. не стрелка и не == а именно <=. Хорош пиздеть. Разницу увидишь? А если глазки протереть и получше? #include "stdio.h" int main (void) { int i; for (i = 0; i<5; i++) printf ("%d ",i); printf ("\n"); for (i = 0; i<=5; i++) printf ("%d ",i); printf ("\n"); }
кто-нибудь обрабатывал кнопки по короткому и по длительному нажатию? Можете в двух словах объяснить алгоритм? у меня кнопки могут выполнять разные действия по разному нажатию, хз как организовать это граммотно
Посоны, подскажите, пожалуйста как проги называются, в которых подобные схемы рисуют? В шараге учили компас и сплан, но там выглядит совсем по колхозному, хочу чертить как на пикриле
>>399683 Первая на Altium похожа, он платный и только под вину, но, вроде как навороченный. Вторая - KiCad, бесплатный, открытый и кроссплатформенный. Говорят, что в последние годы прогресс у него идёт семимильными шагами и на него очень много народу переходит, особенно в среде открытого железа. Думаю в будущем на него перейти, а сейчас использую DipTrace, у него есть бесплатная версия на 1000 пинов и 4 слоя для СНГ. А ещё в DipTrace есть некоторые фичи, сочетания которых больше нет нигде, и которые сильно облегчают реверс-инжиниринг железа.
>>399702 Ну, может, насчёт "нигде" и неправда, но в опровобанных мной не было либо возможности подложить картинку и подогнать её в нужный размер без ебли, либо нетлист не модифицируется при проведении дорожек, либо нельзя однной командой убрать все дорожки, оставив соединения в нетлисте, чтобы компоненты были соединены только ретлайнами.
>>387460 А что у него с сайтом? Писал комментарий и чот всем наплевать. Там на втором уроке сразу какая-то дичь с регистром. http://narodstream.ru/stm-urok-2-begushhie-ogni/ Он записывает число 0x55000000 включая пины 12,13,14,15, а на картинке отмечены пины 4, 5, 6, 7. Я полчаса тупил почему у меня число 0х5500 получилось.
Дратути. Нюфаня в треде. Подскажите, насколько полезный профит можно извелчь от просмотраданной серии видеофайлов, чтобы вкатиться чуть дальше, чем помигать светодиодом и копировать готовые прошивки?
О себе: бородат, могу в айти, с МК на "Вы". Спасибо.
>>399936 При чем тут вообще cmsis? Стартап ты взял из cmsis или как? Стартап, с таблицей векторов прерываний в любом случае должен быть. Странный у тебя вопрос. Программа вообще начинает выполняться практически с такого же прерывания, как и все остальные. Т.е. в функцию main оно попадает из ресет хандлера, адрес которого должен лежать в таблице в начале флешки вместе с другими векторами прерываний. http://infocenter.arm.com/help/index.jsp?topic=/com.arm.doc.dui0552a/BABIFJFG.html
Аноны, стоит у меня задача резво запилить на stm32f401c-disco управление ПЗС линейкой TCD1304. В теме не рублю совсем. Просмотрел на ютьюбе дядю в красной кепке, сделал по его инструкциям управление двухстрочным дисплеем. Понял что к изначальной цели приблизился слабо. Что читать/смотреть что бы быстрее реализовать проект? алсо нашел подобное на нуклео https://hackaday.io/project/9829-linear-ccd-module но я на столько в этом тупой что даже готовый их нуклео-код понять не в силах
>>399774 >с МК на "Вы" Я смотрел начало этих лекций, он годно стелит, но для совсем новичка слишком подзаморочено, для начала я советую мелкие вводные курсы (тот же дихальт) + практику, а теорию подбирать когда будешь упираться в что то.
- Цель - Нахождение путей реализации - Изучение пути - Реализация
Я даже не знаю как иначе, без практики, вся теория из бошки выйдет моментом. А делать практику, что тебе не нужна - уныло.
Короче, просто бери и делай, то, что тебе хочется.
Недавно получил с али странную плату "blue pill". Вот такая была фотография товара у продавца, собственно с такой же маркировкой и получил. Читается IDCODE 0x2BA01477, при том что должно быть 0x1BA01477 вроде как. Что за ерунда? Китайцы скопировали STM32F103C8T6 со всей периферией?
>>401323 Уже нашел по коду, весьма похоже на это. Теперь вопрос только в том что с этим делать, они ведь похоже не содрали топологию, а сделали какой-то аналог. Наверное в мусорку.
>>401323 >CS32F103C8T6 Ещё GD32 может быть. >>401332 Насколько я знаю, GD очень даже годный, у него флеш вроде как в два раза быстрее оригинала, фирма, которая их делает, самостоятельно разработала технологию быстрой флеш-памяти и их основная продукция - это чипы памяти. Насчёт CS не знаю.
>>339005 (OP) Хочу писать на ассемблере под PIC и 8051 КАК ДИДЫ!! А все конторки и фирмы предлагают только писать на С/С++ под модные зумерские STM и AVR. Что делать?
>>339005 (OP) Анон, у меня бида-бида. На nucleo-f446re в stlink был зашит jlink, я захотел его откатить обратно на stlink. Запустил сеггеровский stm32reflash, выбрал restore stlink, и в процессе прошивки комп ребутнулся. Теперь в диспетчере устройств виден stlink, но не st utility, ни stm32reflash к нему подключиться не могут, чтоб накатить целую прошивку. Суля по работающему usb, бутлоадер жив же? Как ему восстановить прошивку? Подпаиваться к swdck/swdio и шить дамп? Есть какие-нибудь другие способы?
>>401891 I8051 уже как пару десятилетий не производится. Я имел ввиду архитектуру 8051 (MCS-51), микроконтроллеры на основе которой до сих пор тысячами выпускают всякие Silicon Lab, Atmel, NXP, Texas Instuments и т.д.
>>401899 Это другой анон за меня ответил. Собираюсь. Последний раз ассемблерил 8051 и AVR на лабах в вузе, и долго не мог бросить, пока препод не заставил перейти на Си. Сейчас на работе мне хватает Си, я довольно быстро справляюсь с заданиями. Но вот коллеги-диды пишут на асме и говорят, что (познать кунг-фу) познать устройство микроконтроллеров и использовать их на все 100 можно только на асме, вот и мне захотелось этому научиться.
>>401903 Да я просто прикалываюсь, пародируя манеру общения в /hw. Если уже не можем писАть как диды, то хоть посрёмся, как диды. >>401911 >познать устройство микроконтроллеров А оно тебе так надо? >использовать их на все 100 можно только на асме Да нет, на сишечке то же самое всё. Она, по сути, и есть ассемблер, только машинонезависимый и без необходимости изобретать свою инфраструктуру для различных низкоуровневых идиом, типа функций или циклов. Если ты имеешь в виду, что на асме можно писать программы так, чтобы они с точностью до такта что-то делали, то да, это вполне применение для асма, но такое редко требуется.
>>401953 >А оно тебе так надо? Это необходимо, если хочешь стать настоящим специалистом(я хочу). А зачем? Чтобы получать чуть больше бабок, чем в каком-нибудь нии на окладе. Если погуглить требования на хедхантере на эту профессию - там пишут "знание архитектур MISP, AVR, STM, 8051". Что под этим подразумевается? Очевидно же, знание устройства микроконтроллера и особенности ассемблера. К тому же мне нужно будет и в плис вкатываться и там это пригодится.
>>402218 >3.3 евро >250р чип + печатка, обвес, экран, работа за рис, небо и Аллах. Да даже у китайцы себестоимость будет 500р+. Нихуя не потягается с копеечной есп-шкой.
>>402245 А ведь действительно, почему-то казалось, что у них есть WiFi. Получается, что у ST совсем нет никаких аналогов ESP? Чтобы и с Bluetooth, и с WiFi было.
Тебе блядь родина дала СИ, что бы ты называл переменные, макросы, записывал это короткими и человекочитаемыми выражениями. Не хочу нормально писать, хочу дизасмом писать.
Если твою простейшую функцию из 5 строк, не возможно понять без комментариев - говно этот способ.
Есть один мк на Кортексе М4 и древняя отладка с J-Link на борту. Какого-то хера не могу подключиться к камню: жи-линк пишет Couldn't connect to device.
Как вытащить с жи-линка более развёрнутый лог, чтобы понять что именно ему не нравится?
Или куда копать, чтобы нарыть причину отказа в коннекте?
>>402839 >а есть вообще большие проекты целиком на асме? Какая-то операционка, насколько помню, на АСМе писана. ПС. Даже джве: KolibriOS und BareMetal x64(!), весом 16 кБ
>>401905 Может и заточена, но писать на ассемблере система команд кортексов не мешает. Только не нужно на ассемблере ничего такого писать, только потому что так хочется.
Сап радач. Имею желание вкатиться в STM. Насколько я понимаю лучше всего для начала подойдет отладочная плата, на которой уже имеется программатор и переходник USB-UART. Вроде как подойдет плата NUCLEO. Собственно вопрос: Какую из этих плат лучше выбрать, чтобы иметь минимум проблем в будущем? Или хотя бы на что обращать внимание при покупке? Плата нужна пока для обучения, буду пробовать работать с различной периферией, подключать дисплеи и тд. Стоимость не критична. Заранее спасибо
>>402935 >на которой уже имеется программатор Это без разницы. Хотя отдельный удобнее, проще с разными микроконтроллерами (разных производителей) использовать один и тот же. >переходник USB-UART Ну такое себе требование. Ничего не мешает подключить отдельно, если потребуется.
Так что blue pill вполне достаточно, но можно и самостоятельно припаять микроконтроллер к макетке. >буду пробовать работать с различной периферией, подключать дисплеи и тд. Либо выбирай плату по наличию этих дисплеев и всего такого, а не программаторов-отладчиков и USB-UART.
>>402938 Понятно, а с какого тогда контроллера лучше начинать? (blue pill посмотрел, там STM32F103C8T6, он подходит?) Просто хотелось взять контроллер, с которого проще всего было бы перейти на другой STM, уже под конкретные задачи в будущем
>>402935 >работать с различной периферией, подключать дисплеи и тд. Я себе взял STM32F429I-DISCO. Гора периферии: гиро, память, USB, EEPROM и хуевенький дисплей с тачскрином. Правда я пока дальше ШИМа и чтения сырых данных с гироскопа, нихуя с ней не делал. Раз 500 уже порывался жестко засесть и все никак вот.
>>402939 >с какого тогда контроллера лучше начинать? Если возникает такой вопрос, то с того, у которого более простая периферия. >STM32F103C8T6, он подходит? Вполне подходит, в нем есть проблемы с I2C и вообще errata длинная, но не всем же нужен I2C, тем более для того чтобы только вкатиться.
>>403502 Ты не пытайся сразу вникнуть в весь функционал. Делай по немного. 1) настроил таймер. щелкает? Заебись 2) настроил прерывание по переполнению. Прерывается? Заебись 3) сделал самодельную шимку. Переключается? Заебись 4) настроил аппаратную шимку. Ну ты понял короче. Сразу все функции понять тяжело.
Гайсы, не исполняется ебаный код. В отладке t1 всегда стоит на нуле, код не исполняется до той строчки куда я поставил курсор. Использую Keil uVision5, чип STM32F042F6P6, через STM32 ST-LINK Utility чип читается нормально. Пробовал 3 разных платы на этом чипе, один хуй не работает (платы хуярил сам через easyEDA, до этого на stm32f103 хуярил платы, они работали) Копать в сторону софта или разводки платы?
>>404557 та нет, проект собирал через stm32cubeMX, он же сам все собирает. Создал тестовый проект, токо с включенными пинами для внешнего тактирования (хотя по clock configuration тактирование я сделал через внутренний кварц) и с пинами для стлинка, ну и для светодиода, в итоге все равно нихуя не пашет. Может ли быть такое шо чипы левые? Или разводка платы кривая? заказывал чипы с алика, попробовал уже 3 штуки, нихуя не пашет.
>>404579 >я где-то проебался с разводкой платы Но прошивка заливается? Посмотрел схему Nucleo с 042К камнем, там и ошибиться негде. Я раз ебся c STM8S003, там есть вывод с конденсатором и по даташиту кондер должен быть что-то вроде от 1 до 4мкф. Я въебенил первый попавшийся на 1мкф и предсказуемо соснул. Заработала ента хуета только когда прилудил 2.2мкф. Но у твоего камня такой хуйни нет.
>>404591 >Но прошивка заливается? Посмотрел схему Nucleo с 042К камнем, там и ошибиться негде Так вот реально, хуй его знает. Прошивка заливается, через ST-Link utility чип опрашивается, все ок, но нихуя при этом не работает. >>404592 >Нахуя их то покупать на Али? Они и у нас стоят копейки. И шанс нарваться на подъебку меньше на порядок Ну хуй знает, я всегда брал чипы на Али, все было ок, главное шоб у продавана были норм отзывы. А тут такая хуйня.
>>404603 Короче хуй его знает че произошло, но в итоге все платы начали работать и мигают светодиодом. Но отладка один хуй не работает, хоть код и исполняется (светодиод мигает) но в отладке t1 стоит на нуле, run to cursor line тоже не работает, ебаные приколы какие-то.
Аноны, в чем может быть подвох, FreeRTOS выполняет задачу (DefaultTask, дефолтная хуйня настроенная через куб) всего один раз, и дальше нихуя, просто крутит while. Ебусь с этой блядской дрысней весь день, то в hardfault выпадала из-за либы на дисплей, то между задачами не переключалась.
>>405457 Или хуйню несешь или проверяй настройки lwip. Сам напарывался и лечилось уменьшением размера кеша или еще чего связанного с занимаемой памятью во вкладке lwip.
STM32F107, распаял на плату (свою), пытаюсь запустить, но не выходит. Подключаю к JLINK по SWD, подаю питание на плату. Вне зависимости от напрежения на NRST, потребление регулярно скачет от 0 до 0.02А, а JLINK немного думает и ничего не находит. Если плата без питания, жлинк сразу видит что ничего нет. По осциллографу вижу, что JLINK что-то отправляет (периодические короткие импульсы на TMS и TCK). Boot0 и TCK подтянуты к земле через 10К, TDO и TMS подтянуты к 3.3V так же через 10K.
Референс, при аналогичном подключении, видится.
Подскажите в чем может быть проблема и куда копать?
>>406113 Это твоя схема? Больше инфы, включая фото пациента, герберы, как и от чего питаешь. У тебя точно JLink? Что он говорит в строке VCC Target, которое питает его буферы?
>>406118 Моя. Сейчас гуглил, написано что нужно добавить тантал на 10мкФ - добавил, не помогло. Герберы итд неудобно же будет с картинки читать. Или как ты его выложить предлагаешь? VCC Target это в J-Link Utility, или где? Питаю от стабилизатора 3.3, к нему же подключается VRef Жлинка. У меня древний J-Linkn из IAR-кита, пользуюсь тем что нашёл, но в общем то на таком же МК в EVAL-плате работает.
>>406122 Визуально ничего стремного не нашел как и явных отклонений. Не сразу нашел где переходное питания на широкую петляющую дорогу. Могу только попросить проверить напряжение на каждом конденсаторе (на самом) а потом относительно одной точки (входной разъем питания) и на каждом выводе конденсатора. Может где разрыв земли или питания?
Сам кристалл новый или снял откуда? Может стартует программа, которая отключает возможность отладки? Попробуй еще вывод RESET подключить.
В папке куда устанавливался софт от segger есть файл jlink.exe , который в консольном окошке пишет (часть вывода убрана): Firmware: J-Link Ultra Rev.1 compiled Dec 3 2013 14:27:53 VTarget = 4.821V <- что тут у тебя пишется? Info: TotalIRLen = ?, IRPrint = 0x..000000000000000000000000 Info: TotalIRLen = ?, IRPrint = 0x..000000000000000000000000 No devices found on JTAG chain. Trying to find device on SWD. Info: Found SWD-DP with ID 0x0BB11477 Info: Found Cortex-M0 r0p0, Little endian.
>>406125 Промерял напряжения по твоему совету, везде симметрично. Земли звонятся, ни единого разрыва. Контроллер новый. Подключил Reset, подтянул TDI к 3.3 - результат один (аттачед). >>406129 Ты, конечно, можешь иронизировать, но это и есть, сорт оф, макет. Или прототип, если так угодно. Я пытался сделать более "универсальный" макет, где у каждой ноги есть своё VIA (чтобы удобно было паяться), но понял, что получается хуита, которая, к тому же, не заработает (и это будет не поправить в рамках макета). Так как мне всё равно пришлось бы заказывать изготовление, я решил не ебать мозг, и сделать "один раз, но хорошо" Утрирую, конечно. Понимал что будут косяки и придётся переделывать, но пока ничего непоправимого не вижу. А так да, макетирование охуенно.
>>406136 На последок покажи детально кабель которым подключаешься. Питание как организовано? С внешнего БП подаешь 5В? Странно все. По питанию говоришь косяков нет, по схеме косяков не видно. Если сумел подпаяться к 77 выводу - значит уже можешь добавить 1 проводок и подключиться по JTAG-у вместо SWD. Если и это не катит - попробуй на PB2(BOOT1) подать 0, на BOOT0 - 1 и через утилитку Flash Loader Demonstrator попробовать достучаться через UART до загрузчика через выводы A9 и A10 через. Если и это не поможет - тогда не знаю, наверное замена кристалла на точно рабочий/из проверенных источников.
>>406144 Питание от ЛБП, провод медный многожильный, относительно толстый. Знакомый так же посоветовал попробовать подтянуть Boot0 к питанию. Обрати внимание, пожалуйста, на то как установлен чип >>406122 Правильно или я не угадал, где у микросхемы ключ? Ещё грешу на флюс. С ним у меня уже возникали проблемы.
парни я вот это хочу тоже вкотиться в stm32 блю пиллсы мне пришли а программатор потерялся по дороге я дешевый брал ст линк китайский. деньги отдали конечно я вот думаю а не замахнуться ли мне сразу на программатор v2 как мыльница который? им вроде и стм 8 можно шить или нахуй? пока простой свисток пойдет? или сразу v3 но там цена...
>>406246 Разницу между мыльницей v2 и свистком v2 ты не заметишь. V3mini есть за 1.5к, но зачем? Ты ведь не собираешься двухядерные h7 отлаживать? Если синих таблеток у тебя две и есть usb-uart, можешь одну из них прошить в st-link или blackmagic probe.
>>406257 бро я пробовал так через ардуину ее reset замкнул с массой не захотела моя пилюля так щиться хотя некстион дисплей щьется то есть сам юсб-ттл рабочий rx и tx менять местами пробовал конечно
>>406287 Джамперы остались стоять как я и пробовал прошивать (фото). Rx и Tx были ардуиновские, сегодня по новой попробую, поставлю резисторы 390 Ом (подсмотрел номинал на ESP8266 schematic). Питание брал с пина 3.3 На ардуинке, сегодня запитаю от отдельной платки китайской которая умеет 5 и 3.3 вольт.
>>406307 Не получается((. Полдня сегодня бился с прошанием Blue Pill (перешивка ее в ST Link программатор). Пробовал и в Linux, там тоже печально. На Blue Pill постоянно мигает светодиод PC13. Гаснет только при нажатой кнопке Reset. Положения джамперов boot0, boot1 на него никак не влияют. Ответа от платы нет при прошивке. В среде Ардуино тоже нет ответа. Куда копать не знаю. Сама Ардуинка, которая используется как USB-TTL шьется штатно, проверил еще раз. Буду заказывать ST link и USB-ТTL до кучи.
>>402048 >Очевидно же, знание устройства микроконтроллера и особенности ассемблера. Это скорее про особенности пайплайнов, стэков и особенностей архитектуры. Ассемблер для этого конечно неплохо знать, но не обязательно на нем кодить. Да и под ПЛИСы сейчас код тоже на высокоуровневых языках пишется - тот же VHDL и даже C и C++
>>339005 (OP) Сап, аноны, хочу заебенить себе W-mouse, но на STM а не пердуине (ну а хуле и нет, да и дешевле так). Из вариантов мозгов рассматривал STM32F730R8 - типа ебать он мощный дохуя, но вот с другой стороны, а нужна ли мне такая йоба? Ну или взять попроще какой-нибудь STM32F103C8T6.
Но в электронике я мало что понимаю, я так понимаю если я возьму один только чип - то мне придется делать к нему отдельно обвязку (разве что знаю что нужно будет ставить регулятор напряжения чтобы понижать с 5 до 3.3 вольт). А всякие кристаллы-осцилляторы, какие-то дополнительные конденсаторы и резисторы мне нужно будет ставить на плату? А то так некоторые готовые платы посмотришь, и там дохуя всего стоит, вот как здесь >>339689
И еще, из программатора у меня есть только C232HM, мне нужно будет какой-то другой покупать, или можно будет и им прошить?
>>406832 Я не хочу брать с готовой обвязкой, потому что я хочу запиливать плату специально под мышь. Для того чтобы просто поиграться у меня и так уже есть готовая ESP32. Но мне нужно знать какая обвязка мне нужна будет на плате.
>Но где ты возьмёшь прошивку под стм? Если ты про W-mouse, то просто перепилю регистры с ардуиновских на стмовские, может ещё чего поправлю и перекомпилирую. Или там ещё какие-то прошивки есть на СТМ, которые загружать нужно? Вот как сам СТМ изначально прошивать по одному только 232 я не знаю.
>>406845 >У стм принципиально иная архитектура, так не прокатит
Что не прокатит? Алгоритмы которые написаны на С от другой архитектуры не поменяются, а поменять всякие инициализации и считывания пинов - это вопрос изучения мана.
Сап анон. Для чего нужен режим GPIO_Analog в кубе? Я думал, что это АЦП, но он идёт отдельным режимом, и есть не на всех пинах. А этот режим есть на всех пинах. Что это, и как с этим работать?
>>407414 Я искал, но ясного ответа о том, только для DAC'а нужен этот режим или нет - не нагуглил. >>407413 Тоже не добавляет ясности. МК серии stm32f10x, если что.
>>407439 А если нет на пине АЦП? Для PB0 и PB1, например, доступен АЦП, и доступен выбор "GPIO_Analog". У PB2 доступен только "GPIO_Analog". Какую функцию у него, например, реализует "GPIO_Analog", учитывая что альтернативные функции для него не доступны?
>>407455 А на кой тогда он доступен для всех пинов? В том числе в кубе. Просто ради совместимости кода? Алсо, я проверил, на жтаг пианх он тоже доступен.
>>407458 Думаю, чтобы можно было тупо отключить неиспользуемую ногу от всего и не париться. Если висящую в воздухе ногу сделать входом - она ловит пердёж и помехи, входной буфер быстро переключается и жрет ток, выходом - может замкнуть, если подключена к выходу/питанию, входом с подтяжкой - в предыдущем случае будет небольшой дополнительный ток.
Кстати, кто работал с пикрелейтед дисплеями (1602, 5110) - подскажите, какую библиотеку лучше всего использовать для текста настраиваемого размера с кириллицей?
Пиздец посолены, объясните мне, покажите хоть одну либу с поддержкой ебучего OTM8009A. Настроил дисплей через FSMC, могу пиксели рисовать, а ебаться с отрисовкой не хочу. Хочу библиотеку GUI чтобы красиво было. Поставил Segger EmWin — говно не работает, какой только драйвер не выбери. Не знаю где ошибка, всё инициализируется нормально. Может есть другие либы хорошие, где не надо руками пиксели трахать? Смотрю сейчас всякие uGUI, littlegv, понять не могу. С какими либами вы работаете? Йоба TouchGFX не предлагайте, в моём проекте только Stm32F205 есть, заказчик менять компоненты не собирается, плата уже готовая и не факт, что просто замена дисплея поможет.
>>407458 вот эти восемь состояний >>407413 доступны для всех пинов, ибо никто не будет подгонять выходы под наличие конкретной периферии. На джтагах он доступен, но сразу после перезагрузки там по-моему инпут с подтяжкой вверх, когда на других аналог инпут
И снова здравствуйте, аноны. Пытаюсь настроить встроенный АЦП в интересующем режиме, но почему-то результат выходит не рабочий. Камушек STM32F107. Следуя гайдам из интернетов, выбрал параметры в кьюбе, и там где у людей всё работает, у меня - залупа. Прикрепленные скрины - настройки ADC и DMA в кьюбе.
Запускаю АЦП командой, HAL_ADC_Start_DMA(&hadc1, (uint32_t*)adc_buf, ADC_BUF_LEN) больше ничего не дописываю. В обработчик DMA прихожу всего 2 раза, и всего 1 раз прихожу в коллбэк HAL_ADC_ConvCpltCallback(). Первый байт указанного буфера, единожды устанавливается в какую-то рандомную величину, остальной буфер - нули. Пробовал настроить без континьюс мода, по таймеру (TIM3_Out, так в итоге и собираюсь использовать), но там вообще, какая-то хуита - буфер всегда пустой, прерывания на DMA никогда не приходят.
При всём описанном - в режиме "ручного опроса" АЦП работает на последнем скрине видно, что DR не пустой, занчение в DR меняется. Алсо само значение DR какое-то рандомное, пока не подключу его к земле или питанию вручную - тогда показывает 0 или 0xFFFFF соответственно.
>>407843 Чекни настройки NVIC (векторов прерываний), может ты прерывание по АЦП не включил. Еще посмотри как это всё работает на других контроллерах, из других серий. Все примеры по АЦП можешь найти в репозиториях куба. Наиболее богатая примерами линейка — f400, топай от дискавери.
>>408024 Да няш, запустил. 2 недели по эту пятницу с ней игрался, радовался, а потом, похоже, случайно сжег. В целом не смертельно, есть второй комплект на всё что мог сжечь, но сейчас карантин, так что пока не починю/проверю. Буду пока писать на отладке. >>408022 Ну в мануалах не пишут что нужно врубать прерывание по АЦП. В STM-воском мануале к HAL-у написана рекомендация, поставить в прерывание DMA обработчик для АЦП, я пробовал - не помогает. По поводу других серий - в F4 отличаются АЦП немного, в F1 для моего юзкейса примера нет. Странно, что я делаю всё как в гайдах для F103, по описанию - АЦП у нас одинаковые, но всё равно, получаю какую-то херню. Очень странная фигня.
>>408311 Да хуй его знает, что это было. Валю на флюс. Искал кого-нибудь знакомого с УЗ-ванной, но все меня послали нахуй, предложив использовать дегризер. Дегризера у меня не было, но был очиститель карбюратора. После него всё заработало.
Приветик, анчоусы~ По необходимости в скором времени придется перекатиться с STM32 на STM8 и вот возник вопрос. Если кто-то работал с этим, может подскажите хороший компилятор и следовательно IDE? Уже попробовал IAR Embedded workbench и слегка поел говна. Компилятор ужасный. Си преобразует в ASM ужасно. А при включенных оптимизациях часть кода вообще не работает/работает не так как надо. В общем, помойка говна.
>>408763 >родной компилятор ужасный Я с ентими вашими компиляторами на ВЫ, просто помалу типа погроммирую и кампилирую. Вроде работает все. Поясни в чем ужасность родного с космиком в качестве компилятора?
>>408763 Ну вот я тоже сразу приглядывался к SDCC Попробую а результат отпишу >>408769 Грубо говоря, у тебя компилятор преобразует твой исходный код в исполняемый файл. Который ты можешь посмотреть через дебаггер. Так вот. По сравнению с ассемблер ом, код на си более абстрактен и может быть преобразован разными способами. С учётом оптимизацией, опять же. Компилятор - это программа. И некоторые компиляторы преобразуют исходники в исполняемый лучше, а некоторые хуже. Иаровский компилятор делает это убого. Когда обращение к регистру может быть выполнено 1 инструкцией на ассемблере, он это обращение представляет как 4 команды с call-ом внутри. То есть, штампует больше кода чем нужно. От этого код на си работает медленнее и занимает больше памяти
>>408152 Смотри мои настройки для измерения АЦП по ДМА. Весит на этой штуке 8 датчиков. Все что мне нужно, чтобы запустить бесконечный цикл измерения по всем каналам сразу это HAL_ADC_Start_DMA(&hadc1, (uint32_t*)adc_sensors, 8); Больше никаких настроек не нужно. Работает искоропки как часы. Прерывания по АЦП и ДМА каналу включены.
Делюсь своими впечатлениями от использования БЕШПЛАТНО-ШВОБОДНОГО sdcc. Все началось с того, что я не нашел нормальной IDE. Их просто нет. Напомню, что eclipse нормальной IDE считаться не может.
Далее. Накатив eclipse, я столкнулся с проблемой, которую так и не смог побороть спустя часы гуглежки. Проект по необходимому шаблону просто не создается. Вот так. Хваленый текстовый редактор просто закрывается, не желая делать то что от него требуется.
Но на этом я не остановился. Скачав сам по себе компилятор и написав make-файл я попытался скомпилировать код. Как можете понять, ничего не вышло.
Поддержки божественных макросов вроде #pragma vector для прерываний, __interrupt, #pragma location наряду с __no_init для простого доступа к EEPROM-у и многого-многого другого. Этот компилятор в принципе не предназначен для STM8. Мне даже не удалось найти нормальный готовый хидер-файл для проекта. В сети есть лишь недописанный кусок хидера с ошибками от какого-то васька. В общем-то, охуенные впечатления остались. Боже благослави ШВОБОДНОЕ по
>>409655 >Боже благослави ШВОБОДНОЕ по Меня больше прикалывает когда в тред населенный нубами на 146% врывается тип ПОЗНАВШИЙ ЖИЗНЬ и начинает затирать про линух на его машине, сборку окружения из сорцев, написание make-файлов... Хочется просто харкнуть в еблище.
>>409655 >Этот компилятор в принципе не предназначен для STM8. А зачем ты его взял, если можно было погуглить и почитать, что он умеет и решить, пойдёт ли он для твоих задач или нет?
>>409808 >Нормальные люди сами разводят себе платы под нужные цели. Вот же ебанат. Я развожу когда код и аппаратную часть отлажу на ОТЛАДОЧНОЙ ПЛАТЕ. Если ты готов лутить/ждать от китайцы месяцами плату после каждого косяка, а они у тебя будут с вероятностью 101%, то флаг тебе в руки.
>>409808 За сколько наносекунд разведешь тян на сиськи и спаяешь на коленке платку расширения под PCI-e слот с парой трансиверов 40G Ethernet, легкая FPGA на полмиллиона LE, пару ЦАП-АЦП на пару гигасемплов, аналоговую часть под них, массив NAND и DDR3 памяти и незабыв про SSRAM мегабита на 72 и например рядом несколько работающих по себе i.mx8 у которых так же своя DDR3, NAND и NOR память? Ой, совсем забыл еще Ethernet свич дописать. По частям это есть, одним куском - нету. Не выебывайся, а ответь конкретно - за сколько наносекунд соберешь себе такую макетку в единичном экземпляре? Разведешь все это с первого раза включая DDR3 и SERDES на десяток гигабит по каждой паре? А то мне завтра курсовик сдавать надо, а еще нихуя нет. Дай угадаю - твой уровень - мигалка светодиодом или мигалка на мультивибраторе? Похвально. А теперь пиздуй обратно в свой загон-пердуино тред.
>>410003 Дохуя умный? Думаешь этот высер HAL-а дает одну команду? Хуй там. Если основательно ебанешься - пиши на ассемблере команды записи в регистр BSSR (bit ser reset register) и глядишь в 4 команду уложиться - установить, nop, сбросить, переход в начало. Используй выход таймера
А что там показывать? Пустой проект сгенерированный кубом. Там только настройка тактирования и двух пинов порта C и B на выход ну и дерганья пином в цикле.
>>410010 >мало Ёбу дал? Правильно сделал что хал в помойку и перешел на CMSIS. В 6 раз поднял скорость! Сказал же - используй таймер если надо быстро надрачивать или рассказывай нахуя тебе такая (нужную не назвал)скорость. Почитай https://habr.com/ru/post/161617/ . Некоторые то же думают что ох сейчас раскочегарим.. и сосут хуй в итоге.
>>410181 Покурил даташиты. У 103 серии I/Os on APB2 with up to 18 MHz toggling speed. У 429 Fast I/O handling allowing maximum I/O toggling up to 90 MHz То есть теоретически и у тебя и у меня есть еще куда расти
>>409808 Двачую, нужна была небольшая плата для прототипа на stm32f4, за три дня нарисовал, развел, вытравил и припаял. >>409824 Именно в таких случаях отладки сильно выручают. Если разработка не для курсача, потом несколько месяцев делать свою плату со всем этим добром. Речь о том, что Дискавери в шапке очень проста, и во многих случаях проще и дешевле сразу сделать плату для прототипа с нужной обвязкой, чем специально покупать оверпрайснутые платы расширения или делать колхоз на макетке. Конечно, есть и исключения, когда обвязки мало/нет, совсем нет времени и есть всё готовое, или для обучения. >>409809 Nios >>410232 Возьмите лучше таймер
Всем ку. Есть одна bluepill. Я пытаюсь подключить к ней по I2c плату с mpu6050. Пытаюсь сделать через прерывания, но получается какая-то залупа. Вот код обработчика прерывания Эвента:
void I2C2_EV_IRQHandler(void) { / USER CODE BEGIN I2C2_EV_IRQn 0 / uint32_t sr1=I2C2->SR1; uint32_t sr2=I2C2->SR2; if (sr1 & I2C_SR1_SB) { I2C2->DR = ((0x68<<1)|rw); } if (sr1 & I2C_SR1_ADDR) { if (!rw) { I2C2->DR = i2cTx; } } if (sr1 & I2C_SR1_TXE & (!rw)) { I2C2->CR1 |= I2C_CR1_START; rw=1; } if (sr1 & I2C_SR1_RXNE & rw) { rw=0; buff[0]=I2C2->DR; I2C2->CR1 |= I2C_CR1_STOP; uartTransmit(buff, 1); } }
Смысол в том, что мне надо передать последовательность, описанную вторым скриншотом.
На пикреле отладка осциллографом. Вопросы такие:
1) Почему первый ACK такой всратый? Я имею в виду непонятную иголку, которой теоретически быть не должно. 2) Что за затык в 1 пустой такт после первого ACK? 3) Почему после второго ACK контроллер затыкается, тактирование останавливается и он тупо прижимает SCL к нулю пока я не ребутну контроллер? (Прижимает именно stm32, а не mpu6050).
>>412963 Есть подозрение, что МК ожидает байт для передачи и поэтому останавливает тактирование, пока я не дам ему байт. Но я не хочу давать байт, как ему объяснить что все, не надо больше передавать?
>>412971 Не совсем понятно про rw - это глобальная переменная? Инициализируешь явно или надежда на cumпилятор и еге инициализацию переменной 0?
sr1 & I2C_SR1_TXE & (!rw) - мутно. То что пишешь - верно, но это для случая когда с буферизацией пишешь. Тебе же надо выслать один байт и ловить его окончание передачи через флаг BTF! После установки флага BTF (когда байт уже реально передался) тогда давай команду на повторный старт.
Читаешь 1 байт? Тебе картинка 277 на странице 764: EV6_3: ADDR = 1, program ACK = 0, clear ADDR by reading SR1 register followed by reading SR2 register, program STOP =1 just after ADDR is cleared
sr1 & I2C_SR1_ADDR - этот участок надо переписать. Тебе при чтении надо сразу подготовиться к тому что ты НЕ будешь подтверждать прочитанный байт(EV6_3) со слейва, говоря что больше не будешь читать.
Осциллограмма - это хорошо, только маленький недочет - значение бита считывается по восходящему фронту, а не нисходящему как нарисовано.
>>412963 >Я имею в виду непонятную иголку, которой теоретически быть не должно. Тебе не похуй? Данные читаются по восходящему фронту, то что между фронтами - поебать. Сам включи логику - мастер высрал 8 бит адреса и освобождает шину, от чего SDA уходит в 1 и дальше уже слейв если уснал себя - прижмет к 0, если нет - то на свободной шине так и останется 1. Никакой магии и глюков тут нет, разве что слейс не особо быстрый. Не совсем. Можно напороться на состояния СТАРТ и СТОП
>Что за затык в 1 пустой такт после первого ACK? Затыка нет, неправильно фронты считаешь.
>тактирование останавливается и он тупо прижимает SCL к нулю Он сделал что надо и ждет от тебя данных, но у тебя флаг BTF не проверяется и в теории "виснет" на строке (sr1 & I2C_SR1_TXE & (!rw)) которая уже никогда не выполнится и у тебя бесконечный заход в прерывание, так как контроллер не в состоянии выдать сигнал (повторный)старт во время передачи байта.
>>412983 Весь прикол в том, что старт или стоп команду нужно передавать ДО того, как передался или принялся последний байт, а не после. Тогда все корректно выполнится.
>>412985 >Затыка нет, неправильно фронты считаешь. Есть, приглядись внимательно. Там SDA = 0 на возрастающем фронте SCL, хотя должно быть 1. Впрочем похуй, на работу оно не влияет.
Короче ебал я, так и не смог по-нормальному запустить аппаратный i2c, забил хуй на это говно и за пол дня написал функции чтения и записи на ногодрыге. Вроде работает без проблем, хоть и всрато по сути своей и тайминги не точные.
>>413588 Напиши говнокод - может кто-то проверит или я на днях на bluepill прогоню например на термодатчике LM75. TxE: Data register empty (transmitters) - Set when DR is empty in transmission. TxE is not set during address phase - Cleared by software writing to the DR register or by hardware after a start or a stop condition or when PE=0. Пишут что очищается стартом или стопом, во время отсылки адреса неактивен (0). Как вариант все что связано с TXE - делай после проверки бита MSL в I2C_SR2 - когда мастер, тогда и спамишь
>>413599 Напиши "логгер" - не пожлобись например на килобайт ОЗУ куда будешь писать SR1+SR2 на каждом входе в прерывание и поставь брякпоит например на 450 записей или сколько хочешь и смотри как флаги седут себя. Отладка - это же творческий процесс. Когда-то так дебажил и глюков с TXE на 32F103ZC не наблюдал. Только BUSY на каждом шагу.
>>413987 → Сейчас у меня нет компа, поэтому только словами могу описать Для начала возьмём пример с одним таймером, у которого есть 4 канала. То есть будет 4 выхода. Пусть это будет general purpose таймер. Ну общие регистры, типа делителя счетчика, периода таймера, one pulse mode настраиваешь как обычно.
Теперь настраиваем каналы. В TIMx_DIER включаешь все биты CCxDE, чтобы разрешить запросы к дма контроллеру от СС-каналов. В TIMx_EGR врубаешь биты CCxG, чтобы включить эвенты о каналов (чтобы они генерировали запросы дма). Затем в регистрах CCMRx нас интересуют поля OCxM, нам нужен режим, когда выход при наступлении события переключается, записываешь туда 011: Toggle - OC1REF toggles when TIMx_CNT=TIMx_CCR1. Дальше в CCER включаешь все выходы каналов установкой бита CCxE.
Теперь DMA. Я просто скопипащу In this example the timer DMA burst feature is used to update the contents of the CCRx registers (x = 1, 2, 3, 4) with the DMA transferring half words into the CCRx registers. This is done in the following steps: 1. Configure the corresponding DMA channel as follows: –DMA channel peripheral address is the DMAR register address –DMA channel memory address is the address of the buffer in the RAM containing the data to be transferred by DMA into CCRx registers. –Number of data to transfer = 4 (See note below). –Circular mode disabled. 2. Configure the DCR register by configuring the DBA and DBL bit fields as follows: DBL = 4 transfers, DBA = 0xD.
Теперь время импульсов. В каждый CCRx записываешь время фронта имульса соответствующего канала. В тиках таймера, разумеется. Далее настраиваешь буфер DMA. Тут вот какое дело: на каждый передний/задний фронт импульса из любого канала формируется DMA запрос, который прогружает все четыре CCRx регистра. Мы так настроили, потому что каналов таймера у нас 4, а канал дма всего 1. Поэтому настраивай времена соответственно так, чтобы во все каналы попадало правильное значение. Например, первые четыре значения буфера ДМА tf1 tr2 tr3 tr4, вторые: 0 tr2 tr3 tr4, третья четверка: 0 tf2 tr3 tr4, четвертая: 0 0 tr3 tr4, и так далее, где tr, tf - время переднего и заднего фронта соответственно.
Теперь включаешь таймер. Поначалу все выходы у него по нулям, до тех пор, пока счётчик не добежит до значения в регистре CCR 1 канала, который мы загрузили заранее. Когда CNT == CCR, наступает событие первого канала. Он переключает свой выход из 0 в 1 ( мы настроили toggle) и генерирует запрос к дма. Дма прогружает все четыре регистра, но у первого таймера теперь загружено время заднего фронта импульса. Далее точно так же, счётчик досчитывает до значения CCR1, первый канал делает toggle своего выхода обратно из 1 в 0, запрашивает дма. Но теперь в его регистр загружается значение 0, а значит, CNT таймера уже никогда с ним не сравняется и первый канал больше не сработает, если стоит one pulse mode. Дальше всё повторяется, только для следующих каналов. Как-то так
>>409820 >Если ты готов лутить/ждать от китайцы месяцами плату после каждого косяка, а они у тебя будут с вероятностью 101%, то флаг тебе в руки. Лол, всё необходимое для пленочного фоторезиста можно найти за копейки.
>>375183 >Установочная цель устроится байтоёбом за жрат. Что бы хоть как то вкотиться в ойти ололо. Не советую, микроконтроллеры, плис, электроника и прочее говно очень плохая идея, работы почти нет, платят копейки. Как хобби это интересно, но как способ заработка и социальный лифт - нет (хватит только на хуйцы с гречкой). Лучше сразу вкатывайся в айти, работы полно, платят много, а также есть возможность последующей удалёнки, фриланса или трактора, на выбор.
SUP котики. Сейчас будет история одного долбоеба и реквест помощи. Сразу скажу. К программированию, IT, электронике и прочему я не имею никакого отношения. Начинал возится с ардуинкой в качестве хобби. И ни на что большее не претендую. Сам максимально гуманитарий, гордый оператор офисного стула и дипломированный перекладыватель бумажек. Так вот. Пару лет назад от скуки и безысходности купил себе стартовый набор ардуинки с кучей датчиков и стал в нее тыкать. И постепенно втянулся. Начал делать разную хуйню из головы для удовлетворения своих больных фантазий. В какой то момент меня перестало устраивать распаивание поеботы на всяких нано и я решил сделать свою плату с блекджеком и шлюхами. Нагуглил EasyEDA и нарисовал нужную мне поеботу. И когда получил ее она даже заработала хотя наебался я знатно. Постепенно амбиции привели меня к STM32. Взял разных Дискавери плат и начал говнокодить на MBED поверх PlatfomIO. То что я пишу я не покажу никому потому что даже я сам понимаю насколько это убого. Плюс по прежнему рисую свои платы и заказываю у китайцев. Вроде все норм. На уровне самоделок долбоеба даже успешно. Оно по крайней мере почти всегда работает. Такая вот история. А теперь реквест помощи. Я устал от ощущения что делаю говно. Как исправится? Задачи у меня простейшие и не требуют высокой надежности оборудования или безотказности когда. Но все таки хочется что бы за них не было стыдно хотя бы самому. По этому. Первое. Как научится нормально разводить платы? Ролики на ютубе меня чему то научили, но эти обрывочные знания крайне убоги. Я знаю что этому учат. Может есть какой то учебник или курс для даунов лол. За два года я самостоятельно кое как научился понимать схемы и через абзац даташиты к электронным компонентам. Но в большинстве случаев это какой то непонятный для меня пиздец. То же касается разводки плат. То что я сейчас делаю наверняка работает лишь чудом. Потому что очень слабо понимаю что я вообще делаю. Опять же. Подскажите среду в которой стоит работать. Мне не нравится то что тот же EasyEDA привязан к конкретному производителю плат. Может есть что то настолько же доступное и простое но более универсальное. Второе. Хочу уйти от MBED во что то более вменяемое. Пока что склоняюсь к CUBEIDE потому что она вроде как от самой STM и использовать соответственно HAL. Но опять же. Ту инфу что я могу нагуглить я практически не способен понять. Если проект под MBED у меня в базовой форме соедржит две строчки с main и while то куб генерит ебаное огромное (для меня) полотно не читаемого (опять же для меня) кода в котором я не способен разобраться. Лучшее мое достижение это меганием диода на плате нуклео по гайду от digikey. Может есть какое то постепенное вхождение в программирование под HAL для полных даунов? И для понимания круга моих задач. Лучшее мое творение это автоматический бар лол. Я с ним ебусь уже около года постоянно совершенствуя. В текущей форме он может выбрать из трех напитков и нахуярить заданный обьем в стакан. В первоначальной форме напитки нужно было выбирать нажиманием одной из трех кнопок. Сейчас вкорячиваю вместо этого 2.8 дисплей с тачем. Когда закончу с этим хочу подключить все к интернету и написать простейшее приложение под смартфон что бы можно было делать это с него. Понятно что практического смысла в этом нет. Просто ебля ради ебли. Но анон, я хочу сделать это настолько хорошо, насколько это позволит мой гуманитарный мозг. Помоги советами мудрыми.
>>416193 >Как научится нормально разводить платы? Почитай начальный и высшый курс черной магии. Проектирование высокоскоростных цифровых устройств в авторстве Грэхэм Мартин, Джонсон Говард. Сейчас оно подустарело, частоты выше, но физика процессов не поменялась. Читать очень осторожно, а то реально в шизоидный бред скатишься при разводке и будешь шарахаться от лишнего изгиба дорожки до светодиода.
>>416207 Спасибо пойду гуглить. А то я заебался делать хуйню. На моей первой плате вообще не было медного слоя и всю землю я разводил дорожками лол. Наверняка я до сих пор делаю невероятную дичь просто не зная об этом.
>>416207 >Проектирование высокоскоростных цифровых устройств в авторстве Грэхэм Мартин, Джонсон Говард. >Лучшее мое творение это автоматический бар лол Заебись совет, конечно. Бар, работающий на мегагерцовой частоте. >>416193 >Хочу уйти от MBED во что то более вменяемое. По-твоему HAL более вменяемый что ли? HAL - это очень плохо. Если хочешь доклопаться до основ, начни с блокнотика, консоли и cmsis.
>>416393 Отвадят скорее подобные тебе, у которых хал не кусок говна. Ведь человек чувствует, что это хуйня какая-то, а ему пишут мол, не заебись, это для начинающих, то ли низкий уровень, там все еще страшнее. Хотя на самом деле все наоборот. В хале наворотили дохуя сложности там, где ее изначально не было. То есть человек думает, что он тупой и чего-то не понимает, а это у стм хуевые программисты это не секрет. Что тут может отвадить, не понятно.
>>416401 >Отвадят Отвадили изначально меня "знатоки" типа тебя. Куда ни полезешь за примерами, - один на регистрах шпарит, второй на StdPeriph_Lib, третий со вставками ассма, четверты хуй пойми чем занимается и тупо переименовывает названия переменных HALа под свои инициалы и выдает халовские либы за свои. Когда СТ таки допилило HAL до нормального уровня и вычистила эти несовместимые хуйни, я наконец снова занялся самообучением этим контроллерам и, о чудо, всё, блядь стало получаться. И уже тогда я полез в дебри смотреть как в HAL всё устроенно. Так что идите нахуй, подобные советчики. Может вы и начинали программировать расписывая в тетрадке программки для калькулятора Б3-34 и потом за него и выполняя их, но нонче начинать со столь низкого уровня, смерти подобно
>>416393 Как раз таки те, кто начинал с низов(с логических элементов, триггеров и ассемблера), чаще всего и остаются в этом занятии серьезно. А ардуинщик навсегда останется ардуинщиком, никогда не начинайте с ардуино(Кубик и HAL это аналог ардуино для стм32 по сути).
>>416424 >третий со вставками ассма Профессионалы всегда используют вставки ассма в местах, где нужно максимальное быстродействие. Ассм и архитектуру проца и команд знают не все, поэтому топовые конторые всегда держут у себя специалиста по ассемблерным вставкам.
>>416424 > Когда СТ таки допилило HAL до нормального уровня и вычистила эти несовместимые хуйни, я наконец снова занялся самообучением этим контроллерам и, о чудо, всё, блядь стало получаться. То есть дело не в том, что ты потратил больше времени и у тебя в какой-то момент стало получаться, а в чем-то другом. Ну-ну. Если бы ты сразу начал с cmsis и даташита, у тебя бы начало получаться еще быстрее. Дело не в том, что HAL это не высокоуровневый код. Mbed - высокоуровневый и они сделали хорошо, потому что в ARM программисты намного лучше, чем в ST. А HAL - это низкоуровневая библиотека с очень странными на момент 2020 года подходами к программированию. Свою задачу (абстрагирование от конкретного МК) она худо-бедно выполняет и пользоваться ей можно. Но не более. А для общего развития намного полезнее почитать хедеры CMSIS для своего МК. Там в одном файле будет все просто и понятно, а если что-то не понятно, то йоба-макросы HAL будут еще менее понятными.
>>416517 > топовые конторые всегда держут у себя специалиста по ассемблерным вставкам. Что ещё спизданешь охуительного? Топовые конторы стараются как раз уйти от ассемблерных вставок везде, где только возможно, чтобы получить легко поддерживаемый, переносимый и читаемый код. Тебя скорее отпиздит менеджер, если увидит, что ты решил писать на асме там, где можно написать на Си. Оптимизировать на уровне инструкций должен компилятор, который к тому же имеет разные флаги оптимизации, а не программист. Я бы посмотрел на тебя, если бы твои ассемблерные вставки нужно было бы пернести с одного ядра на другое, ещё и оптимизировать по размеру кода, а не по скорости, лол. Для топовой конторы это гарантированный влёт на бабки, поэтому она скорее выпиздит такого "специалиста" по ассемблерным вставкам, чем будет продолжать с ним иметь дело.
>>339843 >>340287 Ну это ещё не самый плохой результат, кстати. Я купил нуклео, китайские платки с f104, несколько stm8, два программатора st-link, программатор pickit3, кучу пиков, и ещё кучу всего, что забыл перечислить, в суме больше десятки потратил и они уже больше года лежат на полке. Я не то что диодом не поморгал, а даже иде не устанавливал, потому что нет времени и занят всякой парашей(в т.ч. и работой, но с другими камнями), а игрушки лежат до лучших времен, когда будет время ими заниматься...
>>416736 Макросы вместо функций, как будто на дворе 1989 и компиляторы не умеют инлайнить, неумение в битовые поля (они не так популярны, как прямая ебля с >> и << потому что это platform specific, но что может быть более специфично для платформы, чем код для STM? Типа когда-нибудь они перейдут на процессор с другим порядком байт?), соответственно вместо непосредственных присваиваний вида register.channel=5 будет что-то типа register = (5 >> 10) & 0xFFFF, сама по себе структура кодогенерации в виде комментариев типа INSERT YOUR CODE HERE, при этом если ты проебешь такой комментарий, все сломается.
int main(void) { before_configuration(); HAL_Init(); after_configuration(); }
а в user_code.c содержимое типа:
void before_configuration() { }
void after_configuration() { }
Система типов должна защищать от выстрелов в ногу даже в том формате, который предлагает язык си. Почему GPIO speed это uint32_t? При этом в комментах пишут "This parameter can be a value of @ref GPIO_speed_define". Алло, ребят, для этих целей придуман enum. Почему у GPIO аут, ин, альтернейт и аналог пины - это один и тот же тип данных? С грозной угрозой пальчиком типа "если у вас аут - вот это ставьте вот так, а если ин - вот так, смотрите не перепутайте". Килобайты в хедере пожалели? Да нет, просто в этой высокоуровневой библиотеке нихуя не высокоуровневое укуренное отображение регистров. Пин - это пин, если пин это какой-нибудь USART, он не может уже работать как ADC. В кубе это отлично видно - на высоком уровне у тебя есть пин, у него есть состояние, которое взаимно исключает другие состояния. Ты не можешь установить одновременно. А в HAL'е - можешь. Потому что MX_USART2_UART_Init это одно, а MX_GPIO_Init это совсем другое. Хотя логически и то и то работает с пинами. То есть никаким высоким уровнем тут не пахнет. Все та же ебля с даташитом, чтобы ни в коем случае не установить регистры (которых якобы нет) в противоречивое состояние.
>>416870 Куб всего лишь не мог определить где пользовательский код, а где генерированный и соответствено не мог корректно перегенерировать файл. Очевидно же. При чем тут HAL - без понятия, по моему не при чем, если ты об этом.
>>416654 >Что ещё спизданешь охуительного? Много чего. >Топовые конторы стараются как раз уйти от ассемблерных вставок везде, где только возможно, чтобы получить легко поддерживаемый, переносимый и читаемый код. Читаемый код на ассемблере ничем не отличается от читаемого кода на Си, достаточно соблюдать "code style": комментить, нормально называть переменные, делать отступы, не говнокодить. >Тебя скорее отпиздит менеджер, если увидит, что ты решил писать на асме там, где можно написать на Си. Каждое применение ассемблера должно быть обосновано и задокументировано. В ряде случаев, когда нужно обеспечить максимальное быстродействие в критически важных участках программы и даже с десяток лишних клоков контроллера могут запороть работу, ассемблер необходим. >Оптимизировать на уровне инструкций должен компилятор, который к тому же имеет разные флаги оптимизации, а не программист. Даже лучший в плане оптимизации компилятор IAR за тысячи бабок будет оптимизировать на порядок хуже, чем человек. >Я бы посмотрел на тебя, если бы твои ассемблерные вставки нужно было бы пернести с одного ядра на другое, При переносе кода с одного ядра на другое всё равно придётся дорабатывать напильником, хоть со вставками, хоть без: как минимум архитектура и набор команд разные, работа с периферией тоже. Да и ни кто не говорит, чтобы в 2к2к писать на асме всю программу, речь идёт о вставках, коих может быть чуть менее одного процента от всей проги. > ещё и оптимизировать по размеру кода, а не по скорости, лол. Ассемблер и по размеру кода и по скорости лучший, если уж на то пошло. >Для топовой конторы это гарантированный влёт на бабки, Тут не понял, поясни. Как фирма может влететь, если её сотрудник будет делать ассемблерные вставки? Доход фирмы зависит от продукта, который она производит, и ей по-барабану на чем ты пишешь, на си, асме или на плюсах, главное чтобы готовое устройство работало нормально и пошло в продакшен. >поэтому она скорее выпиздит такого "специалиста" по ассемблерным вставкам, чем будет продолжать с ним иметь дело. Как раз таки наоборот. Михалычи, у которых десятелетний опыт работы на асме напрямую с регистрами контроллера и знающие все даташиты наизусть на вес золота и им платят нормально, а современным зумеркам, которые заливают на гитхаб крафтовые проекты на ардуино и кубике, которые они делали по урокам с ютуба, проводят шершавым на собеседовании и берут разве что за еду(при условии, что они тоже будут писать напрямую через регистры и со временем смогут в асм). Буквально это рассказал один анон, мол пришел на собес, и когда узнали, что он пишет через кубик и HAL буквально обоссали и обосрали всей фирмой так, что он там больше не появлялся. Да и достаточно почитать вакансии на хх, во всех вакансиях с зарплатой от 30к знание ассемблера и архитектуры будет обязательным.
>>416913 >Читаемый код на ассемблере ничем не отличается от читаемого кода на Си, достаточно соблюдать "code style": комментить, нормально называть переменные, делать отступы, не говнокодить. Основное и практически единственное отличие асма от си, это способность непосредственной работы с регистрами. Которая, во-первых, убивает напрочь любую читаемость, поэтому фактически нужно дублировать каждую строчку комментарием с сиподобным кодом, а, во-вторых, у человека получается хуже, просто потому что RISC сделана для компиляторов, а не для людей. Распихивание переменных по регистрам - это задача типа шахмат, в 80-е, может, человек и был лучше, сейчас нет, компьютер тупо брутфорсом побеждает. В сухом остатке остается только неумение писать эффективный С код. Профессионал сейчас отличается не тем, что на асме пишет, а тем, что, глядя на сишный код, знает, во что его превратит компилятор. >Буквально это рассказал один анон, мол пришел на собес, и когда узнали, что он пишет через кубик и HAL буквально обоссали и обосрали всей фирмой так, что он там больше не появлялся. Ну так твоим михалычам важно, чтобы их не выпиздили, вот они и конкурируют, как могут, полоская уши своим работодателям по поводу их незаменимых скиллов. Такая хуйня во все времена была и будет. Или ты думаешь какие-нибудь кавалеристы времен революции не ныли по поводу танков? Нет, та же хуйня была. Люди с устаревшими знаниями не торопятся на кладбище, они сначала будут долго ныть по поводу важности своих знаний, а потом будут демпинговать так, чтобы им дали хоть какую-то работу. Нахуя покупать станок с ЧПУ, если михалыч за бутылку водки сделает все с нужным квалитетом? Вот и тормозит такой михалыч прогресс, обладая при этом невротъебенным ЧСВ. Работать идти к таким лучше не надо, а если нет выбора, то относиться к их ЧСВшным словам тоже стоит с долей иронии.
>>416926 >Распихивание переменных по регистрам - это задача типа шахмат, в 80-е, может, человек и был лучше, сейчас нет, компьютер тупо брутфорсом побеждает. Из твоих утверждений с этим наиболее сложно согласиться. Откуда компилятор узнает частоту использования переменных? Не, для такого в общем виде не существует решения вообще. Компилятор даже не учтет возможный диапазон входных данных, не то что статистические характеристики.
>>416930 На всякий случай добавлю, что я не тот анон, что писал тебе до этого, я просто мимо проходил. Ассемблер действительно нужен крайне редко. Но вот на DSP зачастую он незаменим, с этим глупо спорить.
>>416926 >Распихивание переменных по регистрам - это задача типа шахмат, в 80-е, может, человек и был лучше, сейчас нет, компьютер тупо брутфорсом побеждает. В сухом остатке остается только неумение писать эффективный С код. Так никто не говорит, что всю прогу нужно на асме писать, как в 80-е. Только в критически важных по быстродействию местах или там, где это необходимо, как здесь >>416932. >Профессионал сейчас отличается не тем, что на асме пишет, а тем, что, глядя на сишный код, знает, во что его превратит компилятор. Компилятор его превратит машинный код, листинг, то бишь тот же ассемблер. Много профессионал из него сможет понять, если не могёт в асм? >михалычам важно, чтобы их не выпиздили, вот они и конкурируют, как могут, полоская уши своим работодателям по поводу их незаменимых скиллов. Хорошо значит они голову работодателям заполоскали, если в почти всех вакансиях на эмбеддеров знание асма обязательно.
>>409824 >За сколько наносекунд разведешь тян на сиськи и спаяешь на коленке платку расширения под PCI-e слот с парой трансиверов 40G Ethernet, легкая FPGA на полмиллиона LE, пару ЦАП-АЦП на пару гигасемплов, аналоговую часть под них, массив NAND и DDR3 памяти и незабыв про SSRAM мегабита на 72 и например рядом несколько работающих по себе i.mx8 у которых так же своя DDR3, NAND и NOR память? Ой, совсем забыл еще Ethernet свич дописать. Ну за пару наносекунд не разведу, но за недельку-другую смогу развести, чай не rocket science. >>По частям это есть, одним куском - нету. Как-раз таки именно поэтому удобнее и правильнее будет собрать все штуки на одну аккуратную плату и возиться с ней, чем когда у тебя весь рабочий стол и комната будут завалены проводами с макетками. >Дай угадаю - твой уровень - мигалка светодиодом или мигалка на мультивибраторе? Похвально. А теперь пиздуй обратно в свой загон-пердуино тред. Нет, не угадал. Я уже проходил этот этап на РАБоте, был выбор, как отлаживать устройство - нагородить кучу макеток или собрать сразу одним блоком, поэтому и высказал свое мнение по этому поводу. Кроме ad hominem есть ещё что-то сказать по делу?
>>416926 >>Буквально это рассказал один анон, мол пришел на собес, и когда узнали, что он пишет через кубик и HAL буквально обоссали и обосрали всей фирмой так, что он там больше не появлялся. >Ну так твоим михалычам важно, чтобы их не выпиздили, вот они и конкурируют, как могут, полоская уши своим работодателям по поводу их незаменимых скиллов. По-правде говоря, разные ардуино-подобные библиотеки вроде HAL, SPL мало того, что страдают от медленной работы из-за перегруженности условий и косяков, так ещё и написаны индусами через жопу. Да, для домашних пет-проектов и "роботов" ты можешь делать так, как захочешь, писать хоть в кубике, хоть в ардуино иде, но если специалист будет делать так в интерпрайзе, то его выпнут пинком под сраку.
>>417072 Что-то странное пишешь. Для начала давно SPL выкинули, если речь про STM32, теперь вместо него LL, не сильно отличающийся от SPL. Про HAL не буду спорить, не трогал. Но SPL, LL для STM и аналогичные для других микроконтроллеров не будут ничего замедлять, памяти конечно займут больше. Оно всего лишь для начальной настройки периферии. Там все отличие от прямой записи в регистры в том что вначале все пишется в структуру, а потом поля из структуры раскладываются по регистрам. То есть абстрагирования от регистров практически никакого нет.
>>416926 Ребят, вы вообще не то обсуждаете. Недавно Артамонов где-тов высирался про то, что у него работал чел, который для того чтобы подождать секунду, брал библиотеку мигания светодиодом и вызывал на пустом пине функцию мигания с длительностью 1. А вы обсуждете, как комментарии в ассемблерном коде писать. Это вообще не отражает текующую ситуацию в индустрии. Сейчас у нас интернет вещей во все поля, где надо на контроллере js запускать и пересылать все данные по незащищенному каналу. Байтоебство я вообще не знаю в каких сферах осталось до сих пор.
Вот вы серьезно сидите и думаете, что библиотеки под STM писали левые индусы, которых только с вордпресса сняли? Что они наговноделили не думая? Что там сидят типы, которые дома светодиод подергали и на форуме посрались?
Конечно индусы пишущие код для СТМ - не инженеры гарварда с 15 летнем опытом. Но они прекрасно понимают что и зачем делают.
99% времени выполняется 1% кода (или как то так).
Если у вас программе не хватает скорости обработки логических цепочек - земля пухом. У вас либо пиздос с архитектурой (скорее всего), либо вы пытаетесь впихнуть какую то сверхбыструю обработку сигналов, которая вообще не задача МК, либо вы совсем уже говнокодер.
Большую часть логики и конечных автоматом можно сделать статичными (без перепроверки в цикле и обновления состояния). Урезав время затраченное на нее до совсем смешных значений.
>>417314 А с ними бесполезно общаться. >Ааааааааааа, бля, HAL говноооооооо!! >Индуса писала, не используйте в своих миргалках диолдов!! >Только регистры спасут отца микроконтроллерного погроммирования!! И так далее и в таком же духе. То что HAL на порядок упрощает вкатывание в контроллер в расчет не берут.
>>417314 Я наоборот написал что SPL, а скорее LL, не ограничивает быстродействие. Если до сих пор не понятно, то можно в качестве примера взять stm32f0xx_ll_usart. Так вот, после того как USART сконфигурирован, остается только брать и забирать данные через регистры DR (RDR, TDR), конечно если не задействован ПДП. А для этого там есть функции LL_USART_ReceiveData8 и LL_USART_TransmitData8, в которых нет абсолютно ничего кроме чтения/записи регистра. Хоть сразу в регистр пиши/читай, хоть через эти функции, на выходе будет одинаковый результат, конечно если инлайн не будет отключен флагами компилятора.
То что писали индусы - так почему по твоему они выкинули SPL и сделали на замену LL?
>>417315 HAL не избавит от чтения документации. А значит если на регистрах не можешь сделать из-за того что мануал прочитать лень, то и с помощью HAL вероятно сделаешь ерунду.
>>417329 > почему по твоему они выкинули SPL и сделали на замену LL Поверь точно не из-за скорости. Скорее всего архитектурно коряво что то сделали, они всетаки первопроходцы в этой хуйне.
Я честно не тем, не тем не пользуюсь, потому что скачу с одного ядра на другое и один хуй запоминать эти библиотеки смысла нет. Вместо этого свои драйвера (если их так назвать можно) таскаю.
Вообще честно говоря хуй знает нахуя вообще эти либы на всякую простенькую периферию, т.к. быстрее и читабельнее ее обернуть в свою функцию. Что лучше? LL_GPIO_SetStateInvertedGpio(LL_GPIO_INVERTED_INVERT_PINS_NOT_INVERTED) или DeviceGPIO(OUTPUT_A, ENABLE);
LL_USART_TransmitData8(LL_USART_USARTNO_UARTA, data) или SerialSend(UART_1, data);
>>417331 >Поверь точно не из-за скорости. Так и я о том же. Однако не совсем так. В SPL оно было без инлайна, хотя разница все равно мизерная и ничего не мешало конкретно в этом месте работать напрямую с регистрами.
>Я честно не тем, не тем не пользуюсь А я STM32 не практически пользуюсь.
>Что лучше? Без разницы, все равно оно будет вызываться в паре мест максимум. >DeviceGPIO(OUTPUT_A, ENABLE); Вот это как-то сомнительно. GPIO в микроконтроллерах организовано отдельными портами, соответственно либо придется передавать в эту хрень и порт и пин, либо там где-то внутри будет кучка условий.
>LL_USART_USARTNO_UARTA С этим не угадал. Там передается просто USARTx.
>>417314 >Вот вы серьезно сидите и думаете, что библиотеки под STM писали левые индусы, которых только с вордпресса сняли? Что они наговноделили не думая? Какие-нибудь сорокалетние себастьяновичи из Франции или Италии, которые 20 лет писали прошивки, а потом их бросили писать код чуть посложнее. Так как навыков управления сложностью нет, получилось вот это вот - и медленно, и запутанно, и один хер нужно читать даташит с регистрами.
>>417336 >было без инлайна Я помоему в этом треде срался - современные компиляторы умеют в кроссобъектную компиляцию. Если достаточно четко описано - он вполне может заинлайнить, не смотря на то что в разных файлах реализация и использование.
>либо там где-то внутри будет кучка условий. Будет. Да и че? Зато охуительно удобно и наглядно. В 99% мигания диодами, включения реле и даже сканирования клавиатур хватит с лихвой. И там не куча условий, а просто свичкейз, который твой локальный энумератор (OUTPUT_A\B\C\D) превращает уже в байтоебский RMW. Сколько такую функцию писать? Минут 15 от силы. По скорости? Ну накладные на вызов функции и смещение по свичкейзу смешные. Ну конечно будет в РАЗЫ медленее, но блин заинлайненый RMW это вообще самое быстрое что может быть, быстрее разме BitSet какой.
>>417343 >Я помоему в этом треде срался - современные компиляторы умеют в кроссобъектную компиляцию. До некоторой степени умеют. Ты сам проверял как оно работает? Ты убедился, что твой любимый компилятор сам по себе такое оптимизирует? Наверняка нет. У тебя какие-то опасные иллюзии на счет того что делает компилятор. А вот в LL, в отличие от SPL, решили сделать иначе, не рассчитывая на такое.
>Будет. Да и че? Зато охуительно удобно и наглядно. Можно было еще наглядней сделать и без условий.
>>417346 >Ты сам проверял как оно работает? Ты убедился, что твой любимый компилятор сам по себе такое оптимизирует? Да и да. Я единственное хз умеют ли это всякие ARMные компиляторы, но я не вижу причин почему.
Спасибо всем за советы. Я >>416193 анон. Пока что взялся за схемотехнику. Сижу изучаю насоветованную литературу. А вот с программированием я нихуя не понял. Браться что ли за CMSIS? Оно точно нужно для мигания светодиодами и управления парой релюшек? Я все таки не даньги зарабатывать этим хочу. И задача по сути в быстром и доступном написании не очень говнокода. Если таки нужно начинать учить CMSIS то как это делать? Все что связано с регистрами для меня ебаная магия. Я даже не знаю с какой стороны к этому подойти. Есть по нему какие то гайды для даунов лол?
>>417503 >И задача по сути в быстром и доступном написании не очень говнокода. "Мастеринг чего-то там с СТМ32", автор с каким-то смешным именем,типа Кармен Нуэлло. Только на нормальном русском языке нету
>>417351 Засомневался в этом и проверил. Действительно gcc такое делает при наличии флага -flto. Версия gcc 7.3.1 (arm-none-eabi). Все равно на такое рассчитывать глупо. Можно элементарно дописать к функции static inline и перенести ее в заголовочный файл и тогда точно все будет оптимизировано, вне зависимости от наличия флага -flto и компилятора. Мало ли что, может кто-то не будет использовать -flto для ускорения компиляции.
>>417568 >элементарно дописать к функции static inline Ээээ браток, инлайн не пашет между объектными файлами, ты что охуел? Как это по твоему должно работать?
>на такое рассчитывать глупо Как насчет 10% при 70% (стало 60) в 128кб? Могу пруфнуть, но лень.
>>417503 ИМХО не начинай изучать программирование МК с STM32, т.к. там очень много ARM-специфичной хуйни и вообще усложненной хуйни свойственной современным ядрам.
Начни с AVR с практической точки зрения, новичку похуй
>>417112 Интернет любительских поделий ты хотел сказать? Понадеюсь что опечатка. Я рад за побритых куков сделавших очередной контроллер смыва унитаза за 15к, но что бы оно хоть как то было конкурентноспособным, тебе придется его ужимать и ужимать по максимуму. Что захуярить вебсервер с шифрованием в младший STM8 покажется очень интересной идеей.
>>417626 >изучать программирование МК с STM32 В такой шедевр надо вкатываться даже через силу. Я когда попытался под него писать не осилил, а потом выделил много времени только под STM32, заготовил много чая и кофе и начал наварачивать это дерьмо ставя на паузу каждые 30 сек, ходил по комнате туда сюда, просто чтоб расслабиться, потом продолжал читать reference manual и попутно писал в keil со слезами на глазах и поблёвывая. И в итоге вкатился, не жалею, теперь во всю могу оценить всю мощь этого микроконтроллера.
>>417633 Потому что в общем случае будешь с банками памяти и соответственно устаревшими приемами программирования знакомится (ага дин. выделения хуй). Короче это устаревшие ядра, ведущие родословную с середины 80х и очень сильно отличающиеся от современных. Конкретно, за 51 не скажу, не приходилось, пик - уебищный софт, уебищные библиотеки, уебищный компилятор, но божественные даташиты.
AVR - имеет годнейший софт (студию 7 которая на базе вижуал студии), огромнейшее сообщество, сносные даташиты, не плохие библиотеки. Я бы посоветовал еще СТМ8, но он имеет те же проблемы что и 32 - он очень навороченный.
>>417640 Без разницы во что на начальном уровне вкатываться, все знания из AVR легко переносятся на STM32. Просто референсы STM - уебищные и запутанные, ядро запутанное, это ад новичка, который не понимает что к чему и где. Про таймеры вообще даже хуй знает что сказать...
>>417635 Идея интересная, но этот сегмент рынка сейчас маленький и представлен в основном крупными компаниями, у которых есть ресурсы и время на планирование. В остальных местах царит хуяк хуяк и в продакшон, им надо быстро и дешево в разработке. То, что получается в результате хуйня - никто не спорит.
>>417653 Интересная идея тут - идея более выгодная, чем тоже самое в F4 каком, который ее на изиче потянет.
>хуяк хуяк и в продакшон, им надо быстро и дешево в разработке. Это каксается только хипстерских стартапов, которые вымирают к слову сотнями по... ИХ УСТРОЙСТВА ИМЕЮТ СЛИШКОМ БОЛЬШУЮ СЕБЕСТОИМОСТЬ. Бадум-тсс.
Встраиваемая электроника это всегда абсолюнто всегда байтоебство. Можно более менее разойтись в мелкосерийке и всякой узкоспециализированной хуйне, но в любых действительно массовых устройствах ты соснешь.
>>339005 (OP) Это самое... Есть одна 746G-Discovery, и есть Куб на ноуте и на компе. Так вот, на ноуте есть возможность добавить StemWin, а на компе такого пункта нетути. Чего делать то?
>>417657 >это всегда абсолюнто всегда байтоебство Сечас же навроде жирнючий камень типа F1C600 с несколькими ядрами, возможностью запуска линупса и прочими ништяками стоит пару баксов. Нахуя байтоёбить как не в себя?
>>417677 Потому что он не пару баксов стоит и обвязка к нему не пару баксов стоит. Жрет он не то что бы что бы можно было поставить в батарейное устройство.
Никто не байтоебит как не в себя. Байтоебят на столько, на сколько нужно. Но иметь заблуждение, что в проф среде пишут под линуксом на микропитоне - глупость большая.
Тут недавно анон в каком то треде пытался выяснить, как ему STM8 прошивать другим контроллером, без бутлодера. Т.к. было жалко на более жирную версию денег, т.к. околомиллионые партии у устройства.
Считаешь что байтоебство и пердолинг с сборкой кастомных линуксов это разное? А теперь представь еще что у тебя вот эта хуйня и тебе нужен настоящий рилтайм.
Есть и всякая херь типо GD32, которую в домашнюю поделку я себе с радостью запихну, а в коммерческий проект в пизду пошлю, как бы там не уверяли, что оно полностью совместимо.
>>417698 >>417695 И еще, тебя не смущают большие буквы конфиденшинал на даташите? И отсутствие другого в свободном доступе.
Это процы производившиеся хуй знает для кого, остатки которых слили налево. (может быть, я не исключаю дешевых китайских арм по 2 бакса, но сильно смоневаюсь). Вот и сделаешь ты под них хуйню, а они хуяк и пропадут из продаж. GGWP.
Где найти вменяемую документацию на HAL? По "hal stm32 documentstion" гуглится всякая хуйня. Пытаюсь тут запилить хеллоуворлд в виде передачи значения с АЦП по уарту на хале пытаюсь освоить что-то кроме байтоёбства и по описанию функции не могу въехать, что за "handle" такие и где они определяются.
>>417713 >вменяемую документацию на HAL Нету ее. Есть в папке с кубом на твой контроллер ->Drivers ->STM32xxx_naHAL ->STM32Fxx_User_Manual.chm И есть еще в пдф-е Description of STM32F4 HAL and LL drivers UM1725 или UM1905 для F7-серии. Идешь на ST.com ищешь свой контроллер -> ищешь пакет Куба на него -> переходишь и на вкладке "Resources" находишь пдф-ку с описанием. Документации где вдумчиво раскуривается использование HAL помоему не существует
>>418113 Ну в плане тебе один хуй учить эти флаги, а потом учить еще библиотеку. Непонятно нахуя это? Тебе один хер надо знать как работает эта периферия, что бы нормально ей управлять.
>>418115 >Ну в плане тебе один хуй учить эти флаги, а потом учить еще библиотеку. Дядя, ты дурак? Зачем "учить" библиотеку? Зачем учить флаги, которые она от меня прячет?
>>418290 Лол если ты думаешь что тебя хал и лл уберегает от знания периферии и флагов, лишь показывает, что задачу серьезней бзднуть-моргнуть ты не решал.
>>339005 (OP) А если я собираюсь подключить LCD, кучу датчиков, ЖСМ-модуль, Ethernet, nrf2401, по CAN общаться еще с горстью датчиков, то как мне этим зоопарком управлять в бесконечном цикле? Я же охуею продумать все варианты прерываний и обработки событий. Как взрослые дяди с ентим справляются?
>>418361 >Лол если ты думаешь что тебя хал и лл уберегает от знания периферии и флагов, лишь показывает, что задачу серьезней бзднуть-моргнуть ты не решал.
ПИШЕШЬ САЙТ @ ДЕРГАЕШЬ РЕГИСТРЫ x86_64 @ ИНАЧЕ ГОВНО ЖЕ ПОЛУЧИТСЯ
>>418461 С сайтами еще хуже чем с регистрами может оказаться, там может потребоваться учитывать отличия разных браузеров, под каждый писать свои части кода... А тот анон не совсем правильно тебе написал. Нежелание хоть немного смотреть на регистры означает нежелание открывать документацию в принципе. Ну, успехов в разработке устройств без изучения документации на используемые микросхемы.
>>418462 >а зачем Ну, допустим, хочу заебенить контроллер в котельную. Нет, не для управления котлом, так как он у меня твердотопливный, а для управления обвязкой. Вкл/выкл насосов котлового контура, контура отопления, контура ГВС, контура ТП, периодическое включение летом для защиты от клина, общение с UPS на предмет состояния аккумуляторов, выключение его если температура в контуре ниже +20 для экономии, общение с метеодатчиками по радиоканалу для подобия погодозависимости. Чтобы два раза не вставать, контроль влажности в подвале и на чердаке, вкл/выкл вентиляторов, контроль датчиков на рекуператоре, общение с "головами" на системе водоподготовки, подсчет израсходованной воды из скважины, контроль влажности и уровня воды в приямке кессона... Да просто ебаная уйма контролируемых параметров. Небольшие зайчатки интеллекта, типа набрать воды в душ ночью, чтобы с утра начала греться на солнышке, послать смс о проблемах с электропитанием/насосами/небом и Аллахом, периодически выгружать в домашний сервак bigdat-у с датчиков дабы я мог посматривать. Короче, я так понял, что надо смотреть в сторону RTOS?
>>418477 >RTOS Не требуется, можно обойтись простым конечным автоматом. Однако тебе наверняка целесообразнее взять малинку и писать на питоне, например. У тебя нет задач, когда требуется определенная скорость реакции, которую обеспечивают микроконтроллеры, для такого сойдет одноплатник.
>>418460 Нежелание связано с ленью и тупостью, не более того. >>418461 Вот и разгадка. Капсболд, внутри которого идиотизм. Ты не понимаешь, что такое регистры МК и думаешь, что это как-то связанно с регистрами x86.
>>418477 Да, берешь RTOS, у RTOS есть потоки, которые в отличие от взрослых ОС работают в кооперативной многозадачности, то есть отработал и сам отдал управление в ОС, вызвав delay/sleep. В итоге RTOS по таймеру вызывает нужные потоки, они отрабатывают и засыпают. Если процесс долгий, то засыпать можно прямо в процессе работы, давая отработать всему остальному, поэтому это удобнее конечного автомата, где тебе нужно самому париться о том, как сохранить состояние текущего процесса и разбить свои вложенные циклы на переходы в конечном автомате. Здесь у тебя будут отдельные независимые процессы, при чем, учитывая специфику, можно отрабатывать их раз в несколько секунд, а остальное время спать.
>>418494 >Нежелание связано с ленью и тупостью, не более того. Не в этом дело. Возможно ли разрабатывать электронные устройства не читая документацию на используемые детали? Если врзможно, то на каком уровне?
>>418501 Не похоже, что у него что-то с чем-то взаимодействовать должно. Максимум GSM-модуль посмотрит на поднятый другим модулем флаг ошибки, отправит СМС и сбросит его.
>>418457 >>418477 Для такого нужен ПЛК или небольшой промышленный компьютер(в принципе малинка пойдет) и процессоры там на порядок мощнее, чем в микроконтроллере. На STM32 ты не сможешь это сделать.
Не делай на самопальном фреймоврке\системе. RTOS скорее необходима нежели желательна. Очень желательны плюсы, а не си. Т.к. будет куча зависимых состояний и тебе что бы не поехать придется уходить в абстракции.
Главное - НЕ ДЕЛАЙ НА КОНЕЧНОМ АВТОМАТЕ, если хочешь это говнище поддерживать не подгорая пердаком каждый раз. Сейчас не 95 год и блядь как раз на хуйню рулящую всем и вечно подключенную к розетке можно уебать пару ядер и лишних баксов. Я видал подобные параши на автоматах, в итоге все приходилось переписывать заново, если старый разраб съебывал или не занимался ими достаточно долго.
ИМХО - купи ЕСП32, там тебе сразу будет RTOS и куча производительности. На всякий реалтайм вьеби дешевый МК, АВР или чего подобное. Ну или там же на есп, если ног хватит.
>>418477 Зачем все это запихивать в один мк? Возьми малинку, поставь homeassistant, подключи все датчики-реле через несколько esp8266, залей на них esphomelib (это своего рода микротиковский capsman для всевозможных датчиков), добавь туда минимальный аппаратный failsafe ну и напердоль логику на node red. И не надо тут ряя зачем мне эти костыли и абстракции, хочу байтики дрочить. Для единичных изделий так многократно удобнее и не сильно то и дороже.
>>418842 Да, ты можешь разродится длинным перечнем недостатков такого решения, и будешь во многом прав, но все упирается в экономику. А именно время. >>418845 Готового решения по всем хотелкам из того поста нет. Дергать насосы-клапаны можно поставить Danfoss ECL, для вентиляции Corrigo Е, для красивенького интерфейса можно поставить Control4. И на этом все. >Там же ничего твоего? Тебе шашечки или ехать?
>>418859 >Готового решения по всем хотелкам из того поста нет. Есть близкие и легче докостылить их. И вообще в таком случае действительно правильнее брать ПЛК и не ебать мозги. Они для этого и созданы.
>Тебе шашечки или ехать? Я предполагаю что любителю таки нужны шашечки.
>>418861 >правильнее брать ПЛК и не ебать мозги Отличная идея. Даешь погодозависимую автоматику на клонах моторолы FX2N. >любителю таки нужны шашечки Шашечки тут ограничатся гордостью за то что вот я сам на сишечке все написаль. А то что все это будет крайне примитивно из-за нехватки времени, где хер разберешься в коде спустя полгода, без нормального интерфейса, средств отладки, мониторинга и как следствие вскоре будет просто отключено и заброшено. Тем то и удобна эта мерзкая облачная фигня homeassistant, там всегда можно открыть редактор и за полчаса что-то поменять в логике, найти косяк полистав логи, добавить новый девайс.
>>418828 >Возьми малинку Это ладно еще, я сам выше предлагал. Хотя это специфическая такая штука, сомнительной надежности. >homeassistant Ну про это я не знаю, не трогал и надеюсь не докачусь до такого. >через несколько esp8266 А вот это уже финиш и дальше еще чуднее.
По моему так вообще не меньше половины этой автоматики можно заменить несколькими релюшками без всяких микроконтроллеров, а другая и не нужна вовсе.
>>418861 >правильнее брать ПЛК и не ебать мозги Вы ценник на енти ПЛК видели? Даже сраный гОвен от 20к+. К нему еще модули АНАЛогового ввода-вывода, датчики 4-20мА с ебической стоимостью, HMI дисплей. Ну его нахуй, такие советы. Таким макаром я и сам, без автоматики, буду клацать насосами и включать вертиляторы
>>418877 >По моему так вообще не меньше половины этой автоматики можно заменить несколькими релюшками без всяких микроконтроллеров, а другая и не нужна вовсе.
Ты не прав. Там есть логика, которая при кажущийся простоте может быть очень заебна в комплексе с другой хуйней. Я поэтому настоятельно рекомендовал в абстракции уходить и иметь запас по мощности. Иначе на половине функционала у тебя получится свичкейз на 10 тысяч строк. Я такой видал лол.
>>418879 Ну поэтому бери ESP32 с RTOS, ну или делайн на малинах и хипстерских фреймворках. Заклинаю тебя не пытаться это все на голою делать.
Пытаюсь сейчас управлять шаговиком через H-мост на STM8 используя комплиментарные PWM. Кто-нибудь может подсказать как правильно их отключать и/или переключать режим работы?
Сначала отключать таймер, переконфигурировать, потом включать, это нормально?
>>418999 >Пытаюсь сейчас управлять шаговиком через H-мост на STM8 используя комплиментарные PWM. Я правильно понял, у тебя полношаговый или полушаговый режим без стабилизации тока в обмотках?
>>419020 Полно- и полушаг я могу делать чисто через GPIO.
Я пытаюсь делать микрошаг, регулируя ток на обмотках через ШИМ. Проблема в том, что 4 канала использовать нельзя. Так что я использую 1, 2 каналы первого таймера в комплиментарном режиме.
И для смены направления тока в обмотке мне надо переконфигурировать каналы.
>>419669 В какой тред ему нужно было? Прикрепленный? Или создавать отдельно по STM8? Вообще-то в этом треде уже немало обсуждали STM8.
Мне непонятно почему не взять готовый драйвер. Для шаговых двигателей не просто ШИМ-ить нужно, а еще стабилизировать ток. Т.е. в мосту должны быть резисторы с небольшим сопротивлением для измерения тока, а к ним напрямую входы АЦП наверное еще не получится подключить, потребуется еще усилитель. И это при том что готовое устройство совсем дешевое.
>>419673 >И это при том что готовое устройство совсем дешевое. Вот тут двачую. При том, что сама ST ебашит линейку драйверов STSPIN от маломощный, до йоб со встроенными мосфетами, микрошагами и своми проприетатными алгоритмами снижения шума и прочих вибраций.
>>419673 >Мне непонятно почему не взять готовый драйвер. Я тоже не знаю, наверное у заказчика есть планы на расширение функционала. Резисторы с небольшим сопротивлением есть, АЦП вроде работает. Проблема в комплиментарных каналах.
>>339005 (OP) Листаю герберы на STM32f429i-Discovery и STM32F746G-Discovery. У первой оперативка подключена дорогами чрезвычайно разной длины, у второй меандры во все поля. До 200Мгц нет смысла уравнивать длины штоле?
>>419824 Осторожно бздану - похуй. Запускал SDRAM на соплях на SAM9260 на 100 МГц и даже без явного слоя земли снизу. Как работает? Да хуй его знает. Толи из-за того что работает по одному фронту, а не обоим, а может еррата на камень где Атмел признался что очень мощные буферы сделал и просит ставить последовательные резисторы. Юбут и линукс работал непрерывно минимум неделю. Сбоев не было.
>>419824 >До 200Мгц нет смысла уравнивать длины штоле? За одну двестимиллионную секунды у тебя свет проходит 299792458/200000000=1.5 метра. А какой длины там дороги, сантиметр есть хоть?
Совсем недавно писал в тред про ESP что не хочу малину, а хочу TouchGFX. Заказчику тоже такая штука нравилась. И в итоге, о как же я был не прав. Как же я все таки обосрался с ожиданиями относительно TouchGFX. Посидел два дня — стало ясно что это говно не простой фреймфорк, где можно хуяк хуяк и в продакшон. Там все настолько сложно и запрятано в перди, что после просмотра трех вебинаров и уроков, каждый длиной в полтора часа, я до сих пор понял только следующее: - Additional Software пресловутого TouchGFX, который можно добавить к любому проекту с использованием Stm32f4xx нихуя из коробки не работает. Это вам не встроить FreeRTOS. - правильный путь создания проекта - это выбрать свою борду в TouchGFX Designer'е и плясать уже от него. При том нормально генерится только проект для CubeIDE, с кейлом фокус с прошивкой контроллера уже не прокатит. Ну и конечно же нужен CubeProgrammer просто чтобы прошить готовый проект. - в результате генерации получается проект с ебовейшей структурой, который приходится пилить напильником, намешанная ебанина из плюсов и сишки.
Такого насилия над мозгом я не встречал уже давно. Это просто пиздец. Черт знает как мне дальше быть. До вечера надо решить на чем будем делать проект, и, черт возьми, для меня это просто загадка из двух стульев — на одном TouchGFX дроченый, на другом малина точеная.
>>420166 Да, бля, как же это хуево. Вменяемо поставить TouchGFX можно только на очень узкий перечень дорогих плат. Свой проект на какой-то f407 уже не потянуть. При том в кубе все есть, поставил, зарезолвил этот TouchGFX и все равно хуй тебе а не искаропки. И туториалов нет вообще, даже разработчики не дают вменяемых ответов. Боюсь теперь в малину катиться, вдруг там также будет. Ну хоть туториалов больше, наверняка.
>>420163 Бля, прочитав твой пост думал удариться в изучение ентого ТorchGFX. Хуле, думаю, пердолиться с древним СтэмВин, а оно вона как. Поставил дизигнер торчевский, прихуел со сгенерироанной структуры папок и вложений, хуй понял чего там к чему и закинул к хуям.
>>420170 Я ещё попердолился с TouchGFX десигнером. И вот что обнаружил. - Название проекта менять не получится. Проебывается ioc файл из связей. - Настройки генерации в кубе, в том самом сгенерированном файле, менять нельзя. Иначе пиздарики, проект с белым фоном не запускается. Так что придётся весь свой код в мейне держать, как диды. - В принципе, можно менять и крутить периферию как хочешь на своей плате. Правда пока что для меня даже простая кнопка это недостижимый уровень мастерства. Ну, думаю, завтра запилю таки экранную кнопку со светодиодом.
>>420168 Малинка должна нормально работать с HDMI монитором, как и другие подобные одноплатники. А софт там обычный линуксовый, должен работать везде более-менее одинаково. На счет тача не знаю, наверное надо брать с USB и выбирать те которые точно работают под линуксом. По моему все это можно отладить на нормальном компе, а потом просто перекомпилировать под малинку.
>>394682 >Сакральный смысл в том, что ты можешь менять частоту в процессе работы, и снижать потребление устройства. Ну в AVR это ещё очень давно появилось, в виде sleep mode, с понижением частоты, отключением переферии и,соотсветственно, снижением энергопотребления.
>>420185 В avr нельзя отключать периферию в том смысле в котором она отключается в stm и прочих новомодных контроллерах. Там она просто считай в резете находится, в stm - обесточена.
Аноны, что скажете за Rust? Пока из недостатков вижу отстутсвие кодогенерации на нём в кубе. Вроде есть взаимодействие с C и C++, так что дёргание HAL или LL проблем вызывать не должно.
Кто как при разработке проводит тестирование (как юнит, так и интеграционное)? Я вижу 3 возможных способа: 1. Тесты запускаются на микроконтроллере. Надостаток: на тесты может не хватить памяти 2. Тесты компилируются в arm, который эмулируется на ПК Недостаток: не протестировать работу с железом 3 Тесты компилируются в x86 и запускаются на ПК Недостаток: такие же, как (2). а ещё код может работать с x86. но не с arm (например, если наворотить какой-то UB), статические arm-only либы придётся отгораживать слоем абстракции.
>Короче, я так понял, что надо смотреть в сторону RTOS? Это да, но сначала посмотри в сторону того, как пишутся многопоточные программы с кооперативной многозадачностью.
Т.е., эта проблема она не свойственна только контроллерам.
>>418828 >Зачем все это запихивать в один мк? За тем что твоё предложение поставить малинку означает что получится неконтроллируемое неферифицируемое глюкавое говно
>>418498 >которые в отличие от взрослых ОС работают в кооперативной многозадачности FreeRTOS для эхотага рекомендует юзать вытесняющую многозадачность таки
>>418565 >Для такого нужен ПЛК или небольшой промышленный компьютер(в принципе малинка пойдет) и процессоры там на порядок мощнее, чем в микроконтроллере. На STM32 ты не сможешь это сделать.
Подскажите нормальный китайский клон stlink/jlink, у пикрелейтед свистка за 100 руб уже второй раз МК накрывается пиздой с ошибкой 43. Устройства батарейные или включены через БП с развязкой, защитные диоды на USB и swd программатора впаять не забыли. Или проще самому запилить с развязкой и более жирной защитой?
И снова здравствуйте. Анон >>416193 на связи. Потихоньку продолжаю ковырять STM читать то, что мне насоветовали и пилить свои говноплаты. Идет сложно и со скрипом. Так, что снова за советом. Есть одна плата собственно тот самый бар на мегагерцовой тяге лул и она работает через жопу. https://easyeda.com/Ivenhor/stm32f303re-tft Собственно сам проект. Насколько я понял любой тут может в него потыкать. Понятно что все сделано криво. Но я стараюсь стать лучше. Принципиальные проблемы две. Линия 5V Не работает. Там твориться какая то хуйня. То 7 то 10 вольт вместо задуманных 5. Где то я обосрался, но не могу понять где. Тыкните носом долбоеба. Вторая проблема с экраном. Он нихуя не работает. Экран стандартная китайщина на ili9341 Задумывалось что он будет тупо впаиваться с плату. Но нихуя не работает. Подсветка горит изображение не выводиться. Есть плата нуклео, на которой тот же экран прекрасно работает. Те же самые ножки контроллера использую, один и тот же код. Но нет. Хуй знает в чем проблема. В остальном плата вроде рабочая. Программируется и весь код кроме экрана работает как задумано насколько это возможно при моем уровне знаний. Но если я где то еще серьезно обосрался будет здорово если мне на это укажут.
Котаны, есть nucleo h7, как мне подключить физически клавиатуру к ней, чтоб обрабатывать нажатия непосредственно на камне? Через куб чет нихуя не завелось
>>424566 >Линия 5V Не работает. Там твориться какая то хуйня. То 7 то 10 вольт вместо задуманных 5. Покажи где и как меряешь, чем и как питаешь, как дебажишь и какие напряжения питания во время отладки? У тебя точно стабы на нужное напряжение, а не ADJ версии? На первый взгляд явных косяков нет по части питания.
>>339005 (OP) Анон, хочу вкатится в стм32. Что по софту под линем? Хватит ли мне <мой любимый текстовый редактор> + компилятор? Или без всяких STMStudio, STM32CubeMX и прочего крутого стафа никак?
>>424642 >Хватит ли мне <мой любимый текстовый редактор> + компилятор? Некоторым хватает. Там же обыкновенный gcc есть, а можно и armclang взять. >Или без всяких STMStudio, STM32CubeMX и прочего крутого стафа никак? Ну, это кому как. Многим никак.
>>424642 Минимум мозгоёбства с сетапом в linux - platformio + vscode с плагином/clion с плагином для состоятельных господ. Само скачает и поставит тулчейн, само сгенерит минимал проект под твой камень и платформу ststm32/cmsis/mbed, одной командой собирает и заливает.
Cubemx можно как справочник использовать - настройку какого-нибудь хитрого тактирования посмотреть, или еще что.
>>424642 >Что по софту под линем? Откудова вы лезете? Хакиры дохуя штоле? Покупаешь Mastering STM32 и читаешь, как тулчейны в твоем линупсе устанавливать.
>>424646 >Покупаешь Mastering STM32 >MINIMUM PRICE $26.99 Дороговато. Ну и я пришел узнать опыт людей, что они могут посоветовать, а не за гайдом по установке софта.
>>424646 >как тулчейны в твоем линупсе устанавливать. Оно там устанавливается одной командой. И для этого не нужно читать и тем более покупать дурацкие книжечки.
>>424645 А еще меньше мозгоебства это одной командой установить пакет gcc-arm-none-eabi (убунту, дебьян) и все. Нечего всякую чушню советовать.
>>424654 >А вот тут не надо серить себе в штаны. Скачал я эту книжечку, а там поиском не находится ни одного упоминания системы сборки make, не говоря уже о других системах. Так что нет, твой совет совершенно не в тему. >Книжечка будующему кулхацкеру пригодится не раз. Ага, конечно же. Сразу после установки Kali Linux.
>>424653 >А еще меньше мозгоебства это одной командой установить пакет gcc-arm-none-eabi (убунту, дебьян) и все. Нечего всякую чушню советовать. Ты к нам из 90х? Привет, дедуля! Мейкфайлы сам каждый раз пишешь, или с дискетки копируешь? И стартап на асме небось, на пятидюймовых?
>>424657 >Мейкфайлы Вот про это не надо тут. На них многое завязано. Даже если возьмешь CLion, все равно мейкфалы будут. А симейк там даже помозгоебнее в некоторых отношениях. И если на то пошло, то для СТМ32 уже все написано https://github.com/ObKo/stm32-cmake Самому что-то писать потребуется только если нужно что-то нестандартное. И это намного гибче, чем код, генерируемый каким-то плагином.
>>424661 В таком случае там ничего про это не написано: >Покупаешь Mastering STM32 и читаешь, как тулчейны в твоем линупсе устанавливать. То есть ничем таким эта книга тому анону не поможет.
>>424665 >То есть ничем Тулчейны-то, блядь, установит!!! Может еще доебешься, что там не описано как пропатчить KDE под FreeBSD? Твоя МАКЕ это уже специализированный инструмент. По нему свои книжки есть или маны, я хуй его знаю чем вы себе голову засираете.
>>424667 >доебешься Еще бы не доебаться, если ты рекламируешь какую-то ерунду, да еще и покупать советуешь. >Тулчейны-то, блядь, установит!!! Ага, точно. Установит несколько пакетов одной командой, стоило ради этого покупать целую книгу. А потом в разных дистрибутивах могут быть разные пакетные менеджеры и даже пакет с gcc может называться по разному, поэтому еще не факт что установит, если выполнит указанные там команды. Остальную часть твоего высказывания даже не буду комментировать, все совершенно не в тему заданного вопроса.
>>424673 Я хоть не дезинформирую, в отличие от некоторых. И не агитирую тратить деньги на какие попало книжонки.
Для линуксов достаточно установить пакеты gcc-arm-none-eabi и cmake, далее взять https://github.com/ObKo/stm32-cmake и на этом все. Или можно взять не cmake, а другую, без разницы. Причем это не только для линуксов, так имеет смысл делать вне зависимости от ОС.
>>424679 > чото понаставить, если у тебя убунта дебиан, а если нет то бибу > чото откудато склонировать Ты забыл прописать пачку настроек в CMakeFile.txt > и на этом всё
Вместо того чтобы просто > pip install platformio > pio project init --board disco_f303vc --project-option "framework=cmsis" > pio run -t upload
Не могу прошить STM32F103C8T6 через USART PL-2303HX делаю всё по мануалу но пррораммер её не видит. Всегда мигает светодиод pc13 плата реагирует только на ресет.
>>424689 >Всегда мигает светодиод pc13 Значит бут режим не переключается. Перемычки то правильно переставил? Если правильно, то следует проверить сопротивление резисторов на BOOTx-выводах, через которые джамперы перемыкают.
>>424695 >20гиговые редакторы от брендов Когда красноглазый пиздит? Когда открывает рот. Вот те папка Кейла с пакетами на всю линейку STM, начиная F0 и заканчивая MP&WB (установил, сам не знаю нахуя)
>>424566 Конденсаторы 22 мкФ на +5 В керамические? Поменяй их на танталовые/электролитические, или подключи последовательно с керамическим 22 мкФ ~0.5-1 Ом резистор. Часть линейников нестабильно работает с керамикой, им нужен конденсатор с большим esr, в даташитах у таких пишут про tantalum output capacitor или про минимальный esr. Ещё проверь входной кондёр, из-за его отсутствия тоже такое бывает.
>>424773 Там должно быть значительно меньше 100 ком. Там же подтягивающие резисторы того же попядка, а эти должны быть на попядок меньше. На китайских платах это довольно распространенная проблема.
>>424844 >Зачем нужен этот 10k? В душе не ебу, что у тебя изображено на картинке и нахуя там резистор на 10к. Ты можешь по человечески нарисовать, что и куда у тебя подключено к контроллеру?
>>424951 Так перемкнул резисторы, которые по 100 кОм?
>Но ебанный демонстратор невидит плату. >Постоянно мигает pc13 с любыми вариантами перемычек. Как он в таком случае может видеть? Светодиодом мигает зашитая по дефолту программа. Ты в курсе что такое бутлоадер? Похоже нет. В микроконтроллере есть масочное ПЗУ, из которого он начинает выполнять программу при включении питания. Эта программа проверяет лог. уровни на выводах BOOTx и в зависимости от результат либо переходит к выполнению кода с флешки, либо начинает ждать команды по UART для перепрошивки. Естественно кога программа из масочного ПЗУ ждет команды по UART, программа из флешки выполняться не может, ну никак не может, соответственно светодиод мигать не будет.
>>424960 Выдрал R3 R4 зашунтировал. Теперь при подачи на boot0 плюса плата после ресета перестает моргать pc13 и наверное уходит в загрузчик но связи через usart получить опять не могу.
Сап стмач. Кто-нибудь делал (или может читал где-то) проект, где в одном чипе две прошивки? Самый распространенный вариант это боевая прошивка + свой бутлоадер, интересует, как обычно такое делают - в виде двух разных проектов или как-то объединяют в один. В идеале потом получить единый hex (или bin).
И второй вопрос в развитие первого. Есть мысль грузить прошивку удаленно скажем по сети, но не затирать первую, а прошивать ее во вторую половину flash, потом проверять CRC и потом как-то "переключать" на использование новой. При следующем цикле затирать уже первую половину и т.д. Типа эмуляция dual boot, при этом выбор прошивки для старта должен происходить автоматически - всегда самая свежая.
Пока начал копать и пробовать, освоил только перемещение таблицы векторов.
>>425805 >боевая прошивка + свой бутлоадер >интересует, как обычно такое делают - в виде двух разных проектов или как-то объединяют в один. Возможны оба варианта. Если один проект, то бутлоадер это просто одна или несколько функций, которые принимают байтики и пишут на флешку. В зависимости от особенностей работы флешки, функции бутлоадера должны быть размещены в ПЗУ или определенных областях флешки. Если два разных проекта и в твоем микроконтроллере можно переносить таблицу векторов прерываний (начиная с Cortex-M3), то делается аналогично штатному бутлоадеру. Свой собственный бутлоадер размещают в начале ПЗУ, а после бутлоадера основную программу. За размещение программы в определенных областях памяти отвечают настройки линкера. Как перейти к выполнению основной программы из бутлоадера? Для этого есть NVIC и там можно просто перенести таблицу прерываний. >В идеале потом получить единый hex (или bin). Если было два отдельных проекта, то если пользуешься gcc, можно использовать objcopy.
>И второй вопрос в развитие первого. Нет, так в общем случае невозможно. Если не указать компилятору дополнительные опции, то он сгенерит код, в котором используются абсолютные адреса, поэтому так просто нельзя записать программу в произвольное место и перейти к ее выполнению. Однако можно заставить компилятор делать адресно-независимый код, для gcc это опция -fPIC, если я правильно помню.
>>425823 Спасибо за ответ. Cortex-M4, таблицу векторов прерываний переносить можно.
> можно заставить компилятор делать адресно-независимый код, для gcc это опция -fPIC, если я правильно помню Спасибо, попробую исследовать этот вопрос.
>>425829 Не думаю что это так просто, ведь любой указатель это абсолютный адрес. Даже если компилятор сработает правильно во всем, то все равно без последствий это не обойдется. Думаю что следует действовать иначе, хотя бы компилировать одновременно две версии для разных адресов.
>>425833 Можно выделить в ОЗУ буфер на размер прошивки, и пока производится контроль целостности, хранить весь образ там. Но что если прошивка со временем раздуется до размеров, не позволяющих целиком вместить ее в ОЗУ?
Вычитал, что люди делают такие вещи с дополнительными флагами -fPIC -mno-pic-data-is-text-relative -msingle-pic-base -mpic-register=r10, и то у половины че-то там не работает. При компиляции размер тестовой прошивки с мигалкой и отладочной печатью в ITM вырос, там типа какая-то глобальная таблица смещений дополнительно появляется, из которой программа будет узнавать адреса всех указателей. Т.е. компилятор добавляет код для разруливания этой изменившейся адресации.
>>425837 Я правильно тебя понял, что ты хочешь иметь одновременно две версии программы и иметь возможность переключаться между ними? Нужна ли тебе при этом возможность грузить новые версии не программатором, а через UART или еще как-нибудь?
>>425848 По Ethernet. Возможно придется делать резервный канал через RS-422.
Я хочу по мере приема пакетов с новой прошивкой не сразу затирать старую версию (вдруг помехи, обрыв, потери, питание пропало), а записать ее в другой сектор флэша, а потом, убедившись, что все CRC в порядке, дописывать в конец сектора идентификатор с указанием, что эта прошивка актуальная. А дальше при перезапуске бутлоадер определял бы актуальную версию и загружал бы ее. А если бы загрузка новой прошла со сбоями, останется старая рабочая версия.
>>425849 >>425848 Можно даже потом бутлоадером переписывать новую из второго сектора в первый, чтобы всегда стартовать из одного места, тогда никаких проблем с адресацией и прочим. Но это как-то тупо.
С ключом -fPIC и прочими ничего не получается. Загружаю вручную по адресу 0x08020000 первую программу (зеленая мигалка), по адресу 0x08040000 - вторую (красная мигалка). Обе программы скомпилированы с ключом -fPIC, у обеих в скрипте линковщика одно и то же. По идее в зависимости от состояния кнопки при включении питания бутлоадер должен запускать разные версии программы, в итоге запускается только одна, т.к. в обеих таблицах векторов все адреса (в том числе и Reset_Handler) указывают на один сектор 0x08020000.
Если программы линковать с разными адресами, кнопка естественно выбирает прошивку, как надо. Вот только прошивки из-за этого разные получаются.
>>425893 Так создавай таблицу векторов прерываний в ОЗУ динамически, делов то. Но вообще проблема у тебя выдуманная, в чем сложность компилировать две версии с разными адресами и загружать только нужную?
>>425893 >>425895 Не на всех stm32 нужно переносить таблицу векторов в ОЗУ. ОПу надо сделать следующее: 1) научиться переходить по адресу на другую программу, как здесь https://www.iar.com/support/tech-notes/general/creating-a-bootloader-for-cortex-m/ 2) перенести таблицу векторов прерываний либо в ОЗУ, если не можем через VTOR настроить или перенести в конфигурации линкера и настроить через VTOR 3) Ограничить в линкере диапазон адресов флеша, где может быть размещена прошивка
>>425915 >Не на всех stm32 нужно переносить таблицу векторов в ОЗУ. Уже было, на что он ответил что у него Cortex-M4. >2) перенести таблицу векторов прерываний либо в ОЗУ Ошибаешься, ему надо динамически ее пересчитывать, т.к. он хочет сами обработчики размещать с произвольным смещением. Можно и не переносить, а сделать для каждой программы по таблице для каждого смещения по адресу.
Но вообще он херней страдает, все это можно сделать намного проще и эффективнее. И мне кажется что он не ОП треда.
>>425920 >>425918 Таблицы я не пересчитываю. Просто переношу адрес вектора в регистре VTOR. Похоже я не догоняю.
Правильно я понял, что все адреса обработчиков также нужно вычислить с учетом известного смещения прошивки в памяти? Но тогда мне нужно еще скопировать код обработчиков по новым адресам. Если с пользовательскими обработчиками я так делать умею, то с кодом Reset_Handler я не знаю, как это сделать. Это надо править файл стартапа и возможно скрипт линковщика. Этой магией я пока не владею.
И еще вопрос - допустим обработчики я перенес и программа начнет стартовать из ОЗУ. Как быть со всеми остальными указателями? Их же тоже надо пересчитывать или нет?
>>339005 (OP) >Хочу вкатится в разработку на stm32. Так это же самая сермяжная мужицкая параша, а не передний край технического прогресса. Как раз для хлебушков.
Хули там в твоих кококонтроллерах? Прописал регистры, как макака, и все, хуже даже, чем в жс. И общаться ты там будешь, скорее всего, с нешарящими и тупыми постсовковыми долбоебами-радиолюбителями, если на хедхантере собрался искать (просто нешарящими - это программа-минимум и уже удача; обычно они не просто не шарят, у них еще и куча каких-то извращенных поверий и маняфантазий по теме, и все это на фоне просто запредельных ЧСВ и токсичности). Оно те надо?
Тру - это машобчик, ООП, графика, игры, софтвер инжиниринг.
Господа, кто работал с freertos, объясните какой принцип ручного запуска задач по какому-то событию? Условно я хочу запускать задачу по внешнему прерыванию. Я сейчас делаю так: освобождаю мьютекс внутри прерывания, задача берет мьютекс себе и в конце его не освобождает. Тем самым снова сама себя блокирует.
>>428997 Спасибо за помощь Я думал что мьютекс это и есть что-то вроде двоичного семафора. Сейчас все заработало с двоичным семафором, но только после того как я создал его до конфигурации переферии и задач. Подозреваю что в этом и была проблема моих зависаний
>>429346 С пивом покатит, у меня такая же. Редактор похуже эклипса, зато отладка норм, куб оче удобная и наглядная штука. Разве что у HAL документация через жопу написана, и в требовательных задачах может не хватить быстродействия, но никто не мешает инициализироваться кубом, а дальше в зависимости от ситуации дрочить регистры по мануалу или использовать тот же HAL/LL.
Полгода читаю ваши срачи о том, что круче: авр, стм, пики-пуки и пр. арм скам, - только щаз до меня дошло. Я ведь работаю на оборонном заводе радиооборудования, у которого клиенты от телеканалов, до эрбаса, амерского эрфорса и арммии эмиратов. Я комплектую детали для этого оборудования и шо я вижу... Когда-то использовали пики, навероное с ними оборудование не выпускается больше 5 лет(судя по иарпи и слою пыли на них); так же есть старинные процессоры от мотороллы со GBA 100 и хайниксы какие-то. Нынешнее поколение оборудования выпускаеца только на Атмега8Л, Атмега128Л и хайниксак. Последние только для сетевого интерфейса.
Олсо, атмеги менее всего заменяемая деталь, за год выдал не больше 5ти штук.
Пики хз для чего, но чего-то очень массового, т.е. дешёвого оборудование. Олсо, СТМ32 для совсем говно-фонариков и ир-стробов, которые делаюца тысячами в неделю.
Олсо, используют ардуины нано или майкро на антеннах, но хз какова их функция.
>>429456 >Олсо, СТМ32 для совсем говно-фонариков и ир-стробов Ты просто открыл для меня новый мир!! Сейчас же заброшу возню с хуетой 746Дискавери и перейду на Ардуино_Мега. У ней Атмега 256!!! Я буду просто на острие оборонного прогресса
>>429799 А у меня нет еще вентилятора, я только присматриваю. Вот нашел диммер, походу то что надо. https://aliexpress.ru/item/32975095882.html А на что там обращать внимание в вентиляторе, что бы он от диммера работал?
>>339005 (OP) По ошибке заказал с алика CKS32F103C8T6 вместо оригинальной STM32. Попытки прошить ее с помощью программатора St-link/v2/01-0 что с OpenOCD, что без нее, оборачиваются неудачей. Пробовал менять в конфигурационных файлах некий адрес, а также менять конфигурационные файлы полностью на те, что нашел на гитхабе (ссылку потерял), ничего не помогло.
>>430444 >По OpenOCD же. Но при чем тут локалхост, если подключается по USB через ST-Link или по юарту через переходник? Это какая-то опенсурсная магия?
>>430446 "Клиент" подключается к "серверу" OpenOCD, общаясь с ним по определенному протоколу, то есть, говоря, что именно надо зашить в микроконтроллер. А OpenOCD, в свою очередь, взаимодействует с драйвером программатора st-link v2. Теоретически можно проводить эту прошивку удаленно, да.
>>430448 ты не знаешь, как общаются IDE и GDB/OpenOCD, да? Они связываются по TCP протоколу, и так было задолго до повсеместного распространения жаба-скриптов
>>430450 Я просто замечаю редкие проскакивания нитаких как все, которые стесняются купить на торренте кейл и не ебать себе голову, а любящие бряцать линупсами/эклипсами и прочей лабудой, постоянно не осиливающие их закрасноглазить. Короче, мне хватает мозгоебли с самим контроллером, чтобы не лезть в эти ебучие дебри.
>>430454 cudeide это эклипс с плагинами от производителя, отладка работает из коробки, красноглазить особо негде Кейл застрял в нулевых по внешнему виду и функционалу, такие как все сейчас используют clion
>>430440 IDCODE для начала прочти, а то непонятно вообще что это за микроконтроллер. CS32 у меня читался и писался обычным JLink-ом без проблем, насколько я помню, только IDCODE не соответствовал. Но лучше, если есть возможность, купи в терраэлектронике или чипдипе нормальный микроконтроллер и перепаяй.
>>430454 >Кря!!! Если это для тебя красноглазие, то поправить что-нибудь по мелочи в какой-нибудь опенсурсной программе и скомпилировать ее для тебя будет нереально. Там ведь мейкфайлы! Какой ужас! Конечно ты можешь написать что программируешь только микроконтроллеры, а для компов не пишешь ни строчки, но это уже ограниченность какая-то.
>>430478 >и системы контроля версий тоже ненужное красноглазие? Нет. Это нужный инструмент в отличии от этой детской ебли с опенсурсом в попытке доказать одноклассникам кокой ты кулхакир.
>>430507 Так все наиболее популярные системы контроля версий опенсурсные. Причем графический интерфейс у них не предоставляет некоторых возможностей, которые иногда требуются и тогда приходится вводить команды руками, как ты выражаешься "красноглазить". Один анон выше упоминал CLion, так он вовсе не опенсурсный, но CMake с ним использовать придется. Тоже красноглазие по твоему? Почему именно линуксы с эклипсами тебя так напрягают? Ничего же не мешает писать код в любой IDE, а компилировать armclang-ом, если так не нравится gcc.
Я чёто прожал и всё пропало. Залил тестовую почти пустую прогу (в регистрах не разбирался, просто пару переменных объявил). Потом решил сделать это ещё раз, но ничего не получилось. st link usb communication error. В винде он есть, а проги его не видят
>>430893 Если поменять бут мод джамперами, то вроде включается. Блин, в универе как-то без задней мысли кодились эти шимы на таймерах и ультразвуковые датчики
>>431037 У меня прерывания срабатывают за полметра до концевика. Концевик расположен на расстоянии двух метров от stm32. Знаю закон Ома и правила Кирхгофа, а прерывания на пине случайным образом возникают. Что нужно почитать по этому вопросу?
>>431098 Полнейший бред, аналогичный >>430454 Может это один анон?
Это не так, даже если брать для STM32 все опенсурсное. gcc одинаково работает и под виндой и под линуксом. make тоже работает под виндой. SEGGER или OpenOCD тоже кроссплатформенные. Остальные инструменты тем более будут одинаково работать под любой ОС. Нет там никакой "заточенности" под ляликс, даже если брать все опенсурсное. Про FPGA тоже все не так. Квартус и вивада сейчас есть под обе операционные системы. >в отличие от тех же восьмибитных пиков где все инструменты под Винду Можно использовать SDCC, при желании.
>>431048 > Что нужно почитать по этому вопросу? Очевидно, reference manual, главы про gpio и прерывания Для начала покажи, как ты настраиваешь прерывания на ноге
Приветствую, радач. Ковыряю stm32f103 и его таймеры в режиме захвата импульсов. Понимаю, что можно назначить на один пин мк два канала (direct и indirect) и по прерываниям на каналах читать регистры, куда каналы сохраняют счетчик по фронтам/спадам и высчитывать разницу. Но это блять занимает два канала на один сигнал, сука! А у меня таймеров (и пинов) и так не хватает, и вообще внутренний еврей подавился жабой, поэтому внимание, ебанутый вопрос: можно ли реализовать измерение длительности импульса на одном канале таймера? Ковыряю HC-SR04, хочу схитрожопить. Фантазия такая: 1 настраиваю таймер (пусть будет TIM3): предделители, предел счета все дела, настраиваю канал (пусть будет CH1) на захват по фронту. Включаю прерывание и обработку прерываний. Включаю таймер. 2 на пин приходит сигнал лог 1, т.е. фронт, генерится прерывание 3 в обработчике прерываний смотрю какой бит прерываний появился. Если это прерывание по появлению сигнала, а не по переполнению счетчика, то обнуляю регистр CNT, перенастраиваю пин на обработку по спаду сигнала и запускаю счетчик 4 когда сигнал уходит, генерится прерывание. В обработчике считываю регистр CNT (это и будет длина импульса) и обратно перенастраиваю пин на обработку по фронту.
Будет такой подход работать или я где-то наебался?
>>431827 Попробуй на отладочной плате, для одного должно прокатить. Вроде бы кто то уже делал такое, поищи по форумам, посмотри в RM и timer cuckbook. Только настраивай захват в регистр CCRn, input capture, он зафиксирует значение cnt ровно в момент прихода импульса. И счетчик лучше запустить сразу по trig и не останавливать, иначе сразу добавится неизвестная задержка вызова прерывания. По прерыванию считываешь CCR и по твоим условиям меняешь полярность захвата, у результата делаешь обработку переполнения, там еще флаги соответствующие есть.
Если не покатит, можно использовать два канала. Единственно, с двумя и несколькими сигналами лучше dma, как то мерял скважность сигналов двумя каналами и забирал результат по таймеру, при постоянной скважности были периодические небольшие выбросы.
>>431833 Заработало, таки победил. Сделал так: https://pastebin.com/gPAr3dwd В итоге меряет число тиков между фронтом и спадом, может кому пригодится, хотя точность на обработку прерывания теряется немного.
Надо отсчитывать определённый промежуток времени: от нескольких секунд до минут. Пока не уверен - нужна ли привязка к реальному времени, но...
Есть три стула: 1) заморочиться с микросхемой часов реального времени с интерфейсом I2C и брать показания с неё - не знаю, сколько может занять считывание показаний по шине. 2) запустить ещё один таймер, но даже 64-битный таймер не сможет считать больше 5 минут. Не уверен, что правильно посчитал, но перепроверю позже. 3) уже есть таймер отмеряющий 100 мс - вести счёт на его основании, отмеряя счёт по 100мс, но с минутами... у, это ещё тот пиздец.
>>432282 Что пиздецового в третьем варианте? Начал отсчёт, обнулил переменную, надо закончить, прочитал переменную. Без троллинга, просто обычно всегда так делаю. Есть ещё rtc, может там как-то замутить можно?
>>432282 Не с того бока заходишь. Какое разрешение то нужно? Наносекунды, пикосекунды джиттера, микросекунды, миллисекунды, секунды? Даже если брать обоссаный 16 битный таймер и тактировать его часовым кварцем на 32 килогерца - у тебя будет 2 секунды с разрешением 1/32768, те где-то 30 микросекунд. Поставь прескалер /32 = получишь 64 секунды счета и разрешение 1/32768*32 = где-то 1 миллисекунда. Бери православный 580ВИ53 - там целых три 16-битных таймера.
>>432282 >1) заморочиться с микросхемой часов реального времени с интерфейсом I2C и брать показания с неё - не знаю, сколько может занять считывание показаний по шине. В некоторых RTC есть режим "будильника" и внешний выход под него. В новых версиях STM32 тоже есть режим будильника в модуле RTC. В чем проблема его использовать? Что за камень то используется или планируется?
>>432335 Сделай таймер периодом в 100 мсек и в прерывании переполнения счетчика заведи инкремент uint32_t переменной. Тебе этого надолго хватит. 4 294 967 295 по 100мсек это 429496729.5 сек это около 4970 суток лол.
>>432282 А как кстати лучше считать время при нестабильном питании? Скажем вести отсчет наработки той или иной нагрузки. Еппром же затрется до дыр, если его перезаписывать чаще раза в час. Ставить большой конденсатор по питанию, отлавливать просадку по питанию внешним компаратором с гистерезисом и выделять отдельную ногу под прерывание? Есть ли способ проще?
>>432737 Даташит референс мануал хоть раз открывал? Во всех STM32 есть немного оперативной памяти, которая питается от вывода Vbat, который питает внутренний RTC. Вот и еби эту память перезаписями сколько хочешь. Если совсем шиза одолевает - через тот же вывод PC13 можно аппаратно давать команду на стирание памяти в которую пишешь свою статистику что бы ее никто не стырил.. Не забудь при этом отключить отладку по JTAG и SWD. Вот смеху то будет..
>>432753 На короткий промежуток времени да. Я просто по старой работе помню что в DVD ресиверах Samsung часы и энергозависимая память с пользовательскими настройками питалась ионистором. Можно было выключать из розетки на довольно долго, ни часы, ни настройки не сбивались. Давно это было. Бывало эта система сбоила, резистором разряжаешь ионистор и включаешь-работает. Но часы с нуля и все настройки по дефолту.
>>339005 (OP) Реально ли с использованием __qadd16() ускорить суммирование элементов массива, длина которого не всегда кратна двум? Суммирование сейчас:
int16_t *signal; uint32_t sum = 0; for(int i = 0; i < count; i++) sum += signal;
>>433415 >__qadd16() Я не настоящий сварщик, но ведь прийдется сначала преобразовать элементы массива в джва массива вида val[x] -> val[x][15:0] и val[x][31:16] ?
Котаны, поясните за Black Magic Box. В чем минусы, подводные? Закинул на blue pill, в принципе идея понравилась, ф103 л053 увидел без проблем л433 не захотел SW-DP scan failed!
Пиу, радач. Начинаю перекатываться с avr-ок на stm32, все нравится кроме одного: гребаная STM32CubeIDE не умеет без пердолинга в С++. Самое смешное, когда я запускаю IDE и создаю проект с нуля, выбираю камень, указываю что хочу C++ проект блеать, настраиваю периферию в кубике, и....генерируется сишечка. Вот что у этих долбоебов-разработчиков IDE в голове? Хлебушек? Нахуя опция "хочу С++ проект" если один хуй генерится С? Чтоб блять у них всегда в пачке с надпитью "кофе" пурген был.
Посоветуйте IDE чтобы можно было нормально кодить на С++, мутить классы и тд. Да, можно и в STM32CubeIDE напердолить #ifdef __cplusplus extern "C" { и прочее, но что-то разочаровался я.
>>434008 Тоже подумываю о перекате с простых 8 битных авр на стм32. Расскажи, какие подводные камни встретил? Почему выбрал именно эту среду разработки? Ебля с ООП на крестах обусловлена объемами кода?
>>434008 >Посоветуйте IDE В какой IDE писал для AVR, в той и для STM32 можно попробовать. >Да, можно и в STM32CubeIDE напердолить Что? Этож эклипс обыкновенный, с плагинами. Откуда в эклипсе могут быть проблемы с цпп? Да там практически любой компилятор любого языка программирования можно использовать, если мейкфайлы использовать.
>>434017 Не работает так. Решил я замутить библиотеку. Создал cpp и chh файлики, написал в нем слово "Class" а компилятор сказал что такого слова не знает. Гугл дал понять, что в КубоИде можно напердолить настройки компилятора чтобы и С и С++ понимал, но это и есть пердоленье. Я хочу чтобы в пакете с надписью "хлеб" был хлеб сука, а не дрожжи мука и стакан воды. Если блять кодогенератор спрашивает "Хотите С++ проект?" то ответив "Да" я ожидаю получить С++ проект с поддержкой всех функций С++, а не обосрамс компилятора, который слово "Class" не знает. Понимаешь суть моей претензии?
>>434019 Я так делал. И когда мне понадобилось добавить еще и RTC, то после тыканья в кубе и кодогенерации снова появились main.c Можно конечно завести два проекта: один весь такой С++, а второй чисто для натыкивания в кубе чтобы смотреть инициализацию периферии. Но нахера такое в 21 веке? Вот я и ищу варианты, чтобы проект С++ был действительно С++. Я и пердолиться готов, если в аннотации к ИДЕ будет написано "Готовься пердолиться, вот инструкция", а не как в говнокубе.
>>434176 >Понимаешь суть моей претензии? Не понимаю зачем вообще сразу хвататься за IDE. Пиши мейкфайлы, в нормальных проектах под твои восьмибитные ардуины так и делают. Смотри к примеру код известного тестера транзисторов или код grbl, все по человечески сделано, также и ты делай.
>>384956 >Если надо будет за раз передавать больше 8 байт - то готовься к пердолингу Уже давно умные люди придумали CAN FD, с возможностью передавать за раз до 64 байт, а тебя в твоей избушке и вчерашний шторм не разбудил.
>>384956 >твое дерьмо будет ГАРАНТИРОВАННО доставлено единым куском. А в RS-485 разве не так? Хозяин по очереди опрашивает рабов на линии, и сообщение от нужного раба будет Г А Р А Н Т И Р О В А Н Н О доставлено единым куском до мастера. И никакого авторазрешения коллизий для этого не нужно.
>>434290 RS485 это просто интерфейс. Грубо говоря микросхема и уровень напряжения сигналов. А какой протокол ты этими сигналами реализуешь - зависит от тебя. Например: 1 Modbus RTU/ASCII по RS485 просто отправляет пакеты. Программисту приходится самому решать, как в мастере реализовывать проверки, что записанные данные действительно записались (считать в следующем цикле и сравнить). Приходится решать как контролировать потерю связи, хотя в протоколе есть какие-то коды функций при возникновении ошибок, но редко кто из производителей реализовывает у себя полный модбас со всеми функциями. Приходится самому решать как реализовывать очередность запросов если мастеров несколько. 2 Profibus DP тоже работает на шине RS485, но там уже на уровне протокола реализованы все недостатки модбаса выше. Написать самому такой протокол на МК я хз надо каким быть уберкодером. Такие люди врядли будут задавать вопросы про протоколы связи.
>>434290 Скажу очень коротко, дальше сам додумывай. В CAN фреймы с адресом получателя и полем данных от 0 до 8 байт, которые передаются одним куском без каких-либо пауз внутри особо умные припомнят 1 бит тишины когда рабы должны ответить что поняли Господина что гарантирует доставочку одним куском, а не склейку из кучи рассыпающихся отдельных байтов. В RS485 (UART) передача идет по 1 байту. Пролетающий мимохуй может дристануть левым байтом в линию и все поломается. В CAN же после определения приоритета (разрешения коллизий) всякая шпана затыкается и только Господин вещает в линию, а рабы молчат в тряпочку и слушают.
Совсем тупо - посмотри на Ethernet. Там фреймы по 60+4 байт. Минимум. Даже если тебе надо передать 1 байт полезных данных - у тебя всегда будет передаваться фрейм из 64 байт. Если надо больше данных передать - фрейм может быть расширен до 1518 байт, из которых вычтя служебное говно остается около 1450 байт под полезные данные которые будут доставлены одновременно и без разрывов. Если же 2 килобайта данных слать - то данные прилетят в 2 захода - 1450 байт и 550 байт.
Суть уловил? CAN как и Ethernet - единая неделимая пачка данных передается за раз в отличии от рассыпчатых байтов в RS485 (UART).
>>434361 Чето сложно предлагаешь. Я бы ебашил таки Modbus, ибо: 1 протокол отлично описан и стандартизирован 2 много промышленный датчиков его умеют 3 проблемы лишних сигналов/байтов/пердежа в линиях решаются CRC 4 сам интерфейс устойчив к наводкам за счет передачи по витой паре.
Но блять это уже какая-то промышленная автоматизация получается.
Решил вактиться из АСУ в Embedde и начать с STM32, среда программированияSTM32CubeIDE. Так вот вопросик - есть ли годные видосы с обзором самой среды программирования? Не как поморгать условным светодиодом, а именно обзор структуры среды и всего такого?
>>434703 >Решил вактиться из АСУ в Embedde Так надо наоборот - разобраться, как всё работает в ембедед, а потом идти в асу. В embedded всё печально с зп-хой и карьрным ростом.
>>434703 Короч. Предлагаю чего, могу в личке помочь с вкатом в МК за помощь с пониманием АСУ ТП. Я в нем вообще ноль, абсолютный, но интересно всегда было.
В МК я далеко не профи, прям сильно, много дыр и нехватки знаний, но даже могу немного в коммерческую разработку(ага, унитазы автоматизирую). Не ардуинщик
>>434756 асутп изи после ембеддед, покупаешь овен на кодесисе (только с прошивкой через езернет типа такого https://owen.ru/product/plk100_150_154, ком-порт прошлый век),осваиваешь, у них все разжевано, на русском и куча примеров, потом уже покупаешь на авито б/у или китайский клон сиеменс/AB и осваиваешь его. модули расширения эмулируешь компом, благо эмулей модбаса на комп хватает
>>434786 Мне больше эдакая общая вводная и вводная о окружении нужна, чем непосредственно частности. Вообщем не о том, как программировать ПЛК, а о том как работать на профессии.
>>434805 Есть останки железок (модули ввода 7000 серии от ICP DAS) и сервер телемеханики от ЦентрЭнергоАвтоматика. За сисечки-писечки можно достать STM32 и попробовать сделать устройство, отвечающее по протоколу DCON или Модбасу. Есть шлюз CANOPEN в DCON ( https://icp-das.ru/catalog/i-7231d ). Оно тебе надо? Ну посмотришь, потыкаешь как оно на минималках настраивается на конкретном оборудовании, а дальше?
>>434756 Я только с гОвеном -то и могу помочь. Живу в ебенях, нормальные вендеры нас стороной обходят, поэтому клепаем автоматику для ЖКХ на овне и сегнетике, скоро мб попытаемся на сименс лого. Но без нормального сотрудничества с вендерами и продовацами кад-сисметам ничего не добиться. работа на пиратском софте удручает.
>>435789 Что вы делаете с 256/512кб прог флэша? Мне за более 10 лет махарай-строя атмеги с 8 кб лишь несколько раз не хватило, 16-32 кб меги выручили. Это же нереально высрать столько кода, кроме как всякие картинки, иконки, шрифты и аудиозаписи в памяти хранить.
>>435926 Дилдодрон с гигом звуков из хентая и гачи-ремиксов на sd-карте, управлением коптером, ИИМ + GPS, камерой, дилдо с подогревом, и анимированным лицом Черного Властелина на 6" lcd.
>>435926 Влезу в разговор У меня устройство с двумя МК, которые непрерывно общаются по modbus между собой на высокой скорости. Прикреплен графический монохромный дисплей 128*64 с меню, которое содержит более 50 экранов На каждом МК есть внешний rs-485 для внешнего modbus с несколько десятков регистров На главном МК висит sd карта с fatfs в которую пишутся отдельные осциллограммы с каждого МК по 2000 точек (2 байта точка) по срабатыванию и отпусканию сигнализации, при этом почти одновременно может сработать до 4-5 событий, и все надо успеть сохранить и записать. В ту же карту пишутся события в архив событий, одновременно может появится скажем до 10 событий При этом на каждом МК со скоростью 50кгц крутится цифровой фильтр и расчеты действующий значений пульсаций тока и напряжения
Наверное можно умудриться уменьшить раз в 5 код и запихать все это в 8кб, но зачем заниматься без необходимости таким геморроем?
>>435928 Обычный модульный проект уровня Ардуино. Не увидел чем тут хвастаться, весь код заимствован.
>>435931 Ких фильтр хоть и требует много процессорного времени, сам по себе вряд ли больше ста строк кода занимает. Остальное, согласен, требует много места.
Короче, вывод: много низкоуровневого кода нужно если контроллер выполняет много разных задач.
>>435923 Анимешникговноед, я тебе напоминаю, что ты, ебучая линуксопрыщеблядь, что ты пришло в тред к господам электронщикам и сереш тут. Ещё раз, уходи в свои хипстерские скриптотреды отсюда.
>>435931 >Наверное можно умудриться уменьшить раз в 5 код и запихать все это в 8кб, но зачем заниматься без необходимости таким геморроем? Так вроде речь изначально шла про домашние махарайки, а ты описываешь промышленное решение. Зачем? Вроде бы такой вумный дядька, а логика хромает.
Кто-нибудь реализовывал прошивку или доступ к адресному пространству через SWD? Где написано сколько в stm32 AP и какое у них назначение? Нужно ли jtag переключать в swd при инициализации, или он по умолчанию?
>>435965 Stm32f373, взяли потому что нужен был сигма дельта АЦП. У меня по три канала такого АЦП задействовано у каждого МК для измерения одного параметра у каждого МК Есть другой проект с f407 но там попроще с вычислениями, но надо будет реализовать usb host и наверно ethernet, плюс в идеале накатить freertos
>>436015 Блять, точно, прочитал неправильно. Да, споймал меня. А хуле ты хотел, час ночи, ты пидор. Я почти сплю.
И вообще, будь, пожалуйста, более мужественным в этом треде. Поменьше конченого ня-сленга и говнимешных тёлок, побольше маскулинности. Мы тут серьезные люди, а не педики какие-то.
>>436137 Расчёт со скрина взят из либы. Либа написана для флешек W25Qxxx. Они, в принципе, похожи: совпадают регистры / команды. Только вот организация может быть разной.
>>436074 шиз, кекаю с тебя на весь дом:з тебе нужно было репортить СВОИ посты, а не мои, дурачок:з а теперь все узнали, что у тебя сильна-сильна пригорело:з а позорные постики, которые ты понапостил тут, остались навсегда:з
>>436599 >У блюпилл 64кб Не совсем так. Там 128 кб, только в документации этого нет и СТ соответственно не гарантирует работоспособность. Скорее всего STM32F103C8T6 это 103CB у которого провели не все тесты. Однако для разовой самоделки это скорее всего не важно.
>>436601 >Не совсем так. Там 128 кб >только в документации этого нет и СТ соответственно не гарантирует работоспособность Это значит, что там 64кб, дурачок :з >ПДП Визжишь про память, бака, а оперативы тебе не жалко под твой DMA? Да и нахуя, сучичька? :з На нопах делаеца за полчаса от силы, ему хватит :з
>>436602 Я думаю, можно заюзать ПДП контроллер, НО "подкидывать" данные в буфер по чуть-чуть, по half-transfer (да или даже по full transfer и перезапсукать ПДП) (если нет подводных, конечно).
>>436602 >Это значит, что там 64кб, дурачок :з У тебя детектор не работает, я тебе в первый раз тут отвечаю. А потом, как это может что-то значить для мигалки светодиодами, да еще на китайской плате в которую китайцы могут припаять вообще что угодно? Китайцы тебе вкорячат в "блюпилл" свой клон с кривой маркировкой вместо STM32, о каких гарантиях вообще можно говорить? Предполагаю что такие нездоровые фантазии у тебя от японских мультиков.
>>436618 Дрочую неистово не писюн. Сидел под факинтошем обратно хочу, все найс работало. arm-none-eabi-gcc работал на ура. st-flash (texane) тоже хорошо работал.
>>436617 Какой иср, лолачька, какие таймеры? с: Там же наносекундные интервалы, десу. :з Ты решил зайти сюда потралибасить, анончик, но это мы кекаем с тебя, глупенький :р
>>436652 В нуклео как правило камень, пара светодиодов, кнопок и внешние интерфейсы типа usb и eth. А всё остальное подключаешь к гребёнке сам. На диско к этому набору ещё идут всякие акселерометры, дополнительная память, экранчики.
Приветствую, радио-анон. Перекатился в стм с ардуинок, пилю всякое понемногу. Когда завел себе котейку (на двачах даже где-то тред был про выбор имени), запилил для нее игрушку. Тян зовет ее "Око Саурона" лол. Два серво SG90 и stm32f030f4p6 двигают лазерную указку по траектории с рандомными точками. Котейка теперь довольна и не бесоебит по ночам.
Анончики! Есть одна плата 32F746GDISCOVERY. И дело в том, что она не запускается при питании от Mini USB, который по совместительству является разъемом для ST-Link. В мануале пишут, что после подключения разъема, плата запрашивает у пк повышенный ток и если он говорит САСАЙ, то плата и не получает питание. Так вот, можно ли как то заставить ПК давать разрешение? Знаю, что можно въебать джампер на ключе, который подает питание на всю схему, но может есть софтовый вариант?
>>436721 Можно, по идее, это в обратную сторону закреплять: поносилась кошка за указкой как следует — получила любимую нямку. Наоборот, будет ебанутая от счастья за лазером носиться, условный рефлекс же, как у собаки Павлова.
>>436721 Я в курсе, анон, но спасибо за предупреждение. Лазер включаю минут на 10-15, не больше. Даже в проге МК таймер стоит отключаться через 15 мин. А потом даю кошке реальную игрушку разодрать в хлам, клочки по закоулочкам, вот это все.
>>436792 Какая отговорочка, вась? Вась, пойми, у других людей действительно есть работа и другие дела в жизни. Да, есть люди которые не смотрят аниме 24/7 как ты, а работу работают и жизнь живут! Прикинь!)))
>>436851 Маничка, ты драматизируешь ситуацию, няш:з Есть няши, которые и работку поработать, и поняшиться под пледиком под аниме, и музачку послушать, и погулять, и стмку поковырять успевают:з И еще минутка остается свободная:з А ты, бака, даже стмку не можешь запрограммировать:з
>>436861 Так надо ставить перед собой более скромные цели, на уровне того чтобы посмотреть аниме и помигать светодиодиками. Тогда наверняка будешь успевать.
У меня тут сегодня старая блюпиллка нашлась на подоконничке, хорошая маленькая лампа на ней и на светодиодной ленте получилась (хорошо, что анончики напомнили). Разноцветная, сочная и няшная:з Можно позалипать теперь как-нибудь вечерком:з
>>436861 >>436866 >>436907 Хуя гречняшки закококали:з А все элементарненько обстоит, никаких секретиков: кто больше делает - тот больше успевает, няши:з
>>436852 Можно и не нопами, анончик:з Но нопами легче всего, хуяк-хуяк и готов вариантик:з Я так и делаю у себя, на 72МГц времени вагон:з
>>436829 Хех мда, это хорошо, что ты не додумался стримики с донатами пилить. Вот это у неки случилось бы попадалово :с
>>436822 Хаб с внешним питанием используй, это подсветка экрана столько выжирает. Либо просто павербанк рядом в другой разъём воткни, либо через Y кабель.
Прихуел что в thumb нет даже загрузки регистра константой, пришлось макрос писать. Ясен хуй если нет полноценных действий с константами, то любые битовые операции займут 2-3 регистра и 5-6 команд вместо 1 регистра и 1 команды. Теперь ясно нахуя вам столько регистров. В stm8 всего 3 регистра и их хватает, ведь я могу просто указать маску чтобы сбросить биты.
А сейчас вставил элемент в двусвязный список за 4 команды, как в x86, и должен признать, что этот ассемблер не безнадежен.
>>436963 >Прихуел Почему тебя это удивляет? Это RISC а не CISC. >ассемблер не безнадежен. Зачем трогать ассемблер руками? Ну кроме как для общего развития и каких-то крайне редких случаев?
В си нужно шаманить, учить как ведут себя какие-то васянские типы для каждой новой архитектуры, изучать флаги компилятора и линкера, изучать ебучее api стандартных библиотек, ебаться с переопределениями типов каждый раз, искать А КАК ЖЕ ТАМ В ЕБЕНЯХ определен адрес стека, а как же мне здесь прерывание определить, а что это за константы ебучие хуй поймёшь, если в даташите совсем другое что-то.
И вот ты лезешь в инклуды, лезешь в исходники. А жизнь проходит.
Все это совершенно лишняя для мозга информация для меня. Мне только светодиод подключить и пару простых протоколов реализовать. Все эти сишные фишки типа доступа к массиву и циклов легко заменяются вызовами, если нужно. Только арифметику в одну строчку конечно не сделаешь. И код не перенесешь. Но код и на си так просто не перенесешь. Все равно весь проект перелопатишь.
>>431051 В самом мк очень слабая подтяжка, на 100кОм обычно, она плохо работает с сильными помехами. Нужно внешнюю подтяжку делать резистором на 10к или меньше.
>>437209 Хз, я ассемблеро, но обычно советуют ставить volatile аппаратно зависимым переменным наподобие итератора цикла в задержках. Давай подробности.
>>437209 >У меня код с оптимизацией работает вообще неправильно. А не ассерты ли какие-то вкидываются у тебя? В которых ты по случайности вычисления делаешь в дебажной версии?
Подскажите китайскую за копейки плату типа blue pill но с экранчиком, батарейкой и энкодером на борту? Хочу сделать устройство, но не хочу разводить плату
>>437848 Из модулей, если дохуя быстро надо - возьми подходящие dip/soic/sop/sot макетки, спаяй на них недостающие схемы и подключи к bluepill, часто так делаю.
>>438257 >>438293 >>437981 А ни у кого нет таблицы с названиями распространённых разъемов? Я например эту хуйню всю жизнь PLS называл, по названию пап.
Наваял говна, и оно не лезет в blue pill, флеша надо килобайт 300. У ST резко дороже становятся контроллеры, но вот например ESP есть вполне годные (но у меня код под ARM заточен)
>>441179 >Погроммист Я не из этих. >мне надо проверить что мой софт работает, а не готовую конструкцию собрать А что тебе мешает этот софт запускать на компе? Учитывая что ты не написал требований к периферии. Или ты на ассемблере там все написал?
Итак, я скачал CubeIDE и помигал светодиодом через HAL. Ну вроде не сильно страшнее, чем на пердуине, но у меня осталось куча вопросов. 1. В чем отличие от ArduinoIDE? Мне например рассказали, что CubeIDE это CubeMX и Eclipse. Ну и вместо эклипса можно использовать любую другую иде, а куб вообще не обязательно использовать. Так что такое куб? Что за генерация кода после настройки ног? 2. Можно ли прошить бутлоадер на ту же блек пилку и заливать код через кубиде? Я в опциях загрузки видел только SWD и JTAG 3. Подкиньте какое-нибудь объяснение, как работает RTC и как его использовать 4. Что такое DMA, зачем и нужно ли мне париться, если я собираюсь программировать только с HAL, не дроча регистры?
>>441191 >1. В чем отличие от ArduinoIDE? Мне например рассказали, что CubeIDE это CubeMX и Eclipse. Правильно рассказали. ArduinoIDE это на уровне блокнота, а в IDE кроме редактора кода имеется множество полезных и не очень мелочей, таких как анализатор кода, автодополнение, рефакторинг и множество другого. >Ну и вместо эклипса можно использовать любую другую иде Это тоже так, только стоит добавить что не обязательно использовать IDE, код можно писать в любом текстовом редакторе. >Так что такое куб? Что за генерация кода после настройки ног? Если ты сделал мигалку, то как ты мог не заметить, что куб нагенерил кучу кода? Это код для настройки периферии микроконтроллера.
>2. Можно ли прошить бутлоадер на ту же блек пилку и заливать код через кубиде? Я в опциях загрузки видел только SWD и JTAG Там бутлоадер в масочной ПЗУ (не перезаписываемой) из завода, куда тебе еще один? Зачем вообще тебе это нужно, когда есть SWD? Разумеется никто не запрещает написать свой бутлоадер, который сможет что-то еще, например обновляться с SD карточки. Но тебе это зачем?
>3. Подкиньте какое-нибудь объяснение, как работает RTC и как его использовать RTC это всего лишь еще один таймер, если ты про то что внутри микроконтроллера. Можно использовать для часов, но не нужно, т.к. точность будет так себе, потому что это не TCXO. А отсчитывать временные промежутки проще другими таймерами. RTC может быть полезно для энергосберегающих режимов, чтобы микроконтроллер периодически просыпался по сигналу от RTC.
>4. Что такое DMA, зачем и нужно ли мне париться Это штука, которая перекладывает байты или слова/полуслова из одной области памяти в другую, без участия ядра процессора, которое в этот момент может делать что-то еще. Например оно может автоматом перекидывать данные из периферии в память. Оно нужно в основном когда из периферии нужно забирать данные (или наоборот класть) очень быстро, когда по прерываниям можно не успеть.
>не дроча регистры? А вот это зря. Ладно еще, может быть в самом микроконтроллере ты сможешь не касаться регистров, ну а подключишь что-нибудь через I2C или SPI? Мне кажется тебе стоит как следует изучить ардуину для начала, чтобы регистров не бояться. Советую разобраться с регистрами и прочим в AVR, тем более что там не так много всего и поэтому это не сложно.
>>441227 > Если ты сделал мигалку, то как ты мог не заметить, что куб нагенерил кучу кода? Я кроме main.h не залазил в другие файлы > куда тебе еще один? Чтоб можно было заливать код через USB, без ST-Link > ну а подключишь что-нибудь через I2C или SPI? В ардуине обходился либами и тут надеюсь на то же. Я взял стмку для поделок, а не разбираться в устройстве микроконтроллеров
Анончики, тут понадобилось прикрутить две фичи к stm32f429 на демоплате f4discovery: ворох датчиков 1-wire и rtc. Не тратил еще кучу времени, но волосики на голове шевелятся от того что в интернетах пишут. Итак, rtc. Обрезал страпы, запаял кварц 32768, провел инициализацию rtc. Часы идут, но после первого холодного запуска останавливаются через десятки секунд. После ресета кнопкой идут хорошо. Так же останавливаются от помех по питанию. Это что за нахуй за пиздец? Пишут что не все кварцы подходят. Честно, перепробовал десяток и в конце концов взял из совместимого списка, похуй. Да, конденсаторы к кварцу ок, все дорожки от проца к кварцу не длиннее сантиметра, лишних нет.
Второй вопрос по 1wire. А что, никто не написал легкоинтегрируемую либу для stm32? Максимум что я нарыл - порт с ардуины, где очень болезненно надо настраивать задержки для ногодрыга. Ладно, почитаем корифеев. Говорят usart+dma - тема. Ок, ищу либу, вроде что-то есть, тянет лютые ардуинозависимости. Бля. Читаю еще, на 10 странице форумов все приходят к выводу что usart не подходит, на морозе тайминги не те, и длина линии сильно падает. Нужен таймер+Dma, но решения не выкладываются. На 20 странице форумов приходят к выводу что 1wire протокол не удобный а значит не нужен, давайте ntc юзать.
Я не очень в экосистеме stm32 свободно плаваю. Это норма?
Помогите ньюфагу. Пару дней назад пришла моя первая пердуинкастмка - т.н. blue pill, пытаюсь запустить на ней miniblink на libopencm3 ( https://github.com/libopencm3/libopencm3/opencm3-miniblink ) Скомпилировал, прошил - НЕ МИГАЕТ СУКА. Пробовал код из >>375829 той книги - та же хуйня. Отладчиком увидел, что исполнение начинается с адреса 0x000000xx. Оказалось, в получившейся прошивке вторым словом какого-то хуя идёт не адрес reset handler'а, а 0x14. ЧЯДНТ?
>>442166 Разобрался. Проблема из-за того, что по какой-то причине в самом начале прошивки оказывается секция .note.gnu.build-id. То ли их компоновочный скрипт её не учитывает, то ли флажок какой-то gcc забыли передать. Пока что лень разбираться, просто закостылил мэйкфайл, добавив флажок -R.note.gnu.build-id для objcopy
Объясните тупому. Таймер работает без прескейлера на макимальной частоте (72 МГц). ARR = 143, значит прерывания случаются с частотой 500 кГц. Переменные смотрю через live watch в IAR: t1 = 28; t2 = 100; Вопрос: куда проёбываются 28 тактов перед первой строчкой в обработчике прерывания? Куда проёбываются 72 такта в куске кода с одним ифом и одним присвоением. Там даже ассемблерных строчек столько не набирается
>>441587 У простых кварцев на 32768 Гц для RTC, будет точность около ±20ppm. То есть за сутки часы будут уходить максимум на ±1.7 секунды. У высокочастотных кварцев, от которых обычно тактируется микроконтроллер, точность почти такая же, чаще около ±50ppm. То есть RTC с простым кварцем не обеспечит большую точность, чем простой таймер. При этом у отдельных RTC с TCXO, таких как DS3231, точность заявлена ±2ppm. Конечно можно прицепить простой TCXO без RTC к STM32, но это будет дороже чем DS3231 и потреблять будет немного больше. Поэтому основное применение встроенного в микроконтроллер RTC это вывод микроконтроллера из спячки. Ну или если обычные таймеры все заняты.
>>442425 Хуйня опять какая-то. Допустим, точность меня устраивает (часы нужны для суточного таймера, и погрешность в 5 мин не страшна). Да и подводить можно по сети. Что нужно - так это сохранение хода от бекап-батарейки и не тащить лишний корпус в плату. И вроде бы все ок, но идет эта залупа не стабильно. Может я с инициализацией проебался, не знаю. Вопрос: нахуя же столько задекларировано классной периферии, если она не работает толком и нинужна?
>>442445 Значит припаял что-то криво или не совсем то. Если не работает кварц, то поставь генератор, делов то. https://www.electronshik.ru/item/SITIME/SIT1533AI-H4-D14-32.768E Например. >и не тащить лишний корпус в плату. Вместо кварца с двумя конденсаторами ставишь одну микросхему с парой конденсаторов. Количество корпусов не поменяется. >Вопрос: нахуя же столько задекларировано классной периферии, если она не работает толком и нинужна? Не надо делать из-за какой-то ерунды трагедию. Выкини STM32, возьми еще что-нибудь, если эти не устраивают.
Никак не могу разобраться, почему прерывание не срабатывает. https://pastebin.com/6cyRhi3N Подключил ИК-датчик движения HC-SR501 к ножке B0, вроде бы всё настроил, но обработчик не вызывается, хотя через gpio_get сигнал считывается. Где я объебался?
Анончики, одна проблема возникла при расчете CRC32, вообщем ситуация следующая: есть микроконтроллер российского гавнопроизводства, копия stm32, но без встроенного модуля расчета crc32, я написал прошивку для него, у этой прошивки с помощью обычных онлайн калькуляторов можно посмотреть контрольную сумму, то есть там используется полином crc32 ieee, моя задача прочитать память МК, в которую и была записана прошивка, это будет как раз массив uint32_t massiv[size]. Далее мне нужно вот к этому массиву применить расчет crc с использованием полинома crc32 ieee, для того чтобы я мог сравнить то что должно было быть записано в МК, с тем что там записано по факту. Так вот, все работает, crc32 рассчитывается, но возникла проблема, как оказалось онлайн калькуляторы не используют чисто полином ieee, там какие то мутанты, поэтому единственный вариант это смотреть значение crc прям во время работы программы. Ещё раз по порядку, я запускаю программу, там есть переменная которая хранит рассчитанную crc, затем я должен добавить в эту программу define с текущим значением crc, который я только что увидел, это и есть как бы эталон, но вот проблема, как только я впишу туда значение эталона crc, после перезапуска программы crc естественно изменится, так как новая строчка кода появилась. То есть: пусть значение crc32 без добавления строчки с эталоном это Х, У значение crc32 с добавленным значением эталона. Я врубаю прогу, получаю Х, это значение Х я вписываю в эталон и при запуске значение Х меняется на некий У. И в программе я сравниваю Х с У и получаю нихуя, потому что У я не могу знать заранее, как и Х, я их узнаю только после запуска. Вопрос: есть ли способ как-то заранее учесть в программе это, может есть какие-то алгоритмы?
>>443086 Выделил место в конце eeprom, чтобы не затереть его прошивкой: #pragma locate FuncCRC 0x8001FFC Затем просто объявил константу с этим именем, записал в нее значение эталона: const uint32_t FuncCRC = 0x1432C98 Читаю также память с адреса 0x8000000 до конца записанных байт и у них считаю контрольную сумму, при этом запись в конец флеш не меняет общую контрольную сумму
Приветствую радиоанона, да не охладеет жало паяльника твоего. Есть stm32f103 и желание замутить машинку на пульте управления. Саму машинку сделать несложно: ШИМ для двигателей, датчики ультразвуковые для препятствий и поехало. Но столкнулся с проблемой пульта: 1 Блютус и телефон использовать не хочу т.к. 10 метров радиус действия, а я хочу побольше. И написать хоть какой-то вменяемый софт управления под андроид для меня пока оверкилл. 2 Можно взять два nRF24L01+ и еще один stm32f103, наколхозить самодельный пульт. Но где найти вменяемый корпус с кнопками, рычажками и хоть какой-то индикацией? Гугл показал, что некоторые умельцы используют старые джойстики от XBox/PS, кто-то пилит самодельную коробку, но этот вариант стоит рассматривать от безысходности. 3 Готовые пульты для радиомоделей фактически вещь в себе: пульт общается с родной платой, на которой уже есть выходы под управление моторами, сервами руля и тд. Но это готовый конструктор с ограничениями: я не могу поменять логику работы, добавить/убрать датчики, добавить/убрать передаваемую инфу и тд.
Есть ли в природе пульты/заготовки, вида "вот тебе корпус+кнопки+контроллер+модуль связи, програмировай"? Или пульт, который уже запрограммирован и есть описание его радиообмена? Типа "частота такая-то, канал такой-то, ключ сопряжения такой-то, на принимающей стороне нужен будет радиомодуль такой-то. Вся посылка вмещается в байт, нажал кнопку на пульте - улетела "1" в таком-то бите".
>>445403 >И написать хоть какой-то вменяемый софт управления под андроид для меня пока оверкилл. Можешь наговнякать на tcl/tk под androwish, с гуем в сотню строк выйдет.
Господа, куда блять исчезли почти все STM32F0/F3/F4 да блять почти все их магазинов? На LCSC вообще дичь, цены раза в 3-4 выросли и по наличию залупа. Что вообще происходит, может кто в курсе?
Здравствуйте, дорогие радиоаноны! Вкатился две недели по воле случая в stm32. Использую SPL и IAR на stm32f407vg плата дискавери. Изучаю каждый интерфейс для обмена данными. Дошел до USART'а. Плату подключил с помощью USB TTL к компу и отправляю данные с stm32. Всё отправляется хорошо, но только на низкой скорости. То есть ставлю baud 1200 — всё работает. Ставлю 9600 — нихуя не работает. Погуглил, понял, что надо как-то настроить частоту шины с помощью делителей, но нихуя не понял как... Код не могу скинуть, он остался на работе. Но писал строго по примеру из библиотеки, никак не настраивал частоту, т.е. идёт стандартная 168 МГц, определенная в systemconf. Как мне вообще поменять частоту? Как подобрать необходимые делители? Запутался, пацаны... Если у кого-то есть код, кидайте, буду очень благодарен!!!
>>464004 Открываешь даташит. Находишь раздел про уарт. Находишь там формулу расчета скорости передачи. Вписываешь коэффициенты в регистры. Для упрощения, там уже должны быть таблицы с готовыми коэффициентами для стандартных скоростей.
>>464009 Спасибо, но, как оказалось, проблема была не в скорости. Перенастроил на USART2 вместо USART1 и всё заработало. Я так понял, что USART1 как-то конфликтует с USB портом на плате. Как именно хз, мне это сказал мой куратор — я стажируюсь в отделе разработки. Так или иначе, всё заработало... Вот потом мне дали следующее задание: намутить USART с DMA. Ну я подумал, ну всё легко, потому что уже настраивал SPI с DMA и всё работало. Я оставил настройки USART'а без DMA и делал всё строго по примеру из библиотеки, переделывая под себя. И вот такая хуйня — приходит неверное количество бит. Более того, вместо моих данных приходит мусор. Разумеется, DMA настроил правильно, по референс мануалы. Около часа залипал в код и никак не нашел ошибку, гуглил и прочее прочее. У кого-нибудь есть варианты, что не так? Код могу завтра кинуть
>>464319 История такая: Заканчиваю местный вуз по специальности радиотехника. Я очень бедный и ради прикола закинул резюме на хедхантер. Причем, в резюме не было ни слова о программировании мк, потому что я этим никогда не занимался, но схемотехникой более менее владею и основы цифровой электроники тоже знаю. В основном, я надеялся на матлаб, потому что много там работал. Неожиданно где-то через месяц написала HR строительной компании, говорят им нужен инженер программист в отдел разработки. Я говорю ок, только я ведь нихуя не умею. Она говорит, не страшно — мы научим. Ну я думаю, похуй, больше меня никуда не звали. Сделал тестовое задание, прошел собеседование. Очень сильно удивился, что взяли. Ну а в первый день дали плату и говорят: делай что хочешь у тебя весь интернет — изучай, будут вопросы — спрашивай, мы поможем. Ну и хуле я так по-тихонечку изучаю. Сначала было тяжело, но потом я начал постепенно постигать, научился проектировать и разводить печатные платы. Меня никто никуда не торопит, никто на меня не кричит, никто от меня ничего не требует — это плюс. Зарплата 15к во время стажировки — это минус. С другой стороны, я ведь просто учусь, а мне за это ещё платят. После стажировки обещают 40к, но мне кажется, я не справлюсь. Даже, если и так, это опыт.
>>464318 Странная херня, скинь глянуть когда нибудь. Я в свое время dma тоже долго не мог переварить, но ничего, справился. Если есть, кто тебе подсказывает на работе и даёт наставления это сразу плюс. Я таким же методом обучался после универа нихуя не имею знаний, повезло поработать с нормальным спецом, который говорил что делать и дальше изучать. 7ой год работаю уже.
>>464527 Я в итоге разобрался. Как оказалось, код был правильный, дело было в настройках самого проекта. Я там добавил лишнюю папку в include. Я убрал её и всё заработало. Как и обмен между двумя платами, так и по rs 232 единственное, не разобрался с прерываниями юсарта и дма. Дело вот в чем, чтобы сделать функцию, отправляющая пакет данных (100 байт условно), нужно в этой функции включить дма и разрешить запросы от юсарта на передачу. А потом нужно выключить дма и запросы, очистить флаги о передаче и вроде всё. Я настроил прерывания по окончанию передачи и для дма и для юсарта. Вроде всё должно работать, но если в теле main вызвать эту функцию два раза подряд, придёт только один пакет. Если поставить точку на этой функции, то компилятор будто ее не видит и просто проскакивает. Делать функцию __IO и Volatile тоже пробовал. Но!!! если поставить точку именно в прерывании, то оно срабатывает раза и отправляется два пакета, как и должно быть. То есть, будто всё происходит настолько быстро, что компилятор не успевает запустить прерывания, что невозможно в принципе. Разумеется, в прерываниях ставил while(get_dma_status), чтобы код не шел дальше пока флаги не сбросятся. Кароче, странная хуйня