Универсальный внешний накопитель для всех iOS-устройств, совместим с PC/Mac, Android
Header Banner
8 800 100 5771 | +7 495 540 4266
c 9:00 до 24:00 пн-пт | c 10:00 до 18:00 сб
0 Comments

Содержание

Средства программирования 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 контроллеров с достаточными ресурсами.

МИКРОКОНТРОЛЛЕРЫ СЕМЕЙСТВА PIC

МИКРОКОНТРОЛЛЕРЫ PIC

     Ещё несколько лет назад, для сборки какого-либо цифрового устройства требовался десяток, а то и два логических микросхем типа К155, К561 и другие. Помимо трудностей сборки и настройки, такие устройства обладали слишком большими габаритами и энергопотреблением. Но технологии не стоят на месте, и вот, им на смену пришли микроконтроллеры PIC. Аббревиатура PIC, расшифровывается как Peripheral Interface Controller. Буквальный перевод: периферийный интерфейсный контроллер. Выпускает эти контроллеры американская компания Microchip Technology. Существуют 8, 16 и 32-битные микроконтроллеры под маркой PIC. Они представляют собой микpоконтpоллеpы с RISC аpхитектуpой, встpоенным ЭППЗУ пpогpаммы и ОЗУ данных. Скачать руководство по микроконтроллерам PIC можно здесь. А здесь имеется хорошая книга "Радиолюбительские схемы на PIC контроллерах" - описание десятков схем и конструкций: часы, таймеры, программаторы и многое другое.

     Работа 8-ми битных микроконтроллеров основывается на 12-ти разрядной архитектуре слова программ и предоставлены, как наиболее дешевое решение. Среднее семейство представлено микроконтроллерами серий PIC12 и PIC16, и имеет ширину слова программ 14 бит. Микроконтроллеры работают в диапазоне питающих напряжений от 2.0 до 5.5В, имеют встроенную систему прерываний, аппаратный стек, энергонезависимую память данных EEPROM. Набор периферии: USB, SPI, I2С, USART, LCD, АЦП и другие.

     В новых микроконтроллерах применена улучшенная архитектура 8-ми битных PIC контроллеров PIC12 и PIC16. При этом увеличен объём памяти программ и данных, улучшен аппаратный стек, имеются дополнительные источники сброса, расширена периферия для создания сенсорных пользовательских интерфейсов, уменьшено время входа в прерывание и размер кода, увеличена производительность на 50 %.

     Семейство 16-ти разрядных микроконтроллеров представлены в модификациях PIC24F - производительность ядра [email protected]МГц и PIC24H - [email protected]МГц. Отличаются они технологией изготовления FLASH программной памяти. 

     Особенности микроконтроллеров PIC24F и PIC24H:

 Выполнение команды за 2 такта генератора
 Время отклика на прерывание — 5 командных тактов
 Доступ к памяти за 1 командный такт
 Аппаратный умножитель 
 Аппаратный делитель 32/16 и 16/16 чисел
 Питающие напряжения 2.0…3.6В, один источник питания.
 Внутрисхемное и само- программирование
 Встроенный генератор с PLL
 Расширенная периферия (до 3-х SPI, до 3-х I2C, до 4-х UART с поддержкой IrDA, LIN, CAN и расширенный ECAN, USB OTG)
 Модуль измерения времени заряда, для управление ёмкостными сенсорами
 Ток портов ввода/вывода около мА
 До девяти 16-битных таймеров
 До восьми модулей захвата
 Энергосберегающие режимы
 До двух АЦП с 32 каналами и с конфигурируемой разрядностью
 До восьми 16-битных модулей сравнения / генерации ШИМ 

микроконтроллеры пик

     Самыми продвинутыми контроллерами являются 32-разрядные PIC32. Их особенности: ядро MIPS32 M4K, частота такта 80 МГц, большинство команд выполняются за 1 такт генератора, производительность 1.53 Dhrystone MIPS/МГц, порты ввода/вывода относятся к основному частотному диапазону, дополнительный частотный диапазон для периферии из основного посредством программно настраиваемого делителя, до 32 кБ SRAM и 512 кБ Flash с кэшем предвыборки, совместимость по выводам и отладочным средствам с 16-битными контроллерами, аппаратный умножитель и делитель с независимым конвейером, оптимизированным по скорости выполнения, набор расширенных инструкций MIPS16e, независимый от основного ядра контроллер USB.

     Схемы и устройства на PIC контроллерах можно питать от сети 220 вольт без понижающего трансформатора. Для этого достаточно спаять простую схему бестрансформаторного источника 5В, которая обеспечивает ток нагрузки около 0.1А. Для уменьшения влияния наводок и помех следует неиспользуемые выводы микроконтроллера подключать к шине земли. При разводке печатной платы обязательно установите фильтрующий конденсатор, емкостью 0,1 мкф, между выводами питания. Цепи генератора тактовых импульсов и сброса микроконтроллера делайте покороче. По периметру платы стоит провести шину земли.

микроконтроллер пик

     В настоящее время семейство микроконтроллеров PIC представлено такими моделями:

ТИП Память,байт ОЗУ,байт Частота,МГц

PIC12C508 512x12 25 4
PIC12C508A 512x12 25 4
PIC12C509 1024x12 41 4
PIC12C509A 1024x12 41 4
PIC12C671 1024x14 127 10
PIC12C672 2048x14 127 10
PIC12CE518 512x12 25 4
PIC12CE519 1024x12 41 4
PIC12CE673 1024x14 127 10
PIC12CE674 1024x14 128 10
PIC12CR509A 1024x12 41 4
PIC12F629 1024 64 20
PIC12F675 1024 64 20
PIC14000 4096x14 192 20
PIC16C432 2048x12 128 20
PIC16C433 2048x12 128 10
PIC16C505 1024x12 72 20
PIC16C52 384x12 25 4
PIC16C54 512x12 25 20
PIC16C54A 512x12 25 20
PIC16C54C 512x12 25 20
PIC16C55 512x12 24 20
PIC16C554 512x14 80 20
PIC16C558 2048x14 128 20
PIC16C55A 512x12 24 20
PIC16C56 1024x12 25 20
PIC16C56A 1024x12 25 20
PIC16C57 2048x12 72 20
PIC16C57C 2048x12 72 20
PIC16C58A 2048x14 73 20
PIC16C58B 2048x12 73 20
PIC16C61 1024x14 36 20
PIC16C620 512x14 80 20
PIC16C620A 512x14 96 20
PIC16C621 1024x14 80 20
PIC16C621A 1024x14 80 20
PIC16C622 2048x14 128 20
PIC16C622A 2048x14 128 20
PIC16C62A 2048x14 128 20
PIC16C62B 2048x14 128 20
PIC16C63 4096x14 192 20
PIC16C63A 4096x14 192 20
PIC16C642 4096x14 176 20
PIC16C64A 2048x14 128 20
PIC16C65A 4096x14 192 20
PIC16C65B 4096x14 192 20
PIC16C66 8192x14 368 20
PIC16C662 4096x14 176 20
PIC16C67 8192x14 368 20
PIC16C71 1024x14 36 20
PIC16C710 512x14 36 20
PIC16C711 1024x14 68 20
PIC16C712 1024x14 128 20
PIC16C715 2048x14 128 20
PIC16C716 2048x14 128 20
PIC16c717 2048x14 256 20
PIC16C72 2048x14 128 20
PIC16C72A 2048x14 128 20
PIC16C73 4096x14 192 20
PIC16C73A 4096x14 192 20
PIC16C73B 4096x14 192 20
PIC16C74 4096x14 192 20
PIC16C745 8192x14 256 24
PIC16C74A 4096x14 192 20
PIC16C74B 4096x14 192 20
PIC16C76 8192x14 368 20
PIC16C765 8192x14 256 24
PIC16C77 8192x14 368 20
PIC16C770 2048x14 256 20
PIC16C771 4096x14 256 20
PIC16C773 2048x14 256 20
PIC16C774 2048x14 256 20
PIC16C781 1024x14 128 20
PIC16C782 2048x14 128 20
PIC16C923 4096x14 176 8
PIC16C924 4096x14 176 8
PIC16C925 4096x14 196 20
PIC16C926 4096x14 336 20
PIC16CE623 512x14 96 20
PIC16CE624 1024x14 96 20
PIC16CE625 2048x14 128 20
PIC16CR54A 512x12 25 20
PIC16CR54b 512x12 25 20
PIC16CR54C 512x12 25 20
PIC16CR56A 2048x14 25 20
PIC16CR57A 4096x14 72 20
PIC16CR57b 2048x12 72 20
PIC16CR57C 2048x12 72 20
PIC16CR58A 2048x12 73 20
PIC16CR58B 2048x12 73 20
PIC16CR62 2048x14 128 20
PIC16CR63 4096x14 192 20
PIC16CR64 4096x14 192 20
PIC16CR65 4096x14 192 20
PIC16CR72 2048x14 128 20
PIC16CR83 512x14 36 10
PIC16CR84 1024x14 68 10
PIC16F627 1024x14 224 20
PIC16F627A 1024 224 20
PIC16F628 2048x14 224 20
PIC16F628A 2048 224 20
PIC16F630 1024 64 20
PIC16F648A 4096 256 20
PIC16F676 1024 64 20
PIC16F72 2048 128 20
PIC16F73 4096x14 192 20
PIC16F74 4096x14 192 20
PIC16F76 8192x14 368 20
PIC16F77 8192x14 368 20
PIC16F818 1024 128 20
PIC16F819 2048 256 20
PIC16F83 512x14 36 10
PIC16F84 1024x14 68 10
PIC16F84A 1024x14 68 10
PIC16F85 1024x14 128 20
PIC16F86 2048x14 128 20
PIC16F87 4096x14 192 20
PIC16F870 2048x14 128 20
PIC16F871 2048x14 128 20
PIC16F872 2048x14 128 20
PIC16F873 4096x14 192 20
PIC16F873A 4096x14 192 20
PIC16F874 4096x14 192 20
PIC16F874A 4096x14 192 20
PIC16F876 8192x14 368 20
PIC16F876A 8192x14 368 20
PIC16F877 8192x14 368 20
PIC16F877A 8192x14 368 20
PIC16F88 4096x14 192 20
PIC16F89 4096x14 192 20
PIC16HV540 512x12 25 20
PIC16LC74B 4096x14 192 16
PIC17C42 2048x16 232 33
PIC17C42A 2048x16 232 33
PIC17C43 4096x16 454 33
PIC17C44 8092x16 454 33
PIC17C752 8192x16 454 33
PIC17C756 16384x16 902 33
PIC17C756a 16384x16 902 33
PIC17C762 8192x16 678 33
PIC17C766 16384x16 902 33
PIC17CR42A 2048x16 232 33
PIC17CR43 2048x16 232 33
PIC17LC752 8192x16 678 16
PIC17LC756A 16384x16 902 16
PIC18C242 8192x16 512 40
PIC18C252 16384x16 1536 40
PIC18C442 8192x16 512 40
PIC18C452 16384x16 1536 40
PIC18C658 16384x16 1536 40
PIC18C801 - 1536 25
PIC18C858 16384x16 1536 40
PIC18F010 1024x16 256 40
PIC18F012 1024x16 256 40
PIC18F020 2048x16 256 40
PIC18F022 2048x16 256 40
PIC18F1220 2048 256 40
PIC18F1230 2048x16 256 40
PIC18F1320 4096 256 40
PIC18F1330 4096x16 256 40
PIC18F2220 2048 512 40
PIC18F232 8192x12 512 40
PIC18F2320 4096 512 40
PIC18F2331 4096x16 512 40
PIC18F242 8192x16 768 40
PIC18F2431 8192x16 768 40
PIC18F2450 8192x16 1024 40
PIC18F248 8192x16 768 40
PIC18F252 16384x16 1536 40
PIC18F2550 16384x16 1024 40
PIC18F258 16384x16 1536 40
PIC18F4220 2048 512 40
PIC18F432 8192x12 512 40
PIC18F4320 4096 512 40
PIC18F4331 4096x16 512 40
PIC18F442 8192x16 768 40
PIC18F4431 8192x16 768 40
PIC18F4450 8192x16 1024 40
PIC18F448 8192x16 768 40
PIC18F452 16384x16 1536 40
PIC18F4550 16384x16 1024 40
PIC18F458 16384x16 1536 40
PIC18F6520 16384x16 2048 40
PIC18F6585 24576 3072 40
PIC18F6620 32768x16 3840 40
PIC18F6680 32768 3072 40
PIC18F6720 65536x16 3840 40
PIC18F8520 16384x16 2048 40
PIC18F8585 24576 3072 40
PIC18F8620 32768x16 3840 40
PIC18F8680 32768 3072 40
PIC18F8720 65536x16 3840 40

 

     Для программирования контроллеров нужны компьютеp, пpогpамматоp, подключаемый к паpаллельному поpту компьютеpа, сама микpосхема контроллер (PIC16F84), макетная плата, 8 светодиодов, источник +5 В и панелька для микpосхемы. Простую и популярную программу PonyProg2000 можно скачать в разделе софт.

     ФОРУМ по микрорконтроллерам

   Схемы на микроконтроллерах
