Как за неделю на профессиональном уровне освоить язык программирования Си для микроконтроллеров ?

Правильный ответ - НИКАК

Но, сроки можно существенно сократить если использовать всю выжимку информации проверенную на практике

Есть такой анекдот...

 

Студент сдает экзамен по электротехнике. Отвечает прекрасно, поражает преподавателя своими знаниями, тот ставит ему "отлично", а потом спрашивает:

- Слушайте, неужели вы действительно все так блестяще понимаете?

- Да не все, - мнётся студент. - Есть у меня один неясный вопрос. Ведь переменный ток - он вот такой. (Студент чертит рукой в воздухе синусоиду) Так как же он по прямым проводам проходит?

Так как же переменный ток по прямым проводам проходит?

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

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

И если такие программисты начинают решать нестандартные задачи, то вот тут и начинаются "танцы с бубном". Конечно, спустя несколько часов или даже дней программа все-таки начинает работать. Но, такая программа создана без понимания сути возникшей проблемы. А значит такая программа потенциально нерабочая.

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

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

441 ошибка и 1218 предупреждений

А сколько логических ошибок, которые не показывает компилятор?

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

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

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

А вот при программировании микроконтроллеров ситуация совсем другая.

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

Если управление осуществляется мощным полевым транзистором или другими силовыми элементами:

Некорректная подача управляющего напряжениякомпонент сгорел.

Задержка или опоздание управляющего напряжения на несколько миллисекундкомпонент сгорел.

Ошибка в циклограмме работы – и компонент опять сгорел.

Обидно!  Ведь подобные силовые компоненты совсем не дешевые!

"Ошибка, закравшаяся в программу, будет направлена на причинение максимального вреда"

Следствие третьего закона Мёрфи

Самая плохая ситуация это когда тебе только кажется, что ошибки больше нет. А не самом деле ошибка глубоко запряталась в программе и ждет своего часа.

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

И вот опять приходится снимать "глючное" устройство, нести его обратно и снова пытаться понять что же с ним случилось.

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

Все это как раз возникает из-за недостатка знаний о том как именно работает программа на микроконтроллере.

А если происходит управление нагрузкой в сети 220 В или исполнительным механизмом в станке?

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

Вот несколько реальных примеров из жизни,

когда ошибки программистов оборачивалась реальными и очень ощутимыми потерями

В 1996 году при запуске ракеты-носителя Ariane 5, которая должна была вывести на орбиту несколько спутников, на 39 секунде полета произошел взрыв.

Причиной аварии стала программная ошибка связанная с преобразованием 64-битного значения с плавающей точкой в 16 битное целое значение со знаком.

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

В общей сложности, ущерб от аварии составил 8,5 миллиардов долларов.

С 1985 по 1987 год погибли 3 пациента и еще 3 остались инвалидами после процедуры с использованием медицинского аппарата лучевой терапии "Therac-25". Как выяснилось позже, произошло это из за неграмотно написанной программы, которая содержала сразу несколько серьезных ошибок и целый ряд потенциально возможных ошибок.

Во время операции "Буря в пустыне", ракеты “Пэтриот”, использовавшиеся для перехвата в воздухе иракских ракет, периодически проходили мимо цели.

Одна из пропущенных иракских ракет привела к гибели 28 американских солдат.

При разбирательстве выяснилось, что в программе был некорректно прописан алгоритм подсчета времени. За 100 часов работы ошибка в определении времени составляла 0,34 секунды. Этого оказалось достаточно что бы зенитно-ракетный комплекс переставал выполнять защитные функции по уничтожению вражеских ракет.

15 января 1990 года произошло самое масштабное падение телефонной сети компании AT&T.

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

15 января 1990, когда один из коммутатор в Нью-Йорке перезагрузился, он подал тот самый специфичный сигнал, который запустил "цепную реакцию" перезагрузок. Совсем скоро 114 соседних коммутаторов непрерывно перезагружались каждые 6 секунд, а 60 тыс. человек остались без междугородней связи на 9 часов, пока инженеры устанавливали на коммутаторы предыдущую версию прошивки.

А вот здесь есть информация, как этого избежать

И это далеко не единичные случаи...

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

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

Операторы аттракциона быстро среагировали, аварийно остановили аттракцион и спустили людей вниз. Посетители аттракциона отделались царапинами.

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

Думаете с Вами такое случится не может?

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

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

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

От программной ошибки до аварии или пожара один шаг

Как же избежать таких ситуаций? Самый правильный способ - это учиться.

Очень хорошо учится по книгам

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

Во-первых, книги будут продаваться на очень широкую аудиторию (на русском языке книги реализуются почти во всех странах СНГ).  Следовательно, на кону стоит репутация автора.

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

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

Но, к сожалению, хороших книг по программированию микроконтроллеров очень мало.

А хороших книг по программированию микроконтроллеров на языке С вообще нет!

Точнее есть, но исключительно на английском языке, которые можно заказать с Amazon'a по средней цене 150..200$. Это около (8000..11000 рублей)

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

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

Обратите внимание на цены.

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

Про такое важное и привычное понятие как прерывания, в этих книгах вы не найдете ни слова

Еще учиться можно по статьям на сайтах

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

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

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

Есть еще один вариант обучения - платный дистанционный

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

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

 

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

Удаленно преподаются самые разные языки программирования: Python, Java, C# и т.д.

 

И это не удивительно, так как дистанционное обучение по видеокурсам имеет преимущество сразу всех трех видов обучения:

Видео позволяет на порядок повысить уровень усвоения информации по сравнению с книгами

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

Благодаря интернету появляется уникальная возможность напрямую обратиться к автору видеокурса по e-mail за комментариями или пояснениями, если что-то непонятно.

Благодаря видеокурсам появилась возможность изучить язык С для программирования микроконтроллеров на профессиональном уровне.

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

И все это по цене пары книг.

Авторский обучающий курс

"Программирование микроконтроллеров на языке С"

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

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

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

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

В чем преимущество видео над книгами?

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

Сколько нужно иллюстраций что бы наиболее подробно объяснить тему?

Одна? Две? Десять?

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

А если использовать видео? Тогда совсем другое дело. В 1..2 минутах можно уместить все что помещается на 10..20 страницах книги.

Кому подойдёт курс "Программирование микроконтроллеров на языке С"?

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

Не подойдет, если вы плохо разбираетесь в электронике или совсем не понимаете что такое микроконтроллер.

Подойдет, вы у вас есть желание учится.

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

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

Не подойдет, если вы не готовы серьезно заниматься.

Ответы на частые вопросы Не нашли ответ на свой вопрос?

Отправьте свой вопрос по e-mail внизу страницы. Или задайте через форму обратной связи на правой стороне страницы.

По вопросам заказа и оплаты курса вы можете обращаться

на e-mail: support@micro-controller.ru или через форму обратной связи (справа на странице).

Партнерская программа

Данное учебное пособие предназначено исключительно для частного пользования. Учебное пособие запрещено к приобретению в коллективное пользование.

Любое незаконное использование учебного пособия (копирование, обмен, публичное вещание, несанкционированное распространение и прочее) запрещено и преследуется согласно действующему законодательству!