на каком языке программировать микроконтроллеры

Digitrode

цифровая электроника вычислительная техника встраиваемые системы

Современные языки программирования микроконтроллеров и встраиваемых систем

Современные тенденции программирования микроконтроллеров

В течение многих лет программирование микроконтроллеров предусматривало выбор между двумя языками: C и ассемблер. Но с появлением новых языков, доступных для микропроцессоров, пользователи сталкиваются с большим количеством решений для разработки приложений.

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

Языки программирования C и ассемблер

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

Си и сегодня является популярным языком микроконтроллеров, хотя он был разработан в начале 1970-х годов. Для использования с микроконтроллерами язык C хорошо работает, потому что он способен обрабатывать выделение памяти, а также выполнять относительно сложные функции, такие как операторы if, циклы и математические выражения.

Ассемблер предлагает альтернативу C с несколькими преимуществами. Ассемблер – это более старый язык, который часто использует код, специфичный для устройства, который преобразуется с помощью служебной программы. Используя этот язык, разработчик получает прямой доступ к процессору, где процедуры могут быть тщательно настроены для точного времени применения. Ассемблер предлагает лучшее использование процессора, а также дополнительные наборы инструкций, которые C не поддерживает, такие как битовые манипуляции с конкретными инструкциями.

MicroPython

Python – это многофункциональный интерпретируемый язык, известный своей простотой, понятностью и универсальностью. Эти функции также делают язык слишком большим для микроконтроллеров. Однако с помощью кампании на Kickstarter в 2013 году физик Дэмиен Джордж смог адаптировать Python в уменьшенную версию MicroPython, которая подходит для использования на микроконтроллере.

Код MicroPython является открытым исходным кодом под лицензией MIT. Язык работает на голом железе микропроцессора, используя небольшое подмножество функций стандартной библиотеки Python. Он может работать, используя только 256 КБ flash-памяти и 16 КБ ОЗУ, но при этом он хорошо совместим с обычным Python.

на каком языке программировать микроконтроллеры. Смотреть фото на каком языке программировать микроконтроллеры. Смотреть картинку на каком языке программировать микроконтроллеры. Картинка про на каком языке программировать микроконтроллеры. Фото на каком языке программировать микроконтроллеры

Первоначально разработанный для работы на системах на базе ARM, включая BBC micro:bit, Adafruit Circuit Playground Express и MicroPython PyBoard, он также стал доступен для других процессоров, включая ESP8266 и ESP32.

MicroPython дает преимущества при прототипировании сложных проектов. Например, на ESP8266 создание проектов Интернета вещей можно выполнить несколькими простыми вызовами функций, чтобы подключить проект на MicroPython к локальной точке Wi-Fi и начать потоковую передачу информации MQTT.

Blockly

Blockly – это библиотека программирования с открытым исходным кодом, поддерживаемая Google, целью которой является сделать код визуально логичным с помощью перетаскиваемых блоков.

Вместо того чтобы полагаться на слова и фразы языков программирования, которые не имеют смысла в обычном разговоре, пользователи помещают блоки в среду и соединяют их вместе, чтобы определить, как программа будет себя вести. Например, вместо написания оператора IF пользователи перетаскивают блок IF на нужное место, а результирующие действия также перетаскиваются внутри блока оператора IF.

на каком языке программировать микроконтроллеры. Смотреть фото на каком языке программировать микроконтроллеры. Смотреть картинку на каком языке программировать микроконтроллеры. Картинка про на каком языке программировать микроконтроллеры. Фото на каком языке программировать микроконтроллеры

После создания совокупности блоков пользователи могут экспортировать свой код Blockly в несколько языков, включая javascript, Python, PHP, Lua и Dart. Одним из преимуществ системы Blockly является то, что ошибки практически невозможны, поскольку блоки требуют определенных соединений и не позволяют соединяться несовместимым блокам.

Хотя этот метод программирования доступен на многих платформах, включая Micro Bit и Adafruit Circuit Playground Express, он не предназначен для использования в качестве конечного коммерческого продукта. Однако это очень полезно на этапах создания прототипа, особенно если требуется подтверждение концепции, а изучение особенностей устройства может занять слишком много времени (например, регистры, биты конфигурации и конфигурация IDE).