Программирование микроконтроллеров семейства PIC начинающим

Главная страница » Программирование микроконтроллеров семейства PIC начинающим

Первые микроконтроллеры появились в 60-х годах. Автоматизированные системы до этого времени обычно строились на основе реле. В принципе, релейные системы исполняли требуемую функцию вполне успешно. Однако главным недостатком релейных схем являлись сложности модернизации на случай изменения функциональности. Для инженеров проще было собрать новую релейную систему, нежели модифицировать уже существующую. В этом смысле программируемый логический контроллер оказался куда более предпочтительным устройством. Теперь программируемые логические контроллеры распространены повсеместно. Однако тонкости программирования таких систем остаются малопонятными для многих радиолюбителей. Рассмотрим этот важный момент – как программировать контроллер на примере широко известной серии ПЛК (PLC — Peripheral Interface Controller): продукта компании Microchip Technology Inc.

СОДЕРЖИМОЕ ПУБЛИКАЦИИ :

Общий взгляд на устройства ПЛК

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

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

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

  • память,
  • входные порты,
  • выходные порты.

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

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

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

PIC18F4550

Программирование микроконтроллеров PICПрограммируемые микроконтроллеры используются в составе современной электроники повсеместно. Умение работать с этим функциональным инструментом открывает широкие горизонты

Эффективность программы на основе макросов столь же эффективна, как и запись программы на языке «C». Компилятор отвечает за создание соответствующих подстановок для генерации кода, который передаётся в память программы микропроцессора или микроконтроллера.

Программирование широко распространённых микроконтроллеров PIC12 / PIC16

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

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

Помимо рабочего напряжения, микроконтроллерам требуется ещё три сигнала:

  1. Программируемое напряжение (около 13В).
  2. Таймер программирования (ICSPCLK).
  3. Данные (ICSPDAT).

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

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

ISD1700

Схема простого программатора микроконтроллеров PICСхема принципиальная упрощённого программатора микроконтроллеров серии PIC и обозначенные линии подключения интерфейсов RS232 / ISSP

Внутрисхемное программирование микроконтроллера PIC

Разъём внутрисхемного программирования (ICSP) предоставляет возможность запрограммировать микроконтроллер непосредственно в рамках прикладной схемы. Этот вариант видится особенно полезным в домашних условиях или в другой не специальной среде, где по каким-либо причинам требуется повторное изменение программированием PIC и тестирование схемы.

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

PIC K150 ICSP

ICSP соединитель под цепи программированияВот такой вариант ICSP соединителя вполне подойдёт для подключения линий связи на случай выполнения программирования микроконтроллера серии PIC12/PIC16

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

Основные условия программирования:

  • время переключения напряжения программирования «0 – 13В» составляет несколько микросекунд;
  • полный размах напряжения сигналов таймера и данных достигается в течение одной микросекунды;
  • вывод сигнала PGM остаётся низким всё время программирования.

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

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

Не рекомендуется подключать активные цепи к линии внешнего (основного) сброса (MCLR – Microcontroller Line Reset). Если сигнал MCLR используется для сброса PIC, следует устанавливать резистор номинальным сопротивлением более 56 кОм между выводами MCLR и подачи напряжения питания. Рекомендуется в цепь резистора включать конденсатор небольшой ёмкости — менее 100 пФ со смещением на землю (вывод GND).

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

TL866II USB

Схема доработок программатора PICСхемные доработки программатора микроконтроллера, рекомендуемые с целью обеспечения более качественного процесса программирования устройства

Этот вариант может иметь место, если схема содержит собственный стабилизатор напряжения питания и оснащается развязывающим конденсатором большой ёмкости. Модуль программатора, предназначенный под напряжение питания 3,3В, не в состоянии заряжать конденсатор достаточно быстро, а для программирования PIC требуется не менее 4,5В.

Между тем вариант изолирования можно исключить, если в схеме используется диод Шоттки. Чтобы удерживать вывод перевода микроконтроллера в режим программирования (PGM) на низком уровне, рекомендуется подключать этот вывод к земле через резистор номиналом от 2,2 кОм до 10 кОм.

Всегда рекомендуется таймер включения питания вносить в «слово» конфигурации. Задержка таймера более 40 мс даёт достаточно времени для стабилизации напряжения питания перед началом любой операции. Такой шаг позволяет избежать непреднамеренного выполнения программы до входа в режим программирования.

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

Для обеспечения повторного программирования микроконтроллера PIC в условиях напряжения питания ниже 4,5В, область памяти необходимо отключить от защиты. Это обусловлено применением «Chip Erase», единственного способа удаления кода или защиты данных, которого требуют практически все микроконтроллеры PIC с напряжением питания выше 4,5В.

Сигналы ICSP соответствующие контактам PIC 12Fxxx / 16Fxxx

Число ниже аббревиатуры сигнала соответствует выходу разъема ICSP модуля программатора. Для использования модуля с тестовыми платами сторонних производителей требуется адаптер.

АДАПТЕР

Таблица контактных группСледует обратить внимание: разъём ICSP этого модуля программатора имеет различный порядок сигналов по сравнению с другими программаторами микроконтроллеров PIC

Следующие схемы показывают, как подключать сигналы программирования к микроконтроллерам PIC 12Fxxx / 16Fxxx:

ARDUINO UNO

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

Фирменные средства программирования

Существует солидная группа фирменных программаторов для микроконтроллеров семейства PIC. Наиболее известные аппаратные средства:

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


На основе информации: Uolsinectis

Осваиваем простейший микроконтроллер PIC. Часть 2 / Хабр
В первой части мы разобрали как можно прошить выбранный МК, как его правильно сконфигурировать, а так же научились работать с цифровыми портами.
Теперь пришло время рассмотреть остальную периферию микроконтроллера.

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

Что бы узнать, какие биты в каких регистрах нам потребуются для конкретного модуля — придется снова заглянуть в документацию.
Для примера, взглянем на таблицу регистров, имеющих отношение к цифровым входам\выходам порта B:

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

Регистр TRISB отвечает за направление данных через порт. Каждый из 8 битов регистра привязан к соответсвующей ножке МК.
Присвоив нужному биту единицу — мы сделаем из него вход, а присвоив ноль — выход.
Именно в этом регистре мы меняли биты через переменные pin_Bx_direction.

В регистре OPTION_REG к порту относится только старший бит:

RBPU: PORTB Pull-up Enable bit
1 = PORTB pull-ups are disabled
0 = PORTB pull-ups are enabled by individual port latch values

Этот бит отвечает за подключение внутренней подтяжки, о которой было упоминание в первой части.
По таблице видно, что изначально подтяжка выключена, а значит при отсутствии внешней подтяжки необходимо включить внутреннюю самостоятельно:
OPTION_REG_NRBPU = 0

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

Прерывания


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

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

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

В выбранном нами МК 16f628a имеется 10 возможных источников прерываний:

  • внешний источник прерываний INT
  • изменение уровня сигнала на цифровых входах RB4:7
  • переполнение таймера TMR0
  • переполнение таймера TMR1
  • совпадение TMR2 и PR2
  • завершение записи в EEPROM
  • изменение выходного уровня компаратора
  • получение\завершение отправки данных через USART
  • прерывания от модуля CCP

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

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

