Узнайте как грамотно использовать все возможности языка Си для программирования микроконтроллеров!

В чем главная сложность написания программ под микроконтроллеры или 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 часов, пока инженеры устанавливали на коммутаторы предыдущую версию прошивки.

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

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

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

Зарегестрируйтесь на беспланый вебинар

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

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

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

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

А глубокое понимание языка Си можно и нужно приобретать!

Используя видеокурс

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

каждый сможет в течение месяца освоить язык Си для  микроконтроллеров на фундаментальном уровне!

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

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

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

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

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

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

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

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

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

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

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

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

Как обычно построено обучение?

Обычно все начинается с примеров настройки портов. Потом, изучается периферия микрокнтроллера: UART, АЦП, SPI, специальные режимы и т.д. Попутно изучаются только самые базовые и простые конструкции языка, которые позволяют показать примеры рабочего кода.

Однако, почти везде можно выделить три похожих ситуации

Никто не показывает и не рассказывает про использование сложных конструкций и выражений языка!

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

А самое главное,  никто не объясняет, в чем опасность применения тех или иных конструкций и выражений языка Си!

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

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

В курсе изучается язык Си на максимально глубоком уровне - на уровне отдельных байт в памяти! Такой подход позволяет понимать и использовать язык Си на профессиональном уровне!

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

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

Кому подойдёт курс

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

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

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

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

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

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

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

Будет ли курс Вам полезен?

Другими словами, узнаете ли Вы что-то новое из курса?

Для этого Вы можете пройти небольшой тест, ответив на 3 вопроса ниже:

1. Если a32 это 32-разрядная беззнаковая переменная, то какое число будет в переменной после выполнения 4 строк ниже?

*( ((uint8_t *)&a32) + 0 ) = 0x66;

*( ((uint8_t *)&a32) + 1 ) = 0x77;

*( ((uint8_t *)&a32) + 2 ) = 0x88;

*( ((uint8_t *)&a32) + 3 ) = 0x99;

 

2. Для чего используется выражение ниже?

while(*string) outUart(*string++);

 

3. Что произойдет после выполнения этих двух строк?

action = ( void(*)(void) )0x3C00;

action();

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

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

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

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

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