Arduino C++

Хотя его часто называют «языком программирования Arduino», Arduino фактически программируется на старом добром C++ и использует подмножество библиотек, специфичных для Arduino.

Отличия Arduino C++ от обычного C++ заключаются в подпрограммах для микроконтроллеров, поскольку стандартные функции библиотеки C++ не могут работать на ограниченных мощностях и памяти.

на каком языке программировать микроконтроллеры. Смотреть фото на каком языке программировать микроконтроллеры. Смотреть картинку на каком языке программировать микроконтроллеры. Картинка про на каком языке программировать микроконтроллеры. Фото на каком языке программировать микроконтроллеры

Использование такой уменьшенной версии C++ делает этот язык очень доступным, так как многие разработчики уже знакомы с обычным C++. Фактически, используя компилятор, код может быть написан на C++, а затем интерпретирован в код, который может использоваться Arduino.

Преимущество использования Arduino C++ состоит в том, что он подходит для коммерческих сред, работает быстрее, чем более крупные языки, такие как Python, и обладает высокой переносимостью. Компиляция кода на ядре ARM первоначально для Uno автоматически выполняется библиотекой с использованием универсальных функций.

BASIC

BASIC – это язык, который впервые появился в 60-х годах и достиг своего расцвета с появлением персональных компьютеров в 80-х годах. BASIC (аббревиатура для универсального символического кода инструкции для начинающих или Beginner’s All-Purpose Symbolic Instruction Code) по-прежнему используется до сих пор из-за своей простоты и интерпретируемой природы, которая позволяет разработчику сосредоточиться больше на оборудовании, а не на программном обеспечении.

При использовании на микроконтроллере BASIC интерпретируется, что приводит к снижению производительности. Тем не менее, язык имеет преимущество в том, что он очень переносим. Любой код, написанный на бейсике, будет работать на любом устройстве с интерпретатором бейсика.

на каком языке программировать микроконтроллеры. Смотреть фото на каком языке программировать микроконтроллеры. Смотреть картинку на каком языке программировать микроконтроллеры. Картинка про на каком языке программировать микроконтроллеры. Фото на каком языке программировать микроконтроллеры

Два примера использования BASIC на микроконтроллерах – это BASIC Stamp (производства Parallax) и PICAXE, которые производятся компанией PICAXE и используют микроконтроллеры PIC Microchip. BASIC является хорошим языком для создания прототипов и даже разработки аппаратного обеспечения, но его следует избегать в коммерческих продуктах из-за его низкой скорости и высокого энергопотребления.

Выводы

При работе с микроконтроллерами в прошлом разработчику приходилось выбирать предпочитаемую платформу, а затем изучать язык, который он использует. Благодаря достижениям в области языков и программного обеспечения, в наши дни язык иногда предопределяет, какую платформу использовать. Если разработчик ищет определенную функцию, такую как поддержка GPIO, сетевое взаимодействие, возможность связи по SSH или другие, то выбор языка и систем может быть важным фактором в поиске наилучшего пути развития.

Язык, который выбирают пользователи, важен, но всегда полезно помнить, что не существует такого понятия, как «единственный лучший язык» или «единственный лучший микроконтроллер». В конце концов, лучший выбор – это то, к чему призывает приложение.

Источник

Микроконтроллеры Процессоры, проекты, программирование

Nav view search

Навигация

Искать

Языки программирования микроконтроллеров

Языки программирования микроконтроллеров по своей структуре мало отличаются от классических языков для компьютеров. Единственным отличием становится ориентированность на работу со встроенными периферийными устройствами. Архитектура микроконтроллеров требует, например, наличия битово-ориентированных команд. Последние позволяют выполнять работу с отдельными линиями портов ввода/вывода или флагами регистров. Подобные команды отсутствуют в большинстве крупных архитектур. Даже ядро ARM, активно применяемое в микроконтроллерах, не содержит битовых команд, вследствие чего разработчикам пришлось создавать специальные методы битового доступа.

Ассемблер

