Программирование контроллеров для начинающих: Программирование микроконтроллеров для начинающих

Содержание

Средства программирования PIC-контроллеров / Хабр

Введение


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

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

Компания Microchip распространяет MPLAB — бесплатную интегрированную среду редактирования и отладки программ, которая записывает бинарные файлы в микроконтроллеры PIC через программаторы.

Взаимодействие MPLAB и Matlab/Simulink позволяет разрабатывать программы для PIC-контроллеров в среде Simulink — графического моделирования и анализа динамических систем. В этой работе рассматриваются средства программирования PIC контроллеров: MPLAB, Matlab/Simulink и программатор PIC-KIT3 в следующих разделах.

• Характеристики миниатюрного PIC контроллера PIC12F629

• Интегрированная среда разработки MPLAB IDE
• Подключение Matlab/Simulink к MPLAB
• Подключение программатора PIC-KIT3

Характеристики миниатюрного PIC-контроллера


Семейство РIС12ххх содержит контроллеры в миниатюрном 8–выводном корпусе со встроенным тактовым генератором. Контроллеры имеют RISC–архитектуру и обеспечивают выполнение большинства команд процессора за один машинный цикл.

Для примера, ниже даны характеристики недорогого компактного 8-разрядного контроллера PIC12F629 с многофункциональными портами, малым потреблением и широким диапазоном питания [1].

• Архитектура: RISC
• Напряжение питания VDD: от 2,0В до 5,5В (< 6,5В)
• Потребление:
— <1,0 мА @ 5,5В, 4МГц
— 20 мкА (тип) @ 32 кГц, 2,0В
— <1,0 мкА (тип) в режиме [email protected],0В
• Рассеиваемая мощность: 0,8Вт
• Многофункциональные каналы ввода/вывода: 6/5
• Максимальный выходной ток портов GPIO: 125мА
• Ток через программируемые внутренние подтягивающие резисторы портов: ≥50 (250) ≤400 мкА @ 5,0В
• Разрядность контроллера: 8
• Тактовая частота от внешнего генератора: 20 МГц
Длительность машинного цикла: 200 нс
• Тактовая частота от внутреннего RC генератора: 4 МГц ±1%
Длительность машинного цикла: 1мкс
• FLASH память программ: 1К
Число циклов стирание/запись: ≥1000
• ОЗУ память данных: 64
• EEPROM память данных: 128
Число циклов стирание/запись: ≥10K (-40оС ≤TA≤ +125 оС)
• Аппаратные регистры специального назначения: 16
• Список команд: 35 инструкций, все команды выполняются за один машинный цикл,
кроме команд перехода, выполняемых за 2 цикла
• Аппаратный стек: 8 уровней
• Таймер/счетчик ТМR0: 8-разрядный с предделителем
• Таймер/счетчик ТМR1: 16-разрядный с предделителем