В качестве примера использования прерываний перепишем нашу программу по миганию светодиодом.
Воспользуемся источником прерываний INT. В зависимости от состояния бита INTEDG в регистре OPTION прерывание будет генерироваться либо по переднему фронту сигнала (переход с низкого уровня к высокому), либо по заднему.
Для изменения уровня сигнала на INT неободимо перенести кнопку на соответсвующую ногу (pin 6).

include 16f628a -- target PICmicro
--
pragma target clock 4_000_000 -- указываем рабочую частоту, необходимо для некоторых функций расчета времени
-- конфигурация микроконтролера
pragma target OSC INTOSC_NOCLKOUT -- используем внутренний кварц
pragma target WDT disabled -- сторожевой таймер отключен
pragma target PWRTE disabled -- таймер питания отключен
pragma target MCLR external -- внешний сброс активен
pragma target BROWNOUT disabled -- сбос при падении питания отключен
pragma target LVP disabled -- программирование низким напряжением отключено
pragma target CPD disabled -- защита EEPROM отключена
pragma target CP disabled -- защита кода отключена
--
enable_digital_io() -- переключение всех входов\выходов на цифровой режим
--
alias led is pin_B5 -- светодиод подключен к RB5
pin_B5_direction = output -- настраиваем RB5 как цифровой выход
--
alias button is pin_B0 -- кнопка подключена к RB0
pin_B0_direction = input -- настраиваем RB0 как вход
var volatile bit led_blink = false -- объявляем переменную
-- настраиваем прерывание
INTCON_INTE = on -- разрешаем прерывание по изменению сигнала на INT
INTCON_INTF = off -- сбрасываем флаг прерывания по INT
OPTION_REG_INTEDG = 0 -- генерировать прерывания при переходе 1->0
INTCON_GIE = on -- включаем обработку прерываний
-- обработчик прерывания INT
procedure INT_ISR is
pragma
interrupt
if INTCON_INTF then -- проверяем флаг нужного нам прерывания
INTCON_INTF = off -- сбрасываем флаг прерывания
led_blink = !led_blink -- перключаем флаг светодиода
end if
end procedure
led = off -- выключаем светодиод
forever loop
led = off -- выключаем светодиод
_usec_delay(100000) -- ждем 0,1 сек
if led_blink then -- моргаем только при активном флаге
led = on -- ждем 0,1 сек
_usec_delay(100000) -- ждем 0,1 сек
end if
end loop

Увы, это не самый оптимальный вариант по двум причинам:
  • из-за дребезга контактов кнопки прерывание может сработать несколько раз подряд, дребезг желательно подавлять программно
  • в основном цикле программы у нас остались паузы, во время которых микроконтролер ничего не делает, кроме как ждет.

Таймеры


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

  • 8-битный таймер (считает от 0 до 255)
  • тактируется либо от системной частоты, либо от внешнего источника
  • может считать как передние, так и задние фронты тактируемого сигнала
  • 8-битный предделитель (может считать каждый второй, каждый 4… каждый 256 сигнал)
  • прерывание генирируется при переполнении (при переходе от 255 к 0)
  • таймер работает постоянно

Что нам это дает?
При тактировании от системной частоты (в нашем случае — 4 MHz/4 = 1 Mhz) таймер будет генерировать прерывания с постоянной частотой.
Не сложно посчитать, что без предделителя прерывания будут иметь частоту 3906,25 Гц. Для светодиода — многовато.
Предделитель может на порядок (двойчный, т.е. в 2 раза) уменьшить частоту восемь раз.
При предделителе 1:256 мы получим частоту в 15.3 Гц. Мигание светодиодом с такой частотой вполне различимо человеческим глазом.
При тактировании МК от внешнего кварца можно добиться другого диапазона частот.

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

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

TMR1

Основные отличия таймера от TMR0:
  • данный таймер 16-битный
  • таймер может тактироваться не только от внешнего источника, но и от дополнительного часового кварца
  • максимально доступный предделитель — 1:8
  • таймер может считать только передние фронты сигнала
  • таймер может использоваться модулем CCP
  • таймер можно отключать

Использовать TMR1 можно так же, как и TMR0: или для генерирования определенной частоты, или для подсчета импульсов.
TMR2

Данный 8-битный таймер имеет несколько иной принцип работы.
Тактироваться он может только от системной частоты. Предделитель может быть выставлен только на значения 1:1, 1:4 или 1:16.
Полученные импульсы таймер считает от нуля и до предварительно заданного значения PR2.
После совпадения TMR2 и PR2 подается сигнал на 4-битный постделитель, и только после переполнения постделителя генерируется прерывание.
Благодаря такой схеме можно корректировать конечную частоту прерываний с минимальным шагом.

Помимо постделителя, сигнал при совпадении PR2 может идти на модуль CCP в качестве базы тайминга ШИМ.
Как и TMR1, данный таймер можно отключить.

Пример использования

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

Описание каждого бита можно найти в документации на микроконтроллер.

include 16f628a -- target PICmicro
--
pragma target clock 4_000_000 -- указываем рабочую частоту, необходимо для некоторых функций расчета времени
-- конфигурация микроконтролера
pragma target OSC INTOSC_NOCLKOUT -- используем внутренний кварц
pragma target WDT disabled -- сторожевой таймер отключен
pragma target PWRTE disabled -- таймер питания отключен
pragma target MCLR external -- внешний сброс активен
pragma target BROWNOUT disabled -- сбос при падении питания отключен
pragma target LVP disabled -- программирование низким напряжением отключено
pragma target CPD disabled -- защита EEPROM отключена
pragma target CP disabled -- защита кода отключена
--
enable_digital_io() -- переключение всех входов\выходов на цифровой режим
--
alias led is pin_B5 -- светодиод подключен к RB5
pin_B5_direction = output -- настраиваем RB5 как цифровой выход
--
-- настраиваем таймер
T1CON_T1CKPS = 0b_11 -- предделитель, 2 бита
T1CON_TMR1CS = 0 -- тактирование от системной частоты
PIE1_TMR1IE = on -- разрешаем прерывание от TMR1
PIR1_TMR1IF = off -- сбрасываем флаг прерывания от TMR1
INTCON_PEIE = on -- разрешаем прерывания от периферии
T1CON_TMR1ON = on -- включаем таймер
INTCON_GIE = on -- включаем обработку прерываний

--
;таймер тактируется от Fosc/4 : 4MHz/4 = 1 Mhz
;предделитель установлен на 1:8 : 1Mhz/8 = 125 kHz
;таймер - 16 бит : 125 kHz/65536 = 1.9 Hz
;светодиод включится и выключится за 2 прерывания : итоговая частота моргания 0,95 Hz
--

-- обработчик прерывания TMR1

procedure TMR1_ISR is
pragma
interrupt
if PIR1_TMR1IF then -- проверяем флаг нужного нам прерывания
PIR1_TMR1IF = off -- сбрасываем флаг прерывания
led = !led -- переключаем состояние светодиода
end if
end procedure

forever loop
-- полностью свободный основной цикл
end loop


CCP


Модуль CCP (Capture/Compare/PWM) предназначен для измерения и формирования импульсных сигналов.
Capture

В режиме захвата модуль использует TMR1 в качестве измерителя времени. Как только на ножке CCP1 (pin 9) возникнет отслеживаемое событие, модуль сохранит текущее 16-битное значение TMR1 в регистры CCPR1H:CCPR1L.
Такими событиями могут быть:
  • каждый задний фронт сигнала
  • каждый передний фронт сигнала
  • каждый четвертый передний фронт
  • каждый 16 передний фронт

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

В режиме сравнения модуль рабоает в обратном направлении: как только значение в регистрах CCPR1H:CCPR1L совпадет с текущим значением TMR1, модуль может выставить 1 или 0 на ножке CCP1 (pin 9) или просто сгенерировать прерывание. Так же при совпадении модуль может обнулить TMR1.
Замеряя необходимые промежутки времени можно формировать импульсы определенной формы. Например, для управления положением сервомашинки требуется подавать на сигнальную линию импульсы высокого уровня длиной 700-2200 мкс с частотой 50 Hz. В зависимости от длины импульса серво установит свое положение либо в одно крайнее положение (700 мкс), либо в другое (2200 мкс), либо приблизительно по центру (1500 мкс).
PWM

В режиме ШИМ модуль самостоятельно формирует сигнал с частотой, генерируемой таймером TMR2, и заданной 10-битной скважностью.

Что такое ШИМ-сигнал?
Микроконтроллер может выдавать только цифровой сигнал — логические 1 и 0.
В ШИМ сигнале с постоянной частотой первую часть периода на выход подается 1, а вторую часть — 0. Меняя соотношение длительности обоих частей меняется скважность сигнала. Скважность ШИМ — это соотношение продолжительности импульса логической единицы и периода ШИМ. 10-битный ШИМ может обеспечить точность изменения скважности в 1/1024 длительности периода.

Как этим можно пользоваться?
Так как частота сигнала достаточно велика, то низкоскоростным нагрузкам будет казаться, что они получают напряжение, равное проценту скважности от максимума. Таким образом из ШИМ у нас выйдет обычный аналоговый выход с диапазоном напряжения от 0 до Vdd (в нашем случае — 5В).

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

Для работы с ШИМ имеется библиотека, потому нам не потребуется особых усилий по расчетам и настройке регистров.
Пример использования библиотеки:

-- настраиваем ШИМ
pin_CCP1_direction = output -- настраиваем pin 9 как выход
include pwm_hardware -- подключаем библиотеку, упрощающую работу с ШИМ
pwm_max_resolution(4) -- устанавливаем значение предделителя TMR2 для выбора нужной частоты (976 Hz)
pwm1_on() -- включаем ШИМvar bit fade_type = 1 -- переменная для направления изменения яркости
var byte i = 0 -- переменная для текущего уровня яркости

forever loop
-- меняем текущее значение
if fade_type then
i = i + 1
if i == 100 then
fade_type = 0
end if
else
i = i - 1
if i == 0 then
fade_type = 1
end if
end if
pwm1_set_percent_dutycycle(i) -- применяем новое значение яркости
_usec_delay(20000) -- делаем паузу, иначе процесс изменения яркости будет очень быстрым
end loop

