Программирование микроконтроллеров – Учимся программировать микроконтроллеры / Хабр
Вы хотите узнать, как получить работу по проектированию электроники космического корабля? Мне надавно пришло предложение поинтервьироваться на позицию FPGA designer для Blue Origin (см. выше). Лично мне такая позиция не нужна (у меня уже есть позиция ASIC designer-а в другой компании), но я отметил, что технические требования к претендентам в Blue Origin точно совпадают с содержанием семинара для школьников и младших студентов, который пройдет 15-17 сентября на выставке ChipEXPO в Сколково, с поддержкой от РОСНАНО. Хотя разумеется на семинаре мы коснемся технологий Verilog и FPGA только на самом начальном уровне: базовые концепции и простые, но уже интересные, примеры. Чтобы устроится после этого в Blue Origin, вам все-же потребуется несколько лет учебы и работы.
Из-за короновируса семинар будет удаленный, поэтому принять участие смогут не только школьники и студенты Москвы, но и всей России, Украины, Казахстана, Калифорнии и других стран и регионов. Физически проводить лекции и удаленно помогать участникам будут преподаватели и инженеры МИЭТ, ВШЭ МИЭМ, МФТИ, Черниговского Политеха, Самарского университета, IVA Technologies и fpga-systems.ru.
Для участия сначала, еще до семинара, нужно пройти три части теоретического курса от РОСНАНО, под общим названием «Как работают создатели умных наночипов»: «От транзистора до микросхемы», «Логическая сторона цифровой схемотехники», «Физическая сторона цифровой схемотехники». Этот курс необходим, чтобы вы понимали, что вы делаете, по время практического семинара. По получению сертификата окончания теоретического онлайн-курса, вы можете зайти в офис РОСНАНО в Москве и получить бесплатную плату для практического семинара (если они останутся, преимущество имеют школьники). С этой платой вы можете работать дома, до, во время и после семинара в Сколково.
Как получить плату, подготовится к семинару и что на нем будет:
На каком языке сейчас чаще всего программируют микроконтроллеры? — Хабр Q&A
Тут чистая экономика.Контроллеры ставят в основном в массовые устройства.
Это значит что каждый сэкономленный доллар – это десятки, а то и сотни миллионов прибыли на ровном месте.
Подобные суммы с лихвой покрывают время программистов, поэтому им ставят задачу уложить функционал на самый дешёвый контроллер, который ещё хоть как-то способен потянуть этот функционал.
Отсюда – высокая степень оптимизации кода при работе с контроллерами.
Нужно максимально использовать все особенности конкретного контроллера – программисты много работают с даташитом.
Язык должен позволить максимально полно использовать систему команд конкретного контроллера, и гибко управлять регистрами и памятью контроллера.
Поэтому в ходу в основном ассемблер – с ним можно писать максимально компактный код.
Но функционал зачастую достаточно большой, чтобы его целиком писать на ассемблере.
Поэтому, в целях экономии времени, пишут на Си, с использованием библиотек, а самые ответственные места реализуют с помощью ассемблерных вставок.
С симками ситуация иная – там важно было реализовать кроссплатформенный код. Поэтому используют java, не смотря на ресурсы.
В более мощных контроллерах в ходу уже не конкретный язык, а целые ОС. В основном в прошивках просто зашивают Линукс, а отдельные части по управлению контроллером реализуют на Си как драйвера.
Там, где важна производительность, вообще не пользуются программным кодом, а переходят на железную логику – плисы. Это в основном оборудование для обработки сигналов, в т.ч. всевозможные радиомодули, модемы, видеооборудование, и т.п.
Так что все зависит от здравого смысла и стоимости.
Просто так везде пихать java – немного глупо.
Введение в язык программирования С (Си) для микроконтроллеров
В этой статье будут рассмотрены основные сведение о языке С, структура программы на языке С, дано понятие о функциях, операторах и комментариях данного языка программирования.
История создания языка C (Си)
Язык программирования C (Си) появился «стихийно» – ни одна компания не заказывала создания подобного языка. Его первая версия появилась на свет в 1972 г. в фирме Bell Laboratories, написал ее теперь уже всемирно известный программист Деннис Ритчи (Dennis MacAlistair Ritchie).
Ритчи рассчитывал, что созданный им язык программирования будет востребован в операционной системе UNIX, которая тогда была еще новинкой. Конечно, создавать новый язык Ритчи помогали и другие его коллеги программисты, но именно он внес наибольший вклад в становление этого языка. К новому языку первоначально не выдвигалось никаких требований, перед ним не ставилось никаких задач, фактически он возник как результат дружеского соревнования между небольшим кругом программистов.
Название C (Си) появилось так же стихийно, как и сам язык. Фактически, он стал преемником ранее созданного языка В (Би), разработанного автором операционной системы UNIX Кеном Томпсоном. В свою очередь, язык Би во многом был похож на языке BCPL, разработанный в Кембриджском университете. А язык BCPL основывался на идеях «старого как мир» Алгола-60.
Первым неформальным стандартом языка Си стало издание в 1978 г. книги Брайана Кернигана и Денниса Ритчи с названием «The ‘C’ Programming Language». Первоначально книга была издана в США, но потом была переведена и многократно переиздавалась во многих других странах мира. В 1989 г. язык Си был стандартизован ANSI (American National Standards Institute – американский национальный институт стандартов) и ISO (International Standard Organization — международная организация по стандартизации).
Но время шло и у пользователей языка Си появилась потребность в реализации новых функций, не поддерживавшихся языком. Учитывая все это, Бьерн Страуструп в начале 80-х (работавший все в той же самой Bell Laboratories) принял решение о расширении возможностей языка Си, который первоначально назвали как «Си с классами». Но в дальнейшем за его модификацией языка закрепилось другое название — Си++. Это название сохранилось за ним вплоть до настоящего времени.
Общие сведения о языке C (Си)
В настоящие дни C (Си) является многофункциональным языком программирования высокого уровня, подобным таким языкам как Pascal или Python, но в отличие от них он имеет возможность работы с командами низкого уровня, подобно языку ассемблера. Программу на языке С можно скомпилировать в машинный код практически для любого известного микропроцессора. Не исключением стали и микроконтроллеры – сейчас по популярности использования (особенно для начинающих) язык Си обогнал в них доминировавший до этого язык ассемблера. Программирование на языке С поддерживает и самая популярная в настоящее время программная платформа Atmel Studio (!!!!!!) для микроконтроллеров семейства AVR.
Сейчас уже можно с уверенностью сказать, что язык С стал своеобразным фундаментом, на котором строится все современное программирование – чего стоят хотя бы «Visual C» и «C Sharp». Основанные на нем языки программирования сейчас занимают доминирующее положение в мире программирования. А все началось с удачной структуры языка, разработанной в 1972 г. Деннисом Ритчи.
Файлы программ на языке Си имеют расширение .C, а простейшая структура программы выглядит следующим образом.
#include <avr/io.h> /* заголовок */
int main(void) /* главная функция: начало программы */
{ /* открывающая скобка в начале программы */
оператор программы;
оператор программы;
…
оператор программы;
} /* закрывающая скобка в конце программы */
Комментарии являются необязательным элементом программы, но они крайне желательны для лучшего понимания ее сути.
Назначение основных элементов программы на языке C (Си)
Заголовки
В представленной на рисунке структуры программы на языке С строка #include <avr/io.h> является заголовком. Заголовки содержат специализированную информацию для компилятора об общих условиях выполнения программы и требуемых ей ресурсах. В рассмотренном случае мы указываем компилятору на то, чтобы при выполнении программы он учел информацию, содержащуюся в файле io.h – забегая вперед скажем что этот файл содержит инструкции для портов ввода/вывода микроконтроллера.
Символ # указывает на то, что представленная инструкция должна быть обработана препроцессором, который выполняет предварительную обработку текста программы перед началом компиляции и подключает внешние библиотеки.
Какие заголовки (управление портами ввода/вывода, функции задержки и т.д.) следует подключить определяется потребностями конкретной программы. Если вы забыли подключить необходимый заголовок, то программа не скомпилируется – компилятор выдаст сообщение об ошибке. К слову сказать, эти ошибки легко устраняются – ведь компилятор сам подсказывает какие заголовки следует подключить.
Функции
По сути программа на языке С представляет собой набор функций, каждая из которых может вызывать для выполнения любые другие функции. Функций в программе может быть много, но обязательной является только одна из них, называемая «main» («главная»). Выполнение программы на языке С начинается всегда с нее. Программист не может изменить название главной функции «main», но названия для всех других функций программы он может выбирать произвольно.
Функции в языке С легко узнать по их отличительному признаку – круглым скобкам после их имени. В общем случае в скобках содержится набор параметров, которые могут передаваться в функцию для ее работы, а также набор переменных, через которые функция может передавать результаты ее работы во внешнюю функцию (которая ее вызвала). Если скобки пустые, как например, в представленном примере с функцией main(), то это значит что у функции нет ни входных, ни выходных параметров.
Идущая следом за названием функции фигурная скобка { отмечает начало последовательности операторов, образующих тело функции. Закрывающая фигурная скобка } отмечает конец этой последовательности операторов. На этой скобке выполнение функции завершается.
Фигурные скобки также используются для того, чтобы объединить несколько операторов программы в составной оператор или блок.
Операторы
Как правило, тело функции в языке Си представляет собой набор операторов, в конце каждого из которых стоит точка с запятой ;. Можно размещать каждый оператор на своей строке или несколько операторов на одной строке – компилятору это неважно, главное чтобы они разделялись точкой с запятой (этот символ свидетельствует о конце оператора). Но для восприятия человеком, конечно, удобнее чтобы каждый оператор располагался на отдельной строке. Допускается использование и пустых строк чтобы визуально отделить структурные элементы программы.
Операторы выполняются последовательно в том порядке, в котором они записаны. Но структура программы не обязательно должна быть линейной – при наличии циклов и условий возможны пропуски выполнения отдельных операторов (условия) или многократное выполнение одних и тех же операторов (циклы).
Комментарии
Комментарии — это примечания, помогающие понять смысл программы. В языке Си текст комментариев записывается между значками /* */. То, что написано между этими значками, компилятору совершенно неважно – он все это игнорирует. Это важно только для человека, который анализирует текст программы.
Комментарии можно размещать как на одной строке с операторами, так и на разных (обычно ниже или выше строки с оператором). Комментарии могут занимать несколько строк и для них не обязательно наличие в конце точки с запятой.
Наличие комментариев считается хорошим стилем программирования поскольку позволяет лучше понимать смысл программы не только ее автору (особенно по прошествии некоторого времени, в течение которого он над ней не работал), но и другим людям, которые в дальнейшем будут работать с этой программой.
Внутри комментариев нельзя использовать символы, определяющие начало и конец комментариев. К примеру, неправильная запись внутри комментария:
/* комментарии к программе /* управления электродвигателем */ */
или
/* комментарии к программе управления */ электродвигателем */
Язык Си для микроконтроллеров AVR поддерживает и другой метод записи комментариев — строка, начинающаяся с символов //. К примеру
// Это комментарий в одну строку
В качестве итога можно отметить, что для написания хорошо читаемой программы целесообразно придерживаться следующих правил:
- размещайте один оператор на строке;
- применяйте пустые строки для «отделения» одной логической части программы от другой;
- используйте комментарии.
Программирование микроконтроллеров на языке С.
Программирование микроконтроллеров на языке С.
- Подробности
- Создано 07.07.2011 13:24
Совсем недавно, основным языком программирования микроконтроллеров был ассемблер. Программист, используя ассемблер, имел полный контроль над всеми внутренними ресурсами процессора. Готовые программы отличались компактностью и быстродействием. Рост объемов памяти, тактовой частоты и периферии в микроконтроллерах, постоянно расширял область применения этих устройств. При этом усложнялась задача разработки программного обеспечения. Например, логические или целочисленные арифметические функции реализуются достаточно просто. В противоположность им, вычисления с плавающей запятой требуют специальных алгоритмов, занимающих большой объем памяти. То же касается и многих современных интерфейсов, присутствующих в микроконтроллерах. Благодаря этим и многим другим причинам, возникла необходимость использования языков высокого уровня, для разработки управляющих программ микроконтроллеров.
Преимущества и недостатки языка высокого уровня.
Главными преимуществами языков высокого уровня принято считать более понятный человеку код и возможность переноса программ с одного процессора на другой. Хотя последнее утверждение очень спорно, тем не менее, при выполнении определенных условий перенос программы все же возможен. Также сильно упрощается реализация многих стандартных функций и появляется аппаратная независимость языка. Последние обстоятельства, фактически и придают такую высокую привлекательность языкам высокого уровня.
При всех достоинствах у языков высокого уровня имеются и недостатки. Самый серьезный из них определяется увеличенным объемом машинного кода, по сравнения с реализацией того же алгоритма на ассемблере. Фактически, больший объем является платой за универсальность и простоту разработки программ. Несколько снижают остроту проблемы рост памяти микроконтроллеров и увеличение их быстродействия. Другие, традиционно называемые недостатки, такие как высокая стоимость компиляторов и сложность отладки, также постепенно нивелируются, в виду развития техники.
Почему С?
На сегодняшний день имеется множество языков программирования высокого уровня, отличающихся своим синтаксисом и возможностями. Как правило, выбор того или иного языка основан на его возможностях при решении тех или иных задач. Для работы с микроконтроллерами сегодня адаптировано множество традиционных языков программирования и их вариантов. Тем не менее основным языком профессиональной разработки является С или С++. Связано это со многими особенностями данных языков, а не только с популярностью и распространенностью компиляторов.
Изначально язык С создавался для программирования операционных систем. В этом качестве он имеет лучшие возможности по работе с аппаратными регистрами микроконтроллера. Второй особенностью является относительно низкий уровень языка, что позволяет создавать высокоэффективный машинный код. В некоторых издания С даже называют «высокоуровневый ассемблер». При этом объем получаемого исходного кода меньше, чем у ассемблера, а его воспринимаемость человеком лучше. Другими достоинствами можно считать и вышеназванную популярность среди программистов и разработчиков компиляторов, наличие огромного количества прикладных библиотек, высокую стандартизированность языка. Все это вместе взятое и дало возможность С, стать основным языком для микроконтроллеров.
You have no rights to post comments
Изучение С для программирования микроконтроллеров? — Хабр Q&A
Внимание: Всё что пишу, пишу про голое железо или простые RTOS (стм32 и тд)Это программирование делится на три части:
1. Это железо! С железом проблем нет, читаем мануал, используем рекомендуемую производителем железа библиотеку по работе с железом получаем гарантированный результат. Трудно будет только по началу. Но это опыт наживной и относительно лёгкий.
2. Реалтайм и инженерное мастерство и инженерный опыт: Часто проги под МК работать будут в реальном времени налету, ждать никто не будет. Дважды измеренная величина всегда будет отличаться, произойти может что угодно и в какой угодно последовательности. Клоки и тактовая плавает. Количество переданных и принятых данных всегда будет разное даже по одному и тому же уарту. Всё это должна учитывать ТВОЯ программа и не падать при любом раскладе. Как видишь программа будет иметь дело с гораздо большим количеством случайностей чем при программировании в вебе/ПК и повторяемости событий почти не будет. И надо быть чуточку инженером и знать что у всего с чем работаешь есть отклонения и шум в результатах, особенно аналоговых и АЦП.
3. Это программирование на Си как обычном языке. Тут всё просто и понятно, мануалов море – выбирай по вкусу и цвету.
4. ОБЩЕЕ АЛГОРИТМИЧЕСКОЕ ПРОГРАММИРОВАНИЕ. Неважно что это железо но алгоритм оптимально но не слишком перфекционистки. Ты должен реализовать и язык тебе тут не поможет, он не связан с алгоритмом и наборов удобных библиотек гораздо меньше чем под ПК и веб.
5. НЕ УЧИ АССЕМБЛЕР. не углубляйся в схемотехнику, достаточно будет уровня уверенного ардуинщика. Ассемблер сейчас нужен не для написания программ а вылизывания отлично сделанной проги которая уже продаётся но нужно выжать ещё 5-10% быстродействия, ТОЛЬКО ТОГДА. Всё остальное делается либо конфигами либо LD файлом линкера. Дебри схемотехники тоже не нужны, главное понимание как и почему это работает, без всяких четырёх полюсников и глубоких анализов фазовых задержек.
Простой внутрисхемный программатор LPC микроконтроллеров. Особенности внутрисхемного программирования. Часть вторая
В своей первой статье я описал схему простого программатора, сегодня расскажу, каким образом, подсоединить его к программируемому устройству.Рис. 1. Внешний вид программатора.
В старые, добрые времена, когда микроконтроллеры с перепрограммируемой памятью программ на основе FLASH только начинали появляться, их программирование осуществлялось по параллельном интерфейсу. При этом для программирования могло использоваться более 20 выводов и зачастую требовалось использовать повышенное напряжение — 12 вольт и более. Микроконтроллеры тогда выпускались в выводных ДИП корпусах. Программировали их в основном вставив в высококачественные панельки программатора, а уже затем впаивали в устройство. Однако со временем начался переход на программирование по последовательному каналу, при этом для программирования стало использоваться уже всего 4-5 сигнальных ножек. Кроме этого микросхемы стали изготавливать в совершенно экзотических корпусах. Надёжные панельки под такие корпуса иной раз могли стоить чуть ли не больше самого программатора! Появилась возможность и необходимость перепрограммировать микроконтроллеры не выпаивая из схемы – внутрисхемное программирование. Это очень удобно для отладки программы. Кроме этого появилась возможность производить монтаж платы целиком, а программирование осуществлять уже при настройке и выпуске прибора. Особенно это удобно при работе с контрактными производителями – есть гарантия, что не произойдёт утечка программного кода.
Сегодня большая часть устройств на микроконтроллерах использует внутрисхемное программирование. Для иллюстрации рассмотрим микроконтроллеры семейства LPC2xxx.
Эти микроконтроллеры имеют встроенный бутлоадер, который позволяет прошивать FLASH память путём внутрисхемного программирования. Для передачи данных используется последовательный порт 0 – выводы RXD0 и TXD0. Алгоритм входа в режим программирования очень простой, для этого используются всего две дополнительные сигнальные ножки – P0.14 и Reset.
Порт P0.14 устанавливается в низкий логический уровень, проще говоря замыкается на землю, при этом на выводе Reset должен присутствовать высокий логический уровень. Стоит однако заметить, что возможны и исключения, если до этого была запущена программа пользователя, в которой например задействован сторожевой таймер. Поэтому самый надёжный алгоритм ввода микроконтроллера в режим программирования следующий.
До включения питания замкнуть выводы P0.14 и Reset на землю. Подать питание, подождать пока оно установится в номинальное значение. Перевести Reset в высокий логический уровень, подождать как минимум несколько миллисекунд и подать высокий уровень на P0.14.
Для успешного применения данной возможности необходимо соблюдать несколько не сложных правил, которые проще продемонстрировать на примере схемы подключения программатора к устройству на основе микроконтроллера из серии LPC 214x. Для программирования будем использовать программатор, описанный в прошлой статье.
Рис. 2. Схема подключения программатора.
Начнём обзор схемы. Порт P0.14 подтянут к питанию с помощью резистора R4, чтобы при включении устройства в штатном режиме, на нём появлялся высокий уровень и соответственно, запускалась программа пользователя. В цепи LPC_RESET стоит подтягивающий регистр на питание и конденсатор на землю. Для нормальной работы их номиналы необходимо подбирать в зависимости от используемого источника питания. Дело в том, что при подключении устройства к питанию напряжение на нём достигает номинального не мгновенно, а постепенно, по мере того как заряжаются фильтрующие ёмкости. Для нормальной работы устройства необходимо чтобы запуск микроконтроллера начинался только по достижению определённого уровня питания, в современных микроконтроллерах для этого предусмотрены специальные цепи, однако на них надейся, а сам не плошай — как показывает практика при медленном увеличении питающего напряжения эти схемы могут срабатывать некорректно. В момент подачи напряжения питания конденсатор C2 начинает заряжаться и напряжение на нём некоторое время удерживается в низком уровне. Номиналы цепи R5,C2 желательно подобрать таким образом, чтобы высокий уровень на входе RESET появлялся не раньше, чем напряжение питания микроконтроллера достигнет напряжения 2,6 вольт.
Процесс программирования происходит при низком уровне на входе RESET, при это все порты ввода-вывода микроконтроллера переводятся в высокоомное состояние. Если порты вашего микроконтроллера используются для управления какими – либо узлами, например силовыми ключами или управляемыми стабилизаторами напряжения необходимо обеспечить их подтяжку к нужному логическому уровню во время программирования, иначе могут произойти большие неприятности, вплоть до выхода самой платы и управляемых ею устройств из строя.
В нашем примере нулевой COM порт используется не только для программирования, но и для обмена данными по интерфейсу RS485. Для этого служит узел на микросхеме D2. Обычно микросхема D2 постоянно включена в режим приёма, при этом она формирует сигнал на входе RXD микроконтроллера. В режиме программирования этот сигнал будет мешать программатору, для того чтобы этого не произошло, в схеме предусмотрены сопротивления R1 и R3. R1 переводит приёмник D2 в неактивное состояние – выход R0 переходит в высокоомное состояние и не мешает передавать данные программатору, а R3 отключает передатчик, чтобы некорректные данные не поступали через драйвер RS-485 интерфейса.
В случае, если вы собираетесь использовать для программирования достаточно длинные провода, либо имеется вероятность, что перепрограммированием устройства могут заняться пользователи, не имеющие достаточной квалификации следует побеспокоиться о защите программируемого микроконтроллера от статики и бросков напряжения. У меня, например, был случай, когда в устройстве пришлось заменять микроконтроллер 4 раза из-за криворуких “программистов”! Простейшая защита может состоять из диодов или стабилитронов, ограничивающих напряжение и включенных последовательно резисторов с небольшим сопротивлением. Например, как показано на рисунке 3.
Рис. 3. Схема подключения программатора с защитными цепями.
Осталось добавить, что для программирования микроконтроллеров семейства LPC2xxx на основе ядра ARM7TDMI вывод 3 программатора подсоединяют к порту P0.14. Для программирования микроконтроллеров семейства LPCxxx на основе ядра ARM7 Cortex вывод 3 программатора подсоединяют к порту P2.10.
Тема программирования микроконтроллеров и других приборов, не смотря на кажущуюся простоту, очень многогранна и полна нюансов. Однако для нашего случая
осталось рассказать о программном обеспечении и об особенностях программирования серии LPC900.
P.S.Данная статья рассчитана в основном на начинающих ембеддеров, поэтому извиняюсь за то, что возможно излишне подробно объясняю некоторые очевидные для профи вещи.
Микроконтроллеры 8 бит
Простота осовения и использования позволяет 8-ми разрядным микроконтроллерам оставаться на пике популярности. Огромное количество процессоров, компиляторов, средств разработки и готовых проектов позволяет любому желающему выбрать что-то по душе или создать собственную конструкцию. О некоторых системах идет речь в данном разделе.
Работа с энергонезависимой памятью PIC-микроконтроллеров.
Микроконтроллеры PIC содержат на своем кристалле, помимо всего прочего, модуль энергонезависимой памяти EEPROM. Эта память может использоваться для хранения пользовательских констант, настроечных параметров и иной информации при отключении питания процессора. Работа с энергонезависимой памятью требует специального подхода, если не использовать готовые функции. MikroPascal содержит специализированную библиотеку, значительно упрощающую работу с EEPROM.
Подробнее…
Ассемблерные вставки в mikroPascal
Язык ассемблера традиционно считается одним из непременнейших атрибутов программирования микроконтроллеров. Только его использование позволяет иметь полный контроль над процессором и программой. Другие высокоуровневые языки, как правило, дают значительно худший результат. Особенности компиляции приводят к увеличению объема кода, усложнению структуры программы и замедлению ее работы. При этом сложность освоения языков высокого уровня не намного меньше чем у ассемблера. Главное их достоинство, позволившее вытеснить ассемблер, заключается в более быстром и понятном написании исходных текстов программ. Поэтому сейчас языки высокого уровня повсеместно используются даже для простых микроконтроллеров.Подробнее…
Оптимизация кода для компилятора MikroPascal for PIC
Не секрет, что любой компилятор формирует избыточный машинный код. Если те же самые функции реализовать на ассемблере, то в результате можно получить существенно меньшую по объему управляющую программу. Для современных больших микроконтроллеров и микропроцессоров это не имеет столь решающего значения, как для чипов на основе 8-ми разрядных кристаллов. Оснащаются они, как правило, небольшим объемом памяти и соответственно требовательны к объему кода. Ниже описано, как можно сократить результирующий машинный код, пользуясь некоторыми правилами построения исходных текстов программ.
Подробнее…
Расширенные платы Arduino MEGA и DUE
Огромная популярность платформы Arduino не могла не привести к появлению множества разнообразных устройств, поддерживающих данную концепцию. Среди них можно отметить миниатюрные варианты и специализированные платы. Но все они плохо подходят для больших проектов. С целью удовлетворить запрос на мощный вариант платформы, разработчики создали плату MEGA.
Подробнее…
Паскаль для микроконтроллеров PIC. Часть 3.
Разработчики компиляторов часто стремятся обеспечить своих пользователей дополнительными функциями, существенно упрощающими создание программ. Такой подход приводит к возникновению некоторых недостатков, связанных с отступлением от стандартов и плохой переносимостью кода. Но они частично компенсируются ускорением разработки кода.
Подробнее…
Паскаль для микроконтроллеров PIC. Часть 2.
Компилятор mikroPascal, как было показано в первой части статьи, воспринимает все стандартные конструкции языка. Тем не менее, имеются некоторые особенности, ориентированные целиком на микроконтроллеры. В первую очередь к ним следует отнести работу с регистрами и отдельными битами.
Подробнее…
Паскаль для микроконтроллеров PIC. Часть 1.
Язык высокого уровня Паскаль сегодня активно используется в основном в целях первоначального обучения программированию. Этому способствует хорошая структурированность синтаксиса, а также высокая читаемость исходного текста. К сожалению, несмотря на множество достоинств, Паскаль постепенно теряет свои позиции, уступая место языкам новой волны. Тем не менее, он до сих пор остается очень привлекательным в деле создания не сложных программ и в любительских целях. Именно эти направления делают компилятор mikroPascal и одноименную IDE востребованными для разработки кода под микроконтроллеры.
Подробнее…
c – Какой язык выучить для программирования микроконтроллеров?
Переполнение стека- Товары
- Клиенты
- Случаи использования
- Переполнение стека Общественные вопросы и ответы
- Команды Частные вопросы и ответы для вашей команды
- предприятие Частные вопросы и ответы для вашего предприятия
- работы Программирование и связанные с ним возможности технической карьеры
- Талант Нанять технических талантов
- реклама Обратитесь к разработчикам по всему миру
ЯЗЫК ПРОГРАММИРОВАНИЯ МИКРОКОНТРОЛЛЕРОВ
ЯЗЫКИ ПРОГРАММИРОВАНИЯ МИКРОКОНТРОЛЛЕРОВ7) ЯЗЫКИ ПРОГРАММИРОВАНИЯ МИКРОКОНТРОЛЛЕРОВ
Просто небольшое введение для новичка.
7.1) Машина / язык ассемблера
Машинный язык - это представление программы в виде микроконтроллера. понимает это.Людям нелегко читать, и это обычное дело. причина мигрени. Язык ассемблера удобен для чтения форма машинного языка, которая значительно упрощает нам плоть и типы костей, с которыми нужно иметь дело. Каждый оператор ассемблера соответствует одному оператору на машинном языке (не считая макросов). Программа на ассемблере / машинном языке быстрая и небольшая. Это потому что вы полностью отвечаете за то, что входит в программу.из конечно, если вы напишете медленную, большую, глупую программу, она запустится медленно, будь слишком большим и будь глупым. Язык ассемблера (ассемблер) не могу исправить глупость - хотя иногда хотелось бы ;-). Если вы только начинаете изучать микроконтроллеры, это будет стоит сначала изучить ассемблер. Программируя в ассемблер, вы освоите базовую архитектуру микросхемы, которая важно, если вы собираетесь сделать что-нибудь значимое со своим микроконтроллер.
7.2) Переводчики
Устный переводчик - это переводчик высокого уровня, который ближе к естественный язык. Сам интерпретатор - это программа, которая сидит резидент в микроконтроллере. Он выполняет программу, читая каждое языковое выражение по одному, а затем делать то, что заявление говорит делать. Два самых популярных переводчика для микроконтроллеры бывают BASIC и FORTH.Популярность BASIC объясняется его простотой, удобочитаемостью и конечно, почти каждый хоть раз играл в BASIC или другой. Одна из распространенных жалоб на [интерпретированный] BASIC заключается в том, что он медленный. Часто это можно решить, используя другую технику для выполнение желаемой задачи. В других случаях это просто уплаченная цена для использования переводчика. FORTH имеет очень лояльных поклонников из-за его скорости (приближаясь к языка ассемблера) и его инкрементальный подход к созданию система из многоразовых деталей.Многие системы FORTH поставляются с хостом система, которая превращает ваш настольный компьютер в систему разработки. FORTH может быть довольно сложно написать (если у вас нет опыта с ним) и, вероятно, его даже труднее читать. Однако это очень полезный и производительный язык для систем управления и робототехники, а также можно освоить со временем. Самое приятное в разработке системы с интерпретатором - это что вы можете создавать свою программу в интерактивном режиме.Вы сначала напишите небольшой фрагмент кода, а затем вы можете сразу попробовать его, чтобы увидеть как это устроено. Когда результаты будут удовлетворительными, вы можете добавить дополнительные компоненты до получения конечного продукта.
7.3) Компиляторы
Компилятор - это переводчик языка высокого уровня, который сочетает в себе простота программирования интерпретатора с большей скоростью. Это выполняется путем перевода программы (на хост-машине, такой как настольный ПК) прямо на машинный язык.Машинный язык программа затем записывается в EPROM или загружается непосредственно в микроконтроллер. Затем микроконтроллер выполняет переведенный программировать напрямую, без предварительной интерпретации. Самые популярные компиляторы микроконтроллеров - C и BASIC. PL / М, от Intel, также пользуется популярностью благодаря этой компании широкое использование этого языка. Из-за его популярности и низкой скорости это было логично. что BASIC появится как компилируемый язык.Несколько компаний предоставить компилятор BASIC для нескольких наиболее популярных микроконтроллеры. Скорость выполнения резко увеличена за интерпретируется BASIC, поскольку микроконтроллер освобождается от задачи интерпретация операторов во время работы программы. В то время как интерпретируемый Форт приближается (а иногда и превосходит) скорость многих компиляторов, скомпилированный Форт кричит. Сегодня там есть много высокопроизводительных компиляторов Forth, оптимизирующих собственный код, и есть также много очень дешевых или бесплатных фортов, являющихся общественным достоянием.Некоторые из них, как ForthCMP Тома Алми, создает оптимизированный собственный код с меньше накладных расходов и лучшая производительность, чем что-либо еще там. Конечно, он по-прежнему компактнее и элегантнее. факторинг функциональности, чем в большинстве языков. C теперь является языком выбора для всей вселенной. C используется на компьютерах от крошечного микроконтроллера до самого большого Cray суперкомпьютер. Хотя программа на C иногда может быть немного утомительной, читать (из-за лаконичного стиля программирования, за которым следуют многие C программисты), это мощный и гибкий инструмент разработки.Хотя это язык высокого уровня, он также дает разработчику доступ к лежащая в основе машина. Есть несколько очень хороших и дешевых C компиляторы, доступные для наиболее популярных микроконтроллеров. это широко используется, доступен, поддерживается и производит довольно эффективный код (быстро и компактно).
7.4) Нечеткая логика и нейронные сети
Нечеткая логика и нейронные сети - это два метода проектирования, которые становится популярным во встраиваемых системах.Эти два метода очень отличаются друг от друга, от концепции до реализации. Однако преимущества и недостатки обоих могут дополнять друг друга. Преимущество нейронных сетей в том, что можно проектировать их без полного понимания основных логических правил которыми они работают. Разработчик нейронной сети применяет набор вводит в сеть и «обучает» ее производить требуемый результат.Входные данные должны отражать поведение системы, которая запрограммированы, а выходы должны соответствовать желаемому результату в пределах некоторая погрешность. Если вывод сети не соответствует желаемый результат, структура нейронной сети изменена пока это не произойдет. После обучения предполагается, что сеть будет также производить желаемый результат или что-то близкое к нему, когда это представлены новые и неизвестные данные.Напротив, систему с нечеткой логикой можно точно описать. Перед разработана нечеткая система управления, ее желаемая логическая работа должны быть проанализированы и переведены в правила нечеткой логики. Это шаг, на котором технологии нейронных сетей могут быть полезны конструктор нечеткой логики. Дизайнер может сначала обучить программный нейронный сеть для получения желаемого результата из заданного набора входов и выходы, а затем использовать программный инструмент для извлечения основных правил из нейронной сети.Извлеченные правила переводятся в правила нечеткой логики. Нечеткая логика не является законченным дизайнерским решением. Он скорее дополняет чем заменяет традиционное управление событиями и ПИД-регулятор (пропорциональный, интегральные и производные) методы управления. Нечеткая логика полагается на степень членства и методы искусственного интеллекта. Оно работает лучше всего, когда он применяется к нелинейным системам со многими входами, которые не может быть легко выражена ни в одном из математических уравнений, используемых для ПИД-регулирование или операторы IF-THEN, используемые для управления событиями.Пытаясь заменить нечеткую логику «модным словом» (как в большей части мира) на хорошо зарекомендовавший себя метод проектирования (поскольку он находится в Японии), большинство производителей микроконтроллеров представили программное обеспечение нечеткой логики. Большинство программ генерируют код для определенных микроконтроллеры, а другие генерируют код C, который может быть скомпилирован для любого микроконтроллера.,
Какие инструменты часто используются при программировании микроконтроллера?
Обычно мы проектируем схему и подключаемся к другим другим компонентам, таким как двигатели, ЖК-дисплеи, светодиоды, и даже больше, предоставляя источник питания, который используется этой схемой. Что делает микроконтроллер, когда он запрограммирован с помощью этой схемы?
Семейства микроконтроллеров понимают программу, написанную на языке ассемблера или языке C, которая должна быть скомпилирована в язык машинного уровня, известный как двоичный язык (т.е. нули и единицы). Запрограммированный файл сохраняется на жестком диске компьютера или в памяти микроконтроллера. Ассемблер используется для перевода программы сборки в машинный код. Чтобы написать программу на языке ассемблера, программист должен обладать знаниями о процессоре или оборудовании. Языки низкого уровня используются в кросс-разработке. Шестнадцатеричная система использовалась как более эффективный способ представления двоичных чисел, в то время как при использовании двоичного языка ЦП работает очень быстро.
Сегодня мы можем использовать множество различных языков программирования, таких как C, JAVA, ORACLE и другие.Эти языки называются языками высокого уровня; Чтобы написать программу на языке высокого уровня, программисту не нужны какие-либо знания об оборудовании, которое используется для разработки приложений высокого уровня. Компилятор играет жизненно важную роль в переводе высокоуровневой программы на машинный уровень, поскольку языки высокого уровня используются в собственной разработке.
Вот некоторые инструменты, которые используются при программировании микроконтроллеров:
- Keil uVison
- Code Editor
- Assembler
- C compiler
- Burner / Programmer
Keil Uvison:
The Keil Uvison – это бесплатное программное обеспечение, которое решает многие проблемы разработчика встраиваемых систем.Это программное обеспечение представляет собой интегрированную среду разработки (IDE), в которую интегрированы текстовый редактор для написания программ, компилятор, который преобразует исходный код в шестнадцатеричный файл.
Программное обеспечение Keil uVsion
Руководство по началу работы с Keil Uvison:
1. Щелкните значок Keil Vision на рабочем столе.
В этот процесс входят следующие шаги:
Рисунок 12. Щелкните меню «Проект» в строке заголовка.
Затем щелкните «Новый проект»
Рисунок 23. Сохраните проект, набрав подходящее имя проекта без расширения в вашей собственной папке, расположенной в C: \ или D: \
Рисунок 34. Затем нажмите кнопку «Сохранить» выше.
Выберите компонент для вашего проекта. т.е. Atmel ……
Щелкните по символам + в соответствии с вашими требованиями. Пример здесь выбран Atmel.
Рисунок 45 . Выберите AT89C51, как показано ниже
Рисунок 56. Затем нажмите «ОК»
Следующие шаги включают в себя описанный выше процесс:
Рисунок 67. Затем нажмите ДА или НЕТ ……… в основном «НЕТ».
Теперь ваш проект готов к ИСПОЛЬЗОВАНИЮ.
Теперь дважды щелкните Target1, вы получите еще одну опцию «Source group 1», как показано на следующей странице.
Рисунок 78. Щелкните опцию файла в строке меню и выберите «новый»
Рисунок 89. Следующий экран будет таким, как показано на текстовой странице
Рисунок 910. Теперь начните писать программу либо в «EMBEDDED C», либо в «ASM».
Чтобы программа была написана на языке Ассемблер, мы должны сохранить ее с расширением «. Asm », а для программы на основе« EMBEDDED C »мы должны сохранить его с расширением« .C »
Рисунок 1011. Теперь щелкните правой кнопкой мыши группу источников 1 и выберите« Добавить файлы в группу источников »
Рисунок 1112. Теперь выберите в соответствии с расширением файла, указанным при сохранении файла.
Щелкните только один раз на опции « ADD ».
Теперь нажмите функциональную клавишу F7 для компиляции. Если это произойдет, появится любая ошибка.
Если файл не содержит ошибок, одновременно нажмите Control + F5.
Редактор кода или текстовый редактор:
Редактор кода используется для написания программы. Редакторы uVision включают в себя все стандартные функции, такие как цветное выделение синтаксиса, и быстро выявляют ошибки.Редактор доступен во время отладки. Естественная среда отладки помогает быстро выявлять и исправлять ошибки в вашей программе. После написания программы в редакторе кода сохраните этот файл в формате .asm или .C в зависимости от того, какой ассемблер вы выбрали.
Keil Uvison EditorАссемблер:
Ассемблер используется для преобразования исходного кода (язык низкого уровня) в машинный уровень (двоичный формат).
Компилятор:
Компилятор используется для преобразования исходного кода (язык высокого уровня) в машинный уровень (двоичный формат).
Ассемблер преобразует инструкции в машинный код:
Схема преобразования языка ассемблера в машинный уровень
➢ Первый файл создается с помощью редактора, такого как DOS edit или другого.
➢ Ассемблер создаст целевой файл и список файлов. Расширение объектного файла – «.obj», а расширение файла списка – «.lst».
➢ Ассемблеру требуется третий шаг, известный как связывание.Программа связывания берет один или несколько файлов объектов и создает целевой файл с расширением «.abs».
➢ Файл «.abs» загружается в программу под названием OH (преобразователь из целевого в шестнадцатеричный), которая создает файл с расширением «шестнадцатеричный», готовый для записи в ПЗУ микроконтроллера.
Записывающее устройство / Программист:
Программирование или запись микроконтроллера означает «перенос программы из компилятора в память микроконтроллера». Программа для микроконтроллера обычно написана на языке C или ассемблере, и, наконец, компилятор генерирует шестнадцатеричный файл, который содержит инструкции машинного языка, такие как нули и единицы, понятные микроконтроллерам.Это содержимое микроконтроллера, которое передается в микроконтроллер. Как только программа передается в память микроконтроллера, она работает в соответствии с программой.
Программатор / устройство записиКак программировать микроконтроллер:
Микроконтроллер – это интегрированный чип, в котором мы храним код, написанный на языке ассемблера. Итак, чтобы сбросить эту закодированную программу в ИС микроконтроллера, нам понадобится устройство, известное как записывающее устройство или программатор. Программист – это аппаратное устройство с программным обеспечением, которое считывает содержимое шестнадцатеричного файла, хранящегося на ПК или ноутбуках.Он считывает шестнадцатеричный файл данных через последовательный порт или USB-кабель и передает данные в память микроконтроллера.
Программисты и компиляторы различны для разных микроконтроллеров, которые используются разными компаниями, например, микроконтроллер 8051 «flash magic» используется для программирования микроконтроллера и микроконтроллер AT89C51 «программатор» используется для программирования микроконтроллера. Таким образом мы программируем код в микроконтроллере с помощью записывающего устройства или программатора.
.Микроконтроллер– Альтернативные языки для встроенного программирования
Переполнение стека- Товары
- Клиенты
- Случаи использования
- Переполнение стека Общественные вопросы и ответы
- Команды Частные вопросы и ответы для вашей команды
- предприятие Частные вопросы и ответы для вашего предприятия
- работы Программирование и связанные с ним возможности технической карьеры
- Талант Нанять технических талантов
- реклама Обратитесь к разработчикам по всему миру