Дополнительные особенности:
• Сброс по включению питания (POR)
• Таймер сброса (PWRTтаймер ожидания запуска генератора (OST
• Сброс по снижению напряжения питания (BOD)
• Сторожевой таймер WDT
• Мультиплексируемый вывод -MCLR
• Система прерываний по изменению уровня сигнала на входах
• Индивидуально программируемые для каждого входа подтягивающие резисторы
• Программируемая защита входа
• Режим пониженного энергопотребления SLEEP
• Выбор режима работы тактового генератора
• Внутрисхемное программирование ICSP с использованием двух выводов
• Четыре пользовательские ID ячейки

Предельная рабочая температура для Е исполнения (расширенный диапазон) от -40оС до +125 оС;
Температура хранения от -65оС до +150 оС.

КМОП технология контроллера обеспечивает полностью статический режим работы, при котором остановка тактового генератора не приводит к потере логических состояний внутренних узлов.
Микроконтроллер PIC12F629 имеет 6-разрядный порт ввода/вывода GPIO. Один вывод GP3 порта GPIO работает только на вход, остальные выводы можно сконфигурировать для работы как на вход так и на выход. Каждый вывод GPIO имеет индивидуальный бит разрешения прерываний по изменению уровня сигнала на входах и бит включения внутреннего подтягивающего резистора.

Интегрированная среда разработки MPLAB IDE

MPLAB IDE — бесплатная интегрированная среда разработки ПО для микроконтроллеров PIC включает средства для создания, редактирования, отладки, трансляции и компоновки программ, записи машинного кода в микроконтроллеры через программаторы.

Загрузка MPLAB IDE

Бесплатные версии MPLAB (включая MPLAB 8.92) хранятся на сайте компании Microchip в разделе «DOWNLOAD ARCHIVE».

Создание проекта

Пример создания проекта программ PIC контроллера в среде MPLAB включает следующие шаги [2].

1. Вызов менеджера проекта.


2. Выбор типа PIC микроконтроллера.
3. Выбор компилятора, например, Microchip MPASM для ассемблера.
4. Выбор пути к каталогу проекта (клавиша Browse...) и ввод имени проекта.

5. Подключение файлов к проекту в окне Project Wizard → Step Four можно не выполнять. Это можно сделать позднее, внутри активного проекта. Клавиша Next открывает следующее окно.

6. Завершение создания проекта (клавиша Finish).

В результате создания проекта FirstPrMPLAB интерфейс MPLAB принимает вид, показанный на Рис. 1.


Рис. 1. Интерфейс среды MPLAB v8.92 и шаблон проекта.

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

Создание программы в MPLAB можно выполнить в следующей последовательности.

1. Открыть редактор программ: меню → File → New. Изначально программе присвоено имя Untitled.

2. Набрать или скопировать программу, например, на ассемблере.

3. Сохранить программу под другим именем (меню → File → Save As), например, FirstPrMPLAB.asm.


Рис. 2. Пример простейшей программы (на ассемблере) вывода сигналов через порты контроллера GP0, GP1, GP2, GP4, GP5 на максимальной частоте.

Запись ‘1’ в разряде регистра TRISIO переводит соответствующий выходной буфер в 3-е состояние, в этом случае порт GP может работать только на вход. Установка нуля в TRISIO настраивает работу порта GP на выход.

Примечание. По спецификации PIC12F629 порт GP3 микроконтроллера работает только на вход (соответствующий бит регистра TRISIO не сбрасывается – всегда находится в ‘1’).

Регистры TRISIO и GPIO находятся в разных банках области памяти. Переключение банков выполняется 5-м битом регистра STATUS.

Любая программа на ассемблере начинается директивой org и заканчивается директивой end. Переход goto Metka обеспечивает циклическое выполнение программы.

В программе (Рис. 2) используются следующие обозначения.

Директива LIST — назначение типа контроллера
Директива __CONFIG — установка значений битов конфигурации контроллера
Директива equ — присвоение числового значения
Директива org 0 — начало выполнения программы с адреса 0
Команда bsf — устанавливает бит указанного регистра в 1
Команда bсf — сбрасывает бит указанного регистра в 0
Команда movlw — записывает константу в регистр W
Команда movwf — копирует содержимое регистра W в указанный регистр
Команда goto — обеспечивает переход без условия на строку с меткой
Директива end — конец программы

Установка требуемой конфигурации микроконтроллера
Конфигурация микроконтроллера PIC12F629 зависит от настроек слова конфигурации (2007h), которые можно задать в программе через директиву __CONFIG.

Непосредственно или через окно MPLAB: меню → Configure → Configuration Bits:

Где:

Бит 2-0 — FOSC2:FOSC0. Выбор тактового генератора
111 — Внешний RC генератор. Подключается к выводу GP5. GP4 работает как CLKOUT
110 — Внешний RC генератор. Подключается к выводу GP5. GP4 работает как ввод/вывод
101 — Внутренний RC генератор 4МГц. GP5 работает как ввод/вывод. GP4 — как CLKOUT
100 — Внутренний RC генератор 4МГц. GP5 и GP4 работают как ввод/вывод
011 — EC генератор. GP4 работает как ввод/вывод. GP5 — как CLKIN
010 — HC генератор. Резонатор подключается к GP4 и GP5
001 — XT генератор. Резонатор подключается к GP4 и GP5
000 — LP генератор. Резонатор подключается к GP4 и GP5

Бит 3 — WDTE: настройка сторожевого таймера (Watchdog Timer)
1 — WDTE включен
0 — WDTE выключен

Сторожевой таймер предохраняет микроконтроллер от зависания – перезапускает программу через определенный интервал времени если таймер не был сброшен. Период таймера устанавливается в регистре OPTION_REG. Обнуление сторожевого таймера вызывается командой CLRWDT.

Бит 4 — PWRTE: Разрешение работы таймера включения питания:
1 — PWRT выключен
0 — PWRT включен

Таймер задерживает микроконтроллер в состоянии сброса при подаче питания VDD.

Бит 5 — MCLR: Выбор режима работы вывода GP3/-MCLR
1 — работает как -MCLR
0 — работает как порт ввода-вывода GP3

Бит 6 — BODEN: Разрешение сброса по снижению напряжения питания (как правило < 2.0В)
1 — разрешен сброс BOR
0 — запрещен сброс BOR автоматически включается таймер

При разрешении сброса BOR автоматически включается таймер PWRT

Бит 7 — .CP: Бит защиты памяти программ от чтения программатором
1 Защита выключена
0 Защита включена

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

Бит 8 — .CPD: Бит защиты EPROM памяти данных
1 Защита выключена
0 Защита включена

После выключения защиты вся информация будет стерта

Бит 11-9 — Не используются: Читается как ‘1’.

Бит 13-12 — BG1:BG0. Биты калибровки сброса по снижению питания
00 — нижний предел калибровки
11 — верхний предел калибровки


Добавление программы к проекту

Пример добавления программы к проекту показан на (Рис. 3).


Рис. 3. Добавление программы FirstPrMPLAB.asm к проекту FirstPrMPLAB.mcp

Сохранить материалы проекта можно командой: меню → File → Save Workspace.

Компиляция


Чтобы создать бинарный файл с расширением hex для прошивки микроконтроллера необходимо откомпилировать проект. Запуск компиляции выполняется командой меню → Project → Build All. Результаты компиляции можно увидеть в окне Output (Рис. 1). Если в программе нет ошибок, то компилятор выдаёт сообщение об успешной компиляции: BUILD SUCCEEDED, загрузочный HEX файл можно найти в рабочем каталоге:

Отладка программы


Отладку программы в среде MPLAB IDE можно выполнить при помощи аппаратного эмулятора MPLAB REAL ICE или программного симулятора MPLAB SIM. Запуск последнего выполняется как показано на Рис. 4.
Рис. 4. Подключение к симулятору MPLAB SIM для отладки программы.

После запуска отладчика в окне Output (Рис. 1) появляется закладка MPLAB SIM, куда MPLAB выводит текущую информацию отладчика. Команды отладчика (Рис. 5) после запуска становятся активными.


Рис. 5. Команды отладчика.

Команды отладчика:

• Run — Непрерывное выполнение программы до точки останова (Breakpoint) если таковая установлена.
• Halt — Остановка программы на текущем шаге выполнения.
• Animate — Анимация непрерывного выполнения программы.
• Step Into — Выполнение по шагам (вызовы Call выполняются за один шаг).
• Step Over — Выполнение по шагам включая команды вызовов Call.
• Reset — Начальная установка программы. Переход указателя на первую команду.
• Breakpoints — Отображение списка точек останова. Обработка списка.

При выполнении программы по шагам текущий шаг выделяется стрелкой (Рис. 6). Непрерывное выполнение программы останавливается командой Halt или достижением программой точки останова. Точка останова устанавливается/снимается в строке программы двойным щелчком.
Пример программы на ассемблере, которая с максимальной скоростью меняет состояние портов контроллера показан на Рис. 6 (справа). Программа передаёт в регистр портов GPIO данные b’10101010’ и b’01010101’. Поскольку в регистре GPIO передачу данных в порты контроллера выполняют не все разряды, а только 0,1,2,4 и 5, то состояние регистра GPIO (Рис. 6, слева) отличается значениями: b’00100010’ и b’00010101’.


Рис. 6. Состояние регистров специального назначения контроллера на момент выполнения программы (слева) и выполняемая по шагам программа (справа).

В процессе отладки можно наблюдать за состоянием регистров, переменных, памяти в соответствующих окнах, открываемых в разделе View основного меню. В процессе отладки можно вносить изменения в код программы, содержимое регистров, памяти, изменять значения переменных. После изменения кода необходимо перекомпилировать программу. Изменение содержимого регистров, памяти и значения переменных (окна раздела View: Special Function Register, File Register, EEPROM, Watch) не требует перекомпиляции.

Входные сигналы портов модели микроконтоллера можно задать в разделе Debugger → Stimulus. Устанавливаемые состояния сигналов портов привязываются к времени (тактам) отладки.

Иногда результаты выполнения программы в режиме отладки не соответствуют выполнению этой же программы в реальном контроллере, так, например, отладчик программы (Рис. 6) без инструкций movlw 0x07 и movwf cmcon показывает, что выходы GP0 и GP1 регистра GPIO не изменяются — находятся в нулевом состоянии, содержимое регистра GPIO попеременно равно 0x14 и 0х20. Однако, контроллер, выполняющий программу без указанных инструкций, показывает на осциллографе циклическую работу всех пяти выходов: 0x15 и 0х22, включая GP0 и GP1 (см. Рис. 7).

Осциллограммы контроллера, выполняющего циклы программы Рис. 6 (Metka… goto Metka) показаны на Рис. 7.


Рис. 7. Осциллограммы выхода GP0 (слева) и GP1 (справа) микроконтроллера PIC12F629, работающего от внутреннего 4МГц RC генератора. Программа (Рис. 6) формирует сигналы максимальной частоты на всех выходах контроллера. За период сигналов 5.3 мкс выполняется 5 команд (6 машинных циклов), амплитуда GP0 сигнала на осциллограмме равна 4.6В, измеренное программатором питание контроллера 4.75В.

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


Для записи программы в микроконтроллер (прошивки контроллера) необходимо микроконтроллер подключить к интегрированной среде MPLAB IDE через программатор. Организация подключения показана ниже в разделе «Подключение программатора PIC-KIT3».

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

Команды для работы с программатором и изменения его настроек находятся в меню MPLAB Programmer. Тип программатора в MPLAB выбирается в разделе: меню → Programmer → Select Programmer.


Рис. 8. Выбор программатора для подключения к среде MPLAB.

Прошивка микроконтроллера через программатор запускается командой: меню → Programmer → Program. Сообщение об успешной прошивке показано на Рис. 9.


Рис. 9. Запуск прошивки микроконтроллера и вид сообщения об успешной прошивке.

Примечание: Во время прошивки микроконтроллера у программатора PIC-KIT3 мигает желтый светодиод.

Подключение MATLAB/SIMULINK к MPLAB


В системе моделирования динамических систем Simulink (приложение к Matlab) на языке графического программирования [7] можно разрабатывать программы для семейства PIC контроллеров имеющих АЦП/ЦАП, счетчики, таймеры, ШИМ, DMA, интерфейсы UART, SPI, CAN, I2C и др.

Пример Simulink программы PIC контроллера показан на Рис. 10.


Рис. 10. Пример программы на языке графического программирования для PIC контроллера выполненной в среде моделирования динамических систем Simulink.

Взаимодействие средств разработки и компиляции программ для PIC контроллеров в Simulink показано на Рис. 11 [6].


Рис. 11. Структура средств построения адекватной модели PIC контроллера на языке графического программирования.

Для построения среды разработки необходимы следующие компоненты Matlab:

• Simulink
• Real-Time Workshop Embedded Coder
• Real-Time Workshop

И Cи компилятор компании Microchip:

• C30 для контроллеров PIC24, dsPIC30 и PIC33
• или C32 для контроллеров серии PIC32

Установка компонентов Matlab


На сайте имеются Simulink библиотеки (dsPIC Toolbox) для PIC контроллеров и версий Matlab c R2006a по R2012a:

Для скачивания библиотеки необходимо зарегистрироваться. Программы поддерживают работу 100 микроконтроллеров из серий PIC 16MC, 24F, 30F, 32MC, 33F, 56GP, 64MC, 128MC, 128GP.
Бесплатные версии работают с Simulink моделями PIC контроллеров имеющих до 7 портов ввода-вывода.

Для установки dsPIC Toolbox — библиотеки блоков PIC контроллеров для Matlab/Simulink необходимо [4]:

• Скачать dsPIC Toolbox для требуемой версии Matlab.
• Распаковать zip файл в папке, в которой будут установлены Simulink блоки.
• Запустить Matlab.
• Настроить текущий каталог Matlab на папку с распакованным файлом.
• Открыть и запустить файл install_dsPIC_R2012a.m, например, кнопкой меню или клавишей клавиатуры.

Библиотеки dsPIC и примеры Simulink моделей устанавливаются в текущую папку Matlab (Рис. 12). Установленные блоки для моделирования PIC контроллеров доступны в разделе Embedded Target for Microchip dsPIC библиотеки Simulink (Рис. 13).


Рис. 12. Содержимое текущего каталога после выполнения install_dsPIC_R2012a.m.
Рис. 13. Блоки, установленной библиотеки «Embedded Target for Microchip dsPIC».

Для совместной компиляции Simulink модели средствами Matlab и MPLAB необходимо прописать в переменной окружения path Matlab с высшим приоритетом путь к каталогу MPLAB с файлами MplabOpenModel.m, MplabGetBuildinfo.m и getHardwareConfigs.m:

>> path('c:\Program Files (x86)\Microchip\MPLAB IDE\Tools\MATLAB\',path) 

Установка Си компилятора MPLAB


Компиляторы MPLAB находятся на сайте Microchip (Download Archive → MPLAB C Compiler for PIC24 and dsPIC DSCs). Для установки демонстрационной версии компилятора С30 необходимо его скачать по ссылке PIC24/dsPIC v3.25 (Рис. 14) и запустить принятый файл mplabc30-v3.25-comboUpgrade.exe.
Рис. 14. Версии Си компилятора (слева) и режимы его установки (справа).

Примечание. Работа выполнена с версией v3.25 компилятора С30 для PIC24/dsPIC. Проверка показала, что следующая версия v3.30 не поддерживает совместную компиляцию моделей Matlab R2012a (dsPIC Toolbox) без ошибок.

Установочный exe файл создаёт в разделе c:\Program Files (x86)\Microchip\ новый каталог mplabc30 с файлами:


Рис. 15. Каталоги компилятора C30 MPLAB.

Последовательность Simulink программирования для PIC контроллеров

1. Создайте рабочий каталог и скопируйте в него *.mdl примеры из раздела example (см. Рис. 12).
2. Загрузите Matlab. Настройте его на рабочий каталог.
3. Включите в переменную окружения path Matlab с высшим приоритетом путь к MPLAB — каталогу c:\Program Files (x86)\Microchip\MPLAB IDE\Tools\MATLAB\:

>> path('c:\Program Files (x86)\Microchip\MPLAB IDE\Tools\MATLAB\',path) 

Примечание: Использование команды >>path без аргументов приводит к отображению списка путей переменной path в окне команд (Command Window). Удалить путь из переменной path можно командой rmpath, например:
>>rmpath(' c:\Program Files\Microchip\MPLAB IDE\Tools\MATLAB\')

4. Создайте Simulink модель для PIC контроллера, используя блоки библиотеки «Embedded Target for Microchip dsPIC» (Рис. 13), или загрузите готовую модель, например, Servo_ADC.mdl.

Тип контроллера, для которого разрабатывается Simulink модель, выбирается из списка в блоке Master > PIC (Рис. 16, Рис. 10), который должен быть включен в состав модели.


Рис. 16. Выбор типа контроллера в блоке Master модели.

5. Проверьте настройки конфигурации модели: Меню → Simulation → Configuration Parameters <Ctrl+E>. В строке ввода System target file раздела Code Generation должен быть указан компилятор S-функций dspic.tlc (Рис. 17). Выбор dspic.tlc настраивает все остальные параметры конфигурации модели, включая шаг и метод интегрирования.


Рис. 17. Выбор компилятора S-функций dspic.tlc для моделей PIC-контроллеров в разделе «основное меню → Simulation → Configuration Parameters → Code Generation».

6. Откомпилируйте модель tmp_Servo_ADC.mdl. Запуск компилятора показан на Рис. 18.


Рис. 18. Запуск компилятора Simulink модели.

В результате успешной компиляции (сообщение: ### Successful completion of build procedure for model: Servo_ADC) в текущем каталоге создаются HEX файл для прошивки PIC контроллера и MCP проект среды MPLAB (Рис. 19).


Рис. 19. Результаты компиляции модели.

Запуск модели в Matlab/Simulink выполняется в окне модели кнопкой, условное время моделирования устанавливается в строке:


Управление компиляцией Simulink моделей из среды MPLAB

Управление компиляцией Simulink модели можно выполнять командами раздела Matlab/Simulink среды MPLAB, например, в следующем порядке.

1. Разработайте модель PIC контроллера в Matlab/Simulink. Сохраните модель.
2. Запустите MPLAB.
3. Выберите MPLAB меню → Tools → Matlab/Simulink и новый раздел появится в составе меню.


4. В разделе Matlab/Simulink откройте Simulink модель, например, Servo_ADC, командой «Matlab/Simulink → Specify Simulink Model Name → Open → File name → Servo_ADC.mdl → Open». Команда Open запускает Matlab и открывает модель.

5. Откомпилируйте модель и создайте MCP проект командами Generate Codes или Generate Codes and Import Files. Перевод MDL модели в MCP проект выполняется TLC компилятором Matlab.
В результате создаётся проект MPLAB:

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

6. Откройте проект: меню → Project → Open → Servo_ADC.mcp (Рис. 20).


Рис. 20. Структура MCP проекта Simulink модели Servo_ADC.mdl в среде MPLAB.
Проект Simulink модели готов для редактирования, отладки и компиляции в машинные коды контроллера средствами MPLAB.

Подключение программатора PIC-KIT3


Узнать какие программаторы записывают бинарный код в конкретный микроконтроллер можно в разделе меню → Configure → Select Device среды MPLAB 8.92. Например, программатор PIC-KIT3 не поддерживает контроллер PIC12C508A (Рис. 21, левый рисунок), но работает с контроллером PIC12F629 (Рис. 21, правый рисунок).
Рис. 21. Перечень программаторов для прошивки микроконтроллера.

Информацию об установленном драйвере программатора PIC-KIT3 можно запросить у менеджера устройств ОС Windows (Рис. 22).


Рис. 22. Информация об установленном драйвере программатора PIC-KIT3.

Схема подключения микроконтроллера PIC12F629 к программатору PIC-KIT3 показана на Рис. 23.


Рис. 23. Схема подключения микроконтроллера PIC12F629 к программатору PIC-KIT3.

Вывод PGM программатора для прошивки контроллеров PIC12F629 не используется. Наличие вывода PGM для разных типов PIC контроллеров показано на Рис. 24. Вывод PGM рекомендуется «притягивать» к общему проводу (GND), через резистор, номиналом 1К [3].


Рис. 24. Выводы PGM PIC контроллеров.

Индикация светодиодов программатора Olimex PIC-KIT3 показана в ниже:

Желтый — Красный — Состояние программатора
Вкл — Выкл — Подключен к USB линии
Вкл — Вкл — Взаимодействие с MPLAB
Мигает — Включен постоянно — Прошивка микроконтроллера

Не следует подключать питание микроконтроллера VDD (Рис. 23) к программатору, если контроллер запитывается от своего источника питания.

При питании микроконтроллера от программатора на линии VDD необходимо установить рабочее напряжение, например, 5В программой MPLAB (Menu → Programmer → Settings → Power), как показано на Рис. 25.

Примечание. При отсутствии напряжения на линии VDD MPLAB IDE выдает сообщение об ошибке: PK3Err0045: You must connect to a target device to use


Рис. 25. Установка напряжения VDD на программаторе PIC-KIT3 программой MPLAB IDE v8.92.

Если программатор не может установить требуемое напряжение, например, 5В при его питании от USB, в которой напряжение меньше 5В, MPLAB IDE выдает сообщение об ошибке: PK3Err0035: Failed to get Device ID. В этом случае, сначала необходимо измерить напряжение программатора — считать его в закладке меню → Programmer → Settings → Status, а затем установить напряжение (не больше измеренного) в закладке меню → Programmer → Settings → Power.


Рис. 26. Измерение (слева) и установка (справа) VDD напряжения программатора PIC-KIT3 программой MPLAB IDE v8.92.

Пример MPLAB сообщения успешного подключения микроконтроллера к программатору по команде меню → Programmer → Reconnect показан на Рис. 27.


Рис. 27. Сообщение MPLAB об успешном подключении микроконтроллера к программатору.

Можно программировать не только отдельный PIC контроллер, но и контроллер, находящийся в составе рабочего устройства. Для программирования PIC контроллера в составе устройства необходимо предусмотреть установку перемычек и токоограничивающих резисторов как показано на Рис. 28 [3].


Рис. 28. Подключение микроконтроллера в составе электронного устройства к программатору.

Заключение


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

Как я научился работать с микроконтроллерами — опыт новичка / Хабр

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



Вместо вступления


Впервые интерес к МК у меня возник, когда я учился в 10 классе. На тот момент был 2009 год. Я умел немного программировать на ПК в QBasic и Visual Basic — школьная программа, но так сложилась жизнь, что я особо не разбирался в программировании, да и отсутствие знающих людей по части электроники и МК рядом сделали своё дело — для меня это была новая ниша. Хотя я с детства ковырялся с платами и микросхемами найденными на помойках, но как оно работало я толком не понимал — толком никто не мог объяснить. Как работает транзистор нормально я узнал только спустя пару лет после описанных событий. Когда я выбирал первый МК то смотрел характеристики на сайте ЧИП-ДИП. Скажу честно — для меня это было как иероглифы. Так что не стоит этого бояться. И да, про Arduino тогда никто понятия не имел.

Как всё началось


Начал ковыряться в яндексах и гуглах. Понимал, что сам контроллер — половина дела, нужна ещё и программа. А как сказано во вступлении — с программированием у меня было не очень. В конце концов попал на какой-то сайт. Как стало позднее ясно, я с этим сайтом реально «попал». Создатель сайта написал ещё и учебник по программированию, я на радостях скачал учебник и первое что там увидел — «В качестве образца для работы я использовал PIC16F84A ». Собственно так я и выбрал свой первый МК. Теперь вопрос — почему я именно «попал». А попал я из-за того, что создатель этого учебника и сайта предлагал программировать МК на АССЕМБЛЕРЕ. Его не все практикующие проггеры то знают, а тут новичок… Контроллер я уже заказал, и только потом начал читать учебник, к сожалению.

Как я выходил из положения


После того, как я понял, что ничего не понял, я забросил МК на пару лет, но параллельно всё-таки шарился на форумах типа Схем.нет и прочих, и ко мне постепенно приходило понимание вопроса. Решил учиться кстати на модели PIC16F877A.

Итак, что нужно знать новичку:


Микроконтроллер — это маленький компьютер, в нём есть и Арифметико-логическое устройство — процессор по сути дела, и оперативная память и некое подобие жесткого диска — память программ и данных, но выполнено это всё в одной микросхеме. Соответственно в зависимости от модели и производителя у него следующие характеристики (ориентировочно):
  • Рабочие частоты от единиц до ~100 Мгц, я лично использую в своих устройствах как правило частоты 20 Мгц, именно МЕГАгерц, а не ГИГАгерц. Частота задаётся внешним источником тактирования — кварцевым или керамическим резонатором.

  • Объём ОЗУ — единицы и десятки Килобайт
  • Объём памяти под данные и программу — до нескольких десятков Килобайт. При желании можно расширить память для данных с помощью микросхем памяти. Для того чтобы использовать эти микросхемы для расширения памяти под программу — новичку стоит забыть, не всякий профессионал может это правильно сделать, да и не каждый микроконтроллер позволяет изменять свою прошивку во время работы.
  • Рабочее напряжение от 1 до 5 вольт в зависимости от модели и производителя.

Микроконтроллер рассчитан на работу на плате, скажем так, в конкретной «железке», на плате, в устройстве. Так что не стоит думать, что на нём можно поиграть в CS 🙂

Языки программирования


Начал выбирать язык программирования и среду в которой можно программировать. Так как я хоть как-то знал Basic, то и задумался, что было бы хорошо прогать на нём. Да, он не очень совершенный и ещё куча недостатков, но для начала подходил как нельзя кстати. Мне повезло, оказалось, что есть язык PIC-Basic. По нему есть учебник, автор Чак Хелибайк и переведённое на русский руководство, собственно до всего доходил дальше по учебнику и руководству. Среда работает из-под ДОС, но можно прикрутить CodeStudio и всё будет работать из-под Windows.

Программатор


Следующая проблема, стоявшая у меня на пути — чем записать программу в чип. Понятное дело, что нужен программатор, я решил экономить, попробовал собрать несколько схем из этих ваших интернетов. Одной схемы недостаточно, нужна ещё программа которая используя программатор (саму железку) занесёт код в память. Все мои опыты окончились неудачами, по причине малого опыта. Решил я больше не смотреть на то, как от чипов идёт дым и заказал PICKit3, после этого не знал проблем, поигрался пару дней с ним и всё заработало.

  • В настоящее время есть адаптированные языки программирования для МК, тот же Бэйсик, СИ и прочие.
  • После написания программы она компилируется в машинный код — файлик с расширением HEX, его-то и надо прошивать в память МК.
  • Для того, чтобы «прошить МК» — записать в него выполняемый код нужно две вещи:

    1) плата-программатор, которая является промежуточным устройством между разъёмом компьютера и самим чипом
    2) Программа-программатор, которая будет знать как работать с программатором, собранным по конкретной схеме.
    То есть нужно чтобы программа на ПК знала какая схема подключена к ПК чтоб правильно прошить чип. В моём случае это заводское решение — вместе с программатором PicKit идет диск с нужными программами.

  • Памяти в МК ограниченное количество, это надо учитывать, иногда приходится выкраивать каждый байт прошивки, лишь бы влезть в объём памяти чипа. Так же следует понимать, что в МК нет никакой операционной системы, и Ваша прошивка — единственные данные которые знает МК.

Несколько слов про периферию


Для связи с внешним миром и удобства работы и разработки в МК встраивают различные периферийные схемы, например АЦП — аналогово-цифровой преобразователь, так что можно без лишней обвязки измерять напряжение подаваемое на вывод МК, но оно должно быть не выше чем напряжение питания, иначе чип сгорит. Используя делитель напряжения можно сделать вольтметр, например. Периферия, количество встроенных функций и их характеристики тоже зависят от модели, как правило чем дороже модель — тем богаче комплектация. Так же следует не забывать, что у контроллера ограниченное число ножек, к которым можно подключиться.

Например у PIC16F877А их 40 штук, причем 7 штук вылетают сразу, т.к. используются для подачи питания, подключения резонатора и управления аварийным сбросом. Так же надо внимательно смотреть документацию на чип. Например тот же АЦП — в PIC16F877А он может измерять напряжение только на 8 конкретных ножках чипа, на других он это делать не может. То есть под каждую встроенную функцию отводятся конкретные выводы и поменять их нельзя.

Суть сей басни такова


Освоить МК реально даже самому и с нуля, но есть места где не очень понятно. Если с программированием никогда не сталкивались, то сначала выучите хотя-бы азы программирования и напишите «Hello World» на компьютере. После этого будет проще. Если не хотите особо заморачиваться — Arduino Ваше всё. МК расчитаны на использование в «железках» — блоки управления, платы, контроллеры итд итп, это не полноценный компьютер, а контроллер. И ожидать от него следует соответственно. Благо сейчас полно примеров на ютубе, и я надеюсь, что мой опыт начинания с нуля будет не таким горьким и моя статья кому-нибудь, да поможет.

Что нужно для программирования микроконтроллеров? ⋆ diodov.net

Программирование микроконтроллеров Курсы

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

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

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

Структура и порядок написания программы

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

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

Языки программирования микроконтроллеров: Си и Ассемблер

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

Здесь мы не будем сравнивать преимущества и недостатки написания программ на Ассемблере и Си. Со временем, приобретя некоторый опыт в программировании МК, вы сами для себя сделаете полезные выводы.

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

Компиляция программы

Написанный нами код на Си еще вовсе не понятен микроконтроллеру, поскольку МК понимает команды только в двоичной (или шестнадцатеричной) системе, которая представляет собой набор нулей и единиц. Поэтому Си-шный код нужно преобразовать в нули и единицы. Для этого применяется специальная программа, называемая компилятор, а сам процесс преобразования кода называется компиляция.

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

Для прошивки МК применяется устройство, называемое программатор. В зависимости от типа программатора вход его подключается к COM или USB порту, а выход к определенным выводам микроконтроллера.

Программатор

Существует широкий выбор программаторов и отладочных плат, однако нас вполне устроит самый простой программатор USBASP, который в Китае стоит не более 3 $.

Программатор USBASP

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

Теперь давайте подытожим этапы программирования микроконтроллеров.

Что нужно для программирования микроконтроллеров

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

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

Необходимый набор программ

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

1) Atmel Studio

2) CodeVisionAVR

3) WinAVR

Все эти программы относятся к IDEIntegrated Development Environment – интегрированная среда разработки. В них можно писать код, компилировать и отлаживать его.

Следует обратить внимание на Code Vision AVR. Эта IDE позволяет упростить и ускорить написание кода. Однако программа платная.

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

Прошивка и отладка программы

Прошивать микроконтроллеры мы будем с помощью дополнительной программы AVRDUDE.

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

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

Еще один важный элемент, который нам пригодится – это техническая документация на МК, называемая datasheet. В общем, нужно скачать datasheet на микроконтроллер ATmega8.

Итак, полный набор для программирования МК состоит из таких элементов:

1) Atmel Studio