Ассемблер является языком самого низкого уровня. При этом он позволяет наиболее полно раскрыть все возможности микроконтроллеров и получить максимальное быстродействие и компактный код. В некоторых случаях альтернативы ассемблеру нет, но тем не менее он имеет множество недостатков. Несмотря на получаемую компактность машинного кода, программа, написанная на языке Ассемблер, громоздка и труднопонимаема. Для ее создания требуется отличное знание архитектуры и системы команд микроконтроллеров.
Ассемблер отлично подходит для программирования микроконтроллеров, имеющих ограниченные ресурсы, например 8-ми битных моделей с малым объемом памяти. Для больших программ и тем более 32-разрядных контроллеров, лучше использовать другие языки, отличающиеся более высоким уровнем. Это позволит создавать более сложные и при этом понятные программы.

Язык программирования С/С++, относится к языкам более высокого уровня, по сравнению с Ассемблером. Программа на этом языке лучше понятна человеку. Достоинством С/С++ является огромное число программных средств и библиотек, позволяющих просто создавать необходимый код. Фактически, С/С++ сегодня стал основным языком разработки управляющих программ. Компиляторы данного языка реализованы практически для всех моделей микроконтроллеров. Стандартный язык дает возможность переноса программ с одной платформы на другую. Теоретически, используя разные компиляторы, можно преобразовать любую программу в команды микроконтроллера нужного типа. На практике дополнительно требуется учитывать архитектуру микроконтроллера каждого типа.
Язык С/С++ имеет достаточно сложную для изучения структуру. Получаемый программный код конкретной задачи, имеет больший объем, чем код той же задачи, реализованной на Ассемблере. Тем не менее язык С/С++ следует признать единственным правильным выбором для профессионального программирования микроконтроллеров.

Pascal

Язык Pascal еще более удобен для восприятия и изучения. Тем не менее, он не имеет такого распространения как C/C++, особенно при программировании микроконтроллеров. Некоторые отдельные фирмы поддерживают данный язык, с целью упрощения перехода на контроллеры с больших ПК. В частности вариант языка под названием MicroPASCAL входит в состав поставки отладочных средств фирмы Mikroelektronika.

BASIC

Старинный язык первоначального обучения программированию, в настоящее время в основном сохранился в виде реализации Visual BASIC от Microsoft. Используется он и для программирования микроконтроллеров. Реализаций этого языка гораздо больше, чем того же Pascal. Связано это в первую очередь с простотой языка. BASIC часто выбирают разработчики программно-аппаратных платформ, нацеленных на упрощенную разработку электронных устройств. Можно назвать такие проекты, как PICAXE, Amicus18, microBASIC и некоторые другие. Недостатком BASIC является плохая структурированность кода. Этот язык не стоит выбирать для первоначального изучения с целью дальнейшего перехода на С/С++. Программирование микроконтроллеров на BASIC можно рекомендовать любителям, не нацеленным на создание, в основном, простых устройств.

Визуальные языки

на каком языке программировать микроконтроллеры. Смотреть фото на каком языке программировать микроконтроллеры. Смотреть картинку на каком языке программировать микроконтроллеры. Картинка про на каком языке программировать микроконтроллеры. Фото на каком языке программировать микроконтроллерыВ отличие от классических языков программирования, визуальные языки позволяют разрабатывать программы в виде изображений. Среди таких языков можно выделить FlowCODE или Scratah. Достоинством визуальных языков является хорошо воспринимаемая структура алгоритма. Это позволяет просто разобраться в его функционировании любому человеку, знающему основные символы языка. Перевод структурных схем в команды микроконтроллера, как правило, выполняется не сразу. Вначале алгоритм транслируется в команды ассемблера или какого-либо языка высокого уровня. Только затем, все преобразуется в машинный код. Такая схема, несмотря на свою сложность, позволяет использовать наиболее удобные компиляторы разных разработчиков.

Еще одним достоинством визуального программирования становится простота изучения, поэтому подобные языки часто используются для обучения детей. Недостатком визуального подхода является громоздкость исходных материалов. Тем не менее, подобные языки программирования нашли очень большое распространение для решения специальных задач.

Заключение

