Как микроконтроллер понимает программу

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

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

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

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

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

Как прочитать прошивку из микроконтроллера. Краткий ликбез.

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

Эти статьи не будут, как и всегда, являться учебниками . Это не будет переводом документации. Это будет наглядное (надеюсь) описание, но с учетом специфики Zen. Я постараюсь свести к минимуму использование математики, знаю, многие ее не любят. При этом я буду стараться приводить достаточно много иллюстраций. Статьи будут не всегда «каноническими».

Это продиктовано и целевой аудиторией (далеко не только, да и не столько, специалисты) и спецификой Zen.

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

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

  • Имеет, как минимум, базовое представление о программировании. Достаточно будет даже знаний в объеме средней школы.
  • Обладает, как минимум, базовыми знаниями об электричестве (ток, напряжение, закон Ома, сопротивление, емкость) и полупроводниках (p-n переход, диод, транзистор). Достаточно знаний в объеме средней школы.
  • Действительно хочет понять, как микроконтроллеры устроены, как работают, как их применять.
  • Готов заниматься сам, читать, искать недостающую информацию. То есть, не является пассивным слушателем (читателем).

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

Как прошить микроконтроллер / Как правильно понимать микроконтроллер / Обзор среды программирования

Однако, пора переходить к делу. Эта, первая, статья цикла будет в основном описательной. Сначала нам нужно разобраться, что вообще такое «микроконтроллер». И тут не обойтись без небольшого исторического экскурса, без которого будет сложнее понять дальнейший материал.

С чего все начиналось

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

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

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

ЭВМ

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

Источник: dzen.ru

Принцип работы микроконтроллера для чайника

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

Читайте также:
Лучшая программа для записи телефонных разговоров для Андроид на русском

Сегодня наибольшей популярностью пользуются микроконтроллеры семейства AVR, ARM, PIC. Каждая из фирм, что производит МК,изготавливает десятки, сотни и даже иногда тысячи разновидностей микроконтроллеров, используемые под все мыслимые и немыслимые цели.

Как работает микроконтроллер глазами чайника

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

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

Некоторые МК могут иметь огромное число базовых команд, другие куда меньшее. Это условное разделение, для которых думатели используют два термина: CISC и RISC. CISC — это много разных видов команд, RISC — это только самые нужные.

Большинство МК предпачитают молиться богу RISC. Объясняется это тем, что при применении сокращенного набора команд МК изготовить гораздо проще и наного дешевле, кроме того их легче переваривают разработчики аппаратуры, особенно чайники. Между CISC и RISC имеется множество отличий, но принципиально важно понять чайнику только то, что CISC — много команд, RISC -мало. Глубже разберемся, чуть позже, когды вы не будете такими зелеными.

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

Давайте представим идеальный случай, У нас есть МК и в его память уже записан программный код. Или, как обычно говорят «ушастые перцы», Микроконтроллер «прошит» (при этом программный код кличат «прошивкой»).

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

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

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

Устройство типичного МК

Любой МК, как и любая микропроцессорная система базируется на трёх китах:

Процессор (АЛУ + устройство управления)
Память (RAM, ROM,FLASH)
Порты ввода-вывода.

Процессор с помощью портов ввода-вывода получает или отправляет различные данные в виде чисел, осуществляет над ними арифметические операции и затем сохраняет их в память. Обмен данными между процессором, памятью и портами происходит по проводам, которые в цифровой электронике принято называть шиной (шины делятся на несколько видов по назначению). Это общая идея работы микропроцессорной системы.

Физическая структура микроконтроллеров разных серий может достаточно сильно отличаться, но общая база у них будет похожа и она будет состоять из следующих блоков: ОЗУ, ПЗУ, АЛУ, таймеры, порты ввода/вывода, регистры, счетчики.

ПЗУ Постоянное запоминающее устройство или постоянная память. Всё, что записано в ПЗУ, остаётся в нем и после отключения питания.
ОЗУ Оперативно запоминающее устройство — рабочая память МК. В неё сохраняются все промежуточные результаты выполнения програмного кода или данные от внешних датчиков.
АЛУ Арифмитически-логическое устройство Мозг МК. Именно он вычитает, складывает, умножает, а иногда и делит, сравнивает единички и нолики в процессе выполнения программы..
Порты I/O Порты ввода и вывода: Устройства через которые МК ведет диалог с внешним миром с внешним миром. Наш МК должен общаться с внешним миром. Благодаря портам мы можем посылать в микроконтроллер сигналы от датчиков, клавиатуры и т.п. А МК после обработки таких сигналов отправит через эти устройства свой ответ, с помощью которого можно регулировать яркость свечения лампы или скорость вращения двигателя.
Таймеры Он отсчитывает интервалы, выдает сигнал о срабатывании и т.д.
Счетчики Необходимы, когда нужно что-то подсчитать.
Регистры Каждый регистр представляет собой миниатюрную ячейку памяти. И обычно в МК их всего несколько десятков.
Читайте также:
Как создать ярлык установленной программы

Шины и разряды микроконтроллера

Как ты уже знаешь из курса основы цифровой электроники, вся информация в цифровом мире представляется в виде двоичных чисел, которые записываются с помощью всего двух цифр: «нуля» и «единицы» в двоичной системе счисления. Число три в привычной для нас десятичной системе в двоичной будет «11», т.е. 3 10 = 11 2 . Нижние индексы подсказывают о системе счисления.

Одна цифра в двоичном числе называется разрядом. У разрядов имеется старшинство. Самый правый разряд называют младшим, а самый левый соответственно старшим. Старшинство разряда увеличивается справа налево:

При работе микроконтроллера в нем «бегают такие же двоичные числа». Они перемещаются от процессора к памяти и обратно, а также к устройствам ввода-вывода (УВВ). Бегают циферки по проводам (в МК они спрятаны внутри микросхемы). Каждый такой проводник в какой-то заданный программой момент времени может передавать только один разряд со значением «0» или «1». Поэтому, для передачи 8-ми разрядного числа от процессора к памяти и обратно понадобится минимум 8 таких проводников.

Несколько таких объединенных проводов, называют шиной. Шины бывают нескольких видов:

Шина адреса
Шина данных
Шина управления

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

Разрядность шины адреса влияет на количество адресов, которые можно по ней пропустить. Допустим, в 4-разрядной системе это 24 = 16 адресов, в 64-разрядной, числов адресов будет уже 264=18446744073709551616, т.е чем выше разрядность адресной шины тем к больше объем памяти и больше УВВ можно использовать, с которыми может работать МК. Это очень важный момент.

Разрядность шины данных влияет на то, сколько данных процессор способен считать за один раз. Чем больше разрядность, тем больше данных можно считать за один раз. Разрядность шины данных целиком задается конструкцией конкретного МК. Но при этом она всегда будет кратна восьми. Объясняется это тем, что практически во всех устройствах памяти минимальной единицей информации является байт, т.е. обычное двоичное число из восьми разрядов.

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

Кстати в отличии от привычной системы счисления, 1 байт = 8 бит, 1 килобайт = 1024 байтам, 1 мегабайт = 1024 килобайтам и т.д. Почему именно 1024? Спросите вы. Да потому, что размер памяти кратен степени двойки: т.е 23 = 8, 210=1024.

Алгоритм работы микроконтроллера

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

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

RD (read) сигнал на чтение
WR(write) сигнал на запись
MREQ (memory request) запрос обращения к памяти
IORQ (input/output request) запрос обращения к портам в/в
READY сигнал готовности
RESET сигнал сброса

Если МК необходимо обратиться к памяти он задает на управляющей шине сигнал MREQ, при этом одновременно с ним задается сигнал RD/WR. Если МК будет писать в память, то задается сигнал WR, если чтение, соответственно RD. Тоже случится, когда МК обращается к УВВ.

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

Таким образом, если подать питающее напряжение на МК, то он выставляет сигнал на управляющей шине MREQ, RD, а на адресной шине — адрес, по которому в ячейке памяти должна быть первая команда его алгоритма (программного кода, обычно это нулевой адрес памяти). Затем МК её выполняет и в зависимости от управляющих команд на шинах управления, адреса и данных будут появляться соответствующие программе данные и сигналы.

Микроконтроллеры AVR устройство и работа

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

Читайте также:
Программа для заполнение уведомление о прибытии

Микроконтроллеры STM32

Одной из первых фирм выпустившей в большой мир микроконтроллеры на ядре ARM Cortex-M3 является компания «STMicroelectronics». Начиналось всё не так и давно в 2007 году с появления двух семейств – «Performance Line» (STM32F103) и «Access Line» (STM32F101). На текущий момент МК STM32 представлены десятью основными линейками для различных задач.

Основные их достоинства это «pin-to-pin» и полная программная совместимость по всем возможным линейкам. И это всё уместилось на ядре ARM Cortex-M3. Рассмотрим основные инструменты, для того что бы можно было начать работу с МК STM32.

Источник: www.texnic.ru

Программирование микроконтроллера

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

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

  • в вычислительной технике — калькуляторы, дисководы, материнские платы и т. п.;
  • в электронике и различных устройствах бытовой техники, где используются электронные системы управления — посудомоечные машины, стиральные машины, микроволновые печи, телефоны, системы «умный дом» и т. п.;
  • в устройствах промышленной автоматики — программируемые реле, встраиваемые системы, программируемые логические контроллеры;
  • в системах управления станками.

Программирование микроконтроллера

Определение 2

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

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

Для того, чтобы повысить производительность и качество процесса программирования микроконтроллеров используется язык ассемблера, позволяющий сделать исходный текст программы более наглядным и понятным для исполнителя. Главное отличие ассемблера от других языков программирования заключается в том, что данный язык может оперировать только командами, распознающиеся центральным процессором микроконтроллера. По исходному тексту программы, которая была написана на языке ассемблера, можно определить время ее исполнения, а также объем программной памяти, который необходим для хранения программы благодаря тому, что точно известны длина — количество байтов, и время выполнения каждой команды. Помимо языка ассемблера некоторые программисты используют языки программирования высокого уровня

« Программирование микроконтроллера »
Готовые курсовые работы и рефераты
Решение учебных вопросов в 2 клика
Помощь в написании учебной работы

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

  1. Декомпозиция программы,
  2. Разработка исходных текстов для всех модулей программы при помощи текстового редактора,
  3. Трансляция исходных текстов всех модулей программы в объектные модули при помощи программы-транслятора,
  4. Компоновка объектных модулей с библиотечными модулями в единый загрузочный модуль,
  5. Отладка программы при помощи эмулятора постоянного запоминающего устройства.
  6. Запись ранее отлаженной программы в постоянное запоминающее устройство или во внутреннюю программную память микроконтроллера при помощи программатора.

Для того, чтобы осуществить вышеперечисленные этапы процесса программирования микроконтроллера необходимы следующие программные и аппаратные средства:

  1. IBM-совместимый персональный компьютер с операционной системой MS DOS версии 3.30 или более поздней.
  2. Эмулятор постоянно запоминающего устройства.
  3. Программатор постоянно запоминающего устройства.
  4. Текстовый редактор.
  5. Транслятор.
  6. Компоновщик.

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

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

Источник: spravochnick.ru

Рейтинг
( Пока оценок нет )
Загрузка ...
EFT-Soft.ru