2) Datasheet на ATmega8

3) Proteus

4) AVRDUDE

5) Программатор USB ASP (+ драйвер на него)

6) Макетная плата

7) Микроконтроллер ATmega8

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

1) Atmel Studio

2) Datasheet на ATmega8

3) Proteus

Скачать AVRDUDE

Скачать datasheet ATmega8

Скачать Atmel Studio

Как читать электрические схемы и создавать электронные устройства

Еще статьи по данной теме

С чего начать в программировании микроконтроллеров? — Хабр Q&A

Привет. Все верно комментаторы говорят - начинать с Ардуино вполне резонно. И не слушайте тех, кто говорит, что Ардуино гуано потому что [и тут разные расплывчатые аргументы]. Ардуинщики в большинстве вырастают в говнокодеров не потому, что Ардуино плоха, а потому что даже не пытаются развиваться дальше. Типичная проблема низкого порога входа(как у 1С, например). То есть проблема в самих человеках, а не в Ардуине.
У вас же, судя по тексту вопроса, мотивация развиваться есть )

Для Ардуины действительно существует куча шилдов и примеров кода на своем упрощенном языке(хотя это по-прежнему C++), что для старта очень даже неплохо - при наличии желания можно разобраться в том, как все устроено еще до того, как возьмете в руки паяльник.
И никто не мешает вам, при достижении определенного уровня, перейти на программирование контроллеров с помощью других компиляторов, исключая Arduino IDE и lazy coding. При этом на первых порах по-прежнему можно использовать Arduino-загрузчик и не париться со всеми проблемами сразу.

