|
0 / 0 / 0
Регистрация: 14.07.2021
Сообщений: 14
|
|
С чего вообще лучше начать путь в программировании микроконтроллеров29.07.2021, 20:50. Показов 15673. Ответов 54
Всем привет!
Появился такой вопрос "С чего же лучше начать изучение мк?".ЯП - Си. Но именно по аппаратной части, что лучше подходит новичку, чтобы серьезно этим заниматься? Хочу изучать, чтобы связать с этим будущую профессию. Буду рад почитать все ваши ответы, заранее спасибо!
0
|
|
| 29.07.2021, 20:50 | |
|
Ответы с готовыми решениями:
54
С чего начать изучение микроконтроллеров?
С чего начать в web-программировании? |
|
Native x86
6857 / 3790 / 1025
Регистрация: 13.02.2013
Сообщений: 11,861
|
|
| 29.07.2021, 22:39 | |
|
Схемотехнику и электронику знаете хотя бы на базовом уровне?
Не по теме: Закон Ома? Без понимания электрических схем профессии у вас не выйдет, потому что программисту контроллеров всегда приходится взаимодействовать со всеми этими транзисторами, делителями, светодиодами, и прочим электронным барахлом. Иногда это здорово облегчает жизнь, если на начальных этапах разработки устройства суметь аргументированно обосновать изменения в схеме, которые программисту удобнее в реализации прошивки. А так, купить на алике отладочную плату простейшего микроконтроллера, например эту. Она выгодно отличается от других плат тем, что на ней уже распаян полный учебный набор: переменный делитель напряжения, два светодиода, две кнопки (плюс reset), и при этом все пины подключены к схеме через перемычки и их можно подключать/отключать/менять местами. Эту плату можно использовать и просто для программирования микросхем ATtiny 13/25/45/85 благодаря панельке. Кроме платы, еще нужен USB-программаатор для этого семейства контроллеров, например. Программатор универсальный и подходит для прошивки любого контроллера AVR, не только этой отладочной платы, нужно только правильно соединить ножки микросхемы с выводами шлейфа программатора. Добавлено через 5 минут Есть еще несколько больших семейств микроконтроллеров, например, PIC или STM. PIC по своей сути мало чем отличается от AVR (одна контора), но программатор для них гораздо дороже. А начинать с STM не советую. Они хоть и более быстрые, но там вся документация по-дурацки организована, и начать работать с ними труднее. Помигайте светодиодами на ATtiny, а потом можете смотреть на другие семейства.
1
|
|
|
Native x86
6857 / 3790 / 1025
Регистрация: 13.02.2013
Сообщений: 11,861
|
|
| 30.07.2021, 01:15 | |
|
locm, ага, а теперь еще и одни из самых дорогих.
Я не советую начинать с STM, просто потому что держать перед глазами три здоровенных PDF-а для того, чтобы понять, что вообще делать -- вариант не для "чайника". Да и учебных плат вменяемых для них ни разу не видел, сплошь почти голые переходники с SMD-микросхемы на "гребенку", для любителей проволочных поделок arduino-style. КСТАТИ! Kaiff, запомни слово "Arduino" и, если хочешь профессионально работать с контроллерами, то никогда не прикасайся ни к каким изделиям этой серии.
0
|
|
|
651 / 404 / 76
Регистрация: 21.09.2008
Сообщений: 1,396
|
||
| 30.07.2021, 04:26 | ||
|
2
|
||
|
4083 / 2681 / 432
Регистрация: 09.09.2017
Сообщений: 11,910
|
||||
| 30.07.2021, 10:04 | ||||
|
Лично я возражаю против Ардуины потому что она провоцирует характерный подход "тяп-ляп и сойдет" включая как использование кривых готовых библиотек, так и готовых модулей. Причем готовые модули само по себе далеко не всегда кривые, но тот же ардуино-подход провоцирует не делать нормальную плату, а лепить все на беспаечной макетке (в лучшем случае - спаивать проводками) и заливать термосоплями, в результате чего полученное "изделие" выглядит, да и работает, как известная субстанция. Конечно, при должном опыте можно с этим бороться - использовать вместо Ардуинской IDE человеческую AVRStudio или хотя бы AtmelStudio, использовать готовые модули только для отладки, после чего распаивать по-нормальному. Но для этого нужно хотя бы пару раз приложиться граблями по лбу.
1
|
||||
|
1983 / 1276 / 131
Регистрация: 04.01.2010
Сообщений: 4,607
|
||||
| 30.07.2021, 10:18 | ||||
|
также соглашусь с критикой выше. На мой взгляд, изучать МК можно от задач. И на сегодня есть уже несколько устоявшихся "уровней" имбеддед. На самом низком уровне люди тесно контачат с электроникой и супер-мелкими МК, заостряя внимание на взаимодействии кода и логики внутри МК и снаружи. На уровне по-выше люди выполняют проект на МК плюс недостающей периферии на микросхемах и модулях. Это и есть уровень или голого Си в программировании, либо всяких Ардуино. И на более высоком (в плане иерархии, а не мастерства или сложности) уровне люди собирают программы на модульном уровне. Это платформы уровня Raspberry Pi, и пр., когда конфигурирование и сборка на базе Линукса становится основой проекта. ТС, Вам нужно самому определиться, на каком уровне вы хотите сфокусироваться. Но на начальном этапе я бы поигрался как раз на платформах "Ардуино" или каких-нибудь специализированных evaluation board' ах, с каким-нибудь набором датчиков (посоветую борды от ST, TI, NXP или Nordic). Надо также понимать, что Ардуино даст начальный толчок в познании системы "вцелом", но потом придется углубиться в изучение каждого компонента в частности. Скажем, "вертолет полетит", "машинка поедет", но точно знать, как был опрошен какой-то датчик - вы не будете. А в случае с EVO-бордами - у вас на руках будет довольно ёмкий мануал - как запустить тот или иной компонент, чтобы вы смогли поупражняться в программировании МК в целом, и взаимодействия с конкретными датчиками - в частностями. Я бы поставил на это. Скажем, борда на базе STM32F769 (купленная по случаю для одной задачи) мне очень понравилась. Для оживления знакомства - к ней бы прикупить десяток-два датчиков Ардуино с Али - и будет чем "развлекаться" на пол-года ).
1
|
||||
|
0 / 0 / 0
Регистрация: 14.07.2021
Сообщений: 14
|
||
| 30.07.2021, 10:41 [ТС] | ||
|
А если именно с плат то лучше ATtiny?
Просто множество знакомых говорят начинать с STM или Arduino. Про Ассемблер тоже плохо отзываются ссылаясь на то что очень сложно будет его изучать. А с физикой и электроникой со школы знания крепкие остались. Добавлено через 9 минут
0
|
||
|
4083 / 2681 / 432
Регистрация: 09.09.2017
Сообщений: 11,910
|
||||
| 30.07.2021, 11:35 | ||||
|
По сравнению с тиньками у них достаточно выводов (28 минус питание, земля, ресет и кварц получается 20), есть почти вся основная периферия - таймеры, UART, I2C, SPI, даже АЦП. Но при этом корпус не такой монструозный, как у каких-нибудь ATmega32. А по сравнению со старшими AVR а тем более ARM - опять же приятный корпус, под который можно развести плату буквально чем угодно - ЛУТом, маркером, даже процарапать. Если будете делать плату внучную
Стоит предусмотреть систему питания. Возможно, от USB, возможно от внешнего блока питания - тогда стоит поставить стабилизатор 5 В, а лучше два переключаемых - на 5В и на 3.3В для совместимости с разной периферией. Не забыть фильтрующие конденсаторы. Для АЦП часто рекомендуют ставить дополнительную развязку, но для отладочной платы это все же лишнее, поэтому VCC и AVCC можно просто соединить. AREF можно вывести на штырек, но можно просто оставить болтаться в воздухе. Естественно, не забыть ISP-6 или ISP-10 разъем программирования. Рекомендую именно ISP-10, причем у него 3 нога обычно не используется - можно туда завести вывод CS контроллера чтобы подключать SPI-устройства мало-мальски стандартным разъемом. Разъем UART для обмена отладочными сообщениями. Лично я ставлю трехконтактный разъем Rx-GND-Tx чтобы была возможность соединить любое устройство с любым просто перевернув шлейф. 2-3 светодиода. Можно через джампер или даже цифровой буфер чтобы была возможность их отключить на случай если эти выводы под что-то понадобятся. 1-2 кнопки. Лучше между выводом и землей, чем между выводом и питанием. В противном случае придется ставить резисторы. А вот навешивать всякие крутилки и дисплеи вряд ли нужно - они все либо на один раз поиграться, либо будут мешать другой периферии. А для отладки и UART хватит. Максимальное число ножек вывести на гребенки, но без фанатизма. Если "обычная" ножка ну вот никак не помещается, то и плюнуть. Исключение если там висит какая-то периферия вроде SPI или I2C, до которой иначе не добраться. Но тут надо понимать, что ассемблер это не для повседневного программирования, а для того, чтобы прочувствовать контроллер, понять как он работает на низком уровне. Ну и не бояться залезать в дизассемблерный выхлоп чтобы посмотреть где именно "компилятор начудил" и как его убедить работать правильно. Когда освоите базовые конструкции можно переходить на Си.
0
|
||||
|
0 / 0 / 0
Регистрация: 14.07.2021
Сообщений: 14
|
|
| 30.07.2021, 12:07 [ТС] | |
|
0
|
|
|
1983 / 1276 / 131
Регистрация: 04.01.2010
Сообщений: 4,607
|
|||
| 30.07.2021, 12:20 | |||
|
А с STM Cube вы получаете какую-никакую рабочую конфигурацию, тем более если речь идет об evaluation-борде. В этом смысле у AVR есть разве что имеет мастер проектов от CodeVision AVR, но я не уверен, что этот проект поддерживает последние версии чипов, давно его не видел. Есть еще KEIL - его библиотеки тоже (относительно) визуально позволяют настраивать периферию. на мой взгляд, если вы хорошо себя чувствуете в (относительно) больших проектах на Си, ориентируетесь в embedded билд-системе, и знаете где что можно посмотреть - то беритесь за STM'ки. Если вы на знакомы с озученным - возьмитесь за AVR - он просто меньше по объему всего этого. Потом привыкнете и прыгнете уже, куда Вам интереснее. Потому что есть довольно большие платформы (как у нордика, например), с большим количеством уровней в иерархии библиотек. И это начинает пугать, потому что изначально не понимаешь, где и что тебе надо написать и откуда взять. Добавлено через 5 минут 1) Ассемблер жутко платформозависимый. Каждый процессор, даже если он в одной платформе, может иметь свои специальные команды и особенности. Это все учитывает компилятор, но в случае с ручным написанием кода нужно постоянно это учитывать. 2) Ассемблеры разных плаформ, да и можно сказать - принцип использования конструкций в алгоритме - фундаментально отличаются. Это касается как синтакиса команд, так и их набора. То есть фактически да - зная 2-3 ассемблера разных платформ, вы можете со временем быстро писать на очередном другом асме. Но имея в голове 10-20 разных синтаксисов и особенностей это не так-то просто сделать. Вместо этого можно 1 раз научиться писать программы на Си.
0
|
|||
|
|
|||||
| 30.07.2021, 12:22 | |||||
|
Для того чтобы писать для компа не изучаете от и до все его железо? С МК также.
0
|
|||||
|
1983 / 1276 / 131
Регистрация: 04.01.2010
Сообщений: 4,607
|
|
| 30.07.2021, 12:33 | |
|
3) Код на ассемблере имеет в десяток раз больше размер. Его очень тяжело дебажить и саппортить (что-то менять). Да, можно, конечно организовать кучу темплейтов или макросов, обложиться тулами по организации памяти и т.д., но зачем они, если все это очень эффективно и безошибочно работает в Си? Победить компилятор, имея достаточные знания в Си почти невозможно. ) однажды мне удалось втиснуть в скомпиленый кем-то код девайса хакерскую приблуду, на месте сэкономленном моей же оптимизацией кода (на AVR ассемблере), чтобы высвободить место. Но это было 2 или 4 инструкции и 3 дня работы - уже не помню.
0
|
|
|
|
|||||||
| 30.07.2021, 12:35 | |||||||
|
Тактирование можно вообще не настраивать. Для изучения хватит тактовой 8 МГц. Нужно запомнить что перед работой с периферией нужно включать ее тактирование. Если использовать библиотеку то будет не сложно. Вот к примеру Blink для F103. https://www.cyberforum.ru/atta... 1527795937
0
|
|||||||
|
4083 / 2681 / 432
Регистрация: 09.09.2017
Сообщений: 11,910
|
||||||
| 30.07.2021, 12:37 | ||||||
|
По большому счету решать вам. Попробуйте программировать на Си - если получится, будет огромный плюс к мотивации, что тоже важно. В принципе, можно и так, а ассемблер потыкать позже. Или, например, подглядывать в дизассемблерный выхлоп, анализировать как какие конструкции разворачиваются. Поэтому платформо-зависимость ассемблера недостатком не является. Тем более если не пытаться писать на нем операционки. Он нужен только чтобы понять как процессор вообще работает - причем любой процессор. Умения программировать на нескольких ассемблерах обычно не требуется, а прочитать код даже на незнакомом ассемблере (тот же выхлоп дизасма) проблем не составит. Говорю по своему опыту, поскольку начинал с AVR+Assembler, потом AVR+C -> stm32+C -> RISC-V+asm -> RISC-V+C и вот недавно просматривал STM32-ассемллер - ничего страшного, вполне читаемо.
0
|
||||||
|
1983 / 1276 / 131
Регистрация: 04.01.2010
Сообщений: 4,607
|
||
| 30.07.2021, 12:41 | ||
|
0
|
||
|
4083 / 2681 / 432
Регистрация: 09.09.2017
Сообщений: 11,910
|
|||||||||||||
| 30.07.2021, 12:49 | |||||||||||||
Добавлено через 3 минуты И ровно тем же STM хуже AVR для обучения.
1
|
|||||||||||||
|
|
||||||
| 30.07.2021, 12:52 | ||||||
|
А вот например на асме переносимую программу между x86, AVR и ARM невозможно.
0
|
||||||
|
4083 / 2681 / 432
Регистрация: 09.09.2017
Сообщений: 11,910
|
||
| 30.07.2021, 12:54 | ||
|
0
|
||
|
1983 / 1276 / 131
Регистрация: 04.01.2010
Сообщений: 4,607
|
||||||
| 30.07.2021, 13:11 | ||||||
. "ну, можно и обезьяну научить курить" <C>. В смысле вы конечно можете писать на ассемблере ARM писать программы так, как вы это делаете для AVR. Но это ж не значит, что эти программы вообще-то могли бы быть написаны в 1,5-2 раза эффективнее, и занимать меньше места, соответственно.Но речь о другом была - мы говорили о необходимости изучать ассемблер, чтобы на нем писать программы, не читать. А это совершенно другая задача. Не по теме: PS: я когда писал GUI и серверные задачи под PC - ни разу не интересовался и не лазил в асме и даже API Windows, особо. Достаточно было смотреть в MSDN, и никогда не "ходил" до ассемблерного уровня. Хотя я писал на Паскале (Delphi), и мне приходилось таки уточнять соответствия типов данных и вызова функций между их Си и Паскалем. Может быть, и зря, но вообще - смысла для меня изучать дебри x86-го ассемблерного дизасма не было никакого. Добавлено через 16 минут
0
|
||||||
| 30.07.2021, 13:11 | |
|
Помогаю со студенческими работами здесь
20
С чего начать заниматься в олимпиадном программировании С чего начать новенькому в Web программировании ? С чего вообще стоит начать? Как лучше делить приложение при программировании в WF? А то кодовая каша получается. Вообще читать невозможно InternetRadio - с чего вообще начать, где что искать? Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
SDL3 для Web (WebAssembly): Обработчик клика мыши в браузере ПК и касания экрана в браузере на мобильном устройстве
8Observer8 02.02.2026
Содержание блога
Для начала пошагово создадим рабочий пример для подготовки к экспериментам в браузере ПК и в браузере мобильного устройства. Потом напишем обработчик клика мыши и обработчик. . .
|
Философия технологии
iceja 01.02.2026
На мой взгляд у человека в технических проектах остается роль генерального директора. Все остальное нейронки делают уже лучше человека. Они не могут нести предпринимательские риски, не могут. . .
|
SDL3 для Web (WebAssembly): Вывод текста со шрифтом TTF с помощью SDL3_ttf
8Observer8 01.02.2026
Содержание блога
В этой пошаговой инструкции создадим с нуля веб-приложение, которое выводит текст в окне браузера. Запустим на Android на локальном сервере. Загрузим Release на бесплатный. . .
|
SDL3 для Web (WebAssembly): Сборка C/C++ проекта из консоли
8Observer8 30.01.2026
Содержание блога
Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
|
|
SDL3 для Web (WebAssembly): Установка Emscripten SDK (emsdk) и CMake для сборки C и C++ приложений в Wasm
8Observer8 30.01.2026
Содержание блога
Для того чтобы скачать Emscripten SDK (emsdk) необходимо сначало скачать и уставить Git: Install for Windows. Следуйте стандартной процедуре установки Git через установщик. . . .
|
SDL3 для Android: Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 29.01.2026
Содержание блога
Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами. Версия v3 была полностью переписана на Си, в. . .
|
Инструменты COM: Сохранение данный из VARIANT в файл и загрузка из файла в VARIANT
bedvit 28.01.2026
Сохранение базовых типов COM и массивов (одномерных или двухмерных) любой вложенности (деревья) в файл, с возможностью выбора алгоритмов сжатия и шифрования.
Часть библиотеки BedvitCOM
Использованы. . .
|
SDL3 для Android: Загрузка PNG с альфа-каналом с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 28.01.2026
Содержание блога
SDL3 имеет собственные средства для загрузки и отображения PNG-файлов с альфа-каналом и базовой работы с ними. В этой инструкции используется функция SDL_LoadPNG(), которая. . .
|