Компараторы


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

В зависимости от настроек, компараторы могут работать в восьми режимах:

По схемам хорошо видно какие напряжения сравниваются в каждом режиме, стоит только пояснить что такое опорное напряжение Vref.

Источник опорного напряжения

Это еще один небольшой модуль, обычно требуется только для работы компараторов.
Единственная задача модуля — разделить напряжение питания до нужного значения.
Модуль представляет из себя простой делитель на 16 резисторах. Все, что он умеет — выделить пониженное до нужного значения напряжение из питания.
При питании 5В модуль может выдать напряжение от 0 до 3.6В.

EEPROM


В микроконтроллере 16f628a нам доступно 128 байт энергонезависимой памяти.

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

Для подключения библиотеки достаточно написать

include pic_data_eeprom

после чего нам становится доступным ряд процедур и функций:

data_eeprom_read([offset],[byte])         -- процедура читает байт с номером [offset] и
                                          -- заносит результат в переменную [byte]
data_eeprom_write([offset],[byte])        -- процедура записвает полученный байт [byte] на место [offset]
data_eeprom_read_word([offset],[word])    -- процедура считывает 2 байта: [offset] и [offset]+1 
data_eeprom_write_word([ofset],[word])    -- процедура записывает 2 байта подряд
data_eeprom_read_dword([offset],[dword])  -- процедура считывает 4 байта подряд
data_eeprom_write_dword([offset],[dword]) -- процедура записывает 4 байта подряд
[byte] = data_eeprom([offset])            -- чтение байта через функцию
[word] = data_eeprom_word([offset])       -- чтение двух байт через функцию
[dword] = data_eeprom_dword([offset])     -- чтение 4 байт через функцию

Единственное, о чем нужно помнить — о размере памяти. Записать dword по смещению 128 в данном случае не удастся.

USART


USART — последовательный порт ввода-вывода. Данный модуль предназначен для связи микроконтроллера с другими устройствами.
Для организации канала связи достаточно лишь соединить Rx каждого устройства с Tx другого.
При желании настроить режим работы модуля самостоятельно можно подробно изучить документацию на микроконтроллер, но нам снова понадобится лишь одна библиотека.
Единственное, что нам требуется указать — скорость передачи данных. Максимальная скорость зависит от тактового сигнала МК. При 4 MHz рекомендуемая скорость — 2400.
const serial_hw_baudrate = 2400 -- задаем скорость
include serial_hardware -- подключаем библиотеку
serial_hw_init() -- производим настройку модуля

После настройки можно начинать принимать и передавать байты.

serial_hw_write([byte])          -- процедура отправки байта [byte]
serial_hw_data = [byte]          -- отправка байта через псевдопеременную
serial_hw_read([byte]):[boolean] -- при наличии присланного байта заносит значение в
                                 -- переменную [byte] и возвращает true
                                 -- при отсуствии присланных данных возвращает false
serial_hw_data_available         -- при наличии принятых байт данная переменная возвращает true, иначе - false
[byte] = serial_hw_data          -- чтение байта через псевдопеременную, при отсутствии 
                                 -- принятых байт микроконтролер будет ожидать их прихода
                                 -- при использовании такого способа чтения необходимо проверять
                                 -- факт прихода данных

Для организации связи с компьютером можно использовать UART-COM и UART-USB адаптеры. Впрочем, никто не мешает собрать их самостоятельно по схемам:

Внешний кварц


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

Подключать внешний кварц нужно к ногам OSC1 и OSC2 (pin16 и pin 15):


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

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

Итоги


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

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

Ошибка 404. Страница не найдена!

Ошибка 404. Страница не найдена!

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

Микроконтроллеры PIC16, общие сведения, организация памяти | RadioLaba.ru

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

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

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

Большинство команд выполняются за один машинный цикл, но есть команды, для которых требуется два машинных цикла. Длительность машинного цикла равна 4 периодам тактового генератора. Например, если у нас стоит кварц на 4 МГц, то длительность машинного цикла равна 1 мкс, при частоте кварца в 20 МГц (что является максимумом для этих микроконтроллеров), машинный цикл равен 200 нс или 0,2 мкс.

В микроконтроллерах семейства PIC16 имеется 3 вида памяти: память программ, память данных и энергонезависимая память EEPROM.

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

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

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

Память данных подразделяется на банки, два или четыре, в зависимости от типа микроконтроллера. Если рассматривать отдельный банк по адресам, то сначала идут регистры специального назначения, затем регистры общего назначения. На картинке ниже можно увидеть карту памяти данных распространенного микроконтроллера PIC16F628A.
Карта памяти PIC16F628
Чтобы обратиться к какому либо регистру (выполнить операцию над ним), необходимо сначала указать банк, в котором расположен этот регистр. Банк выбирается с помощью битов RP1, RP0 регистра STATUS, который определен во всех банках, то есть к регистру STATUS можно обращаться независимо от того какой банк выбран, что является очевидным, иначе мы не смогли бы переключать банки. Некоторые важные регистры специального назначения также определены сразу в нескольких банках. Регистры ОЗУ также могут быть определены в нескольких банках, на карте памяти данных при этом пишется “accesses 70h-7Fh” (Доступ к 70h-7Fh). В случае микроконтроллера PIC16F628A, к 16-ти регистрам, расположенным по адресам 70h-7Fh, можно обращаться независимо от выбранного банка. Все это относится к непосредственной адресации, кроме которой существует еще косвенная адресация. Вообще не стоит сильно пугаться этих банков, когда используется небольшое количество регистров ОЗУ, все операции в основном выполняются в одном банке (Банк 0), переключаться приходиться лишь при обращении к некоторым регистрам специального назначения.

Для реализации косвенной адресации используется регистр специального назначения FSR, а также физически не реализованный регистр INDF. Чтобы обратиться к какому-либо регистру (например PORTB), необходимо записать его адрес в регистр FSR, после чего содержимое регистра PORTB условно окажется в регистре INDF. Условно потому что обращение к регистру INDF на самом деле вызовет действие с регистром PORTB. Косвенную адресацию удобно применять при обращении к большому количеству регистров расположенных последовательно в памяти данных. Выполняя однотипную операцию с регистром INDF, с последующим инкрементом регистра FSR, можно прооперировать большое количество регистров. При использовании косвенной адресации также следует указать банк местонахождения регистра, адрес которого записывают в FSR. При данной адресации банк указывается одним битом IRP регистра STATUS, так как адресация работает в пределах 2-х банков. Если бит IRP сброшен (значение равно 0), можно обращаться к регистрам 0-го и 1-го банка, при установленном бите (значение равно 1), обращение идет к регистрам 2-го и 3-го банка.

В памяти программ располагается сам код программы в виде последовательности команд. Команды 14-ти разрядные, ячейку памяти программ еще называют словом. Например, у PIC16F628A объем памяти равен 2K x 14 слов (2048 х 14), то есть в памяти программ можно разместить 2048 команд. В счетчике команд PC находится адрес выполняемой команды, регистр счетчика 13-ти разрядный и разделен на два регистра: старший байт PCH и младший PCL, регистр PCL доступен для записи и чтения, он относится к регистрам специального назначения. Регистр PCH недоступен, все операции с ним выполняются через дополнительный регистр специального назначения PCLATH. Так как счетчик 13-ти разрядный, то в регистрах PCH и PCLATH используются только 5 бит. Всего с помощью 13-ти разрядов можно адресовать 8192 слова, поэтому это максимальный объем памяти программ для микроконтроллеров PIC16.

В ходе последовательного выполнения команд содержимое регистра PCL (адрес команды) автоматически инкрементируется, при переполнении происходит инкремент содержимого PCH. Если изменить содержимое регистра PCL, путем записи нового значения или выполнения арифметических операций, можно перескочить на другой участок кода программы, таким образом осуществляется вычисляемый переход. При использовании команд изменяющих значение регистра PCL, содержимое регистра PCLATH передается регистру PCH, то же самое происходит при выполнении команд GOTO и CALL.

Следует знать, что в случае вычисляемого перехода при переполнении регистра PCL (например, в результате операции сложения), регистр PCH не инкрементируется. Например, на момент сложения (прибавляем число 9) значение регистра PCL равнялось 250, а значение PCLATH равно 0, после выполнения команды в PCL будет лежать число 4, но инкремента PCH не произойдет, в PCH запишется число 0 из регистра PCLATH. Тем самым мы попадем на команду с адресом 4 (0004h) (PCH=xxx00000, PCL=00000100), вместо того чтобы попасть на команду с адресом 260 (0104h) (PCH=xxx00001, PCL=00000100). При использовании вычисляемого перехода необходимо предварительно записать значение в регистр PCLATH, после чего изменять значение PCL, или же просто не допускать переполнения PCL. Вычисляемый переход в основном используется для табличного чтения данных, описанного в статье таблица данных.

А теперь расскажу о страницах памяти, команды CALL и GOTO имеют 11-ти разрядное поле для указания адреса, поэтому можно спокойно применять эти команды в пределах 2048 слов (это размер одной страницы) памяти программ, не задумываясь о регистрах PCH и PCLATH. У микроконтроллера PIC16F628A объем памяти равен одной странице, поэтому там все просто. В микроконтроллерах с большей памятью при переходах с помощью команд CALL и GOTO необходимо заранее запрограммировать 3-й и 4-й бит в регистре PCLATH, чтобы попасть на нужный участок кода памяти программ.

Например, нам нужно попасть на метку PROG расположенную по адресу 3500 (0DACh) (PCH=xxx01101, PCL=10101100), этот адрес находится уже на первой странице памяти, до нее шла нулевая страница. Перед вызовом команды CALL PROG, 3-й и 4-й бит регистра PCLATH сброшены, после выполнения команды в регистре PCL будет лежать число 172 (PCL=10101100), так как поле задания адреса 11-ти разрядное, в регистр PCH запишется число 5, а в 3-й и 4-й бит запишутся нули из регистра PCLATH, тем самым мы попадем на команду с адресом 1452 (05ACh) (PCH=xxx000101, PCL=10101100). Чтобы правильно попасть на метку PROG, перед вызовом команды CALL PROG, необходимо установить 3-й бит регистра PCLATH в 1. Таким образом, 3-им и 4-ым битом мы выбираем одну из 4-х страниц памяти программ, в пределах страницы манипуляций с этими битами производить не надо.

