Термин программирование микроконтроллеров обозначает процесс записи (программирования) информации в постоянное запоминающее устройство (ПЗУ) микроконтроллера. Помимо программирования микроконтроллеров, в практике встречается программирование микросхем памяти и программирование логических матриц. Как правило, программирование микроконтроллеров и микросхем памяти производится при помощи специальных устройств – программаторов. Хороший программатор позволяет не только программировать (записывать), но и считывать информацию, а в ряде случаев, производить и другие действия (стирание, защита от чтения, защита от программирования и т.п.).
Используя различные признаки, все многообразие устройств со встроенным ПЗУ можно систематизировать следующим образом:
1. По функциональному назначению
1.1. Микросхемы памяти;
1.2. Микроконтроллеры с внутренним ПЗУ;
1.3. Микросхемы программируемой логики (программируемые матрицы).
2. По возможности программирования
2.1. Однократно программируемые — устройства допускающие единственный цикл программирования;
Программирование микроконтроллеров: с чего начать и что изучать
2.2. Многократно программируемые (перепрограммируемые) — устройства допускающие множество циклов программирования (перепрограммирования).
3. По допустимым способам программирования
3.1. Микросхемы, программируемые в программаторе. Для осуществления необходимой операции, подобные микрocхемы вставляются в специальную колодку программатора, обеспечивающую электрический контакт со всеми выводами микрocхемы. Для реализации выбранного режима, программатор формирует в соответствии со спецификацией производителя необходимые последовательности сигналов, которые через колодку подаются на определенные выводы программируемого микроконтроллера (микрocхемы).
3.2. Микрocхeмы, поддерживающие режим внутрисхемного программирования (“ ISP mode ”), и программируемые непосредственно в плате пользователя.
Подобные микрocхeмы предполагают выполнение необходимой операции (программирование, стирание, чтение, верификация и т.п.) непосредственно в плате пользователя. Все действия по программированию производятся с помощью внешнего программатора, определенным образом подключенного к плате пользователя. При этом плата пользователя должна быть разработана с учетом специфических требований данного режима.
3.3. Микросхемы, поддерживающие режим внутреннего самопрограммирования. Подобные микрocхeмы допускают выполнение необходимой операции (запись, стирание, чтение, верификация и т.п.) непосредственно в устройстве пользователя, без использования какого либо программатора. При этом устройство пользователя должно быть разработано с учетом специфических требований данного режима.
Программирование микроконтроллера подразумевает заполнение внутренней памяти микроконтроллера нужной информацией. В зависимости от типа программируемого микроконтроллера, внутренняя память микроконтроллера обладает своей структурой и организацией. В общем случае, внутренняя память микроконтроллера это: память данных, память программ, регистры специального назначения (fuse — биты) — содержимое которых определяет режимы работы микроконтроллера и/или его периферии. Таким образом: программирование микроконтроллера — это заполнение каждой области памяти своей специфической информацией.
Как просто научиться программировать микроконтроллеры PIC и AVR / Бегущие огни за 8 минут!
Каждый программируемый микроконтроллер обладает своим индивидуальным набором допустимых режимов:
программирование (запись), чтение, стирание, защита от чтения, защита от программирования и т.п.
Некоторые программируемые микроконтроллеры не имеют отдельного режима «стирание». Для них стирание прежней информации в памяти происходит в теневом режиме, при каждом новом цикле программирования микроконтроллера;
Некоторые программируемые микроконтроллеры поддерживают различные режимы ограничения доступа. Выбор режима ограничения доступа производится при программировании микроконтроллера. В зависимости от выбранного режима, либо все ПЗУ микроконтроллера, либо его определенные части могут быть:
- — защищены от возможности записи/дозаписи;
- — защищены от возможности считывания содержимого извне. При попытке считать информацию, защищенный микроконтроллер будет выдавать либо «мусор», либо «все 0», либо «все 1».
Говоря о программируемых устройствах, можно считать общепринятой следующую систему мнемонических обозначений:
- PROM (Programmable Read-Only Memory) — программируемая пользователем энергонезависимая память (ПЗУ).
- EPROM (Erasable Programmable Read-Only Memory) — перепрограммируемое ПЗУ. Стирание содержимого производится при помощи ультрафиолетовых лучей, после облучения подобное ПЗУ готово к новому циклу записи информации (программированию). Устаревший тип памяти.
- EEPROM (Electrically Erasable Programmable Read-Only Memory) — электрически стираемое перепрограммируемое ПЗУ. Память такого типа может стираться и заполняться данными многократно, от несколько десятков тысяч раз до миллиона.
- FLASH (FlashMemory ) — одна из технологических разновидностей энергонезависимой перезаписываемой памяти.
- NVRAM (Non-volatile memory) — «неразрушающаяся» память, представляющая собой ОЗУ со встроенным источником электропитания. По своей функциональности для пользователя – аналогична традиционному ПЗУ.
- PLD (ProgrammableLogicDevice) — Программируемая логическая интегральная схема. (ПЛИС).
- MCU (Microcontroller Unit) – микроконтроллер.
115088, Москва, БЦ Бизнес-квартал IQ-Park, Угрешская ул, дом 2, стр. 57, офис 403 В
тел.: 8 (495) 780-9251 (многоканальный)
Источник: www.phyton.ru
Как пишутся программы для микроконтроллеров
Написание макросов в ассемблере
12.02.2011 3 Mins Read
При освоении языка программирования, Ассемблер, в описании инструментов этого языка, упоминается такой элемент, как — Макрос. Зачем он нужен и какая от него польза? Чтобы реально это понять, вероятно, лучше это показать на конкретном примере, конкретной программы.
Работа с энергонезависимой памятью EEPROM
Кроме FLASH-памяти программ и оперативной памяти RAM в микроконтроллере есть другой вид памяти — EEPROM.…
Первый проект для микроконтроллера AVR в CodeVisionAVR
Среда CodeVisionAVR является, пожалуй, самой ходовой средой для программирования микроконтроллеров AVR, т.к. заточена именно под…
CodeVision AVR. Вывод информации на ЖКИ. Использование библиотечных функций.
Индикаторы ЖКИ являются неотъемлемой частью радиоэлектронной аппаратуры для вывода различной информации. В этой статье поговорим…
Основы языка Си для микроконтроллеров
В данной статье рассматриваются азы программирования микроконтроллеров на Си. Язык программирования Си — высокоуровневый язык,…
Создание своей библиотеки *.lib — *.h для использования в программе на Си
Речь пойдет о том, как создать связку файлом *.lib — *.h для использования в основной…
Схема программатора STK200/300
В настоящее время микроконтроллеры AVR фирмы ATMEL получили весьма широкое распространение. Это обусловлено небольшой стоимостью,…
Регистры и порты микроконтроллера AVR
Одним из самых важных аспектов программирования микроконтроллеров является работа с регистрами и портами. У микроконтроллеров…
Основные ассемблерные команды микроконтроллеров AVR
Для изучения азов программирования микроконтроллеров AVR на ассемблере AVR Studio необходимо понимать значения ассемблерных мнемоник.…
Пример работы USART и SPI на C WinAVR
Как пишутся программы для микроконтроллеров
Здравствуйте. Заинтересовался микроконтроллерами после того как собрал пару схем одну на PIC16F819, вторую Простые часы на ATTiny2313. Очень понравилось, с простейшими программаторами и прошивкой проблем не возникло, но появилось желание продолжить опыты и самому научится писать программы.
Беда в том, что не могу найти нормальной среды программирования и обучалки по этой среде. Начать хочется с ATtiny2313. Обучалка по AVR на сайте прочитана, и видимо хороша, но понять её и использовать на практике сложно хотя бы потому что AT90s2313 уже не найти и tavrasm уже устарел и не знаю можно ли его использовать с Attiny2313. Знания языков программирования у меня на школьном уровне, простые программки на Паскале, что то помню рисовал на писишном ассемблере, но давно это было.
Посоветуйте с чего сейчас актуально начать, какую среду разработки использовать, и толковый учебник по этой среде.
Лучше разбираться с ассемблером или сразу осваивать С?
Нужны именно азы, настройка среды под микроконтроллер, конфигурация портов, зажечь светодиод, бегуший огонёк, динамическая индикация, управление матрицей на сдвиговых регистрах, опрос клавиатуры, и.т.д.
Добавлено: Вс мар 20, 2011 19:57:33
brian4ever писал(а):
Лучше разбираться с ассемблером или сразу осваивать С?
И то и другое + описание на контроллер. Ассемблер — для понимания работы контроллера и задания жестких временных интервалов (пригодится в качестве вставок в сишный код). Си специализированный на серию контроллеров — на других языках тоже можно, но так сложилось что СИ впереди планеты всей и большинство программ пишется на нем. Это как в компьютерах и опереционных системах- законодатель моды. Ну и даташиты и особенности применения — назубок.
_________________
Лучше умному тупить, чем тупому умничать
Последний раз редактировалось anatol378 Вс мар 20, 2011 19:59:49, всего редактировалось 1 раз.
Добавлено: Вс мар 20, 2011 19:59:41
Из опыта, если не планируете строить большие и БЫСТРЫЕ структуры на МК, и в школе паскаль то выбор Си.
Для AVR конечно CodeVisionAVR (CVAVR) там есть codeWizardAVR -мегоудобно но надо англ знать хоть чуть.
В качестве примеров я в свое время юзал my-avr.at.ua просто, без хлама и лишнего текста.
ИМХО
Сборка печатных плат от $30 + БЕСПЛАТНАЯ доставка по всему миру + трафарет
Добавлено: Вс мар 20, 2011 20:34:52
Решил я начать разбираться с CodeVisionAVR.
Читаю и пытаюсь повторить простейший урок с my-avr.at.ua, зажигающий светодиод на ATmega8.
Думаю, ничего что у меня есть только ATtiny2313, сначала напишу и скомпилирую пример для ATMega8, потом разберусь и переделаю его под attiny2313 зашью и зажгу светодиод, но не тут то было.
Подключаем программатор с приставкой(и микросхемой) к LPT порту.
Дальше нам нужно запустить Сode Vision AVR
Settings -> Programmer и выбираем Kanda Systems STK 200+/300 и нажимаем ОК.
дальше нажимаем Tools -> Code Wizard AVR
Chip ATmega8
Clock 8.000000 МHz
нажимаем ОК
Где нажимать OK, если у меня на экране нет такой кнопки?
вот что я вижу:
Вы меня извините за такой идиотизм, но я с самого утра не могу выполнить простейших примеров по таким вот идиотским причинам.
UPD: Подумал, может под Seven глючит и кнопку OK не рисует, поставил Сode Vision AVR под XP на виртуальной машине. Кнопка OK не появилась.
Последний раз редактировалось brian4ever Вс мар 20, 2011 21:00:44, всего редактировалось 1 раз.
25 мая компания КОМПЭЛ провела вебинар, посвященный новой продукции MORNSUN для промышленной автоматизации и телекоммуникационных приложений. На вебинаре были представлены источники питания на DIN-рейку класса High-End для применения в ответственных областях, безвентиляторные ИП для жестких условий эксплуатации, модули UPS и резервирования. Также было рассмотрено, как и на базе каких компонентов можно реализовать питание в телекоммуникационных и промышленных устройствах от шины до точки нагрузки (PoL) и показано, почему использование продукции MORNSUN выгодно в нынешних экономических условиях.
Добавлено: Вс мар 20, 2011 20:56:09
В кодвизарде File -> Generate, Save and exit
Бывает. Причем сохранять надо либо сразу как основной (main.c) вместо того что есть в папке проекта, либо сохранить где угодно но потом зайти в configure project (значек такой с молотком ,отверткой и ключем) add и указать путь к этому файлу.
кстати в кодвизарде есть оч полезная функция file-> code previev, перед тем как сохранить позволяет увидеть код который будет сохранен, или не сохранен.
По итогам прошлого года компания MEAN WELL поднялась на третье место в рейтинге мировых производителей встраиваемых ИП, усилив свои позиции как лидер среди производителей источников питания. Кроме того, компания открыла новый завод, сократив сроки производства.
Добавлено: Вс мар 20, 2011 22:15:19
А возможно ли код скомпилированный при помощи CodeVisionAVR прошить через avreal в мк ?
Я делаю так: Project/compile затем tools/chip programmer/file/save flash/ сохраняю code.rom, скармливаю его avreal, а он мне выдаёт
Invalid HEX line
‘000000:C012″
Что я делаю нитак? Прошить из CodeVisionAVR пока не имею возможности, программатор 7 проводков и 4 резистора, шьёт только из аvreal, обязательно программатор переделаю, но не сегодня.
Поглядел, код сохраняется в текстовом формате а не в hex. Как сохранить hex из CodeVisionAVR?
UPD: ну вот я не безнадёжен. Нашел в папке проекта файл hex, скормил его avreal, включил девайс и светодиод на PD0 весело замигал
А в CodeVision можно только на С писать или на ассемблере тоже можно?
Добавлено: Пн мар 21, 2011 13:34:05
brian4ever писал(а):
А возможно ли код скомпилированный при помощи CodeVisionAVR прошить через avreal в мк ?
Я делаю так: Project/compile затем tools/chip programmer/file/save flash/ сохраняю code.rom, скармливаю его avreal, а он мне выдаёт
Invalid HEX line
‘000000:C012″
Что я делаю нитак? Прошить из CodeVisionAVR пока не имею возможности, программатор 7 проводков и 4 резистора, шьёт только из аvreal, обязательно программатор переделаю, но не сегодня.
Поглядел, код сохраняется в текстовом формате а не в hex. Как сохранить hex из CodeVisionAVR?
UPD: ну вот я не безнадёжен. Нашел в папке проекта файл hex, скормил его avreal, включил девайс и светодиод на PD0 весело замигал
А в CodeVision можно только на С писать или на ассемблере тоже можно?
можно делать ассемблерные вставки. советую поискать в сети книгу, с описанием CV.
Добавлено: Пн мар 21, 2011 14:31:56
brian4ever писал(а):
Что я делаю нитак? Прошить из CodeVisionAVR пока не имею возможности, программатор 7 проводков и 4 резистора, шьёт только из аvreal,
CV шьет, в меню выбрать программатор Kanda Systems STK200+/300
Тема по CodeVisionAVR вверху прилепленна..
_________________
scio me nihil scire.
_____
Добавлено: Вс май 01, 2011 13:12:24
Я начинал с АТмега8, теперь АТмега16, думаю лучше даже с АТмега16 начинать. =) Курс обучения очень понятный и доступный для чайников avr123.nm.ru
рекомендую.
В конце есть по ПИКам. =)
з.ы. по ТИНИ читал, что есть проблемы с программированием. они вроде как не понимают на быстром прошивании. Надо скорость порта убавлять. (или в программаторе-программе). Сам не пробовал, хотя ТИНЬКА валяется.
Добавлено: Вс май 01, 2011 13:23:51
Коль уж Вы решили работать в среде CodeVision C AVR, то буду иметь смелость рекомендовать книгу М.Б.Лебедева — «CodeVisionAVR. Пособие для начинающих». Лежит на любом углу в сети. У меня она в качестве настольной книги — написана толково и с объяснениями, действительно для начинающих.
_________________
pavel_cydenov: Вобще я праAVRославный человек. Но и про ислARM слышал много хорошего )
MrYuran: Самые ортодоксальные — это PICудеи )
Katz: Не, 51-ники. )
Источник: www.radiokot.ru