Выбор того или иного языка программирования зависит от множества факторов. В первую очередь необходимо определиться с типом решаемых задач и необходимым качеством кода. Если не требуется разработка объемных и сложных программ, то можно использовать практически любой язык. Для обеспечения компактности кода подойдет Ассемблер, а если ставятся серьезные задачи, то альтернативы С/С++ практически нет. Также необходимо учитывать доступность компилятора. В некоторых случаях, реализация языка может вообще отсутствовать, или предлагаться за солидные деньги. В итоге самым универсальным решением можно назвать связку Ассемблера и C/C++.

Источник

На каком языке сейчас чаще всего программируют микроконтроллеры?

Простой 1 комментарий

У Java ME есть минимальные системные требования для целевых устройств.
Взглянув на них, становится понятно, что это не для микроконтроллеров в общем случае. Конечно, встраиваемая система встраиваемой системе рознь, но вот микроконтроллеры ещё используют не только для встраиваемых систем, а прямо в железо, например, радио-приемопередающего устройства, спроектированного на работу с протоколом физического уровня. Такие контроллеры могут иметь килобайты памяти всех видов. Зачастую, такие девайсы предлагают не так много ассемблерных инструкций, чтобы имело смысл делать под них компилятор Си. В более универсальных микроконтроллерах компилятор есть, поэтому это вполне себе повод для радости.

Там, где можно развернуть JME, уже есть Linux kernel, поэтому ответ на вопрос о том, почему больше используется Си, чем Java, заключается в том, чем занимается компания, в чем у нее бизнес и какой у нее рынок. Количественно, решений, которым нужно JME просто меньше, относительно тех, в которых не нужна прослойка в виде ОС.

на каком языке программировать микроконтроллеры. Смотреть фото на каком языке программировать микроконтроллеры. Смотреть картинку на каком языке программировать микроконтроллеры. Картинка про на каком языке программировать микроконтроллеры. Фото на каком языке программировать микроконтроллеры

Удачи с размещением виртуальной машины Java + кода самой программы с учетом имеющихся ресурсов.

Удачи с размещением виртуальной машины Java + кода самой программы с учетом имеющихся ресурсов.

на каком языке программировать микроконтроллеры. Смотреть фото на каком языке программировать микроконтроллеры. Смотреть картинку на каком языке программировать микроконтроллеры. Картинка про на каком языке программировать микроконтроллеры. Фото на каком языке программировать микроконтроллеры

на каком языке программировать микроконтроллеры. Смотреть фото на каком языке программировать микроконтроллеры. Смотреть картинку на каком языке программировать микроконтроллеры. Картинка про на каком языке программировать микроконтроллеры. Фото на каком языке программировать микроконтроллеры

Абсолютно некорректное сравнение

вполне корректное. Микроконтроллеры совсем не заканчиваются ATTiny13 и есть вполне «жирные» в плане ресурсов. Так что справедливости ради микроконтроллер на java вполне имеет право на существование. Что и иллюстрируют те же sim-карты.

а есть примеры кода для таких джава карт?

на каком языке программировать микроконтроллеры. Смотреть фото на каком языке программировать микроконтроллеры. Смотреть картинку на каком языке программировать микроконтроллеры. Картинка про на каком языке программировать микроконтроллеры. Фото на каком языке программировать микроконтроллеры

В более мощных контроллерах в ходу уже не конкретный язык, а целые ОС. В основном в прошивках просто зашивают Линукс, а отдельные части по управлению контроллером реализуют на Си как драйвера.

знал, что при помощи JVM язык добивается кроссплатформенности и за счет этого Java стала такой популярной. Т.е. в моем понимании язык тогда как раз таки и подходил для микроконтроллеров

Не знаю с какого потолка вы взяли подобное понимание, но именно из-за JVM JAVA совершенно неприемлем для микроконтроллеров. За кроссплатформенность JAVA приходится расплачиваться большим расходом памяти и низким быстродействием.

PS Некоторые контроллеры Амперки которые на ARM Cortex программируются на JavaScript, но это уже другая история (помоему не очень удачная)

Источник

Советы начинающим программистам микроконтроллеров