При возврате из одной страницы в другую с помощью команд RETURN, RETLW изменять значение битов не требуется, так как стек 13-ти разрядный. Но надо учесть, что после выполнения этих инструкций, значение регистра PCLATH не изменяется (оно вообще никогда не изменяется само по себе), это справедливо и для инструкции возврата из подпрограммы обработки прерывания RETFIE, и если мы снова воспользуемся командами перехода, мы можем попасть не на тот участок кода. Поэтому перед выполнением команд перехода после инструкций возврата, необходимо правильно запрограммировать биты регистра PCLATH, или изменить их значение перед выполнением команды возврата.

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

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

Таблица команд ассемблера для микроконтроллеров PIC12,16

PIC-микроконтроллеры архитектура и программирование | Майкл Предко

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

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

Глава 1. Принятые обозначения и сокращения

Глава 2. Основные характеристики микроконтроллеров PICmicro®

Глава 3. Корпуса PIC-микроконтроллеров и назначение выводов

Микроконтроллеры младшего подсемейства
Микроконтроллеры среднего подсемейства
Микроконтроллеры PIC 17Схх
Микроконтроллеры PIC 18Схх

Глава 4. Система команд микроконтроллеров PICmicro®
Параметры
Системы команд PIC-микроконтроллеров младшего и среднего подсемейств
Система команд микроконтроллеров подсемейства PIC 17Схх
Система команд микроконтроллеров подсемейства PIC 18Схх
Мнемоника специальных команд
Ассемблер фирмы Parallax Inc. для PIC-микроконтроллеров

Глава 5. Архитектура процессора микроконтроллеров PICmicro®
Арифметико-логическое устройство PIC-микроконтроллеров
Микроконтроллеры PICmicro® младшего подсемейства
Микроконтроллеры среднего подсемейства
Микроконтроллеры PIC 17Схх
Микроконтроллеры PIC 18Схх

Глава 6. Управляющие регистры PIC-микроконтроллеров
Микроконтроллеры младшего подсемейства
Микроконтроллеры среднего подсемейства
Микроконтроллеры PIC 17Схх
Микроконтроллеры PIC 18Схх

Глава 7. Функциональные узлы
Регистры конфигурации
Генераторы тактовых импульсов
Режим ожидания
Регистр OPTION
Порты ввода/вывода и регистры TRIS
Сторожевой таймер
Таймер TMR0
Прескалер
Таймер TMR1
Таймер TMR2
Модуль ССР
Модуль универсального синхронно-асинхронного приемопередатчика
Модуль SSP
Интерфейс SPI
Интерфейс I2С
Встроенный аналого-цифровой преобразователь
Встроенные компараторы напряжения
Управляемый параллельный порт
Доступ к EEPROM данных
Доступ к программной памяти EPROM
Доступ к программной флэш-памяти
Внешняя память

Глава 8. Взаимодействие РIС-микроконтроллеров с внешними устройствами
Схема для подключения микроконтроллеров к источнику питания
Схема перезапуска микроконтроллеров
Цифровые уровни
Использование параллельной шины
Взаимодействие с кнопками
Взаимодействие с матричной клавиатурой
Объединение входов и выходов
Схема эмуляции вывода с открытым коллектором/открытым стоком
Управление светодиодными индикаторами
Многосегментные светодиодные индикаторы
Управление жидкокристаллическим дисплеем
Интерфейс I2С в режиме MASTER
Интерфейс RS-232
Интерфейсы RS-485/RS-422
Подпрограммы для последовательного асинхронного обмена
Однопроводный интерфейс фирмы Dallas Semiconductor
Измерение сопротивлений с помощью цифровых входов/выходов
Схемы для управления двигателями
Управление серводвигателями
Схема формирования звуковых сигналов
Управление мощностью нагрузки переменного тока
Схемы датчиков на основе эффекта Холла
Дистанционное управление телевизионными приемниками фирмы Sony

Глава 9. Программирование PIC-микроконтроллеров
Hex-файлы
Программирование РIС-микроконтроллера младшего подсемейства
Последовательное программирование микроконтроллеров среднего подсемейства
Программирование PIC 17Схх
Внутрисхемное программирование PIC 17Схх
Программирование PIC 18Схх
Разъем для внутрисхемного программирования

Глава 10. Интерфейсы ПК
Распределение оперативной памяти
Пространство ввода/вывода
Функции прерываний
Шина ISA
Порты клавиатуры и мыши
Последовательный порт
Параллельный порт

Глава 11. Полезные подпрограммы
Переход за пределы текущей страницы
Таблицы
Ветвление по условию
Временные задержки
Получение дополнительного кода содержимого регистра (изменение знака)
Инкрементирование/декрементирование содержимого регистра w
«Вращение на месте»
Копирование битов из одного регистра в другой
Преобразование полубайта в код ASCII
Преобразование байта кода ASCII в шестнадцатеричный полубайт
Использование входа Т0СК1 в качестве источника прерывания
Деление на три
Измерение длительности импульса с 16-разрядной точностью
Регистрация изменений
Проверка диапазона
Преобразование символов ASCII в верхний регистр
Перестановка содержимого регистра и рабочего регистра w .... 369
Перестановка содержимого двух регистров
Сравнение и перестановка, если Y < X
Подсчет числа 1 в байте
Генерация бита четности для байта
Удержание переменной внутри диапазона
Перестановка четных и нечетных битов
Побитовые операции
Умножение на константу
Деление на константу

Глава 12. 16-разрядные числа
Определение 16-разрядных чисел
Инкрементирование и декрементирование
Сложение/вычитание
Побитовые операции с константами и переменными
Сравнение 16-разрядных переменных
Умножение
Деление

Глава 13. Рабочие характеристики PIC-микроконтроллеров
Токи нагрузок выходов и портов
Значения компонентов RC-генератора
Рабочие характеристики в режиме LP-генератора
Рабочие характеристики в режиме XT-генератора
Рабочие характеристики в режиме HS-генератора

Глава 14. Возможные неисправности устройств с PIC-микроконтроллерами
Глава 15. Средства разработки приложений

Функции клавиш текстового редактора
Файл MPSIM.INI
Среда разработки MPLAB
Включаемые файлы
Компоновка приложений
Шаблон программы приложения
Язык Basic
Расширенная версия Basic
PicBasic
Visual Basic
Управление вводом/выводом с помощью MSComm
Язык С

Глава 16. Постоянные и таблицы данных
Математические и физические постоянные
Код ASCII
Управляющие символы кода ASCII
Управляющие ANSI-последовательности
Расширенный набор символов кода ASCII
Символы кода ASCII для Windows
Код EBCDIC
Ноты
Частоты телефонов с тональным набором
АТ-команды модема
Регистры модема
Код Морзе
Фонетический алфавит
Теn-радиокод

Глава 17. Справочная информация по электронике
Цветовое кодирование резисторов
Электромагнитный спектр
Диапазоны радара
Цифровая логика
Вентили
Триггеры

Глава 18 .Формулы
Формулы постоянного тока
Формулы переменного тока
Физические формулы
Булева алгебра
Соответствия единиц измерения

Глава 19. Библиография
Информация о компании Microchip
Web-сайты, посвященные PIC-микроконтроллерам
Периодические издания
Полезные Web-сайты
Часто задаваемые вопросы по аппаратному обеспечению
Поставщики комплектующих
Предметный указатель

Название: PIC-микроконтроллеры: архитектура и программирование
Автор: Майкл Предко
Издательство: ДМК Пресс
Год издания: 2010
Страниц: 512
Формат: DjVu
Размер: 32,8 МБ

Скачать книгу PIC-микроконтроллеры: архитектура и программирование

Введение в микроконтроллеры PIC и его архитектуру

PIC - это микроконтроллер с периферийным интерфейсом, разработанный в 1993 году микроконтроллерами General Instruments. Он управляется программным обеспечением и запрограммирован таким образом, что выполняет различные задачи и контролирует линию генерации. Микроконтроллеры PIC используются в различных новых приложениях, таких как смартфоны, аудио аксессуары и современные медицинские устройства.

PIC Microcontrollers PIC Microcontrollers PIC Микроконтроллеры

На рынке доступно множество PIC от PIC16F84 до PIC16C84.Эти типы PIC являются доступными флэш-PIC. Microchip недавно представила флэш-чипы разных типов, такие как 16F628, 16F877 и 18F452. 16F877 стоит в два раза дороже старого 16F84, но он в восемь раз больше, чем размер кода, с большим количеством оперативной памяти и гораздо большим количеством выводов ввода / вывода, UART, аналого-цифровым преобразователем и многими другими функциями.


PIC Микроконтроллеры Архитектура

Микроконтроллер PIC основан на архитектуре RISC. Его архитектура памяти соответствует модели Гарварда, состоящей из отдельных блоков памяти для программ и данных с отдельными шинами.

PIC microcontroller architecture PIC microcontroller architecture Архитектура микроконтроллера PIC

1. Структура памяти

Архитектура PIC состоит из двух блоков памяти: программной памяти и памяти данных.

Память программы: Это пространство памяти 4K * 14. Используется для хранения 13-битных инструкций или программного кода. Доступ к данным памяти программ осуществляется через регистр счетчика программ, который содержит адрес памяти программ. Адрес 0000H используется как область памяти сброса, а 0004H используется как область памяти прерываний.

Память данных: Память данных состоит из 368 байтов ОЗУ и 256 байтов EEPROM. 368 байт оперативной памяти состоит из нескольких банков. Каждый банк состоит из регистров общего назначения и регистров специальных функций.

PCBWay PCBWay

Регистры специальных функций состоят из регистров управления для управления различными операциями ресурсов микросхемы, такими как таймеры, аналого-цифровые преобразователи, последовательные порты, порты ввода / вывода и т. Д. Например, регистр TRISA, биты которого можно изменить на изменить операции ввода или вывода порта А.

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

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