Сразу же рекомендую кроме Ардуино купить на будущее что-нибудь типа STM32 Nucleo. У этой платы есть совместимость с Arduino-шилдами, mbed-загрузчик(заливка прошивки происходит простым копированием на виртуальную USB-флешку), а так же полноценный STLink-программатор с пинами для программирования внешних контроллеров - это значит, что в последствии вы можете собрать собственный девайс на STM32 микроконтроллере и с помощью встроенного в Nucleo SLink-программатора его запрограммировать, просто подсоединив пару проводков(SWD).

И впоследствии, если не растеряете желание расти, вполне сможете создавать уже свою электронику и при этом, к примеру если остановитесь на STM32 контроллерах, все еще использовать STLink от Nucleo для программирования своих девайсов.
Выглядеть это будет приблизительно так: 5.101.107.156/Habr/IMG_1235.JPG
Здесь две Nucleo-платы слева используются как STLink-программаторы для двух плат справа соответственно )

Ну а дальше все зависит только от вас.
Удачи )

Начинаем изучать STM32 или Управляем светом по-умному / Хабр

Небольшое вступление


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

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

Список статей:

  1. Начинаем изучать STM32 или Управляем светом по-умному
  2. Начинаем изучать STM32: битовые операции
  3. Начинаем изучать STM32: Что такое регистры? Как с ними работать?

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

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