Очень давно хотелось поделиться своим опытом, с начинающими радиолюбителями, потому что об этом пишут очень мало и разрозненно. Мой опыт не хороший, не плохой, он такой какой есть. С некоторыми утверждениями вы в праве не согласиться и это нормально, ведь у каждого свое видение ситуации. Цель данного материала, обратить внимание читателя на некоторые вещи, что то взять на заметку и сформировать собственное мнение и видение ситуации, ни в коем случае нельзя воспринимать это как истину.

1. Многие начинающие электронщики не знают с чего начать, поэтому спрашивают совета. Большинство бывалых радиолюбителей ответят, что начни собирать какую нибудь схему. Естественно в голове любого начинающего сразу мелькает LCD дисплей с jpeg картинками, какой нибудь mp3 плеер или часы, без малейшей мысли о том, что не имея базовых знаний это неподъемная задача.

Я категорически против такого подхода. Обычно это все заканчивается — либо ничем, либо забитые форумы с мольбами помочь. Даже если кому то помогают, то в 90% он больше никогда не всплывет на сайтах по электронике. В остальных 10% он так и продолжает заливать форумы мольбами, его будут сначала пинать, затем поливать грязью. Из этих 10% отсеивается еще 9%. Далее два варианта: либо таки до глупой головы доходит и все же происходит goto к началу, либо в особо запущенных вариантах, его удел копировать чужие конструкции, без единой мысли о том как это работает. Из последних зачастую рождаются ардуинщики.

Путь с нуля на мой взгляд заключается в изучении периферии и особенностей, если это микроконтроллер. Правильнее сначала разобраться с тем как дрыгать ножками, потом с таймерами, затем интерфейсами. И только тогда пытаться поднимать свой FAT. Да это не быстро, да это потребует времени и усилий, но практика показывает, как бы вы не пытались сократить этот путь, все равно всплывут проблемы, которые придется решать и время вы потратите куда больше, не имея этой базы.

Только не нужно путать теплое и мягкое. Первое — из всех правил есть исключения, лично видел людей, которые в руках раньше не держали микроконтроллеров, но за крайне короткий срок смогли обскакать бывалых опытных радиолюбителей, их в расчет не берем. Второе — мне попадались личности, которые начинали с копирования схем и сходу разбирались, но скорее это тоже исключение из правил. Третье — и среди ардуинщиков попадаются опытные программисты, это ведь всего навсего платформа, но и это скорее исключение.

Если говорить об общей массе, то дела обстоят именно так как я описал вначале: нежелание разбираться с основами, в лучшем случае оттягивает момент того, когда придется вернуться к этим вопросам. В худшем случае, вы быстро упретесь в потолок своих знаний и все время винить в своих проблемах кого то другого.

2. Перед решением задачи, дробите ее до абсурда вплоть до «припаять резистор», это помогает, проверено. Мелкие задачи решать куда проще. Когда большая задача разбита на кучу мелких действий, то все что остается — это выполнить их. Могу привести еще один годный совет, хоть он вам и покажется бредовым — заведите блокнотик и пишите в него все что собираетесь сделать. Вы думаете, итак запомню, но нет. Допустим сегодня у меня хорошее настроение и думаю о том, как собрать плату. Запиши план действий: сходить купить резистор, подготовить провода, сделать крепление дисплея. Потом все забудешь, откроешь блокнотик и смотришь — ага сегодня настроение попилить и построгать, сделаю крепление. Или собираешь ты плату и уже осталось допаять последний компонент, но не тут то было резисторы кончились, вот записал бы перед тем как паять, то вспомнил.

3. Не пользуйтесь кодогенераторами, нестандартными фичами и прочими упрощалками, хотя бы на первых этапах. Могу привести свой личный пример. Во времена активного использования AVR я пользовался кодогеном CAVR. Меня он полностью устраивал, хотя все говорили, что он кака. Звоночки звенели постоянно, были проблемы с библиотеками, с синтаксисом, с портированием, но было тяжело от этого отказаться. Я не разбирался как это работает, просто знал где и как поставить галочки.

Кол в мой гроб был вбит с появлением STM32, нужно было обязательно переползать на них, вот тогда то и появились проблемы. Проблемы мягко сказано, фактически мне пришлось осваивать микроконтроллеры и язык Си с нуля. Больше я не повторял прошлых ошибок. Надо сказать это уже пригодилось и не один раз. С тех пор мне довелось поработать с другими платформами и никаких затруднений не испытываю, подход оправдывает себя.

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