Регистр состояния: Биты регистра состояния обозначают состояние АЛУ (арифметико-логического устройства) после каждого выполнения команды.Он также используется для выбора любого из 4 банков оперативной памяти.

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

Другим регистром общего назначения является регистр счетчика программ, который является 13-битным регистром. 5 старших бит используются как PCLATH (защелка счетчика программ) для независимой работы как любой другой регистр, а младшие 8 битов используются как биты счетчика программ.Счетчик программ действует как указатель на инструкции, хранящиеся в памяти программ.

EEPROM: Он состоит из 256 байт пространства памяти. Это постоянное запоминающее устройство, подобное ПЗУ, но его содержимое может быть стерто и изменено во время работы микроконтроллера. Содержимое в EEPROM может считываться или записываться с использованием специальных регистров функций, таких как EECON1, EECON и т. Д.

2. Порты ввода / вывода

Серия PIC16 состоит из пяти портов, таких как порт A, порт B, порт C Порт D и Порт E.

Порт A: Это 16-битный порт, который можно использовать в качестве порта ввода или вывода в зависимости от состояния регистра TRISA.

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

Порт C: Это 8-битный порт, работа которого (вход или выход) определяется состоянием регистра TRISC.

Порт D: Это 8-битный порт, который, помимо того, что является портом ввода / вывода, выполняет роль подчиненного порта для подключения к шине микропроцессора.

Порт E: Это 3-битный порт, который выполняет дополнительную функцию сигналов управления для аналого-цифрового преобразователя.

3. Таймеры

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

PIC состоят из 3 таймеров, из которых Таймер 0 и Таймер 2 являются 8-битными таймерами, а Тайм-1 - 16-битным таймером, который также можно использовать в качестве счетчика.

4. Аналого-цифровой преобразователь

Микроконтроллер PIC состоит из 8-канального 10-разрядного аналого-цифрового преобразователя. Работа аналого-цифрового преобразователя контролируется этими специальными регистрами функций: ADCON0 и ADCON1.Младшие биты преобразователя хранятся в ADRESL (8 бит), а старшие биты хранятся в регистре ADRESH. Это требует аналогового опорного напряжения 5В для его работы.

5. Генераторы

Генераторы

используются для генерации синхронизации. Микроконтроллеры PIC состоят из внешних генераторов, таких как кристаллы или RC-генераторы. В случае кварцевых генераторов кристалл подключен между двумя контактами генератора, и значение конденсатора, подключенного к каждому контакту, определяет режим работы генератора.Различными режимами являются режим с низким энергопотреблением, режим кристалла и высокоскоростной режим. В случае RC-генераторов значение резистора и конденсатора определяет тактовую частоту. Тактовая частота колеблется от 30 кГц до 4 МГц.

6. Модуль CCP:

Модуль CCP работает в следующих трех режимах:

Режим захвата: Этот режим фиксирует время поступления сигнала или, другими словами, фиксирует значение Timer1, когда КПК-пин идет высоко.

Сравнить Режим: Он действует как аналоговый компаратор, который генерирует выходной сигнал, когда значение timer1 достигает определенное эталонное значение.

PWM Mode: Обеспечивает выход с широтно-импульсной модуляцией с 10-битным разрешением и программируемым рабочим циклом.

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

Уличный фонарь, который светится при обнаружении движения транспортного средства

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

Street Light that Glows on Detecting Vehicle Movement Street Light that Glows on Detecting Vehicle Movement Уличный фонарь, который светится при обнаружении движения транспортного средства

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

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

Введение в архитектуру PIC и MPLABX

В 1980 году Intel разработала первый микроконтроллер (8051) с Гарвардской архитектурой 8051, и с тех пор микроконтроллеры произвели революцию в электронике и встраиваемой промышленности. Благодаря технологическому прогрессу со временем у нас появилось много более эффективных и маломощных микроконтроллеров, таких как AVR, PIC , ARM. Эти микроконтроллеры более функциональны и просты в использовании, имеют новейшие протоколы связи, такие как USB, I2C, SPI, CAN и т. Д.Даже Arduino и Raspberry Pi полностью изменили взгляд на микроконтроллеры, и Raspberry Pi - это не просто микроконтроллер, а встроенный компьютер.

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

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

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

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

Теперь давайте начнем с Простое введение в микроконтроллеры PIC и некоторых настроек программного обеспечения, чтобы мы могли перейти к следующему уроку. В конце проверьте Video для установки и настройки MPLABX, XC8, Proteus и быстрой распаковки программатора PICkit 3.

PIC Микроконтроллер Архитектура и приложения:

Микроконтроллер PIC был представлен Microchip Technologies в 1993 году. Первоначально эти PIC были разработаны как часть PDP (Программируемый процессор данных) Компьютеры и все периферийные устройства компьютера были связаны с использованием этого микроконтроллера PIC. Следовательно, PIC получил свое название как для контроллера периферийного интерфейса . Позже Microchip разработал множество микросхем серии PIC, которые можно использовать для любого небольшого применения, например, для освещения, вплоть до продвинутого.

Каждый микроконтроллер должен быть построен на некоторой архитектуре, наиболее известным типом архитектуры является архитектура Гарварда, наша PIC основана на этой архитектуре, поскольку она принадлежит к классическому семейству 8051. Давайте вкратце расскажем об архитектуре PIC в Гарварде.

Микроконтроллер PIC16F877A состоит из встроенного ЦП, портов ввода-вывода, организации памяти, аналого-цифрового преобразователя, таймеров / счетчиков, прерываний, последовательной связи, генератора и модуля CCP, которые собирают, делает ИС мощным микроконтроллером для начинающих. начать с.Общая блок-схема архитектуры PIC показана ниже

Harvard-architecture-of-PIC-microcontroller

CPU (центральный процессор):

Микроконтроллер имеет процессор для выполнения арифметических операций, логических решений и операций, связанных с памятью. Процессор должен координировать между ОЗУ и другими периферийными устройствами микроконтроллера.

Он состоит из АЛУ (Арифметическая логическая единица), с помощью которого он выполняет арифметические операции и логические решения.Также имеется MU (блок памяти) для хранения инструкций после их выполнения. Это MU определяет размер программы нашего MC. Он также состоит из CU (блок управления), который действует как коммуникационная шина между процессором и другими периферийными устройствами микроконтроллера. Это помогает при извлечении данных после их обработки в указанных регистрах.

Оперативная память (RAM):

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

  • Регистр общего назначения (GPR)
  • Регистр специальных функций (SFR)

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

Принимая во внимание, что SFR используется для выполнения сложных специальных функций , которые также включают некоторую 16-битную обработку, их регистры могут быть прочитаны только (R), и мы не можем ничего записать (W) в них. Таким образом, эти регистры имеют предопределенные функции для выполнения, которые устанавливаются во время производства, и они просто отображают нам результат, используя который мы можем выполнять некоторые связанные операции.

memory-management-in-PIC-microcontroller

Постоянная память (ПЗУ):

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

Электрически стираемое программируемое постоянное запоминающее устройство (ЭСППЗУ):

EEPROM - это другой тип блока памяти. В этом блоке памяти значения могут быть сохранены во время выполнения программы.Здесь хранятся только электрически стираемых значений, то есть эти значения будут сохранены в PIC, даже если IC выключена. Их можно использовать как небольшое пространство памяти для хранения выполненных значений; однако объем памяти будет поочередно меньше в килобайтах.

Флэш-память :

Флэш-память

также является программируемой постоянной памятью (PROM), в которой мы можем читать, записывать и стирать программу тысячи раз.Как правило, микроконтроллер PIC использует этот тип ПЗУ.

портов ввода / вывода

  • Наш PIC16F877A состоит из пяти портов, а именно порта A, порта B, порта C, порта D и порта E.
  • Из всех пяти PORTS только порт A является 16-битным, а PORT E - 3-битным. Остальные ПОРТЫ 8-битные.
  • Выводы на этих PORTS могут использоваться как вход или выход, в зависимости от конфигурации регистра TRIS.
  • Помимо выполнения операций ввода-вывода, контакты могут также использоваться для специальных функций, таких как SPI, прерывание, ШИМ и т. Д.

Автобус:

Термин «шина» - это просто набор проводов, которые соединяют устройство ввода или вывода с ЦП и ОЗУ.

Шина данных используется для передачи или приема данных.

Адресная шина используется для передачи адреса памяти от периферийных устройств к ЦПУ. Контакты ввода / вывода используются для взаимодействия с внешними периферийными устройствами; UART и USART оба последовательных протокола связи используются для сопряжения последовательных устройств, таких как GSM, GPS, Bluetooth, IR и т. Д.

Address-bus-and-data-bus-in-PIC-microcontroller

Выбор микроконтроллера PIC для наших обучающих программ:

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

от компании Microchip разделены на 4 больших семейства. Каждое семейство имеет множество компонентов, которые обеспечивают встроенные специальные функции:

  1. Первое семейство, PIC10 (10FXXX) - называется Low End.
  2. Второе семейство, PIC12 (PIC12FXXX) - называется Mid-Range.
  3. Третье семейство - PIC16 (16FXXX).
  4. Четвертое семейство - ПОС 17/18 (18FXXX)

Поскольку мы начинаем изучать PIC, давайте выберем IC, которая используется и доступна повсеместно.Эта микросхема принадлежит семейству 16F, номер детали микросхемы PIC16F877A. От первого урока до конца мы будем использовать ту же микросхему, что и , эта микросхема оснащена всеми расширенными функциями, такими как SPI, I2C, UART и т. Д. Но если вы не получите ничего из этого сейчас, это вполне нормально. , мы будем проходить через каждый учебник и, наконец, использовать все вышеупомянутые функции.

После того, как IC выбрана, очень важно прочитать спецификацию IC.Это должно стать первым шагом в любой концепции, которую мы собираемся попробовать. Теперь, так как мы выбрали этот PIC16F877A, давайте прочитаем спецификацию этой микросхемы в техническом описании.