Всё это для меня на тот момент показалось непостижимо сложным, и я даже пришел в некоторое смятение, но от реализации поставленной задачи отказываться не собирался. Так я познакомился с семейством микроконтроллеров STM32 и платой STM32F0-Discovery, после изучения которых мне хотелось бы сваять свой девайс под нужные мне цели.

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

Почему не AVR/Arduino?


Предвосхищая высказывания о том, что неопытному новичку бросаться сразу же в изучение такого сложного МК как STM32 было бы рановато — я расскажу, почему я решил пойти именно этим путём, не вникая и не знакомясь с семейством процессоров от Atmel и даже не рассматривая Arduino как вариант.

Во-первых, решающую роль сыграло отношение цена-функционал, разницу видно даже между одним из самых дешевых и простых МК от ST и достаточно «жирной» ATMega:


После того, что я увидел значительные различия между ценой и возможностями AVR и STM32 – мною было принято решение, что AVR использовать в своей разработке я не буду =)

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

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

В-четвертых, люди, занимающиеся профессиональной разработкой больше склонны к использованию 32-разрядных МК, и чаще всего это модели от NXP, Texas Instruments и ST Microelectronics. Да и мне можно было в любой момент подойти к своим инженерам из отдела разработки и разузнать о том, как решить ту или иную задачу и получить консультацию по интересующим меня вопросам.

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


