Как пишутся программы для микроконтроллеров

Термин программирование микроконтроллеров обозначает процесс записи (программирования) информации в постоянное запоминающее устройство (ПЗУ) микроконтроллера. Помимо программирования микроконтроллеров, в практике встречается программирование микросхем памяти и программирование логических матриц. Как правило, программирование микроконтроллеров и микросхем памяти производится при помощи специальных устройств – программаторов. Хороший программатор позволяет не только программировать (записывать), но и считывать информацию, а в ряде случаев, производить и другие действия (стирание, защита от чтения, защита от программирования и т.п.).

Используя различные признаки, все многообразие устройств со встроенным ПЗУ можно систематизировать следующим образом:

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 минут!

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

Некоторые программируемые микроконтроллеры не имеют отдельного режима «стирание». Для них стирание прежней информации в памяти происходит в теневом режиме, при каждом новом цикле программирования микроконтроллера;

Некоторые программируемые микроконтроллеры поддерживают различные режимы ограничения доступа. Выбор режима ограничения доступа производится при программировании микроконтроллера. В зависимости от выбранного режима, либо все ПЗУ микроконтроллера, либо его определенные части могут быть:

  1. — защищены от возможности записи/дозаписи;
  2. — защищены от возможности считывания содержимого извне. При попытке считать информацию, защищенный микроконтроллер будет выдавать либо «мусор», либо «все 0», либо «все 1».
Читайте также:
Сбис как работать в программе документов

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

  1. PROM (Programmable Read-Only Memory) — программируемая пользователем энергонезависимая память (ПЗУ).
  2. EPROM (Erasable Programmable Read-Only Memory) — перепрограммируемое ПЗУ. Стирание содержимого производится при помощи ультрафиолетовых лучей, после облучения подобное ПЗУ готово к новому циклу записи информации (программированию). Устаревший тип памяти.
  3. EEPROM (Electrically Erasable Programmable Read-Only Memory) — электрически стираемое перепрограммируемое ПЗУ. Память такого типа может стираться и заполняться данными многократно, от несколько десятков тысяч раз до миллиона.
  4. FLASH (FlashMemory ) — одна из технологических разновидностей энергонезависимой перезаписываемой памяти.
  5. NVRAM (Non-volatile memory) — «неразрушающаяся» память, представляющая собой ОЗУ со встроенным источником электропитания. По своей функциональности для пользователя – аналогична традиционному ПЗУ.
  6. PLD (ProgrammableLogicDevice) — Программируемая логическая интегральная схема. (ПЛИС).
  7. MCU (Microcontroller Unit) – микроконтроллер.

115088, Москва, БЦ Бизнес-квартал IQ-Park, Угрешская ул, дом 2, стр. 57, офис 403 В
тел.: 8 (495) 780-9251 (многоканальный)

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

Как пишутся программы для микроконтроллеров

симуляция программы микроконтроллера в AVRStudio

Написание макросов в ассемблере

12.02.2011 3 Mins Read

При освоении языка программирования, Ассемблер, в описании инструментов этого языка, упоминается такой элемент, как — Макрос. Зачем он нужен и какая от него польза? Чтобы реально это понять, вероятно, лучше это показать на конкретном примере, конкретной программы.

регистр EEAR с адресом ячейки памяти EEPROM

Работа с энергонезависимой памятью EEPROM

Кроме FLASH-памяти программ и оперативной памяти RAM в микроконтроллере есть другой вид памяти — EEPROM.…

CodeVisionAVR

Первый проект для микроконтроллера AVR в CodeVisionAVR

Среда CodeVisionAVR является, пожалуй, самой ходовой средой для программирования микроконтроллеров AVR, т.к. заточена именно под…

Подключение дисплея 16х2 к микроконтроллеру

CodeVision AVR. Вывод информации на ЖКИ. Использование библиотечных функций.

Индикаторы ЖКИ являются неотъемлемой частью радиоэлектронной аппаратуры для вывода различной информации. В этой статье поговорим…

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

В данной статье рассматриваются азы программирования микроконтроллеров на Си. Язык программирования Си — высокоуровневый язык,…

Светодиодная мигалка

Создание своей библиотеки *.lib — *.h для использования в программе на Си

Речь пойдет о том, как создать связку файлом *.lib — *.h для использования в основной…

Рисунок 1. Электрическая принципиальная схема адаптера STK200/300

Схема программатора 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

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