Функция периферии, упоминает, что она имеет 3 таймера , два из которых 8-битные и один 16-битный прескалер. Эти таймеры используются для создания функций синхронизации в нашей программе. Их также можно использовать в качестве счетчиков. Это также показывает, что у него есть CCP (Capture Compare и PWM) , что помогает нам генерировать ШИМ-сигналы и считывать входящие частотные сигналы.Для связи с внешним устройством он имеет SPI, I2C, PSP и USART . В целях безопасности он оснащен с функцией автоматического отключения (BOR), , которая помогает сбросить программу в то время как.

Аналоговые функции, Указывает, что ИС имеет 10-битный 8-канальный АЦП . Это означает, что наша ИС может преобразовывать аналоговые значения в цифровые с разрешением 10 бит и имеет 8 аналоговых выводов для их считывания. У нас также есть два внутренних компаратора, которые можно использовать для непосредственного сравнения входного напряжения без фактического чтения их через программное обеспечение.

Специальные функции микроконтроллера, означает, что он имеет 100 000 циклов стирания / записи, означает, что вы можете программировать его около 100 000 раз. In-Circuit Serial Programming ™ (ICSP ™), помогает нам программировать IC напрямую, используя PICKIT3. Отладка может быть выполнена с помощью отладки в цепи (ICD ). Еще одной функцией безопасности является сторожевой таймер (WDT), , который является самонадежным таймером, который при необходимости сбрасывает всю программу.

На изображении ниже представлено выводов нашей платы PIC16F877A IC . Это изображение представляет каждый контакт с его именем и другими функциями. Это также можно найти в таблице данных. Держите этот образ под рукой, поскольку он поможет нам во время наших аппаратных работ.

pinouts-of-PIC16F877A-IC

Выбор программного обеспечения для наших учебных пособий:

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

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

Для программирования микроконтроллера PIC нам понадобится IDE (интегрированная среда разработки) , где происходит программирование. Компилятор , , где наша программа преобразуется в читаемую MCU форму, называемую HEX-файлами. IPE (интегрированная среда программирования) , которая используется для выгрузки нашего шестнадцатеричного файла в наши микроконтроллеры PIC.

IDE: MPLABX v3.35

IPE: MPLAB IPE v3.35

Компилятор: XC8

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

Для целей моделирования мы использовали программное обеспечение PROTEUS 8 , предоставленное Labcenter.Это программное обеспечение может использоваться для моделирования нашего кода, сгенерированного с использованием MPLABX. Существует бесплатное демонстрационное программное обеспечение, которое можно загрузить с их официальной страницы по ссылке.

Готовимся с оборудованием:

Все наши учебники будут заканчиваться аппаратным обеспечением. Чтобы изучить PIC наилучшим из возможных способов, всегда рекомендуется тестировать наши коды и схемы на оборудовании, потому что надежность симуляции очень мала. Коды, которые работают на программном обеспечении для моделирования, могут работать не так, как вы ожидали на вашем оборудовании.Следовательно, мы будем строить наши собственные схемы на платах Perf для вывода наших кодов.

Для выгрузки или загрузки нашего кода в PIC нам понадобится PICkit 3. Программист / отладчик PICkit 3 - это простой и недорогой внутрисхемный отладчик, который управляется компьютером, на котором работает MPLAB IDE (v8.20). или выше) программное обеспечение на платформе Windows. Программист / отладчик PICkit 3 является неотъемлемой частью набора инструментов разработчика. В дополнение к этому нам также понадобится другое оборудование, такое как плата Perf, паяльная станция, микросхемы PIC, кварцевые генераторы, конденсаторы и т. Д.Но мы добавим их в наш список по мере прохождения наших руководств.

Я привез свой PICkit 3 от Amazon, видео о том же распаковке можно найти в видео ниже. Ссылка для PICKIT3 также предоставляется; цена может быть немного высокой, но поверьте мне, стоит инвестировать.

PICkit-3-programmer-debugger

СЕЙЧАС СО ВСЕМ ГОТОВЫМ, ЧТО МЫ НАЧИНАЕМ РАБОТАТЬ С НАШЕГО СЛЕДУЮЩЕГО ОБУЧЕНИЯ

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

Введение, типы и применение микроконтроллеров

Что такое микроконтроллер?

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

  • 8 или 16-битный микропроцессор.
  • Небольшая мера оперативной памяти.
  • Программируемое ПЗУ и флэш-память.
  • Параллельный и последовательный ввод / вывод.
  • Таймеры и генераторы сигналов.
  • Аналого-цифровое и цифро-аналоговое преобразование

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


Как классифицируются микроконтроллеры?

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

Типы микроконтроллеров показаны на рисунке, они характеризуются своими битами, архитектурой памяти, памятью / устройствами и набором команд.Давайте кратко обсудим это.

Types of Microcontrollers Types of Microcontrollers Типы микроконтроллеров

Классификация по количеству битов

Биты в микроконтроллере представляют собой 8-битный, 16-битный и 32-битный микроконтроллер.

В 8-битном микроконтроллере , когда внутренняя шина является 8-битной, то ALU выполняет арифметические и логические операции. Примерами 8-битных микроконтроллеров являются семейства Intel 8031/8051, PIC1x и Motorola MC68HC11.

PCBWay PCBWay

Микроконтроллер 16-битный обладает большей точностью и производительностью по сравнению с 8-битными.Например, 8-битные микроконтроллеры могут использовать только 8 бит, что приводит к конечному диапазону 0 × 00 - 0xFF (0-255) для каждого цикла. Напротив, 16-битные микроконтроллеры с шириной данных 16 бит имеют диапазон 0 × 0000 - 0xFFFF (0-65535) для каждого цикла. Более долговременный таймер может оказаться полезным в определенных приложениях и схемах. Он может автоматически работать с двумя 16-битными числами. Некоторыми примерами 16-битного микроконтроллера являются 16-битные микроконтроллеры, расширенные семейства 8051XA, PIC2x, Intel 8096 и Motorola MC68HC12.

3236-разрядный микроконтроллер использует 32-разрядные инструкции для выполнения арифметических и логических операций. Они используются в устройствах с автоматическим управлением, включая имплантируемые медицинские устройства, системы управления двигателем, офисные машины, бытовые приборы и другие типы встроенных систем. Некоторые примеры - семейство Intel / Atmel 251, PIC3x.

Классификация по устройствам памяти

Запоминающие устройства делятся на два типа:

  • Микроконтроллер со встроенной памятью
  • Микроконтроллер внешней памяти

Микроконтроллер со встроенной памятью : Когда во встроенной системе имеется микроконтроллер с модулем памяти Все функциональные блоки, имеющиеся на чипе, называются встроенным микроконтроллером.Например, 8051, имеющий память для программ и данных, порты ввода / вывода, последовательную связь, счетчики и таймеры и прерывания на чипе, является встроенным микроконтроллером.

Микроконтроллер внешней памяти : Если во встроенной системе имеется микроконтроллер, в котором не все функциональные блоки, имеющиеся в микросхеме, называется микроконтроллером внешней памяти. Например, 8031 ​​не имеет программной памяти на чипе, является микроконтроллером внешней памяти.

Классификация в соответствии с набором инструкций

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

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

Пример для CISC и RISC:

CISC : Mov AX, 4 RISC : Mov AX, 0
Mov BX, 2 Mov BX, 4
ADD BX, AX Mov CX, 2
Начало ADD AX, BX
Loop Начало

Из приведенного выше примера системы RISC сокращают время выполнения за счет сокращения тактовых циклов на инструкцию, а системы CISC сокращают время выполнения за счет уменьшения количества команд на программу.RISC дает лучшее исполнение, чем CISC.

Классификация в соответствии с архитектурой памяти

Архитектура памяти микроконтроллера бывают двух типов, а именно:

  • Микроконтроллер архитектуры памяти Гарварда
  • Микроконтроллер архитектуры памяти Принстона

Микроконтроллер архитектуры Гарвардской памяти 900con: Точка, когда микроконтроллер имеет разное адресное пространство памяти для программ и памяти данных, микроконтроллер имеет гарвардскую архитектуру памяти в процессоре.

Princeton Memory Architecture Микроконтроллер : точка, когда микроконтроллер имеет общий адрес памяти для памяти программ и памяти данных, микроконтроллер имеет архитектуру памяти Princeton в процессоре.

5 Приложения микроконтроллеров

Микроконтроллер имеет много приложений электронного оборудования

  • Мобильные телефоны
  • Автомобили
  • Стиральные машины
  • Камеры
  • Сигналы безопасности

4 Типы микроконтроллеров

9374 (9) (

)

Все 9 Все 9 представляет собой 40-контактный микроконтроллер с Vcc 5 В, подключенным к контакту 40, и Vss на контакте 20, который остается 0 В.И есть входные и выходные порты от P1.0 до P1.7, которые имеют функцию открытого стока. Port3 имеет дополнительные функции. Контакт 36 имеет состояние открытого стока, а контакт 17 имеет встроенный транзистор внутри микроконтроллера. Когда мы применяем логику 1 в порту 1, тогда мы получаем логику 1 в порту 21 и наоборот. Программирование микроконтроллера крайне сложно. В основном мы пишем программу на C-языке, которая затем преобразуется в машинный язык, понятный микроконтроллеру. Контакт RESET подключен к контакту 9, связанному с конденсатором.Когда переключатель включен, конденсатор начинает заряжаться и RST имеет высокий уровень. Применение высокого значения к выводу сброса сбрасывает микроконтроллер. Если мы применим логический ноль к этому выводу, программа начнет выполнение с начала.

Память Архитектура 8051

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

Program Memory of 8051 Program Memory of 8051 Программная память 8051 и Data Memory of 8051 Data Memory of 8051 Память данных 8051

Пин Описание микроконтроллера 8051