Как вы уже поняли, знакомство и изучение микроконтроллера STM32 мы начнем с Вами, уважаемые читатели, с использования платы Discovery. Почему именно Discovery, а не своя плата?
  1. На любой плате Discovery имеется встроенный программатор/отладчик ST-LINK который подключается к компьютеру через USB и его можно использовать как для программирования микроконтроллера на плате, так и внешних устройств путем снятия/установки соответствующих перемычек. То есть плюсом ко всему — мы еще и экономим деньги, получая решение два в одном: микроконтроллер и программатор.
  2. Платы Discovery имеют полную разводку всех пинов прямо с микроконтроллера на пины платы. Я для удобства использования воткнул Discovery так же в две макетные платы.
  3. 3. На плате всегда имеется некоторое количество всяких периферийных устройств, например, таких как акселерометры, микрофоны, дисплеи, сенсоры и многих других. На разных платах Discovery имеются различные варианты обвеса. Если кому интересно, можете ознакомиться подробнее на сайте производителя.

Что нам понадобится для разработки помимо платы Discovery?


В своей работе с платой Discovery нам понадобится еще ряд незаменимых вещей, без которых мы не сможем обойтись:
  1. Схему платы чтобы видеть куда, где и что подключено. Взять схему можно на страничке производителя Вашей платы в разделе Schematic Pack. Скачать схемы можно пролистав страницу немного ниже в блоке, указанном на картинке:
  2. Datasheet на наш микроконтроллер, чтобы в любой удобный момент можно было посмотреть распиновку, характеристики, параметры и прочую необходимую информацию для работы. В моём случае это STM32F051R8T6. Ссылка на datasheet находится в заголовке страницы:
  3. Так же нам понадобится Reference manual на наш микроконтроллер. Это документ, в котором подробнейшим образом описаны методы и подходы к работе с ядром МК, c его тактовым блоком, с периферией и т.д. Так же в нем содержатся описание всех регистров МК, всех опций и настроек МК и периферии. Наверное, это самый важный файл без которого разобраться в том, как и что работает внутри МК было бы очень сложно. Скачать файл можно по ссылке на странице микроконтроллера:
  4. И наконец, нам нужно установить среду разработки, в которой бы мы могли создавать программы для нашего МК и спокойно осуществлять компиляцию и прошивку наших программ. В свое время я перепробовал почти все из самых популярных IDE и остановился на Keil uVision 5. На мой взгляд, данная среда разработки показалась мне самой удобной и простой в освоении. Встроенный отладчик, готовые и легко подключаемые низкоуровневые библиотеки, огромное количество примеров и удобно организованный рабочий интерфейс и пространство IDE стали решающими факторами, повлиявшими на мой выбор. Скачать данную IDE можно с официального сайта, но требуется простая регистрация:. Есть правда одно небольшое ограничение на размер загружаемой прошивки в 32кБ т.к. данная IDE платная. Но нам этого будет более чем достаточно. Нам понадобится MDK-Arm:

Приступим к первоначальной настройке и подготовке IDE к работе!


После того, как скачается установочный файл нашей IDE можно приступать к установке. Следуя указаниям инсталлятора проведите процесс установки. После того, как скопируются все файлы, необходимые для работы появится окно установщика софтовых пакетов для разработки Pack Installer. В данном установщике содержатся низкоуровневые библиотеки, Middleware, примеры программ, которые регулярно пополняются и обновляются.
Для начала работы с нашей платой нам необходимо установить ряд пакетов необходимых для работы и необходимо найти микроконтроллер, с которым мы будем работать. Так же можно воспользоваться поиском вверху окна. После того, как мы нашли наш МК кликаем на него и во второй половине окна и нам необходимо установить следующий перечень библиотек:
  1. Keil::STM32F0xx_DFP – полноценный пакет программного обеспечения для конкретного семейства микроконтроллеров, включающий в себя мануалы, даташиты, SVD-файлы, библиотеки от производителя.
  2. ARM::CMSIS – пакет Cortex Microcontroller Software Interface Standard, включающий в себя полный набор библиотек от ARM для поддержки ядра Cortex.
  3. Keil::ARM_Compiler – последняя версия компилятора для ARM.

После установки требуемых паков можно перейти к настройке IDE и нашего отладчика/программатора. Для этого нам необходимо открыть главное окно Keil и создать новый проект.

Для этого необходимо перейти в меню Project -> New uVision Project и выбрать папку, в которую сохраним наш проект.

После Keil спросит нас какой МК будет использоваться в проекте. Выбираем нужный нам МК и нажимаем ОК.


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

Если все зависимости у подключаемых удовлетворены – менеджер будет нам сигнализировать об этом зеленым цветом:
После того как мы нажмем клавишу ОК мы можем приступать к созданию нашего проекта.

Для того, чтобы сконфигурировать параметры проекта и настроить наш программатор нужно правым кликом по Target 1 открыть соответствующее меню.


В главном меню проекта настраиваем параметр Xtal в значение 8.0 MHz. Данный параметр отвечает за частоту работы кварцевого осциллятора нашего МК:
Далее переходим к настройке нашего программатора/дебагер. Кликаем в этом же окне на вкладку Debug и выбираем в поле Use параметр ST-Link Debugger и переходим в настройки:
В настройках мы должны увидеть модель нашего ST-Link установленного на плате, его серийный номер, версию HW и IDCODE МК который будем прошивать:

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


После этого нужно настроить еще одну опцию, которая позволит нам писать русскоязычные комментарии к коду наших проектов. Нажимаем кнопку Configuration и в открывшемся меню в поле Encoding выбираем Russian Windows-1251.
Всё. Наша IDE и программатор готовы к работе!

В Keil имеется удобный навигатор по проекту, в котором мы можем видеть структуру проекта, необходимые для работы справочные материалы, в т. ч. те, которые мы уже скачали к себе на компьютер до этого (схема Discovery, datasheet, reference manual), список функций, использованных в проекте и шаблоны для быстрой вставки разных языковых конструкций языка программирования.


Переименуем папку в структуре проекта с Source Group 1 на App/User, таким образом обозначив то, что в данной папке у нас будут располагаться файлы пользовательской программы:
Добавим основной файл программы через навигатор проекта, выполнив команду Add New Item To Group “App/User”.
Необходимо выбрать из предложенного списка C File (.c) и назначить ему имя main.c:
Созданный файл автоматически добавится в структуру проекта и откроется в главном окне программы.

Что ж, теперь мы можем приступить к созданию нашей программы.

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

/* Заголовочный файл для нашего семейства микроконтроллеров*/
#include "stm32f0xx.h"

/* Тело основной программы */
int main(void)
{
	/* Включаем тактирование на порту GPIO */
	RCC->AHBENR |= RCC_AHBENR_GPIOCEN;
	
	/* Настраиваем режим работы портов PC8 и PC9 в Output*/
	GPIOC ->MODER = 0x50000;
	
	/* Настраиваем Output type в режим Push-Pull */
	GPIOC->OTYPER = 0;
	
	/* Настраиваем скорость работы порта в Low */
	GPIOC->OSPEEDR = 0;
	
	while(1)
	{
		/* Зажигаем светодиод PC8, гасим PC9 */
		GPIOC->ODR = 0x100;
		for (int i=0; i<500000; i++){}	// Искусственная задержка
					
		/* Зажигаем светодиод PC9, гасим PC8 */
		GPIOC->ODR = 0x200;
		for (int i=0; i<500000; i++){}	// Искусственная задержка
	}		
}

