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

Очень давно хотел поделиться своим опытом с начинающими радиолюбителями, потому что об этом написано очень мало и разрозненно.

Мой опыт ни хорош, ни плох, он такой, какой есть.

Вы имеете право не согласиться с некоторыми утверждениями и это нормально, ведь у каждого свое видение ситуации.

Цель данного материала – обратить внимание читателя на определенные вещи, обратить на что-то внимание и сформировать собственное мнение и видение ситуации; ни в коем случае нельзя принимать это за истину.

1. Многие начинающие инженеры-электронщики не знают, с чего начать.

, поэтому они просят совета.

Большинство опытных радиолюбителей ответят, что займутся сборкой какой-нибудь схемы.

Естественно, в сознании любого новичка сразу мелькает ЖК-дисплей с картинками в формате jpeg, какой-нибудь mp3-плеер или часы, без малейшей мысли, что без базовых знаний это непосильная задача.

Я категорически против такого подхода.

Обычно все заканчивается – либо ничем, либо форумами, забитыми просьбами о помощи.

Даже если кому-то помогут, в 90% случаев оно больше никогда не появится на сайтах по электронике.

В оставшихся 10% он продолжает заваливать форумы просьбами, его сначала пинают, потом поливают грязью.

Из этих 10% отсеиваются еще 9%.

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

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

Лучше сначала разобраться, как пинать ноги, потом таймеры, потом интерфейсы.

И только потом пытаться поднять свой ЖИР.

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

Только не путайте теплое и мягкое.

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

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

В-третьих, среди разработчиков Arduino тоже есть опытные программисты; это всего лишь платформа, но это скорее исключение.

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

В худшем случае вы быстро достигнете потолка своих знаний и всегда будете винить в своих проблемах кого-то другого.

2. Прежде чем решать проблему, разложите ее до абсурда, вплоть до "пайки резистора", это помогает, проверено.

Небольшие проблемы гораздо легче решить.

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

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

Ты думаешь, я это запомню, но нет. Допустим, сегодня у меня хорошее настроение и я думаю, как собрать доску.

Запишите план действий: купите резистор, подготовьте провода, смонтируйте дисплей.

Потом все забудешь, откроешь блокнот и посмотришь - ага, сегодня настроение пилить и строгать, крепление сделаю.

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

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

Могу привести свой личный пример.

Когда я активно использовал AVR, я использовал кодоген CAVR. Я остался им полностью доволен, хотя все говорили, что он отстой.

Постоянно звонили в колокола, были проблемы с библиотеками, с синтаксисом, с портированием, но отказаться от этого было сложно.

Я не понимал, как это работает, просто знал, где и как ставить галочки.

Кол мне в гроб вбили с появлением STM32, приходилось на них лезть, вот тогда и появились проблемы.

Проблемы это мягко говоря; по сути, мне пришлось осваивать микроконтроллеры и язык Си с нуля.

Я больше не повторял прошлых ошибок.

Надо сказать, это уже не раз пригодилось.

С тех пор у меня появилась возможность работать с другими платформами и никаких трудностей не испытываю; подход оправдывает себя.

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

4. Изучите язык C. х, как часто я слышу, как начинающие радиолюбители хвастаются тем, что хорошо знают радио.

Это стало для меня пищей; Мне всегда нравится посоветоваться с такими собеседниками.

Обычно сразу становится понятно, что они вообще не знают языка.

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

В принципе, все его знают ровно столько, сколько требуется для решения задач.

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

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

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

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

Также нет разницы, где изучать язык.

На мой взгляд микроконтроллер для этого не очень подходит. Гораздо проще установить какую-нибудь 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 лет? Практика других людей показывает, что возраст вовсе не помеха.

Почему-то многие не учитывают, что есть целый пласт работы, которую молодые люди в силу своих амбиций делать не хотят. Поэтому работодатели предпочитают нанимать тех, кто будет это нести.

Это ваш шанс зацепиться, а дальше все зависит только от вас.

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

Излучайте доброту и позитив, будьте хорошим человеком.

Теги: #микроконтроллеры #опыт #советы #Программирование микроконтроллеров

Вместе с данным постом часто просматривают: