|
0 / 0 / 0
Регистрация: 14.07.2021
Сообщений: 14
|
|
С чего вообще лучше начать путь в программировании микроконтроллеров29.07.2021, 20:50. Показов 15692. Ответов 54
Всем привет!
Появился такой вопрос "С чего же лучше начать изучение мк?".ЯП - Си. Но именно по аппаратной части, что лучше подходит новичку, чтобы серьезно этим заниматься? Хочу изучать, чтобы связать с этим будущую профессию. Буду рад почитать все ваши ответы, заранее спасибо!
0
|
|
| 29.07.2021, 20:50 | |
|
Ответы с готовыми решениями:
54
С чего начать изучение микроконтроллеров?
С чего начать в web-программировании? |
|
4083 / 2681 / 432
Регистрация: 09.09.2017
Сообщений: 11,914
|
|||||||||||||
| 30.07.2021, 13:35 | |||||||||||||
|
Я - пробовал. Когда разбирался с тем, что они там накрутили в своей реализации USB. Трижды проклянул этих наркоманов, которые ПЯТЬ раз перекладывают одни и те же аргументы из пустого в порожнее. Написать свою реализацию оказалось проще, чем разбираться в говнокоде Куба. Завязывайте с фанатизмом, ладно? ATtiny6 - оперативки нет вообще. Есть аппаратный стек на 3 числа и есть 32 регистра - все. PIC - единственный регистр, банковая организация памяти, зато возможность проводить арифметические операции регистр-память. RISC-V - инструкций работы со стеком нет вообще, все реализуется руками. Нет регистра флагов, то есть сложение 128-битных чисел становится довольно интересным. ARM - есть инструкции, которые могут выполняться или нет в зависимости от флага. Про PIC я знаю мало, поэтому его опущу. В ARM и RISC-V не всегда можно загрузить константу в регистр за одну инструкцию (просто потому что они 32-битные). Зато возможна косвенная адресация вроде lw r1, 5(r2) в отличие от AVR, где в регистр адреса надо положить точный адрес (lpm r16, X). Организация прерываний: в AVR переход идет сначала по номеру прерывания, и оттуда если надо еще один прыжок к обработчику. В ARM ядро сначала читает адрес и переходит по нему сразу. В RISC-V можно сделать как в ARM, а можно - единый обработчик всех прерываний, а там уж пусть программист решает. Организация памяти: в AVR память данных, память программ и память периферии - три разных памяти. Часть регистров периферии доступна по специальным командам in/out, а часть только через отображение на память (но это костыль) В ARM, RISC-V вся память доступна единообразным способом, плюс есть разграничение прав доступа. --- А теперь внезапный вывод: это НИКАК не опровергает мое высказывание про ассемблеры. Добавлено через 21 минуту Особенно если не писать огромные программы на ассемблере, как предлагает locm, а уметь читать интересующие куски и писать вставки. Согласитесь, что знание какого-нибудь Питона читать дизасм x86 не поможет вообще. А вот знание AVR-ассемблера хоть немного, но поможет. А для общего понимания что происходит в процессоре при выполнении кода вообще без разницы какой ассемблер. Тем более что в навороченных ARM или x86 точную последовательность далеко не всегда угадать можно. - учебная: показать как строка на ЯВУ преобразуется в машинные команды, как машинная команда оперирует регистрами и памятью, как выполняется. Сюда же работа с прерываниями, наглядное объяснение volatile и контекста выполнения. - оптимизационная: сделать небольшую inline-вставку или отдельный файл с критичным к времени или платформо-специфичным кодом (переключатели задач в ОС, например). - аналитическая: посмотреть дизасм чтобы найти багу или узкое место реализации. А учитывая, что фактических знаний о синтаксисе именно того ассемблера у учащихся почти не сохраняется, да и пользоваться им они скорее всего не будут, ничего плохого именно в "модельном" языке. Это не поможет и не помешает в дальнейшей жизни. Клинический вариант первого - Ардуина: сразу получаешь готовое поделие, которое кое-как работает. Правда, допилить до нормальной работы уже сложно. Близкий к клиническому вариант второго - я
0
|
|||||||||||||
|
|
|||||||||||
| 30.07.2021, 16:12 | |||||||||||
|
Они усложнили библиотеки ради универсальности. Чтобы получить любой класс устройства для любого МК. Что учебные или реальные задачи, я ничего не писал. Это ваши толль-домыслы!
0
|
|||||||||||
|
4083 / 2681 / 432
Регистрация: 09.09.2017
Сообщений: 11,914
|
||||||||||
| 30.07.2021, 16:39 | ||||||||||
|
Но вы старательно виляете из стороны в сторону лишь бы не признавать тот простой факт, что программирование на МК очень сильно отличается от программирования для ПК. Но мы говорили не о хороших библиотеках, а о Кубе. А вы утверждаете, что при изучении одного конкретного ассемблера под один конкретный контроллер без написания на нем сколь-нибудь сложных программ переносимость ассемблера является критически важной? Поясните свою мысль: с какой целью переносить хелло-ворлды и блинки между разными контроллерами и не лучше ли их писать с нуля? Для меня она недостатком не является, поскольку больших программ на нем я не пишу. Из чего логичный вывод, что вы пишете, или подозреваете, что ТС будет писать. Хотя непонятно зачем.
0
|
||||||||||
|
|
|||||||||
| 30.07.2021, 16:58 | |||||||||
|
pgmspace.h
__attribute__ то есть атрибут __progmem__ для компилятора. Поддерживается не всеми компилятор и тем более в стандарт Си не входит. Так что нет никакого Си для МК.
0
|
|||||||||
|
4083 / 2681 / 432
Регистрация: 09.09.2017
Сообщений: 11,914
|
||||
| 30.07.2021, 18:10 | ||||
|
0
|
||||
|
|
|||
| 30.07.2021, 18:36 | |||
|
Я пишу что на Си есть стандарт и в нем нет такого понятия как "Си для МК". Другой стиль программирования не назначает что Си другой.
0
|
|||
|
0 / 0 / 0
Регистрация: 14.07.2021
Сообщений: 14
|
|
| 30.07.2021, 19:18 [ТС] | |
|
А если начать с ARM, то будет плохо?
0
|
|
|
Модератор
8981 / 6748 / 921
Регистрация: 14.02.2011
Сообщений: 23,867
|
|
| 30.07.2021, 20:52 | |
|
locm, COKPOWEHEU, давно не виделись, да
![]() прекращайте пикетирование, ТС вы не поможете еще сильней запутаете, а друг с другом вам договорится вряд ли удастся резюмируйте свои пожелания я так понял COKPOWEHEU, -AVR и ассемблер locm, - ARM,точнее его разновидность STM, и Си свое мнение высказывать не буду, дабы не раздувать холивар единственно скажу Kaiff, чтобы научится плавать надо лезть в воду, а не спрашивать какие плавки купить возьми какой-нибудь китайский брелок, разбери его и попытайся повторить, половина вопросов сами исчезнут Правда появятся другие но это уже совсем другая история
0
|
|
|
4083 / 2681 / 432
Регистрация: 09.09.2017
Сообщений: 11,914
|
|||||
| 30.07.2021, 22:21 | |||||
|
0
|
|||||
|
|
||
| 30.07.2021, 23:44 | ||
|
Думайте что для вас важнее, видеть как выполняется программа или представлять как выполняется программа (по началу это не просто, т. к. опыта нет).
0
|
||
|
1983 / 1276 / 131
Регистрация: 04.01.2010
Сообщений: 4,607
|
|||
| 31.07.2021, 13:28 | |||
|
Добавлено через 5 минут ...в AVR озвучен debugWIRE, это в девайсах, в которых нет JTAG. Но, честно сказать, я им никогда не пользовался, и о качестве дебага ничего сказать не могу. Добавлено через 8 минут И да - это не "Си для МК", но это отдельный набор макросов, команд компилятору, которых нет ни в одном PC-шном компиляторе, но есть в любом МК-шном.
0
|
|||
|
|
||||
| 31.07.2021, 18:34 | ||||
|
Из-за некоторых может быстро израсходоваться лимит стираний флешки и/или заглючить программа в МК из-за отладчика. Кроме того debugWIRE отладчик стоит немалых денег.
0
|
||||
|
4083 / 2681 / 432
Регистрация: 09.09.2017
Сообщений: 11,914
|
|||
| 31.07.2021, 20:12 | |||
|
Поэтому я и разделяю "Си для МК" и "Си для ПК". Особым любителям придираться к словам еще раз рекомендую обратить внимание на кавычки.
0
|
|||
|
Native x86
6857 / 3790 / 1025
Регистрация: 13.02.2013
Сообщений: 11,861
|
|
| 01.08.2021, 01:19 | |
|
Блин, далась вам эта отладка!
В половине устройств, под которые приходилось писать прошивку, остановка контроллера -- это в лучшем случае состояние "отлаживать уже нечего", т.е. срабатывание внутрисхемной защиты от бабаха силовых элементов, и полное разрушение контекста. Отлаживать нужно в эмуляторе, где и течение времени можно притормозить хоть в миллион раз, и бабахов не будет ни при каких раскладах. Что касается исчерпания лимита перезаписи flash, то это не смешно. Даже если ценой многомесячной отладки удалось довести контроллер до помирания флеша, то берем другой и мучаем дальше, чай не коллайдер. Когда-то, напомню, контроллеры были вообще однократно программируемыми, и ничего, жили как-то с этим.
0
|
|
|
4083 / 2681 / 432
Регистрация: 09.09.2017
Сообщений: 11,914
|
|||
| 01.08.2021, 09:16 | |||
|
Плюс одна из задач отладки - определить где именно контроллер заклинил. Правда, это не слишком поможет, поскольку непонятно как он туда попал и почему не может выбраться.
0
|
|||
|
Модератор
8981 / 6748 / 921
Регистрация: 14.02.2011
Сообщений: 23,867
|
|
| 01.08.2021, 09:24 | |
|
0
|
|
|
|
|||
| 01.08.2021, 11:03 | |||
|
И не на все МК есть эмулятор.
0
|
|||
|
1983 / 1276 / 131
Регистрация: 04.01.2010
Сообщений: 4,607
|
||
| 01.08.2021, 19:17 | ||
|
PS: показатель количества записей, я так себе подозреваю, устанавливается производителей, исходя из спецификации. То есть производитель, скажем, гарантирует, что при температуре -40 или +80 FLASHвыдержит 100 перезаписей (без ошибки) при питании МК, например, 2,2В и, главное - данные будут сохраняться заданное количество времени. Конечно, данные с потолка, но это для сути. Это значит, что, скажем, повторная запись будет иметь ту же вероятность ошибки (и скорее всего не произойдет). И вероятность повторной ошибки очень низкая, поначалу, особенно если МК программируется в нормальных условиях. То есть МК в режиме отладки можно смело "убивать", как с точки зрения ремонтопригодности, так и с точки зрения надежности FLASH.
0
|
||
|
Модератор
8981 / 6748 / 921
Регистрация: 14.02.2011
Сообщений: 23,867
|
|
| 01.08.2021, 19:20 | |
|
0
|
|
|
Native x86
6857 / 3790 / 1025
Регистрация: 13.02.2013
Сообщений: 11,861
|
||
| 02.08.2021, 01:09 | ||
|
0
|
||
| 02.08.2021, 01:09 | |
|
Помогаю со студенческими работами здесь
40
С чего начать заниматься в олимпиадном программировании С чего начать новенькому в Web программировании ? С чего вообще стоит начать? Как лучше делить приложение при программировании в WF? А то кодовая каша получается. Вообще читать невозможно InternetRadio - с чего вообще начать, где что искать? Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
|
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу,
и светлой Луне.
В мире
покоя нет
и люди
не могут жить в тишине.
А жить им немного лет.
|
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила»
«Время-Деньги»
«Деньги -Пуля»
|
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога
Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
|
|
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога
Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
|
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL3_image
8Observer8 10.02.2026
Содержание блога
Библиотека SDL3_image содержит инструменты для расширенной работы с изображениями. Пошагово создадим проект для загрузки изображения формата PNG с альфа-каналом (с прозрачным. . .
|
Установка Qt-версии Lazarus IDE в Debian Trixie Xfce
volvo 10.02.2026
В общем, достали меня глюки IDE Лазаруса, собранной с использованием набора виджетов Gtk2 (конкретно: если набирать текст в редакторе и вызвать подсказку через Ctrl+Space, то после закрытия окошка. . .
|
SDL3 для Web (WebAssembly): Работа со звуком через SDL3_mixer
8Observer8 08.02.2026
Содержание блога
Пошагово создадим проект для загрузки звукового файла и воспроизведения звука с помощью библиотеки SDL3_mixer. Звук будет воспроизводиться по клику мышки по холсту на Desktop и по. . .
|