После того, как мы написали нашу программу, настала пора скомпилировать код и загрузить прошивку в наш МК. Чтобы скомпилировать код и загрузить можно воспользоваться данным меню:
Команда Build (или горячая клавиша F7) скомпилирует код, и если не было никаких ошибок программе выведет в логе компиляции следующее сообщение о том, что ошибок и предупреждений нет:
Команда Load (или горячая клавиша F8) загрузит компилированный код в наш МК и автоматически отправит его на исполнение:
После загрузки кода мы увидим, как светодиоды начали мигать с равными временными промежутками.
Ура! Первый шаг в освоении микроконтроллеров STM32 мы сделали! В следующем уроке мы разберем что такое битовые и логические операции, как ими пользоваться и узнаем об одной очень полезной утилитке для работы с МК, ну а пока можем наслаждаться тем, как весело перемигиваются светодиоды на нашей плате Discovery. )

Список статей:

  1. Начинаем изучать STM32 или Управляем светом по-умному
  2. Начинаем изучать STM32: битовые операции
  3. Начинаем изучать STM32: Что такое регистры? Как с ними работать?

Простой внутрисхемный программатор 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.Данная статья рассчитана в основном на начинающих ембеддеров, поэтому извиняюсь за то, что возможно излишне подробно объясняю некоторые очевидные для профи вещи.

как стартовать и куда двигаться? / Хабр

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

Я, будучи недавно в такой же ситуации, гуглила, искала мануалов на Хабре (кое-что нашла: Десять советов начинающим программистам, Начинающему программисту про стартапы и не только…), но в итоге всё же была вынуждена обратиться за советом к одному хорошему человеку, который составил для меня вот такой план. С разрешения этого человека размещаю данный план на Хабре – вдруг он пригодится и кому-то ещё. (Тем более, что перечисленные книги относятся к «золотому фонду» литературы в данной сфере и проверены временем.)

UPD: Новичкам советую обратить внимание на комментарии — там активно и аргументированно корректируется этот план.

Этап I. Основы

Нортон «Программно-аппаратная организация IBM PC»
Эта книга, несмотря на свою давность, относятся к тем, что пока отнюдь не устарели. Как новичок подтверждаю – повествование вполне понятно и для почти полного чайника в IT.

Гук «Аппаратные средства IBM PC»
А эту книгу стоит прочитать «поверх» – она расскажет о том, как дела в данной сфере обстоят сейчас.

Этап II. Hardware

Шаг 1

Морс, Алберт «Архитектура микропроцессора 80286»
Почему тут берётся за основу именно микропроцессор 80286 – станет понятно по изучении трудов первого этапа.

Шаг 2

Гук «Аппаратные интерфейсы ПК»

Гук «Интерфейсы устройств хранения»

Этап III. Операционные системы

Шаг 1

Таненбаум «Архитектура компьютера»

Шаг 2

Колисниченко, Аллен «Linux: полное руководство»
От общей теории переходим к изучению конкретной операционной системы – на примере Linux.

Немет, Снайдер, Хейн «Руководство администратора Linux»

Этап IV. Собственно программирование

Шаг 1

Керниган, Ричи «Язык программирования С»
Почему первым для освоения выбран именно язык Си? Как мне рассказали знающие товарищи, он поможет достичь правильного «программистского мышления», чего было бы сложно достичь, начиная изучение, скажем, с Паскаля. Кроме того, язык Си по-прежнему используется в наши дни и подходит как для прикладного, так и для системного программирования.

Шаг 2

Кнут «Искусство программирования»:
Том 1. Основные алгоритмы
Том 2. Получисленные алгоритмы
Том 3. Сортировка и поиск

Бентли «Жемчужины программирования»

Зачем осваивать эти труды? Как уже отмечали на Хабре – «наверное, нигде больше, чем в айти, не изобретается такое огромное количество велосипедов». Данные книги помогут этого избежать – и попутно будут прививать умение писать не просто код, а хороший код.

Ну а для затравки можно прочесть небольшой цикл лекций «Культура программирования» (автор – А. Бабий). Он помогает начинающим программистам понять, что их деятельность не будет проходить в вакууме, а неизбежно включит взаимодействие с другими программистами, с заказчиками и пользователями (а также включит необходимость копаться потом в своих собственных или в чужих программах).

Закономерный вопрос новичка: сколько времени займёт изучение всего этого? По прогнозам моего советчика, у человека, который может тратить на изучение программирования только вечера и выходные, на прочтение и осмысление литературы первых трёх этапов уйдёт полгода-год. На четвёртый этап тоже даётся год – чтение должно сопровождаться практикой по самостоятельному составлению программ. Как получится на самом деле – время покажет.

Буду крайне благодарна за ваши советы и уточнения.

10 лучших DJ-контроллеров для начинающих [Обновлено в марте 2020 г.]

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

DDJ-SB2 идеально совместим с программным обеспечением Serato DJ Pro. Контроллер поставляется с бесплатной версией программного обеспечения под названием Serato lite, но ее возможности очень ограничены.Поэтому, если вы покупаете этот контроллер, рассчитывайте на покупку обновления до полной версии. См. Здесь дополнительную информацию о Serato DJ pro на их веб-сайте.

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

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

DDJ-SB2 - это 2-канальный контроллер, но вы заметите переключатели в секции деки для переключения каналов на другой источник.Это означает, что с помощью программного обеспечения вы можете управлять одновременно четырьмя деками.

В верхней части палубы есть два прекрасных толстых 128-миллиметровых алюминиевых джога. Они чувствительны к прикосновениям и могут использоваться для подсказок, подталкивания битов и царапин. Некоторые меньшие контроллеры могут немного отставать при отпускании поворотных колес, но DDJ-SB2 очень отзывчивый.

Вверху над джогами вы увидите довольно короткие фейдеры высоты тона для ручного согласования битов. Я никогда не ладил с фейдерами малого тона, и для меня это одна из ловушек DDJ-SB2.Но, как уже было сказано, я научился ди-джею с длинными фейдерами ... Так что это может быть просто личными предпочтениями.

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

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

Pioneer DDJ-SB2 стал очень популярным среди ди-джеев новичка и среднего уровня. В целом это контроллер, который непременно будет расти с каждым новичком. Как только вы объедините программное обеспечение с диджеингом, вы откроете массу возможностей, и Serato DJ Pro станет одним из лучших. Благодаря отличной цене и достойному качеству сборки, новички должны быть более чем довольны этим контроллером.

.

Основные шаги в программировании ПЛК для начинающих

Разработка алгоритма

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

Basic steps in PLC programming for beginners Основные шаги в программировании ПЛК для новичков (фото предоставлено cyberspaceandtime.com)

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

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

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

Логические элементы или символы контактов используются для реализации логических последовательностей в программе управления. Входы и выходы, отмеченные на схеме логического элемента « X », представляют реальных входов / выходов .

Три важных документа, которые предоставляют информацию об устройстве системы ПЛК, - это таблица назначения входов / выходов , таблица назначения внутренних адресов и таблица назначения адресов регистров .
  1. Таблица назначения входов / выходов документирует имена, расположение и описания реальных входов и выходов.
  2. Таблица назначения внутренних адресов записывает расположение и описания внутренних выходов, регистров, таймеров, счетчиков и MCR.
  3. В таблице назначения адресов регистров перечислены все доступные регистры ПЛК.
Некоторые части системы следует оставить подключенными по соображениям безопасности. Такие элементы, как кнопки аварийного останова и кнопки главного пуска, следует оставить подключенными, чтобы систему можно было отключить без вмешательства ПЛК.

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

  • Программирование контактов как нормально открытых или нормально закрытых зависит от , как они должны работать в логической программе . В большинстве случаев, если требуется, чтобы нормально закрытое входное устройство работало как нормально закрытый вход, его адрес ссылки программируется как нормально открытый.
  • Главные управляющие реле включают и ВЫКЛ питание определенных логических цепочек. В программе PLC инструкция END MCR должна быть помещена после последней цепочки, которую будет контролировать MCR.
  • ПЛК не допускают двунаправленного потока мощности, поэтому все звенья ПЛК должны быть запрограммированы для работы только в прямом направлении.
  • ПЛК не обеспечивают мгновенных контактов; поэтому внутренний выход должен использоваться для перехвата таймера, которому требуются эти контакты.
  • Сложные логические ступени должны быть изолированы от других ступеней во время программирования.

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