Pin-40: Vcc является основным источником питания + 5 В постоянного тока.
Контакт 20: Vss - представляет заземление (0 В).
Pins 32-39: Известен как порт 0 (P0.0 до P0.7) для использования в качестве портов ввода / вывода.
Pin-31: Разрешение фиксации адреса (ALE) используется для демультиплексирования сигнала адрес-данные порта 0.
Pin-30: (EA) Вход внешнего доступа используется для включения или отключения интерфейса внешней памяти. Если нет необходимости во внешней памяти, этот вывод всегда держится на высоком уровне.
Вывод 29: Включение сохранения программ (PSEN) используется для считывания сигнала из внешней памяти программ.
Pins- 21-28: Известен как порт 2 (P 2.0 - P 2.7) - помимо того, что он служит в качестве порта ввода / вывода, сигналы шины адреса более высокого порядка мультиплексируются с этим квази двунаправленным портом.
Выводы 18 и 19: Используются для сопряжения внешнего кристалла для обеспечения системных часов.
Pins 10 - 17: Этот порт также выполняет некоторые другие функции, такие как прерывания, вход таймера, сигналы управления для взаимодействия с внешней памятью Read и Write. Это квази двунаправленный порт с внутренним подтягиванием.
Вывод 9: Это вывод RESET, используемый для установки микроконтроллера 8051 на его начальные значения, когда микроконтроллер работает или при начальном запуске приложения. Вывод RESET должен быть установлен на 2 рабочих цикла.
Pins 1 - 8: Этот порт не выполняет никаких других функций.Порт 1 - это квази-двунаправленный порт ввода-вывода.

Renesas Microcontroller

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

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

Renesas Renesas Renesas

Renesas предлагает самые универсальные семейства микроконтроллеров в мире, например, наше семейство RX предлагает много типов устройств с вариантами памяти от 32K флэш / 4K RAM до невероятной 8M флэш / 512K RAM.

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

Семейство микроконтроллеров RX использует 32-разрядную улучшенную архитектуру Harvard CISC для достижения очень высокой производительности.

Pin Описание:

Расположение контактов микроконтроллера Renesas показано на рисунке:

Renesas cir Renesas cir

Это 20-контактный микроконтроллер. Контакт 9 - это Vss, контакт заземления и Vdd, контакт источника питания. Он имеет три различных типа прерывания: нормальное, быстрое и высокоскоростное.

Обычные прерывания сохраняют значимые регистры в стеке, используя инструкции push и pop.Быстрые прерывания автоматически сохраняют счетчик программы и слово состояния процессора в специальных резервных регистрах, поэтому время отклика сокращается. А высокоскоростные прерывания выделяют до четырех основных регистров для выделенного использования прерыванием, чтобы еще больше увеличить скорость. Структура внутренней шины дает 5 внутренних шин, чтобы гарантировать, что обработка данных не замедляется. Извлечение инструкций происходит по широкой 64-битной шине, так что из-за инструкций переменной длины, используемых в архитектурах CISC.

Особенности и преимущества микроконтроллеров RX

  • Низкое энергопотребление реализовано с помощью многоядерной технологии
  • Поддержка работы 5 В для промышленных устройств и устройств
  • Масштабируемость от 48 до 145 контактов и от 32 КБ до 1 МБ флэш-памяти, с Флэш-память данных объемом 8 КБ включает
  • Интегрированная функция безопасности
  • Интегрированный многофункциональный набор функций из 7 UART, I2C, 8 SPI, компараторов, 12-разрядного АЦП, 10-разрядного ЦАП и 24-разрядного АЦП (RX21A), который уменьшит стоимость системы за счет интеграции большинства функций

Применение микроконтроллера Renesas:

  • Промышленная автоматизация
  • Приложения связи
  • Приложения управления двигателем
  • Тестирование и измерение
  • Медицинские приложения

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

Разработана микроконтроллер AVR Эгиль Боген и Вегард Воллан из корпорации Atmel.Микроконтроллеры AVR - это модифицированная гарвардская архитектура RISC с отдельной памятью для данных и программ, а скорость AVR высока по сравнению с 8051 и PIC. AVR - это A lf-Egil Bogen и V egard Wollan ISC-процессор R .

Разница между контроллерами 8051 и AVR:

  • 8051 - это 8-битные контроллеры на основе архитектуры CISC, AVR - 8-битные контроллеры на основе архитектуры RISC
  • 8051 потребляет больше энергии, чем микроконтроллер AVR
  • В 8051 мы можем программировать Легче, чем микроконтроллер AVR
  • Скорость AVR больше, чем у микроконтроллера 8051

Классификация контроллеров AVR:

Микроконтроллеры AVR подразделяются на три типа:

  • TinyAVR - меньше памяти, малый размер, подходит только для более простых приложения
  • MegaAVR - это самые популярные из них, имеющие хороший объем памяти (до 256 КБ), большее количество встроенных периферийных устройств и подходящие для приложений среднего и сложного уровня
  • XmegaAVR - коммерчески используются для сложных приложений, требующих большой памяти программ и высокая скорость

Особенности микроконтроллера AVR:

  • 16KB In-Sys Программируемая флэш-память
  • 512B встроенного в систему программируемого EEPROM
  • 16-разрядный таймер с дополнительными функциями
  • Множество внутренних генераторов
  • Внутренняя, самопрограммируемая флэш-память инструкций до 256K
  • Внутрисистемная программируемая с использованием ISP, JTAG или методы высокого напряжения
  • Дополнительная секция кода загрузки с независимыми битами блокировки для защиты
  • Синхронные / асинхронные последовательные периферийные устройства (UART / USART)
  • Последовательная периферийная интерфейсная шина (SPI)
  • Универсальный последовательный интерфейс (USI) для двух / трехпроводных синхронная передача данных
  • Сторожевой таймер (WDT)
  • Множество энергосберегающих спящих режимов
  • 10-разрядные аналого-цифровые преобразователи с мультиплексированием до 16 каналов
  • Поддержка контроллера CAN и USB
  • Низковольтные устройства работают с перебоями до 1.8v

Существует много микроконтроллеров семейства AVR, таких как ATmega8, ATmega16 и так далее. В этой статье мы поговорим о микроконтроллере ATmega328. ATmega328 и ATmega8 являются совместимыми по выводам интегральными схемами, но функционально они различны. ATmega328 имеет флэш-память 32 КБ, где ATmega8 имеет 8 КБ. Другими отличиями являются дополнительные SRAM и EEPROM, добавление прерываний смены контактов и таймеров. Некоторые из характеристик ATmega328:

Особенности ATmega328:

  • 28-контактный микроконтроллер AVR
  • Флэш-память программ объемом 32 КБ
  • ЭСППЗУ объемом 1 КБ
  • Память данных SRAM 2 Кбайт /
  • 000 ОЗУ 23
  • Два 8-разрядных таймера
  • Аналого-цифровой преобразователь
  • Шестиканальный ШИМ
  • Встроенный внешний генератор USART
  • : до 20 МГц

-контактный Описание ATmega328 :

Имеется 28-контактный DIP , показано на рисунке ниже:

AVR AVR AVR

Vcc: Цифровое напряжение питания.

GND: Земля.

Порт B: Порт B - это 8-битный двунаправленный порт ввода-вывода. Выводы порта B устанавливаются трижды, когда условие сброса становится активным или единичным, даже если часы не работают.

Порт C: Порт C - это 7-битный двунаправленный порт ввода-вывода с внутренними подтягивающими резисторами.

PC6 / RESET

Порт D: Это 8-битный двунаправленный порт ввода-вывода с внутренними подтягивающими резисторами. Выходные буферы порта D состоят из симметричных характеристик привода.

AVcc: AVcc - это вывод напряжения питания для АЦП.

AREF: AREF - аналоговый эталонный вывод для АЦП.

Типичная схема микроконтроллера AVR:

AVR cir AVR cir

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

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

PIC Микроконтроллер

PIC - контроллер периферийных интерфейсов, разработанный компанией General Instrument Microelectronics в 1993 году.Управляется программным обеспечением. Они могут быть запрограммированы для выполнения многих задач и управления линией генерации и многим другим. Микроконтроллеры PIC находят свое применение в новых приложениях, таких как смартфоны, аудиоаппаратура, периферия для видеоигр и современные медицинские устройства.

Существует много PIC, начатых с PIC16F84 и PIC16C84. Но это были единственные доступные флеш-карты. Microchip недавно представила флэш-чипы с типами, которые гораздо более привлекательны, такие как 16F628, 16F877 и 18F452.16F877 примерно в два раза дороже старого 16F84, но имеет восьмикратный размер кода, намного больше оперативной памяти, намного больше выводов ввода / вывода, UART, аналого-цифровой преобразователь и многое другое.

PIC PIC

Особенности PIC16F877

Основные характеристики:

  • Высокопроизводительный ЦП RISC
  • До 8K x 14 слов памяти программ FLASH
  • 35 инструкций (кодирование 14-битной фиксированной длины)
  • Память на основе статической ОЗУ 368 × 8
  • Память данных ЭСППЗУ до 256 х 8
  • Возможность прерывания (до 14 источников)
  • Три режима адресации (прямой, косвенный, относительный)
  • Сброс при включении питания ( POR)
  • Память гарвардской архитектуры
  • Энергосберегающий режим SLEEP
  • Широкий диапазон рабочих напряжений: 2.От 0 В до 5,5 В
  • Высокий ток потребления / источника: 25 мА
  • Аппарат с аккумулятором

Характеристики периферийных устройств:

  • 3 Таймер / счетчики (программируемые предварительные скаляры)

- Таймер 0, Таймер 2 - 8-битный таймер / счетчик с 8-разрядным предскалярным

- Таймер 1 16-разрядный, может увеличиваться во время сна через внешний кристалл / часы

  • Два модуля захвата, сравнения, ШИМ-модулей

- Функция захвата входа записывает счетчик Таймера1 на контактный переход

- Выход функции ШИМ представляет собой прямоугольную волну с программируемым периодом и рабочим циклом.

  • 10-битный 8-канальный аналого-цифровой преобразователь
  • USART с 9-битным обнаружением адресов
  • Синхронный последовательный порт с главным режимом и ведущим / подчиненным I2C
  • 8-битный параллельный порт подчиненного устройства

Аналоговые особенности:

  • 10-разрядный, до 8-канальный аналого-цифровой преобразователь (A / D)
  • Сброс с отключением (BOR)
  • Модуль аналогового компаратора
  • (программируемое входное мультиплексирование с входов устройства и выходов компаратора доступно извне )

Pin Описание PIC16F877A:

PIC micro PIC micro

PIC microcon PIC microcon

PIC microcontro PIC microcontro

Преимущества PIC:

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

A Типичная схема применения PIC16F877A:

905 36 PIC microcontroller

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

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

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