4. Изучайте язык Си. Эх, как же часто я слышу, как начинающие радиолюбители хвалятся, что хорошо знают сишку. Для меня это стало кормом, всегда люблю проконсультироваться у таких собеседников. Обычно сразу выясняется, что язык они совершенно не знают. Могу сказать, что не смотря на кажущуюся простоту, людей которые действительно хорошо бы его знали, встречал не так много. В основном все его знают на столько, на сколько требуется для решения задач.

Однако, проблема на мой взгляд заключается в том, что не зная возможностей, вы сильно ограничиваете себя. С одной стороны не оптимальные решения, которые потребуют более мощного железа, с другой стороны не читаемый код, который сложно поддерживать. На мой взгляд, читаемость и поддерживаемость кода занимает одно из важнейших мест и мне сложно представить, как можно этого добиться не используя все возможности языка Си.

Очень многие начинающие брезгуют изучением языка, поэтому если вы не будете как все, то сразу станете на две ступени выше остальных новичков. Так же не никакой разницы, где изучать язык. На мой взгляд, микроконтроллер для этого не очень подходит. Гораздо проще поставить какую нибудь Visual studio или Qt Creator и порешать задачки в командной строке.

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

5. Изучение ассемблера? Бояться его не нужно, равно как и боготворить. Не нужно думать, что умея написать программу на ассемблере, вы сразу станете гуру микроконтроллеров, почему то это частое заблуждение. В первую очередь это инструмент. Даже если вы не планируете использовать его, то все равно я бы настоятельно рекомендовал написать хотя бы пару программ. Это сильно упростит понимание работы микроконтроллера и внутреннего устройства программ.

6. Читайте даташит. Многие разработчики, пренебрегают этим. Изучая даташит вы будете на две ступени выше тех разработчиков. Делать это крайне полезно, во первых это первоисточник, какие бы сайты вы не читали, в большинстве случаев они повторяют информацию из даташита, зачастую с ошибками и недосказанностями. Кроме того, там может находиться информация, о которой вы не задумываетесь сейчас, но которая может пригодиться в будущем. Может статься так, что вылезет какая то ошибка и вы вспомните что да, в даташите об этом было сказано. Если ваша цель стать хорошим разработчиком, то этого этапа не избежать, читать даташиты придется, чем раньше вы начнете это делать, тем быстрее пойдет рост.

7. Часто народ просит прислать даташит на русском. Даташит — это то, что должно восприниматься как истина, самая верная информация. Даже там не исключены ошибки. Если к этому добавятся ошибки переводчика, он ведь тоже человек, может даже не нарочно, просто опечататься. Либо у него свое видение, может что-то упустить, на его взгляд не важное, но возможно крайне важное для вас. Особенно смешной становится ситуация, когда нужно найти документацию на не сильно популярные компоненты.

На мой взгляд, намного проще исключить заранее весь слой этих проблем, чем вылавливать их потом. Поэтому я категорически против переводов, единственный верный совет — изучайте английский язык, чтобы читать даташиты и мануалы в оригинале. Понять смысл фразы с помощью программ переводчиков можно, даже если уровень вашего языка полный ноль.

Мною был проведен эксперимент: в наличии был студент, даташит и гугл переводчик. Эксперимент №1: студенту вручен даташит и дано задание самостоятельно найти нужные значения, результат — «да как я смогу», «да я не знаю английский», «я ничего не нашел/я не понял» типичные фразы, говорящие о том, что он даже не пытался. Эксперимент №2: тому же студенту, вручен все тот же даташит и тоже задание, с той разницей, что я сел рядом. Результат — через 5 минут он сам нашел все нужные значения, абсолютно без моего участия, без знания английского.

8. Изобретайте велосипед. Например, изучаете какую то новую штуку, допустим транзистор, дядька Хоровиц со страниц своей книги авторитетно заявляет, что транзистор усиливает, всегда говорите — НЕ ВЕРЮ. Берем в руки транзистор включаем его в схему и убеждаемся что это действительно так. Есть целый пласт проблем и тонкостей, которые не описываются в книгах. Прочувствовать их можно только, когда возьмешь в руки и попробуешь собрать. При этом получаем кучу попутных знаний, узнаем тонкости. Кроме того, любая теория без практики забудется намного быстрее.