Пример простой цепи запуска / остановки двигателя

На рисунке 1 показана электрическая схема трехфазного двигателя и соответствующей трехпроводной цепи управления, где вспомогательные контакты стартера замыкают кнопку запуска. Чтобы преобразовать эту схему в программу PLC , сначала определите, какие устройства управления будут частью системы ввода / вывода PLC ; это элементы, обведенные кружком на Рис. 2 . В этой схеме кнопки запуска и остановки (входы) и катушка стартера (выход) будут частью системы ПЛК.

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

Wiring diagram of three phase motor Рисунок 1a - Схема подключения трехфазного двигателя
Relay control circuit for a three-phase motor Рисунок 1b - Схема управления реле для трехфазного двигателя
Real inputs and outputs to the PLC Рисунок 2 - Реальные входы и выходы на ПЛК

В таблице 1 показано назначение адресов входов / выходов , в котором используется та же схема адресации, что и в принципиальной схеме (т.е.е., входы: адреса 000 и 001 , выход: адрес 030 ).

Адрес ввода / вывода
Тип модуля Стойка Группа Клемма Описание
Вход 0 0 0 NC
0 0 1 Start PB
0 0 2 -
0 0 3 3 0 3 0 Двигатель M1
0 3 1 -
0 3 2 -

Для программирования ПЛК устройства должны быть запрограммированы в той же логической последовательности, что и в проводной схеме ( см. Рисунок 3 ).Следовательно, кнопка остановки будет запрограммирована как команда проверки включения (нормально разомкнутый контакт ПЛК) последовательно с кнопкой запуска, которая также запрограммирована как инструкция проверки включения.

Эта схема управляет выходом 030, который управляет пускателем.

PLC implementation of the circuit in Figure 1 Рисунок 3 - ПЛК, реализация схемы на Рисунке 1

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

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

Ресурс // Введение в программирование и внедрение ПЛК - от релейной логики к логике ПЛК

.Учебники по микроконтроллерам

- станьте экспертом в программировании микроконтроллеров и цифровой электронике!

*** Новое эксклюзивное руководство ***

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

Учебное пособие по микроконтроллеру

для начинающих

Если вы новичок и хотите получить знания о микроконтроллерах, вы можете найти что эта серия руководств идеально подходит.В этом руководстве исследуются различные использует и особенности популярного микроконтроллера AVR Atmega32. В руководстве показано реальные программы пишутся и объясняются с помощью разработки схем. Базовый и средний концепции программирования и способы их использования также предоставляются. Через множество примеры, вы можете быстро стать экспертом во встроенных системах.

Микроконтроллер - Введение

Изучите основные функции микроконтроллера AVR Atmega32 и некоторую информацию об использовании каждого контакта.Также кратко объясняется программирование чипа (получение программы на чипе).

Программист MCU 1

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

Программист MCU 2

Установлен драйвер для программатора, который используется для передачи кода на микроконтроллер.Процесс установки совместим с операционной системой Windows 7, а также с предыдущими версиями Windows.

Установка MCU WinAVR

Драйвер и интерфейс готовы, но требуется среда программирования, чтобы фактически писать программы и передавать их в микроконтроллер. В этом руководстве мы создали среду программирования AVR-GCC под названием winavr.

MCU Добавить светодиод и тест

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

Первая программа MCU

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

Мигает светодиод MCU

Мы еще немного углубимся в программирование микроконтроллера и заставим светодиод мигать.

Установка Atmel Studio 6

Узнайте, как установить Atmel Studio 6 и настроить функции программирования микроконтроллера.

MCU Добавить кнопку

В этом руководстве мы добавляем возможность взаимодействия человека с микроконтроллером. Добавлена ​​кнопка для изменения скорости мигания светодиода.

Кнопка Debouncing

Очень важная тема, которую необходимо решить с помощью кнопок и их взаимодействия с микроконтроллером.

Программное обеспечение Debounce

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

Игра в кнопку

Теперь мы выводим светодиоды и кнопки на совершенно новый уровень и создаем игру с микроконтроллером.

Создание библиотеки кнопок

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

Таймеры Счетчики Базовые

тик-так, тик-так.Узнайте, как микроконтроллер считает и время. Узнайте, как запрограммировать микроконтроллер для управления таймером и счетчиком.

Введение в прерывания

Здесь перерывы - это хорошее воспитание и даже желательно. Мы прерываем подпрограммы из событий в микроконтроллере и создаем программы микроконтроллера для обработки событий.

Подключение к ЖК-дисплею

Отличный способ увидеть, что происходит, ЖК-дисплеи (жидкокристаллический дисплей) предоставляют информативный способ вывода данных с микроконтроллера.

Первая ЖК-программа

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

ЖК-дисплей и струны

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

Цифры на ЖК-дисплее

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

Разделение ЖК-кода

Пришло время разгрузить код main.c и перенести все процедуры ЖК-дисплея в их собственную библиотеку, чтобы файл main.c был более читабельным. Это сделает программирование микроконтроллера намного более увлекательным.

Функция отображения целых чисел

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

Источники энергии

Вам интересно, как включить микроконтроллер без помощи usb-порта компьютера? В этом руководстве будет показано, как использовать батареи, сетевой адаптер или порт USB для питания микроконтроллера.

Изготовление соединителей

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

Потенциометры

Вы действительно знаете, как работает потенциометр? Вы знаете, как сделать из него супер крутой делитель напряжения? Узнайте, как использовать потенциометр для получения переменного напряжения, чтобы его можно было использовать в АЦП (аналого-цифровой преобразователь) на микроконтроллере.

Введение в АЦП

Узнайте, как работает АЦП (аналого-цифровой преобразователь), и дайте несколько советов по поддержанию вашего аналогового сигнала и вашего микроконтроллера.

ADC - Первая программа

Давайте напишем нашу первую программу АЦП и пусть микроконтроллер считывает напряжение, поступающее с потенциометра.

АЦП и 10-битный

Увеличьте разрешение АЦП микроконтроллера, зафиксировав 10-битный результат (результат будет в диапазоне от 0 до 1023).

Акселерометры / АЦП

Узнайте об акселерометрах и о том, как конкретная разновидность связана с микроконтроллером.

Измерьте шум АЦП

Вы постоянно слышите шум от АЦП, и это сводит вас с ума? Это руководство покажет вам, как измерить этот шум и увидеть, как результаты измерений падают, когда к сигналу и микроконтроллеру применяются методы шумоподавления.

Несколько каналов АЦП

Итак, одного датчика или устройства, подключенного к АЦП микроконтроллера, недостаточно? Что ж, посмотрим, как использовать другие каналы АЦП.

Введение в сервоприводы Hobby

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

Введение в ШИМ

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

Управление сервоприводом с помощью ШИМ

Теперь, когда у нас есть понимание некоторых концепций ШИМ, давайте управлять сервоприводом с микроконтроллера! Мы углубимся в суть настоящего понимания ШИМ и того, как ШИМ сможет управлять рогом сервопривода для хобби.

Детали UART и USART

Использование микроконтроллера для связи с функциями UART и USART.

UART One Way Comm.

Использование UART для связи от передающего микроконтроллера к принимающему микроконтроллеру.

Программирование I2C (Эксклюзив)

Получите подробные инструкции о том, как кодировать I2C / TWI (двухпроводной интерфейс) с помощью микроконтроллера Atmega 324p.В этом эксклюзивном видео мы будем общаться с ускорителем ADXL.

.

Отправить ответ

avatar
  Подписаться  
Уведомление о