На первоначальном этапе, мне очень сильно помог один метод — сначала собираешь схему и смотришь как она работает, а затем пытаешься найти обоснование в книге. То же самое и с программной частью, когда есть готовая программа, то проще разобраться в ней и соотнести куски кода, какой за что отвечает.

Также важно выходить за рамки дозволенного, подать побольше/поменьше напряжение, делать больше/меньше резисторы и следить за изменениями в работе схемы. В мозгу все это остается и оно пригодится в будущем. Да это чревато расходом компонентов, но я считаю это неизбежным. Первое время я сидел и палил все подряд, но теперь перед тем как поставить тот или иной номинал, всегда вспоминаю те веселые времена и последствия того, если поставить неверный номинал.

9. А как бы я сделал это, если бы находился на месте разработчиков? Могу ли я сделать лучше? Каждый раз задавайте себе эти вопросы, это очень хорошо помогает продвигаться в обучении. Например, изучите интерфейсы 1wire, i2c, spi, uart, а потом подумайте чем они отличаются, можно ли было сделать лучше, это поможет осознать почему все именно так, а не иначе. Так же вы будете осознавать, когда и какой лучше применить.

10. Не ограничивайтесь в технологиях. Важно что этот совет имеет очень тонкую грань. Был этап в жизни, когда из каждой подворотни доносилось «надо бы знать ПЛИС», «а вот на ПЛИС то можно сделать». Формально у меня не было целей изучать ПЛИСины, но и пройти мимо было никак нельзя. Этому вопросу было выделено немного времени на ознакомление. Время не прошло зря, у меня был целый ряд вопросов, касаемых внутреннего устройства микроконтроллеров, именно после общения с плисинами я получил ответы на них. Подобных примеров много, все знания, которые я приобретал в том или ином виде, рано или поздно пригодились. У меня нет ни единого бесполезного примера.

Но как было сказано, вопрос технологий имеет тонкую грань. Не нужно хвататься за все подряд. В электронике много направлений. Может вам нравится аналог, может цифра, может вы специалист по источникам питания. Если не понятно, то попробуйте себя везде, но практика показывает, что вначале лучше сконцентрироваться на чем то конкретном. Даже если нужно жать в нескольких направлениях, то лучше делать это ступеньками, сначала продавить что то одно.

11. Если спросить начинающего радиолюбителя, что ему больше нравится программирование или схемотехника, то с вероятностью 99% ответ будет программирование. При этом большую часть времени эти программисты тратят на изготовление плат ЛУТом/фоторезистом. Причины в общем то понятны, но довольно часто это переходит в некий маразм, который состоит в изготовлении плат ради изготовления плат.

В интернетах практически единственный трушный путь к программированию это стать джедаем изготовления печатных плат. Я тоже прошел через этот путь, но каждый раз задаю себе вопрос зачем? С тех пор, как я приобрел себе пару плат, на все случаи жизни, каждый раз думаю о том, что мог бы спокойно прожить все это время без самодельных плат. Мой совет, если есть хоть капля сомнений, то лучше не заморачиваться и взять готовую отладочную плату, а время и средства лучше бы потратить на программирование.

12. Следующий совет, особенно болезненный, мне очень не хочется его обсуждать, но надо. Часто мне пишут, мол ххх руб за ууу дорого, где бы подешевле достать. Вроде бы обычный вопрос, но обычно я сразу напрягаюсь от него, так как зачастую он переходит в бесконечные жалобы на отсутствие денег. У меня всегда возникает вопрос: почему бы не оторвать пятую точку и не пойти работать? Хоть в тот же макдак, хоть на стройку, потерпеть месяц, зато потом можно приобрести парочку плат, которых хватит на ближайший год. Да я знаю, что маленьких городах и селах сложно найти работу, переезжайте в большой город. Работайте на удаленке, в общем нужно крутиться. Просто жаловаться нет смысла, выход из ситуации есть, кто ищет его тот находит.

13. В ту же копилку внесу очень болезненный вопрос инструмента. Инструмент должен позволять вам максимально быстро разрабатывать устройства. Почему то очень многие разработчики не ценят свое время. Типичный пример, дешевая обжимка для клемм, на которой так любят экономить многие работодатели. Проблема в том, что она даже обжимает не правильно, из-за этого провода вываливаются. Приходится производить кучу дополнительных манипуляций, соответственно тратить время. Но как известно дурак платит трижды, поэтому низкая цена кримпера возрастет во много раз, за счет затрачиваемого времени и плохого качества обжима.

Не говорю что дешевое = плохое, нет — все зависит от ситуации. Вернусь к примеру кримпера, было время когда обжимал чем попало, поэтому часто возникали проблемы. Особенно неприятно, когда заводишь плату и она не работает, после долгих поисков ошибки понимаешь что из-за плохо обжатого проводочка, обидно. С тех пор как появилась нормальная обжимка этих проблем нет. Да внутренняя жаба и квакала, и душилась от ее стоимости, но ни разу не пожалел об этом решении. Все что я хочу сказать, что поработав с нормальным инструментом, совершенно не хочется возвращаться к плохому, даже не хочется обсуждать это. Как показывает практика, лучше не экономить на инструментах, если сомневаетесь — возьмите у кого нибудь потестить, почитайте отзывы, обзоры.

14. Заведите сайт, можно писать на нем, что угодно, просто как записки. Практика показывает, что работодатели все равно его не читают, но сам факт производит большой эффект.

15. Тонкий вопрос: профильное высшее образование, нужно ли оно? Мне известны не единичные случаи, когда люди работали абсолютно без образования и по опыту и знаниям они могли дать прикурить любому дипломированному специалисту. Собственно, у меня нет профильного образования, испытываю ли я от этого дискомфорт? В определенной степени да.

Еще в самом начале, когда микроконтроллеры были для меня хобби, я много помогал с курсовыми и дипломами разных вузов, просто чтобы оценить свой уровень. Могу сказать уверенно, что уровень в целом невысок вне зависимости от имени вуза. Учиться несколько лет, для того чтобы написать такой диплом, совершенно необязательно. Достигнуть этого можно самостоятельно за весьма короткий срок. И все же зачастую бывали моменты, когда студенты знали какой то предмет, который они проходили на 2-3 курсе, а я этого не знал. Хоть все эти знания и компенсировались самообразованием, но все же лучше было бы не тратить на это время.

Вуз ради бумажки. Могу сказать, что были и такие ситуации, когда предлагали работу, которая требовала обязательного наличия образования и было обидно, что именно в тот момент бумажки не было. Но в целом, история показывает, что большинству работодателей наплевать на вашу бумажку.

Следующий момент довольно часто не учитывается, это окружение. Не забывайте, что люди, с которыми вы учитесь это ваше поколение, не исключено что вам с ними работать. Количество фирм работающих в одной отрасли сильно ограничено. Практика показывает, что даже в больших городах все и все друг о друге знают, вплоть до интимных подробностей.

Еще один момент это возможности. Зачастую у вузов есть свои возможности — оборудование, может какие то секции, может какие то программы работы за рубежом, этим нужно пользоваться, если есть хоть малейшая возможность. Если в вузе вы не видите перспективы, идите в другой, мир на каком то одном не заканчивается.

Если подытожить то совет таков: если есть хоть малейшая возможность — нужно идти учиться, обязательно по профилю, если есть хоть какие то шансы, то лезть везде, а не отсиживать штаны на задней парте. Заводить знакомства, параллельно дома самому практиковаться, развиваться.

16. Поздно ли начинать программировать в 20, 30, 40, 50 лет? Практика других людей показывает, что возраст вообще не помеха. Многие почему то не учитывают то, что есть целый пласт работы, которую молодые в силу своих амбиций не хотят делать. Поэтому работодатели предпочитают брать тех, кто будет ее тащить. Это ваш шанс зацепиться, а дальше все зависит только от вас.

И последний совет. Многие радиолюбители необщительные, сердитые и раздражительные — считайте это спецификой работы. Излучайте добро и позитив, будьте хорошим человеком.

Источник

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *