Универсальный внешний накопитель для всех 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 контроллеров

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

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

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


После запуска схемы “первый проект на микроконтроллере” – мигания светодиодом начался судорожный поиск дельной информации. И совершенно случайно, рыская по сети в поисках информации по очередной схеме из журнала “Радио” (частотомер Денисова) вышел на сайт Евгения Корабельникова.

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

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

Если Вам нужен быстрый старт и программирование на ассемблере для PIC контроллеров, то рекомендую сайт Евгения Александровича.



Самоучитель по программированию PIC контроллеров для начинающих 

(руководство по конструированию устройств на микроконтроллерах)

Автор: Корабельников Евгений Александрович         г. Липецк




Общие замечания по стратегии “въезда”.

“Самоучитель…” составлен таким образом, что, в случаях наличия каких-то неясностей, возникающих после прочтения предыдущих разделов, в последующих разделах, они постепенно проясняются за счет дополнительной информации. На первичной стадии “въезда”, главное – понять смысл, а все остальное к нему, со временем, приложится.

Содержание


Введение
1.   Готовим инструменты. Изготовление программатора и работа с ним.
2.   Что такое микроконтроллер, и как он работает.
3.   Система команд PIC16F84A.
4.   Что такое программа и правила ее составления. Пример создания программы автоколебательного мультивибратора. Директивы. Принципиальная схема мультивибратора
5.   Интегрированная среда проектирования MPLAB IDE и работа в ней.
6.   Что дальше?
7.   Пример создания программы (начало).
8.   Пример создания программы (продолжение).
9.   Работа в симуляторе. Отладка программы.
10. Как отследить выполнение программы
11. Прерывания. Стек. Пример разработки программы с уходом в прерывания.
12. Организация вычисляемого перехода. Работа с EEPROM памятью данных.
13. Флаги. Работа с флагами. Как работает цифровой компаратор. Перенос и заем.
14. Пример задействования флага С в трехбайтном суммирующем устройстве. Циклический сдвиг. Операция умножения.
15. Введение в принцип построения подпрограммы динамической индикации. Косвенная адресация.
16. Преобразование двоичных чисел в двоично-десятичные. Окончательное формирование текста подпрограммы динамической индикации.
17. Принцип счета. Работа с таймером TMR0. Принцип установки групп команд счета в текст программы.
Заключение

Скачать самоучитель
287 страниц в формате PDF
размер файла 3,21 Мб

Скачать приложения
Приложения к самоучителю с сайта автора
формат PDF
размер файла 2,5 Мб


Скачать MPLAB версии 5.70.40
файл на файлообменнике
размер архива 25 Мб

Средства программирования 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 мкА (тип) в режиме SLEEP@2,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-контроллерах >

Начинающим программистам микроконтроллеров PIC

Автор: Владимир Д.
[email protected]

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

Предлагаемые программы вполне можно применять в виде готовых макросов (законченных подпрограмм).Они не привязаны к конкретному контроллеру, поэтому при применении следует учитывать данные из datasheet -ов.

Примем тактовую частоту – Fтакт. = 4,096 МГц (стандартный кварц). Тогда время цикла составит t c = 1 / Fтакт. * 4 = 0,97656 мкс



INI_TMR				; инициализация  режима прерываний от  RTCC
		bsf STATUS,RP0	; выбираем  банк 1
		movlw b"00000100"
		movwf OPTION		; предделитель  для  RTCC   1 :  32
		bcf STATUS,RP0	;  банк 0
		movlw b"10100000"
		movwf INTCON		;  разрешено прерывание от RTCC
		movlw .96		;  загружаем  в  RTCC  предварительное число 96
		movwf TMR0

Получим время прерываний:
t i = t c * 32 * (256 – 96 = 160)
t i = 0,97656 * 32 * 160 = 5 000 мкс = 5 мс

Теперь, если в Вашу любую программу ввести бесконечный цикл (так называемый цикл ожи- дания прерывания), и окончание программы переводить на этот цикл, получим временную привязку к 5 мс. И после прерывания программа вернётся по адресу, указанном вектором прерываний (чаще это 04h).Для чего это можно использовать – смотри дальше.

Итак:



;
		org   0
		START		; начало выполнения программы после
;					включения питания
		org   04h		; а это адрес вектора прерывания, по которому
		main		; будет выполняться  основная  программа
;
START				; здесь обычно происходит обязательная  ини-
		INI_TMR		; циализация  портов, режимов, регистров и т.п.
		INI_PORTS
loop
		goto loop		; а это и есть  бесконечный цикл
;--------------------------------------------------

main
;               далее  идёт  тело  основной программы,
;		в которой обязательно надо создать программу обслуживания  прерываний от RTCC,
;            вызываемой   командой  CALL:

ServTMR
		btfsc INTCON,RTIF	;  проверяем  флаг срабатывания прерываний от RTCC  и
		call SET_TMR		;  если "да",то снова инициализируем  TMR0
		return		;  если "нет" -  возврат  в  место вызова  ServTMR в
					;  основной  программе main
;
SET_TMR		movlw . 96
		movwf TMR0		; снова загружаем число 96
		bcf INTCON,RTIF		; сбрасываем флаг срабатывания
		retfie		; возврат  с разрешением прерываний  в ServTMR, а
					; затем в основную программу  main

Пример использования прерывания от RTCC для получения секундного импульса на одном из выходов , скажем, порта В – RB0 : Используем регистр Rsec, который должен быть ранее объявлен в в адресном поле рабочих регистров.



FORM_1S				; в каждом цикле,   а он  по прерыванию RTCC  длится
		incf Rsec,w		; 5 Мс,  увеличиваем регистр Rsec на 1 до  числа 200
		xorlw .200		; (5 мс * 200 = 1 сек)
		btfsc STATUS,z
		goto OUT_PORT		; при Rsec = 200  флаг  z = "1" и  переход на управление
					; выводом RB0 порта В
		return		; возврат в основную программу  main
;
OUT_PORT		btfss PORTB,0			; проверяем состояние вывода RB0
		goto OUT_ON		; если RB0 ="0", то  устанавливаем  в "1"
		bcf PORTB,0		; в противном случае - устанавливаем в "0"
		goto main		; возврат в основную программу
;
OUT_ON		bsf PORTB,0		; устанавливаем RB0 = "1"
		goto main

Таким образом на выходе RB0 порта В каждую секунду уровень сигнала будет изменяться то “0” то “1”.

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

Рассмотрим примеры преобразований двоичного кода b2 в двоично – десятичный BCD и наоборот.

В 8 – bit регистре можно записать в двоичном коде число от 0 до 255 ( от b”00000000″ до b”11111111″ ). Преобразуем двоичное число в три разряда двоично – десятичного кода - “сотни”, “десятки” и “единицы”. Для этого будем использовать следующие регистры, которые должны быть заранее объявлены в адресном поле рабочих регистров :

Rbin – регистр хранения числа в двоичном коде b2
Rhan – регистр “сотни” кода BCD
Rdec – регистр “десятки” кода BCD
Rsim – регистр “единицы” кода BCD

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



CON_100		movlw .100		; вычитаем  100  из  Rbin  c  проверкой, что
		subwf Rbin,w		; результат  не  отрицательный. Флаг  "c" = 1 при
		btfss STATUS,c		; результате > или =  0, и  "c" = 0  при   


Обратное преобразование BCD - кода в b2. Используем те же регистры Rhan, Rdec, Rsim где находится число в BCD - коде, регистры RbinH - старший разряд и RbinL - младший разряд для чисел ( > 255) в коде b2 и вспомогательные регистры RM1 - "множимое" , RM2- "множитель".Для преобразования BCD в b2 нужно умножить "сотни" на 100, "десятки" на 10 и сложить всё вместе с "единицами" и с учётом переноса в старший разряд при необ- ходимости.Для умножения используем операцию сложения.



B2X_100		movlw .99		; преобразование  "сотен"
		movwf RM2		; множитель  =  кол - во сложений (100) минус  один
		movf Rhan,w
		movwf RM1		; множимое  =  "сотни"
loopX100	addwf RM1,w
 		btfsc STASTUS,c		; проверяем  перенос в  старший  разряд
		incf RbinH,f		; если есть перенос
		decfsz RM2,f		; контролируем  количество  сложений
		goto loopX100
		movwf RbinL		; результат  сложения  заносим  в  регистр  мл.  разряда
;
B2X_10		movlw .9		; преобразование  "десятков"
		movwf RM2		; множитель  =  кол - во  сложений (10) минус один
		movf Rdec,w
		movwf RM1		; множимое = "десятки"
loopX10		addwf RM1,w		; здесь перенос можно не проверять, т.к. результат
		decfsz RM2,f		; всегда  


Конец преобразованиям и дальнейшее выполнение программы. В регистрах RbinL и RbinH получили 16 - bit число в коде b2.

Для выполнения арифметической операции деления по аналогии с умножением, рассмот- ренном выше, применяется операция вычитания. Допустим нам нужно произвести деление числа, находящегося в регистрах RHsum (старшие разряды) и RLsum (младшие разряды) - на делитель ( примем делитель не > 255) находящийся в регистре Rdel.

Результат будем заносить в регистры RHrez и RLrez (старшие и младшие разряды соот- ветственно) :


OP_DEL
		movf Rdel,w
		subwf Rlsum,w
		btfss STATUS,c		; проверяем  не отрицательный  ли  результат?
		goto DEF_carry		; если  "да", то  проводим  заём  из  ст.  разряда
		incf RLrez,f		; подсчитываем  кол-во  вычитаний  с  учётом
		btfsc STATUS,c		; возможного  переноса  в  старший  разряд
		incf RHrez,f
		movwf RLsum		; восстанавливаем  остаток, что бы  не  потерять
		goto OP_DEL		; при  отрицательном  результате вычитания
;
DEF_carry
		movlw 0h
		xorwf RHsum,w		; всё  ли  заняли из старшего разряда  в младший?
		btfsc STATUS,z		; если  "да", т.е.  RHdel  =  0  и  в  OP_DEL  отри-
		goto OUT_ DEL		; цат. результат - конец  делению  и  выход
		decf RHsum,f		; если  "нет" - заём  из  старшего  разряда  и  про-
		incf RLrez,f		; должаем  дальше
		btfsc STATUS,c		; проверка  необходимости  переноса  в  ст.разряд
		incf RHrez,f
		goto OP_DEL

Как вам эта статья?

Заработало ли это устройство у вас?

pic | ProgBook – книги и учебники по программированию

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

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

Книга «»Умный дом» своими руками» предназначена для радиолюбителей, однако она может быть полезна всем тем, кто интересуется электроникой. Здесь описывается проектирование системы «Умный дом» на основе микроконтроллера PIC16F628A в программном продукте MPLAB. Модули и элементы системы отлаживаются на единой макетной плате. Отметим, что для всех экспериментов, которые описаны в книге, можно применять единую микросхему контроллера. Программатор, который работает с программой PonnyProg2000, без проблем собирается, а также не содержит каких-либо дефицитных элементов. Управляющая программа системы может быть создана на Visual Basic либо на любом другом языке. Компьютер в лаборатории каждого радиолюбителя постепенно превращается, по сути, в саму лабораторию. Необходимо сказать, что в заключительной части Вы найдете справочные материалы по основные командам микроконтроллера PIC16F628A, схемам датчика движения, а также программатора, предназначенные для программирования Р1С-контроллеров.

На данный момент микроконтроллеры применяются повсеместно в машинах, бытовой технике, промышленном оборудовании и т.п. Учебник «Применение микроконтроллеров PIC18. Архитектура, программирование и построение интерфейсов с применением С и ассемблера» дает полное представление об архитектуре, построении интерфейсов и программировании этого современного чуда техники. На примере микроконтроллеров PIC18 производства компании Microchip в данной книге объясняется архитектура, а также программирование и построение интерфейсов. Отметим, что семейство PIC18 выбрано вовсе не случайно, так как оно относится к современным восьмиразрядным микроконтроллерам. Необходимо сказать, что материал, который изложен в этой книге, подходит и к ранним версиям микроконтроллеров производства вышеуказанной компании, а также к аналогичным устройствам прочих изготовителей. Книга рассчитана на опытных практиков, а также радиолюбителей, которые интересуются микроконтроллерами.

Обладая полезными примерами и иллюстрациями, книга «Разработка встроенных систем с помощью микроконтроллеров PIC. Принципы и практические примеры» будет вашим помощником в освоении проектирования систем при использовании микроконтроллеров PIC и программирование этих устройств на ассемблере и С. Микроконтроллеры 18F242, 16F84A и 16F873A рассмотрены особенно подробно. В книге представлены примеры образцы реальных проектов, среди них — модель робота, который представляет собой транспортное средство с автономным управлением. Также в книге дополнительно разбираются такие сложные вопросы, как построение операционных систем реального времени и использование устройств в сетевой среде.

Издание «Программирование PIC-микроконтроллеров на PicBasic» (автор Чак Хелибайк) является практическим руководством по программированию микроконтроллеров семейства PIC на языке PicBasic. В книге описаны ключевые отличия стандартного компилятора PicBasic от компилятора PicBasic Pro, комплекс команд, параметры и архитектура наиболее часто применяемых PIC-микроконтроллеров, организация взаимосвязи между микроконтроллерами, обработка прерываний и исключительных ситуаций. Приведено большое количество примеров программ, реализующих разнообразные возможности PIC-микрокотроллеров с применением языка PicBasic. Исходные тексты приведенных в тексте книги примеров записаны на диск. Особое внимание уделено актуальной в последнее время теме — робототехнике — под нее выделена отдельная глава. Данное издание будет интересно инженерам, разработчикам-новичкам, студентам радиотехнических специальностей и всем, кого интересует программирование и электроника.

На прилагаемом к книге диске записаны программы:
— Вольтметр;
— Обращение к PORTA;
— Сервомотор;
— 7-сегм. индикатор;
— Бегущий огонь;
— ЖКИ;
— Робот с интеллектом;
— Мелодия
— Последовательный порт и прочее.

Книга Сида Катцена «PIC-микроконтроллеры. Все, что вам необходимо знать» — полное руководство по микроконтроллерам семейства PIC компании Microchip, которое является стандартом для встраиваемых цифровых устройств. В книге детально описана архитектура и система команд восьмибитных микроконтроллеров PIC, работа периферийных модулей продемонстрирована на конкретных примерах. Первая часть содержит основы схемотехники, архитектуры вычислительных систем и математической логики. Во второй части рассмотрены разные аспекты программирования PIC-микроконтроллеров среднего уровня: дается описание набора команда, процесса создания программ на ассемблере и Си (языке высокого уровня), рассмотрены поддержка подпрограмм и прерываний. Третья часть посвящена аппаратным аспектам взаимодействия микроконтроллера и окружающего мира и обработке прерываний. Здесь затронуты такие вопросы, как обработка аналоговых сигналов, последовательный и параллельный ввод/вывод данных, использование EEPROM и временные соотношения. В заключительной части дан пример по разработке реальных устройств. Издание адресуется самому широкому кругу читателей, как любителям, так и инженерам: для понимания изложенного в ней материала не обязательно иметь знания по программированию, электронике и цифровой схемотехнике. Кроме того, студенты, обучающиеся по специальности «Радиоэлектроника» и «Вычислительная техника», могут пользоваться этой книгой как учебным пособием при написании курсовых работ или изучении соответствующих курсов.

Книга Ю. А. Шпака «Программирование на языке C для AVR и PIC микроконтроллеров» содержит в себе рассмотрение программирования на языке С микроконтроллеров AVR с применением компилятора WinAVR и микроконтроллеров PIC, созданных с помощью компилятора CCS-PICC. Также здесь описываются средства программной разработки в среде WinAVR и CCS-PICC, в частности, работа программ при помощи AVR Studio и MPLAB, приводится рассмотрение синтаксиса языка С и директивы препроцессора, в том числе и особенностей программирования микроконтроллеров на данном языке. В книге имеются программные примеры на С и справочник, в котором описана система ассемблерных команд микроконтроллеров AVR и PIC.

Обзор PIC-контроллеров

Обзор PIC-контроллеров

 

 

 

 

Обзор PIC-контроллеров

 

Давным-давно, в 1965, компания General Instruments (GI) основала Отделение Микроэлектроники (Microelectronics Division), начавшей с разработки первых жизнеспособных EPROM и EEPROM. Затем GI Microelectronics Division занималось разработкой широкой гаммы цифровых и аналоговых устройств – семейства AY3-xxxx AY5-xxxx. (Да-да, это именно то, о чем Вы подумали! Именно звуковые процессоры от GI – AY3-8910 и AY3-8912 стояли практически во всех Синклерах, Ямахах, всех MSX-компьютерах в 70/80-е годы)

В области микропроцессоров GI в начале 70-х появился CP1600. Это был настоящий 16-разрядный процессор, но с не очень хорошей работой с внешними устройствами. Поэтому, для тех применений, где нужен хороший ввод-вывод GI разработала Peripheral Interface Controller (сокращенно PIC), в середине 1975г. Он был сконструирован для очень быстрого (в понятиях 75-го года!) ввода-вывода и небольшого объема вычислений, поэтому его система команд была весьма небольшой. В общем, Вы можете увидеть, что из этого вышло – архитектура нижнего ряда сегодняшних чипов PIC16C5x – это архитектура, разработанная в 1975 году. Представленный в 1975г PIC-контроллер производился по NMOS технологии и был доступен только в масочном варианте, но это была поистине великолепная микросхема! В начале 80-х GI переживала трудные дни в своем основном бизнесе, и произвела реструктуризацию, сконцентрировавшись на разработке силовых полупроводников (в настоящее время компания General Instruments весьма успешно работает на этом рынке под названием General Semiconductors). GI Microelectronics Division было переименовано в GI Microelectronics Inc и существовало одно время как отдельный филиал, а затем было продано вместе с заводом в г. Чандлер, Аризона (Chandler, Arizona).

Это была длительная работа представителей рискового капитала, они избавились от производства большинства микросхем линеек AY3, AY5 и других, и сконцентрировались на разработках и производстве PIC и различных видов EPROM/EEPROM с параллельным и последовательным доступом. В итоге все это было названо компания Arizona Microchip Technology Inc., или просто Microchip, которая была четко спозиционирована на рынок встраиваемых систем управления (Embedded Control).

Сейчас Microchip одна из лидирующих компаний в своей области. Так если в 1990 году по объему продаж он был на 20-м месте,  в 1993-м на 8-м, то в 1997 году, несмотря на сильнейшую конкуренцию со стороны Атмела (ее новые микроконтроллеры типа AVR), Микрочип выходит на 2-е место, пропустив впереди себя только Моторолу (Атмел пока далеко позади):

 

 

1993

1994

1995

1996

1997

1

Motorola

Motorola

Motorola

Motorola

Motorola

2

Mitsubishi

Mitsubishi

Mitsubishi

Mitsubishi

Microchip

3

NEC

NEC

NEC

ST

NEC

4

Hitachi

Philips

Philips

NEC

Mitsubishi

5

Philips

Intel

Microchip

Microchip

Philips

6

Intel

Microchip

ST

Philips

Toshiba

7

ST

Zilog

Intel

Zilog

Hitachi

8

Microchip

ST

Hitachi

Hitachi

Fujitsu

9

Matsushita

Matsushita

Toshiba

Fujitsu

ST

 

Чем же так хороши, и чем же так привлекли внимание разработчиков микроконтроллеры типа PIC? Напомним, что аббревиатура PIC означает Peripheral Interface Controller. Очень часто возникает необходимость в небольшом дешевом микропроцессоре, с несложными математическими вычислениями, способном осуществлять ввод-вывод сигналов с большой скоростью, обладающий низким потреблением и развитой периферией. Это  питающееся от телефонной линии оборудование (АОНы, микро-АТС), портативные приборы с батарейным питанием, автомобильные сигнализации, АЦП, подключаемые к последовательному порту компьютера и от него же и питающиеся, медицинские приборы и т.д. PIC-контроллеры выпускаются как в больших, так и малых корпусах и имеют небольшую стоимость. Как вам понравится настоящий (!) микропроцессор (12Сххх) в 8-ногом ДИП корпусе, со встроенным тактовым генератором, цепочкой сброса и 6-ю ножками ввода вывода? Или PIC16C505 контролер в 14-выводном корпусе со встроенным генератором всего за 49 центов!? (В США).

Большинство полезных качеств PIC-контроллеров сосредоточено в 3-х словах: CMOS, RISC, Harvard. Современная CMOS технология позволяет выпускать микроконтроллеры, работающие на частотах от 0 Гц до 40 Мгц. Потребляемый ток, который зависит от частоты, составляет единицы мА для частот 1-10 Мгц, и десяток мкА для более низких частот, а перевод в спящий режим (SLEEP) доводит потребление до единиц мкА. При этом благодаря RISC системе команд и Гарвардской архитектуре быстродействие даже на низких частотах остается достаточно большим – требуется всего 4 такта на одну команду (8 для команд переходов). Сравните с широко распространенным семейством 51-х однокристалок, у которых машинный цикл составляет 12 тактов, а команды могут иметь и не один цикл. (Компания Atmel в своем новом семействе AVR-контроллеров, которые тоже RISC, довела машинный цикл до 1 такта). RISC архитектура предполагает, что все команды имеют одну длину, в то время как при традиционной архитектуре команды имеют переменную длину. Это приводит не только к хорошему быстродействию, но и к экономии программной памяти. Три семейства PIC контроллеров имеют 12, 14 и 16 разрядные команды, и соответственно 33, 35 и 58 инструкций. Традиционные микропроцессоры (CISC) имеют существенно большее число команд, их которых чаще всего используется меньше половины, а некоторые вообще редко используются. В RISC-процессорах реализованы наиболее часто необходимые команды, а более сложные реализуются их комбинациями. Учитывая статистическое распределение частоты применения различных команд, программа в кодах RISC процессора получается меньше по объему и быстрее работает.

Я не удержусь, и приведу некоторые сравнительные данные, без которых, по-моему, не обходится ни одна обзорная статья о PIC-контроллерах. Это тест, проведенный фирмой Микрочип довольно давно. Сравнивались участки функционально одинаковых программ для разных контроллеров – упакованное BCD-преобразование, проверка бита и ветвление, цикл по счетчику, побитное выталкивание бита (преобразование параллельного кода в последовательный), программная выдержка времени. Сравнивался PIC16C5x @ 20MHz и:

Motorola MC68HC04 @ 11mhz,

Motorola MC68HC05 @ 4.2MHz,

Intel 8048 @ 11mhz,

Zilog Z86Cxx  @ 12MHz,

National COP800 @20mhz.

Результаты сравнительного анализа однокристальных микро ЭВМ и PIC контроллера приведены ниже.

 

PIC16Cx

COP800

MC86HC04

MC68HC05

Z86Cxx

8048

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

 

1. 00

1.29

1.82

2.24

1.51

1.58

Скорость выполнения

1.00

0.11

0.02

0.14

0.21

0.11

 

Можно конечно оспаривать результаты этих тестов (что неоднократно происходит в ru.embedded и su.hardw.*), тем более что в нем не представлены более новые микроконтроллеры, тем не менее, автор неоднократно убеждался, что в небольшой памяти PIC-кконтроллеров можно разместить достаточно много, гораздо больше, чем в соответствующей памяти для 8051 или Z80, к тому же при хорошем знании команд программы весьма хорошо оптимизируются.

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

Начнем с тактового генератора. В большинстве контроллеров применен универсальный генератор, режим которого программируется на работы с тремя типами внешних кварцев (высокочастотный, среднечастотный и низкочастотный) или с внешней RC-цепочкой, для тех применений, где стабильность тактовой частоты не критична. Некоторые типы контроллеров имеют режим встроенного генератора, имеется в виду, что внешних цепей не требуется вовсе, а также не тратятся драгоценные выводы корпуса. Кроме тактового, во всех контроллерах имеется внутренний RC-генератор, использующийся для работы “Сторожевого Пса” (Watch Dog), или просто “собаки”. Этот генератор, если он включен при программировании, тактирует специальный счетчик, который должен периодически сбрасываться программой через определенные промежутки времени, не большие заданного. Если в результате зависания или некорректности работы программы (по-простому – глюков) счетчик не будет вовремя сброшен, произойдет перезапуск контроллера. Особым случаем применения “собаки” является дежурный режим. Контроллер может находиться в состоянии спячки (SLEEP) с крайне низким потреблением, при этом с периодом срабатывания “собаки” выходить из спячки, просматривать входные сигналы и, если ничего не произошло – спать дальше. Если же произошли определенные изменения состояния входов – перейти к программе обработки, выполнив которую можно снова заснуть. Конечно, если для обработки ненужно высокое быстродействие, то можно просто использовать низкую тактовую частоту. Но когда нужно микро потребление энергии в среднем, и большое быстродействие на некоторое время – лучший выход это именно использование спящего режима с периодическим пробуждением без или совместно с прерыванием по изменению (см. ниже). Сигнал “сброс” (MCLR) может формироваться внешними или внутренними цепями,  что упрощает и удешевляет схемотехнику.

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

Связь с внешним миром осуществляется при помощи портов ввода-вывода, которые в PIC-контроллерах имеют свои особенности. К примеру – в 51-х контроллерах используются выходы с открытым стоком, для использования которых на ввод нужно записать “1”. Это иногда дает некоторое упрощение, но не позволяет получить Z-состояние выходи и большое входное сопротивление входа. В PIC-контроллерах каждому порту соответствует два регистра – данных и направления (TRIS). При этом в зависимости от содержания регистра направления каждый вывод может быть индивидуально запрограммирован или на ввод или на вывод. На всякий случай, во многих контроллерах имеется один вывод с открытым стоком, который требует подключения нагрузки при работе на выход. Все входы контроллеров защищены от перенапряжения диодами на 0 и VCC и имеют высокую нагрузочную способность (20-25 мА). Некоторые порты имеют индивидуально подключаемые к входам источники тока, играющие роль pull-up резисторов. Отдельные входы могут быть запрограммированы так, что вызывают прерывание при изменении своего состояния (доступно также в спящем режиме!).

Для работы с аналоговыми сигналами определенные типы контроллеров имеют встроенные АЦП или компараторы. Существуют контроллеры, со встроенным управлением ЖКИ-индикаторами, выходами ШИМ, разнообразными последовательными интерфейсами (синхронный, асинхронный, I2C, SPI),  имеющие встроенную энергонезависимую память данных, для запоминания разных констант, настроек и т.п. Для работы вместе с более мощными микропроцессорными системами, некоторые контроллеры имеют  PSP (Parallel Slave Port).

Структурно, PIC-контроллеры состоят из памяти программ, памяти данных (регистры), АЛУ, портов ввода-вывода и периферийных устройств.

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

Большинство PIC-контроллеров выполнено в  ОТР-исполнении, т.е. однократно программируемый кристалл. Для отладки используется специальный отладочный вариант с окошком для стирания ультрафиолетом. (На самом деле сам кристалл и там и там один и тот же, поэтому в принципе, если в ОТР добраться до самого кристалла, то его можно стереть. Правда нужно еще сделать подложку для стекания зарядов, да и добраться трудновато 🙂

Для начинающих лучше всего подойдет контроллер 16F84, имеющий электрически стираемую память программ или Flash. (Строго говоря там не флеш а ЕЕПРОМ, но сейчас любые виды энергонезависимой памяти принято называть флеш).  Если же Вы собираетесь работать с ОТР, то ни в коем случае не устанавливайте биты защиты (секретности) в новых отладочных кристаллах с ультрафиолетовым стиранием (с буквами А или В) Вы их потом не сотрете и использовать кристалл для другой прошивки не удастся! Иногда помогает выдержка под лампой с течении 6-ти и более часов, но вероятность этого невелика, поэтому не рискуйте отладочными JW кристаллами, которые в несколько раз дороже боевых ОТР.

Запись программы в кристалл может осуществляется двумя методами – параллельным и последовательным. Старое семейство (16С5хх) и первые микросхемы серии 17Сххх имели только параллельный режим записи, все остальные кроме параллельного, имеют последовательный режим, который позволяет использовать более простые программаторы и осуществлять запись программы в установленную в плате микросхему (ISP – внутрисхемное программирование).

Номенклатура контроллеров с электрически перезаписываемой памятью программ постепенно увеличивается, хотя в этом направлении Микрочип почему-то сильно отстает от своего основного конкурента – Атмел, выпускающего давно семейство MCS-51 с флеш-памятью и приступившего к выпуску новой серии AVR-контроллеров, которые кроме флеша обладают многими другими преимуществами. Это тем более странно, что компания Микрочип выпускает широкую гамму просто микросхем ЕЕПРОМ, являясь одним из лидеров в этой области,  но почему-то тянет с флеш-памятью в PIC-контроллерах.

По конструктивному исполнению PIC-контроллеры выпускаются в обычном пластмассовом корпусе (DIP), керамическом корпусе с окном (JW, отладочные варианты), широкой гамме планарных и других корпусов (SIOC, PLCC, PQFP, etc.) , а также в виде кристаллов для гибридных схем (die, micromodule, etc.)


 

 

 

 


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

USB и CAN: июня 2013

<< Назад к оглавлению

Тут будет опубликовано несколько уроков по программированию pic18f контроллеров. Начнем с самого начала для самых чайников. Пишу я эти уроки, потому что было очень проблематично найти материал для начинающих. Очень многое устарело, или просто не описано.
Первый урок. Подготовка инструментов.
Внимание! Понятие “земля” для нас – это всего лишь общий провод, подключенный к +0 V (отрицательный провод USB, например). Не надо вкапывать металлическую пластину на метр в землю

В данном тексте приведены ссылки на книги. “название книги”:страница обозначает указатель на определенную страницу книги. “название книги”:Гглава – главу. При этом ТО – сокращение для тех. описания контроллера (Datasheet). Например ТО:15 – 15 страница технического описания. ТО:Г3 – третья глава технического описания

Мы не будем здесь ничего объяснять. Только готовим все инструменты и контроллеры для работы. Весь теоретический материал – в следующих уроках.

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

Вот сайт, на котором товарищ Корабельников прячет свои учебники по микроконтроллерам для новичков. Прошу только не перенимайте его мировоззрения по поводу оптимизации и написания кода. И да. Прошу прощения за вырвиглазность дизайна. Зеркало
Я начинал с книжки “Микроконтроллеры – это же просто!”. Но это по другому семейству контроллеров.
Или же Б.Брей. Применение микроконтроллеров PIC. Зеркало
В общем, какую-нибудь литературу стоит поиметь под рукой, чтобы в случае каких-либо непонятностей обращаться к ней.
И качаем документацию на семейство контроллеров pic18f2550 с официального сайта. И на программатор. Зеркало Программатор

Этот блог посвящен программированию микроконтроллер семейства pic 18F. Все примеры будут рассматриваться на контроллерах pic 18f4550 и pic 18f2550.
На данном этапе примеры на ассемблере компилируются под виндой и линуксом. А на Си – только под виндой.
Что необходимо для начала? естественно, сам микроконтроллер. Как вы увидите ниже, если вы купите контроллер другого типа, то не будет особых проблем запустить программу на нем. Но это, к сожалению требует некоторых умственных усилий, и поэтому если вы раньше не имели дела с подобной техникой, то наверное стоит использовать указанное ниже.

Итак:
1. Контроллер PIC18f2550 или PIC18f4550.

2. Программатор для этого типа контроллеров: у меня – PICkit2. он шьет тучу разных PIC чипов. Более новые версии наверное еще лучше.

3.Потом нам необходима плата, на которой мы будем собирать схемы.

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

4. Набор радиодеталей для схемы, которая находится ниже.

5. Пакет MPLABX. Ранее в блоге рассматривался MPLAB 8.91. В соответствующих разделах будут указаны ссылки на статьи со старой средой. Скачать же MPLABX можно здесь зеркало

Если вы используете linux, то вам понадобится что-то типа pk2cmd и gputils.

Ну и конечно, скорее всего вам понадобятся такие вещи, как плоскогубчики, ножичек, изоленточка, паяльничек, и.т.д…

Питание мы будем брать от USB порта компьютера.

Схема подключения для контроллера pic18f2550:

Скажу еще, что это не просто откуда-то скачанные чертежи. Это все работает у меня на макете.

Ниже – схема для контроллера pic18F4550

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

Итак, собрали?

Теперь надо будет его прошить и проверить.  

Я использовал pickit2.

Вот распиновка контроллеров из официальной документации:

И вот распиновка программатора pickit2. 

Подключаем пины программатора к соответствующим пинам на контроллере и прошиваем следующими файлами:

Естественно, на контроллер напряжение подавать не надо, втыкаем программатор в USB

Пример для pickit2.

запускаем.

Возможно, что сначала контроллер или программатор неопределен. щелкаем Tools->check communication. проверяем, правильно ли мы все подключили. Пока не появятся такие сообщения:

Рядом с device должна быть написана модель вашего контроллера, а 

Pickit found and connected.

щелкаем file->import hex выбираем hex file, и молимся об удачной прошивке.

Прошили.

это простая программа для проверки, работает ли ваша схема. Она мигает светодиодиком на порту RA2.

Поэтому чтобы проверить работу вашего микроконтроллера, подключите +светодиода на ножку RA2 микроконтроллера, и минус через резистор 1КОм на землю. А то чего доброго – сгорит светодиод. При подключении питания, он должен мигать.

Если ничего не работает, попробуйте эту прошивку

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

Работает? поздравляю с первой программой.

Easy PIC’n, Microchip для начинающих, Начало работы PIC, Микроконтроллер PIC

Easy PIC’n, Microchip для начинающих, Начало работы PIC, Микроконтроллер PIC
  1. PICList: Подписаться на PICList http://www.piclist.com. Не публикуйте, просто читайте какое-то время.
  2. PIC : Выберите микросхему и Купи один.
    • Самый простой чип для программирования, поиска кода и обучения – это 16F84, г.
    • Больше отдачи от доллара – это 16F877 и это в основном код совместим с F84.
    • Самая большая удача – это микросхемы серии 18F, и у них много новых. и расширенные функции.
  3. Static – не прикасайтесь к контактам без заземления.
  4. Программист Найди программиста который поддерживает ваш чип.

    (Исчерпывающий список всех известных программистов находится на /techref/microchip/devprogs.htm)

  5. НЕ ВКЛЮЧАТЬ ЗАЩИТУ КОДОМ! Нет, отменить нельзя.У вас будет заменить чип. Прочтите документацию к вашему программатору, чтобы понять как этого избежать.
  6. Читать Перейти http://www.microchip.com найти, скачать и прочитайте техническое описание вашего чипа от корки до корки. Читать Джима введение в ПОС, PIC FAQ и задавайте вопросы на PICList, если вы чего-то не понимаете. Если твой мозг полностью перегорел, не волнуйтесь, много первоклассных инженеров тоже были.Вот еще несколько идей:
    • Вступления и учебные пособия,

      • Понимание и программирование PIC16C84 от Джима Браунса (также по адресу: http://talkingelectronics. com/html/PIC-for-Beginners.html) является классическое вступление к классическому PIC16C84. Чип по-прежнему доступен как 16F84A и руководство по-прежнему актуально, хотя оно относится к цифрам в более старой версии таблиц данных Microchip, кэшированных здесь: 30445B.PDF.
      • ДЕШЕВЫЕ от Стэна Окерса [ockers at anl.gov] и несколько хороших проектов.
      • Источник PIC Книга объясняет программирование PIC с точки зрения БАЗОВЫЙ штамп
      • Простой велосипедный компьютер для начинающих проект Фреда Махера включает программирование PIC, создание схемы печатной платы дизайн, все.
      • http://www.voti.nl/swp/index_1.html Начиная с Контроллеры PICmicro (C) 2002 Wouter van Ooijen
      • http: // amqrp.org / elmer160 / уроки / “160 уроков курса для ПИК Элмера” Джона МакДонаф, WB8RCR это * очень * подробный “щелчок” здесь нажмите эту кнопку “введение. Дает пошаговые инструкции с скриншоты, для загрузки и использования MPLAB, программирования PIC, пошаговый отладка, ввод-вывод и подпрограммы.
      • http://homepage.ntlworld.com/matthew.rowe/micros/dosgear.htm Хорошая стартовая страница с (пугающе) простым программистом, ПО DOS и пример программы
      • http: // www.cq-tv.com/articles/picprog.htm Краткое введение Брайана Келли
      • http://www.dhmicro.com/prod_fedc.html это хороший загружаемый учебник для начинающих, который называется PIC Специфичный для языка C. Как новичок на C Я нашел этот самый удобный и обнадеживающий источник.
      • http://www.interq.or.jp/japan/se-inoue/e_pic.htm (кэшировано 20010731113152) Если вы можете преодолеть плохой английский, это хороший сайт. Есть ли у кого-нибудь время или желание помочь ему с его английскими переводами?
    • Книг: есть много хороших книги о ПИК
    • Курсы: некоторые университеты предлагают курсы по встроенному дизайну.
    • Начальных проектов: http://www.piclist.com/projects
  7. Язык: Выберите разработку язык. Много лет назад все использовали язык ассемблера, потому что там альтернативы не было. Несколько лет назад многие люди использовали ассемблер, потому что альтернативы были дорогими. Сейчас есть много альтернатив, много из них бесплатно. Посмотреть развитие язык.
  8. Начните с очень простого кода, такого как светодиод, загорающийся при включении переключателя. нажал, и строить из этого, как только он заработает.
  9. Don’t Float: Свяжите переключатель вывод Hi или Lo с резистором ~ 10 кОм или используйте внутренние подтяжки, чтобы избежать плавающие входы при разомкнутом переключателе. В основном, делать что-нибудь с неиспользованными контактами, не просто оставь их плавающими
  10. TRIS – убедитесь, что они установлены правильно для входных / выходных контактов.
  11. Debounce переключателей, чтобы избежать ложных состояний переключателя.
  12. RA4 на 16F84 – это «открытый коллектор» – он может тянуться к земле, но будет не тянуть до V куб. см .Вы все еще можете использовать его для управления светодиодами, повесив светодиод и резистор между RA4 и питанием +5 В. (анод до + 5В) Это означает что теперь логика перевернута; 1 = выключено и 0 = включено
  13. Diasble WDT если не нужен
  14. Проверьте, подключен ли MCLR к V cc
  15. Соедините ВСЕ контакты V cc и V dd . Не только один из каждый.
  16. Убедитесь, что предохранители Osc настроены на ваш тип. генератора, кварца (XT), RC (RC), резонатор (HS).так далее
  17. Пример кода для наиболее распространенных приложений (включая последовательный интерфейс ввода-вывода, ЖК-дисплей интерфейс, клавиатуры, Интернет и т. д.) доступны на PICList FAQ http://www.piclist.com/faq
  18. Если ваш код не работает:
    1. Отложите всю программу в сторону, найдите способ отделить лишь небольшой, но функциональный часть его и заставить эту часть работать. Затем медленно добавьте остальную код из исходной программы, тестирование и отладка каждого дополнения, до у вас вся программа работает
    2. Прокомментируйте каждую строку кода тем, что, по вашему мнению, он делает, а затем сверьте таблицу с вашими комментариями.
    3. Разместите закомментированный код в списке изображений, указав тему «[PIC]: What я что-то пропустил в этом коде? ”
  19. Хорошие идеи по второму и третьему проектам см .: http://www.piclist.com/projects. Хороший старт проекты с непреходящей ценностью.

По-прежнему ничего не работает? Пытаться

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

Вопросов:

  • TakeThisOuTvisn на SPAMwbs.co.za спрашивает:
    Почти конец 2007 года, и я хочу вернуться к PICS
    16F628 @ 1, 16F88 @ 1. 9 (* цена 628) 16F873 @ 2.1, 16F877 @ 2.9 и USB 18F4550 @ 3x.
    628 все еще уступает 84, или 88 лучше инвестировать несколько?.
    18F4550 заманчиво, но я не могу выбрать между этим, 877 и AVR MEGA8-16 @ 0.8 (цена 628).
    И мой программатор f84 был основан на dos и разобран на части.
    Я хочу знать, что лучше всего подходит для F84, F628? Или F88?

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

    +

  • +
  • TakeThisOuTtommowas на SPAMhotmail.com – привет, люди. у меня проблема с пониманием команды goto .. я столкнулся исходный код, который переходит в подпрограмму, а затем эта подпрограмма имеет “возврат” или “retlw” в нем. goto работает так же, как call? может кто-нибудь пожалуйста объясните его разницу. С уважением. извините за двойной пост. Джеймс Ответов Ньютона: См. раздел списка инструкций таблица для процессора, который вы используете для точного действия goto, команды call, return и retlw. + +
  • TakeThisOuTmadyg на SPAMexcite.com спрашивает: “Картинка может видеть” 1 “или” 0 “, однако как Pic может “увидеть” среднее положение переключателя с тремя состояниями? ” Джеймс Ответ Ньютона: Предполагая, что между переключателем есть резистор 1 кОм. и штифт, установите штифт как выход, потяните его на низкий уровень, затем немедленно переключите вернитесь к вводу и прочтите значение. Если он оставался низким, повторите процесс. но вместо этого потяните его высоко. Если он остается там, где вы его положили, переключатель находится в середина.

    Это использует собственную внутреннюю емкость контактов и было бы больше надежный с небольшой заглушкой между штифтом и землей. В этот момент вы в основном иметь RC-цепь, такую ​​как используется в сигма-дельта аналого-цифровом преобразователе или Команда POT, используемая в BASIC STAMP. +

    +

См. Также:

Архив:

Комментарии:

  • Супер .. на этом сайте есть все информация, необходимая для новичка в ПОС…. прочь этим парням : -) ++
  • Дэйв j lagzdin из davesaudio Это были лучшие уроки для меня, не так ли? обратите внимание на них в списке:
    http://www.winpicprog.co.uk/pic_tutorial1.htm {ed: см. Также: http://www.winpicprog.co.uk/pic_tutorial.htm }
    http://www.mstracey.btinternet.co.uk/pictutorial/picmain.htm
  • + После долгой борьбы с 18f452, пытаясь заставить его работать на 40 МГц с использованием PLL_HS с резиновым преобразователем на 10 МГц, все, что я мог сделать колебался на частоте 10 МГц.Решение состоит в том, чтобы добавить резистор 4м7 через Выводы osc1 и osc2. Работает как шарм!
    .Барни.
    +
  • TakeThisOuTned на SPAMbike-nomad. com Я бы задал вопрос, действительно ли 16F877 является «самой выгодной по цене». более. Глядя на цену Digikey qty 1: 16F877-20I / P $ 9,88 18F452I / P $ 9,38 Часть 18F в два раза быстрее и имеет гораздо более приятный набор инструкций, больше вспышка, еще много баран и т.д … +

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

Видеть:

Берт Ван Дам говорит:

http://members.home.nl/b.vandam/lonely/index.html Содержит много информации, включая разделы “Начало работы” и “Учебник”. для новичков, использующих JAL в качестве языка PIC. Также содержит майские страницы для среднего и эксперты.


© 2021 Эти страницы обслуживаются без коммерческого спонсорства.(Запрещается всплывающая реклама и т. Д.). Злоупотребление пропускной способностью увеличивает стоимость хостинга, вынуждая спонсорство или отключение. Этот сервер агрессивно защищает от автоматического копирования по любой причине, включая просмотр в автономном режиме, дублирование и т. Д. Пожалуйста, соблюдайте это требование и НЕ РАСШИРЯЙТЕ ДАННЫЙ САЙТ. Вопросов?
Easy PIC’n, микрочип для начинающих, микроконтроллер для начинающих, PIC, микроконтроллер PIC


КУПИТЬ НАШИ ВЕЩИ!
Продаем несколько элементов для поддержки этого сайта

Добро пожаловать на www.piclist.com!

.

Руководство для начинающих по программированию микроконтроллеров Microchip PIC | Lirtex

Теги: Электронная схема, Микроконтроллер, PIC

Это руководство проведет вас через процесс создания вашей первой схемы на основе микроконтроллера Microchip PIC.

Он расскажет обо всем, что необходимо сделать, чтобы написать простую программу, которая будет мигать светодиодом, в пошаговом «практическом» методе. Все программы, используемые в этом руководстве, абсолютно бесплатны.Все, что вам нужно, это простой программист JDM (подробности читайте), и все готово!

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

  1. Микроконтроллер PIC16F. Вы можете купить его в магазинах электроники или в Интернете.
    В этом руководстве я собираюсь использовать PIC16F684, потому что он дешевый, маленький и простой в использовании.
  2. макетная плата
  3. ПК с ОС Windows XP / 2000. Ваш компьютер должен иметь последовательный COM-выход.
  4. простой 9-жильный последовательный кабель между гнездом и штекером (вилка DB9)
  5. Немного списка комплектующих.
  6. PIC Programmer

    Вы можете купить все вышеперечисленное здесь

Bedore мы начинаем, вот краткое объяснение процесса разработки:

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

Давайте начнем. Если у вас есть вопросы, воспользуйтесь нашей системой форума.

  1. Загрузите и установите MPLAB IDE с веб-страницы Microchip.
    В процессе установки вам будет предложено установить компилятор PICC, разработанный компанией HI-TECH PIC.
    Install it !, это компилятор C, который позволяет нам писать наш код на языке C в Asembler.
  2. Чтобы запрограммировать наш код на микроконтроллер, мы должны создать программатор. в Интернете есть множество дизайнов для программистов.
    Я рекомендую следующий.
  3. Загрузите Winpic800. это хорошая программа, которая управляет Программистом. Он поддерживает большинство микроконтроллеров Microchip.
  4. Постройте следующую схему. это простая схема, которая подает напряжение 5 В на PIC и соединяет программные линии
    с соответствующими выводами микроконтроллера.

Краткое описание схемы:

J1 – Разъем питания.
SW1 – главный выключатель питания
D1 –

У1- регулятор напряжения 5В.
C1, C2 –

D2 – индикатор включения питания
SW2 – сброс пользователем

внимательно проверьте соединения!

Наша схема нуждается в питании. Рекомендуется использовать хороший генератор мощности, но если у вас его нет и вы не хотите его покупать, вы можете использовать простой преобразователь
, который может подавать не менее 500 мА при 9 В. Лучше быть слитым, потому что вы не хотите сжечь свой трансформатор, если вы по ошибке подключаетесь к линиям + и -.

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

Если все подключено правильно, это должно выглядеть так:

Написание первой программы PIC

  • Запустить программу MPLAB
  • Создайте новый проект (Projects-> New Project)
  • Выберите свой микроконтроллер из списка (в нашем случае PIC16F684)

  • Затем выберите HI-TECH Univeral ToolSuite и Hi-TECH C Compiler (см. Снимок экрана ниже)
  • На следующем экране назовите свой проект и нажмите «Далее».
  • Еще раз дважды нажмите «Далее», и все, ваш новый проект создан!
  • Теперь мы добавим новый файл в только что созданный проект. Щелкните File-> New.

Код первой программы PIC

Введите следующий код в только что созданный файл:

включить 

void main (пусто)
{
беззнаковый int i;
TRISC = 0x00;

в то время как (1)
{
для (я = 0; я <0xFFFF; я ++)
PORTC = 0xFF;

для (я = 0; я <0xFFFF; я ++)
PORTC = 0x00;

}

}
 
Пояснение к указанному выше коду

включают <рис.ч>

Эта команда инструктирует компилятор включить соответствующий код для PIC, который мы используем.

пусто главная (пусто) {

Определение основной функции кода.

целое число без знака i;

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

TRISC = 0x00;

Установить регистр TRISC. Регистр TRISC - это 8-битный регистр, который устанавливает состояние контактов PORTC PIC.Состояние вывода может быть либо 0, что означает выход, либо 1, что означает вход. Мы определяем все контакты порта как выходы и, следовательно, значение 0x00.

, а (1) {

Поскольку мы хотим, чтобы светодиодный индикатор мигал бесконечно, мы создаем бесконечный цикл (1 в программировании указывает «истина», поэтому следующая строка читается как «while (true)», что является компьютерным для «всегда» :).

для (i = 0; i <0xFFFF; i ++)

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

ПОРТК = 0xFF;

Регистр PORTC содержит значения его входных / выходных ветвей. Так как мы инициализировали порт как выходной порт, эта команда установит значение каждой ветви в 1 (помните, что 0xFF - это 11111111 в двоичном формате). Другими словами, микроконтроллер повысит напряжение в этих выводах до VCC, или 5 В в нашем случае, и, следовательно, вызовет включение светодиода.

для (i = 0; i <0xFFFF; i ++)

PORTC = 0x00;

Назначение этих строк такое же, как и последних - создать задержку.Но на этот раз мы меняем состояние регистра PORTC на низкое (0x00), что приведет к снижению напряжения на выводах PORTC на землю, а затем выключим светодиод.

Если эти команды «выключить» и «включить» бесконечно повторяются командой while, светодиод будет мигать.


  • Нажмите File-> Save и сохраните файл как src1.c
  • Нажмите View-Project, и вы увидите окно, содержащее дерево каталогов проекта, который мы создали.

  • Щелкните каталог правой кнопкой мыши и выберите «Добавить файлы», а затем «Исходный файл
  • ».
  • Теперь проект готов к компиляции.Скомпилируйте его, щелкнув меню Project-> Compile
  • Если процесс компиляции завершился без ошибок, в каталоге проекта должен быть создан файл HEX. Этот файл содержит двоичную форму вашего кода - и запись его на PIC заставит PIC запустить ваш код.
  • Чтобы записать PIC, загрузите программу winpic800.
  • Теперь мы настроим программу для первого использования.

  • Нажмите Settings-> Hardware и выберите порт, к которому вы подключили свой JDM Programmer .

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

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

  • Теперь мы проверим, что программное обеспечение успешно распознает PIC MCU, который мы используем. Щелкните значок, отмеченный на изображении выше, и должна быть обнаружена правильная модель PIC.
  • Теперь выберите файл, с которым мы хотим запрограммировать PIC (это тот же файл HEX, который был создан путем компиляции нашего кода на предыдущем уровне)

  • Теперь нажмите кнопку «Настройки» (отмечена на изображении выше).Этот диалог позволяет нам настроить несколько параметров запуска PIC. Например - внутренняя тактовая частота, использовать внутренние или внешние часы и т. Д.
  • Выберите INTOSCIO - используйте внутренние часы PIC.
  • Убрать маркировку WDTE.

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

Опубликовано в Руководства по codex

Introduction to PIC - PIC Microcontroller Tutorials - PIC Tutorial Resource

Введение

Добро пожаловать в начало PIC Tutorial.Эти страницы познакомят вас с основной структурой устройства, вплоть до методов и приемов программирования. Кроме того, будут предложения о том, как изменить код, чтобы вы могли адаптировать PIC к вашим приложениям в Cybot. Мы не будем включать какие-либо схемы внутренней архитектуры, так как это может привести только к путанице. Если вы хотите ознакомиться с таблицей данных, ее можно загрузить с веб-сайта Microchips.

Для начала давайте взглянем на ПОС.

Microchip PIC 16F84 Микроконтроллер

Microchip производит серию микроконтроллеров под названием PIC.Посмотреть ассортимент их микроконтроллеров можно здесь. Доступно множество различных вариантов, от некоторых базовых типов с малым объемом памяти, вплоть до тех, которые имеют встроенные аналогово-цифровые преобразователи и даже ШИМ. Мы собираемся сконцентрироваться на PIC 16F84. Как только вы научитесь программировать один тип PIC, выучить остальные станет легко.

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

Штифты 16F84

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

RA0 К RA4

RA - двунаправленный порт. То есть его можно настроить как вход или выход. Число после RA - это номер бита (от 0 до 4).Итак, у нас есть один 5-битный направленный порт, каждый бит которого можно настроить как вход или выход.

RB0 К RB7

RB - второй двунаправленный порт. Он ведет себя точно так же, как RA, за исключением того, что задействованы 8 бит.

ВСС И ВДД

Это контакты блока питания. VDD - это положительное питание, а VSS - отрицательное напряжение, или 0 В. Максимальное напряжение питания, которое вы можете использовать, составляет 6 В, а минимальное - 2 В.

OSC1 / CLK IN и OSC2 / CLKOUT

К этим контактам мы подключаем внешние часы, чтобы микроконтроллер имел какое-то время.

MCLR

Этот вывод используется для стирания ячеек памяти внутри PIC (т.е. когда мы хотим его перепрограммировать. При нормальном использовании он подключается к положительной шине питания.

ИНТ

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

T0CK1

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

Как программировать PIC

Хорошо, так что вы пока не откладываете. Теперь вы хотите знать, как программировать PIC, но, помимо изучения инструкций кода сборки, как вы на самом деле программируете информацию? Что ж, есть два способа - простой способ и способ «сделай сам». Самый простой способ - купить программатор PIC (около 35), который будет подключаться к вашему ПК, и вы сможете запрограммировать PIC с помощью прилагаемого программного обеспечения.Самостоятельный способ - создать своего собственного программатора (самый дешевый - чуть меньше 20), использовать бесплатное программное обеспечение из Интернета и запрограммировать его таким образом.

Если вы хотите использовать метод «сделай сам», мы настоятельно рекомендуем этот сайт и щелкните «Поддерживаемые программисты», чтобы просмотреть схемы. Самый дешевый - TAIT Classic Programmer. Программное обеспечение для программирования PIC также можно скачать с этого сайта в разделе Download

.

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

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

Подойдет любой метод, поскольку оба они приводят к одному и тому же - программированию PIC.

Следующее, что вам понадобится, это ассемблер. Это преобразует программу, которую вы пишете, в формат, понятный PIC. Лучшая из них - от самих Microchip, она называется MPLAB. Он основан на Windows и включает в себя редактор, симулятор и ассемблер.Это де-факто программное обеспечение, как написано производителями ПОС, и, прежде всего, оно БЕСПЛАТНО!

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

Далее мы рассмотрим, как подключить простую схему для разработки PIC.

Щелкните здесь, чтобы начать обучение >>
(подключение к микроконтроллеру PIC)

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

pic для начинающих - projectiot123 Технологический информационный веб-сайт по всему миру

[otw_is sidebar = otw-sidebar-1] Я надеюсь, что у вас все хорошо, я начал серию статей о микроконтроллерах, и эта статья является второй в серии, в первой статье я обсуждал введение в микроконтроллеры в целом.Я обсудил некоторые основные понятия о микроконтроллерах, а также кратко объяснил обычно используемые периферийные устройства микроконтроллера. В этой статье я особо остановлюсь на микроконтроллерах PIC, распространенных и популярных микроконтроллерах семейства PIC, приложениях микроконтроллеров PIC и архитектуре микроконтроллера PIC. Так что расслабьтесь, продолжайте читать и получайте удовольствие от обучения.

Введение микроконтроллеров PIC:

Если вы изучаете электротехнику / электронику, вы должны знать термин «микроконтроллер PIC».Микроконтроллер PIC является одним из самых популярных семейств микроконтроллеров и встречается во множестве встраиваемых систем.

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

семейства PIC разделяют большинство функций с микроконтроллерами других семейств, а также обладают некоторыми уникальными особенностями. Например, как и микроконтроллеры других семейств, микроконтроллер PIC также имеет шину последовательной связи I2C (Inter Integrated Circuit), которая используется для связи с другими ИС, например, с датчиками, памятью или устройствами ввода-вывода во встроенных приложениях.Некоторые микроконтроллеры PIC также имеют USB-хост-контроллер, встроенный в сам чип, который позволяет микроконтроллерам PIC обмениваться данными с другими USB-устройствами без необходимости использования схем преобразователя USB в UART или плат адаптера. Одним из основных преимуществ встроенного хост-контроллера USB является то, что при работе с микроконтроллерами PIC инженеру-проектировщику оборудования не нужно добавлять USB к контроллеру UART, чтобы разработчик мог программировать микроконтроллер, поскольку микроконтроллер может напрямую взаимодействовать с микроконтроллером. компьютер, чтобы его запрограммировать.Но нужно убедиться, что микроконтроллер PIC должен иметь загрузчик USB, чтобы его можно было программировать напрямую через USB. Обратите внимание, что встроенный USB не является уникальным для микроконтроллера PIC, микроконтроллеры других семейств также имеют встроенные хост-контроллеры USB.

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

также имеют коммуникационную шину SPI (Serial Peripheral Interface), которая также является популярным стандартом связи для встроенных приложений. Микроконтроллеры PIC имеют встроенный ISP (в системном программировании), благодаря которому его можно программировать при подключении к системе и без порта USB.В дополнение к общим интерфейсам связи микроконтроллер PIC также имеет некоторые другие общие периферийные устройства, такие как прерывания, сброс RTC, сброс при включении питания, UART (универсальный асинхронный передатчик приемника) и сброс после сбоя. Как и большинство микроконтроллеров, микроконтроллер PIC также имеет на кристалле аналого-цифровые преобразователи (АЦП), таймеры и в некоторых случаях также цифро-аналоговые преобразователи (ЦАП).

Одной из основных причин того, что микроконтроллеры PIC так популярны, является их доступная онлайн-поддержка для разработки.Инженер по встроенному ПО может загрузить готовые библиотеки для микроконтроллеров PIC и, таким образом, свести к минимуму его / ее задачу и сэкономить много времени и усилий. Студенты много раз спрашивали меня об этом, и вы могли также заметить, что код, написанный для микроконтроллера одного семейства, не может работать на микроконтроллере другого семейства. Например, код, написанный для микроконтроллера AVR, не может работать на микроконтроллере PIC. Причина этого в том, что набор инструкций каждого семейства микроконтроллеров имеет свой уникальный набор инструкций, поэтому код, написанный для PIC, не может работать на AVR и наоборот.PIC может быть запрограммирован с помощью программного обеспечения MPLab и PICKIT, подробности которого будут рассмотрены позже в статье.

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

В этой главе я расскажу о некоторых популярных микроконтроллерах из семейства микроконтроллеров PIC. В семействе микроконтроллеров PIC имеется большое количество микроконтроллеров, каждый со своими различными функциями. Эти микроконтроллеры различаются по своей памяти данных, памяти кода, EEPROM, количеству доступных GPIO (универсальные входы / выходы), количеству доступных интерфейсов последовательной связи, например, некоторые члены микроконтроллеров PIC имеют один UART (универсальный асинхронный приемный передатчик), у некоторых есть два подобных элемента имеют один I2C (Inter Integrated Bus), некоторые имеют два даже больше, чем два, и это зависит от размера памяти данных микроконтроллера.Здесь важно упомянуть, что все члены семейства микроконтроллеров PIC основаны на ARM (Advanced Reduced Instruction Set Computing), что означает, что все инструменты ARM могут использоваться для микроконтроллеров PIC.

Некоторые из наиболее часто используемых микроконтроллеров PIC перечислены ниже:

1) PIC16F877A.

2) PIC18F4520.

3) PIC16F18326.

4) PIC16F716.

5) PIC18F67K22T.

6) PIC18F2525.

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

Макетная плата микроконтроллера - это печатная плата, которая содержит все вспомогательные устройства, необходимые для работы микроконтроллера. Некоторые платы разработки микроконтроллеров просто содержат микроконтроллер и вспомогательные устройства, которые требуются для работы микроконтроллера, например, схему сброса при включении питания, кристалл, преобразователь USB в UART, и на этих платах контакты GPIO (вход / выход общего назначения) микроконтроллера являются разрывными. на внешних заголовках.Таким образом, пользователь может использовать эти контакты в своих приложениях. С другой стороны, некоторые платы разработки микроконтроллеров имеют другие модули, установленные на плате разработки в дополнение к вспомогательным схемам, например ЖК-дисплеи, кнопки, светодиоды и т. Д. В качестве примера рассмотрим Arduino, которая является платой разработки микроконтроллера. Хотя Arduino - это отладочная плата микроконтроллера Atmel, она упоминается здесь только для справки читателя, поскольку это самая популярная отладочная плата микроконтроллера.

Макетная плата микроконтроллера PIC16F8770, известная как PIC KICK, показана на следующем рисунке:

Обратите внимание на изображение, что эта плата разработки имеет встроенный ЖК-дисплей (жидкокристаллический дисплей) и кнопки.

Аналогичным образом рассмотрим отладочную плату PIC18f4520, которая широко известна как разработка EASY PIC.

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

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

В этой главе я расскажу о программировании микроконтроллера PIC. Прежде чем углубляться в обсуждение программирования микроконтроллера PIC в частности, давайте обсудим программирование микроконтроллера в целом. Я упоминал ранее, что микроконтроллеры PIC имеют на кристалле память кода и память данных. Таким образом, поскольку название подразумевает, что кодовая память микроконтроллера PIC используется для хранения кода / программы, программа представляет собой набор инструкций, которые предназначены для выполнения конкретной задачи и написаны на языке C или ассемблере.Набор этих инструкций называется Программой и коллективно выполняет определенную задачу.

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

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

Теперь, возвращаясь к нашему микроконтроллеру PIC, очевидно, что процесс программирования микроконтроллера PIC должен быть идентичен вышеупомянутому процессу, но он использует другие инструменты для программирования микроконтроллера PIC. Программное обеспечение, используемое для программирования микроконтроллеров PIC, - это MPLab. Это программное обеспечение объединяет редактор и компилятор, что означает, что разработчик может писать программу в программном обеспечении, а также может генерировать файл HEX.Когда вы открываете MPLab, вы создаете проект, выбираете микроконтроллер, который хотите запрограммировать, а затем пишете код. После завершения кода он компилируется для получения файла HEX.

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

Рассмотрим оборудование, показанное на следующем рисунке:

Это оборудование называется PICKIT, которое используется для программирования PIC в цепи.

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

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

1) Система домашней автоматизации.

2) Цепи управления аккумулятором.

3) Система контроля скорости автомобиля.

4) Контроллеры автоматических дверей.

5) Системы отслеживания активов.

6) Бытовая техника, такая как беспроводное управление приборами, микроволновая печь, пульты TC, телевизор, системы обнаружения движения и т. Д.

7) Промышленные товары.

8) Системы регистрации данных.

9) Система наблюдения с поддержкой Интернета вещей.

10) Система домашней автоматизации с поддержкой Интернета вещей.

Помимо применения микроконтроллеров PIC в потребительских и промышленных товарах, этот микроконтроллер также популярен среди студентов-инженеров и любителей электроники.

Блок-схема микроконтроллера PIC:

Эта глава является наиболее важной из всех в этой статье, поскольку я уже упоминал ранее, что микроконтроллер PIC состоит из всех популярных периферийных устройств микроконтроллеров.Микроконтроллеры PIC имеют последовательный периферийный интерфейс (SPI), внутреннюю интегральную схему (I2C), UART (универсальный асинхронный приемный передатчик), таймеры, порты ввода / вывода. Микроконтроллеры PIC также имеют память данных, память данных кодовой памяти используется для хранения данных, которые поступают в микроконтроллер с портов ввода / вывода или интерфейсов последовательной связи. С другой стороны, память кода используется для хранения программы.

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

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

Связанные

9780

5880: 50 проектов микроконтроллеров PIC: для начинающих и экспертов - AbeBooks

Эта книга содержит 50 забавных и захватывающих проектов для микроконтроллеров PIC, таких как лазерная сигнализация, USB-дразнящая мышь, таймер, репеллент для молодости, звуковой переключатель, емкостный датчик уровня жидкости, датчик «палец в воде», охрана комнаты с помощью камеры, сеть светорегулятор (110-240 вольт), говорящий микроконтроллер и многое другое.Обсуждаются несколько различных методов, таких как реле, управление переменным током, включая сеть, I2C, SPI, RS232, USB, широтно-импульсная модуляция, поворотный энкодер, прерывания, инфракрасное, аналого-цифровое преобразование (и наоборот), 7-сегментный дисплей. и даже CAN-шину.

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

Используются три микроконтроллера PIC: 16f877A, 18f4455 и 18f4685. Также обсуждается, как вы можете перенести свой проект с одного микроконтроллера на другой - поддерживаются 15 типов, включая два примера проекта.

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

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

«синопсис» может принадлежать другой редакции этого названия.

PIC Microcontrollers - 50 проектов для начинающих и экспертов - проекты для микроконтроллеров

Teu ge Ts Tipi ge] 50 проектов для начинающих и экспертов Берт ван Дам Клектор q Микроконтроллеры PIC = » 50 проектов для начинающих и экспертов Автор: Берт ван Дам В этой практической книге рассказывается о ряде интересных и увлекательных проектов, таких как: e бесшумная сигнализация e датчик людей электронный радар «ночной зуммер е часы * VU метр * RGB фейдер «последовательная сеть Электронная коробка для стихов * супер-компрессия звука Вы можете использовать его как книгу проектов и создавать более 50 проектов для собственного использования.Четкие объяснения, схемы и изображения каждого проекта на макете сделать это занятие веселым. Вы также можете использовать его как учебное пособие. Техническая справочная информация в каждом Проект объясняет, почему проект настроен именно так, включая использование таблиц данных. Таким образом вы узнаете много нового о проекте и используемом микроконтроллере, а также вы можете расширить проект в соответствии со своими потребностями ... что делает его идеальным для использования в школах и колледжи. Эту книгу также можно использовать как справочное руководство.Объяснение программы JAL- язык ming и все используемые библиотеки расширения уникальны и нигде не встречаются еще. Используя указатель, вы можете легко найти проекты, которые служат примерами для основные команды. Но даже после того, как вы построите все проекты, он все равно будет ценным справочное руководство для хранения рядом с компьютером. Обсуждаются четыре микроконтроллера: 121675, 16f628, 16f876A и 161877, а также как переносить программы с одного микроконтроллера на другой. Программное обеспечение AM, используемое в этой книге, можно загрузить бесплатно, включая все исходные коды. код, редактор программ и язык программирования с открытым исходным кодом JAL.Этот мощный и, тем не менее, легкий для изучения язык используется любителями и профессионалами во всем мире. Комплект оборудования также доступен для покупки отдельно, который содержит все детали для начать работу, включая несколько микроконтроллеров. Есть даже бесплатный сайт поддержки с дополнительной информацией, FAQ и ссылками. DE RETER e ET ER ада [А Ата DORA o e a Содержание ВСТУПЛЕНИЕ 1 ЧТО ТАКОЕ МИКРОКОНТРОЛЛЕР PIC? 2ЧТО ВАМ НУЖНО 2.) НЕОБХОДИМЫЕ ПРЕДМЕТЫ 2.2 ДОПОЛНИТЕЛЬНО. ПРЕДМЕТЫ (ПРИЯТНО ИМЕТЬ) 3 ОБУЧАЮЩИЙ ПРОЕКТ 31 ОБОРУДОВАНИЕ CPHE 3.2 ПРОГРАММНОЕ ОБЕСПЕЧЕНИЕ 3.3 СОСТАВЛЕНИЕ И ЗАГРУЗКА 3.4 ОТЛАДКА 3.5 Данк! 3.6 ДРУГИЕ РЕЗУЛЬТАТЫ 4 ПЕРЕКЛЮЧАТЕЛЯ 4.1 ТАЙМЕР 42 ДВУХСТОРОННИЙ ПЕРЕКЛЮЧАТЕЛЬ 4.3 DICE 4.4 ТАЙНАЯ ДВЕРНАЯ КОЛОДКА 5 A / D ПРЕОБРАЗОВАНИЕ 5.) ПЕРЕМЕННАЯ СКОРОСТЬ 1, ИНДИКАТОР ЗОЛЫЛЕНИЯ 5.2 ТЕМНЫЙ ПЕРЕКЛЮЧАТЕЛЬ 5,3 ВОЛЬТМЕТРА 5.4 ФОТУМЕТР С ЖК-ДИСПЛЕЕМ 5.5 ОТБОР ПРОБ 6 R $ 232 СВЯЗЬ 6.1 ПОСЛЕДОВАТЕЛЬНЫЙ СЧЕТЧИК 6.2 БЕСШУМНАЯ СИГНАЛИЗАЦИЯ 6.3 ВНУТРЕННЯЯ ОТЛАДКА 6.4 ПОСЛЕДОВАТЕЛЬНОЕ ОБОРУДОВАНИЕ 7 ЭЛЕКТРИЧЕСКИЙ ДВИГАТЕЛЬ 7.1 УПРАВЛЕНИЕ ЭЛЕКТРИЧЕСКИМ ДВИГАТЕЛЕМ 7.2 УПРАВЛЕНИЕ ШИРОКОЙ МОДУЛЯЦИЕЙ ИМПУЛЬСА. ЭЛЕКТРОДВИГАТЕЛЯ 7.3 ПОСТОЯННАЯ СКОРОСТЬ ДВИГАТЕЛЯ ПРИ ОБРАТНОЙ СВЯЗИ 74 ТАХОМЕТР 101 10 с 14 120 20 126 136 146 8 ДАТЧИКОВ 8.1 ОБНАРУЖЕНИЕ ИНФРАКРАСНЫХ ОБЪЕКТОВ 8.2 УЛЬТРАЗВУКОВЫЙ ДАТЧИК 8.3 ЛЮДСКИЙ ДАТЧИК ДАТЧИК НАКЛОНА 8,4 9 ЗВУК 9.1 ПИВО 9.2 НОЧНОЙ БЛЗЕР 9.3 ГЕНЕРАТОР ЧАСТОТЫ 9.4 ПРОСТАЯ МЕЛОДИЯ 9.5 ЗАПИСЬ ЗВУКОВ 9.6 СУПЕРСЖАТИЕ ЗВУКА 10 ПАМЯТЬ 10.1 ПАМЯТЬ ПРОГРАММЫ FLASH 10,2 RAM 10.3 EEFROM 10.4 ВНЕШНИЙ. EEPROM с постоянным током 11 МИКРОКОНТРОЛЛЕРЫ С НЕСКОЛЬКИМИ ИЗОБРАЖЕНИЯМИ 11,1 Два R8 232 СОЕДИНЕНИЯ 11.2 ПОСЛЕДОВАТЕЛЬНОСТЬ, СИНХРОНИЗАЦИЯ 11.3 ПОСЛЕДОВАТЕЛЬНАЯ СЕТЬ 12 РАЗЛИЧНЫХ ПРОЕКТОВ 12,1 "ПРЕРЫВАНИЕ ПО ВРЕМЕНИ 12.2 ПРЕРЫВАНИЕ ПОРТА B 12.3 ИЗОБРАЖЕНИЯ СВЕТА 12,4 ЦИФРОВЫЕ ЧАСЫ 12.5 ПРОКРУТКА ДИСПЛЕЯ С АНИМАЦИЕЙ 12.6 УЛЬТРАЗВУКОВОЙ РАДАР 12.7 ОБРАЩЕНИЕ С БОЛЬШИМИ ТОКАМИ 12.7.1 Транзистор 12.7.2 Драйвер полевого МОП-транзистора TC4427A 12.7.3 Реле 12.8 КОРОБКА ПОЭЗИИ 12.9 БУЙЛАДЕР 13 ДРУГИЕ МИКРОКОНТРОЛЛЕРЫ PICTM 13.1 12F675 13,1.2 128675 библиотека bert 13,1.3 Демо-программа 13.1.4 Железнодорожный переезд 13.1.5 Фейдер RGB 13.2 | 6F628 13.2.2 Библиотека причалов 16F628 13.2,3 Демо-программа 13.2.4 Электрическая свеча 13.2.5 Регулируемая тактовая частота 13.2.6 Обновление с использованием HEX-представления 13.3 IGFR76A 13,3.2 Библиотека причалов I6F876A 13,3.3 Демо-программа 13,3,4 VU метр 13.3.5 Инфракрасный порт RS232 13.4 ПОРТАТИВНОСТЬ 14 ПРИЛОЖЕНИЕ 14.1 TAL 14.1.1] Общие 14.1.2 Синтаксис 14.2 165877 БЕРТОВАЯ БИБЛИОТЕКА [4.3 БИБЛИОТЕКИ OTHFR 14,4 ПРОГРАММИРОВАНИЕ ПРОХОДА 4.4.1 Программа связи MICterm 14.4,2 Программное обеспечение DIY на Visual Basic 14.4.3 Терминальная программа с использованием командного файла 14.5 ДАННЫЕ ТРАНЗИСТОРА 14.6 СОДЕРЖАНИЕ ЗАГРУЗОЧНОГО ПАКЕТА 14.7 ШЕСТИГРАННЫЕ ФАЙЛЫ 14.8 Советы и хитрости Показатель 351 354 aso 362 363 366 369 373 374 376 37 ” 380 382 388 391 391 391 392 4 ” 417 420 421 422 426 a2s 432 437 439 442 1 Что такое микроконтроллер PICTM? фон объяснен подробно. Это позволяет понять, как и почему эти проекты работают. чтобы вы могли легко адаптировать их к своим потребностям и идеям. Книга начинается очень просто с учебного проекта и пошаговых инструкций. Как вам по мере увеличения сложности проекта и объясняются только новые концепции.К К концу книги ты перестанешь быть новичком! Глава 14 содержит полный и уникальный обзор всех команд JAL. язык программирования и используемые библиотеки расширения. Вы не найдете этого нигде еще! Вы можете использовать его как справочное руководство, а также для поиска забавных и полезных команд и параметры. Все программное обеспечение, используемое в книге, объяснено и показано. Чтобы не вводить сами программы, они включены вместе с другим программным обеспечением, необходимым в полный пакет, который можно бесплатно скачать по адресу http: // www.boekinfo.tk, Чтобы быстро приступить к работе, также доступен комплект оборудования. Он содержит все необходимые детали для первых нескольких проектов. Комплект разработан для вашего удобства, но, конечно, вы можете также приобретайте и используйте свои собственные детали. Подробнее о заказе и международном информацию о доставке можно найти на сайте http://www.boekinfo.tk. Все проекты в этой книге построены на макете. Это позволяет легко создавать и расширяйте их, прежде чем создавать печатную плату. Веселее видеть проекты в этой книге в качестве отправной точки для чего-то, что больше соответствует вашим потребностям. чем готовые проекты.Хорошо, хватит разговоров ... приступим к нашему первому проекту микроконтроллера PIC! M! 10 2 Что вам понадобится В этой главе описаны все материалы, необходимые для начала этого увлекательного хобби. А также есть много разных вариантов на выбор. Другие варианты могут работать так же хорошо, как выбранные здесь. Важно то, что выбранные материалы работают вместе в совершенстве. Программатор Wisp628, Xwisp2, JALedit IDE, JAL v2 и bert 16F877 библиотека - это как раз такое сочетание; идеально подходит, подарит вам много часов удовольствия.Конечно, вам также понадобится эта книга - желательно ваша собственная копия - чтобы вы могли делать заметки. и даже напиши в книге. Ваш собственный опыт и заметки об используемых вами частях сделает эту книгу еще более ценной. Написание новой книги в первый раз не может будет легко, но со временем станет легче. Многие программы (по крайней мере, наиболее важные) можно загрузить с сайт http://www.boekinfo.tk в разделе «скачать пакет». Вы также найдете информация о комплекте оборудования, которое вы можете купить, ссылки на поставщиков и многое другое Информация.2.1 Необходимые предметы Макетная плата Если вы не тот человек, который сразу же подходит к паяльнику, разумно использовать макет. Это позволит вам быстро создавать и изменять проекты, что делает его идеальным. для прототипирования. EE: Рисунок 2. Макетная плата с разделительными конденсаторами. Чтобы предотвратить проблемы с питанием, на удлинители вставлены развязывающие конденсаторы дуги 0,1 мкФ. по углам. В одном из уголков используется стабилизирующий конденсатор на 22 мкФ, а также небольшой светодиод (установлен на обратной стороне), который служит ограниченным диодом безопасности от случайное обратное подключение питания.п 2 Что вам понадобится В зависимости от того, что вы хотите построить, вам потребуются электронные детали. Если возможно, постарайтесь получить детали, которые вписываются в макетную плату. Некоторые детали могут иметь слишком толстые провода. Не заставляйте их в макет, но вместо этого припаяйте к ним небольшие провода. Многие поставщики продают небольшие пакеты со смешанными деталями (резисторы, светодиоды, конденсаторы). Это может быть хороший способ начать сбор запчастей. На длинных макетных платах, таких как показанная на рис. 2, шина питания разделена на две части.Они не обязательно связаны внутренне. Верхняя и нижняя направляющие почти никогда не дуги внутренне связанный. Итак, прежде чем начинать проект, лучше всего подготовить макет подключение всех шин питания и установка описанных деталей. Ты не будешь первым чтобы задаться вопросом, почему проект не работает, только для того, чтобы позже узнать, какую часть шины питания вы использованный не был подключен к источнику питания. Источник питания (UA7805) Микроконтроллеры Al PICTM используют 5 вольт, и это должно быть довольно точно, особенно во время программирования.Используйте хороший стабилизированный источник питания с UA7805 (или подобным »). активный стабилизатор, подключаемый по схеме ниже. UA 7805 + 5вольт 3 1 кГц 2 корма 1 1000 ui DI 35 вольт = kt корм 2 земля (0) pt + 4x 1N4007 Рисунок 3. Стабилизированный источник питания 5 В. Трансформатор подключен к питанию 1 и питанию 2. Это вполне может быть сетевое питание. питания, пока напряжение достаточно высокое. Желательно от 9 до 24 В, если трансформатор переменного тока (AC) или от 9 до 32 В, если трансформатор постоянного тока (DC).Не имеет значения, как вы подключаете трансформатор постоянного тока, поскольку ток все еще исправлено четырьмя диодами. Конечно, трансформатор должен иметь достаточно емкость. * Например, LM7805 производства Fairchild Semiconductor. Этот регулятор мощности может Максимальный ток составляет 1 ампер, а UA7805 производства Texas Instruments - 1,5 ампер. 12 2.1 Необходимые предметы Язык программирования (JAL) На рынке существует множество различных языков программирования микроконтроллеров PICTM.Наиболее часто используемым языком является ассемблер (ASM) - очень мощный, но чрезвычайно громоздкий язык. Даже самая простая программа на ассемблере содержит длинный список команд .. определенно не подходит для новичков. В этой книге используется JAL (Just Another Language), язык высокого уровня, подобный Паскалю. Это только продвинутый язык, который полностью бесплатен, имеет большой международный и очень активная база пользователей. JAL настраивается и расширяется с помощью библиотек и даже может быть совмещен с ассемблером.Это позволяет вам включать фрагменты ASM », которые можно найти на Интернет. Это пример программы JAL, которая мигает светодиодом, подключенным к контакту 23 (c4): - JAL 2.04 включает причал 16F877 - определить переменные битовый флаг var - определить направление сигнала этого пина контакт c4 направление = выход вечная петля - изменить статус пина 23 flag =! флаг контакт c4 = флаг - подождите 100 миллисекунд задержка 100 мс (1) конец цикла Адрес группы пользователей JAL указан на веб-сайте www.boekinfo.tk. * Небольшие фрагменты программы, которые делают что-то «удобное» и которыми обмениваются пользователи.15 2 Что вам понадобится Библиотека (16F877 герц) Библиотеки содержат дополнительные функции, которые можно добавить в JAL. Вы можете, например, выполнять последовательные соединения, считывать аналоговый сигнал и многое другое. В этой книге используется стандартная библиотека 16F877 beré. По сути, это комбинация наиболее часто используемые библиотеки вне Интернета ». которые идеально сочетаются друг с другом и включены как часть пакета загрузки. Используя эту стандартную библиотеку, вы получаете множество дополнительных функций. сделал доступным: Функционал (со стандартной библиотекой) 16F377 Последовательная связь - оборудование Y Последовательная связь - программное обеспечение Широтно-импульсная модуляция (ШИМ) Аналого-цифровое преобразование Программная память EEPROM память ASCI Задерживать Регистры и переменные Asas asas ss Случайные числа Поскольку часть функциональных возможностей библиотеки загружается автоматически, некоторые из контактов не работают. назначается по умолчанию.Если вы хотите использовать эти булавки для других целей, вам потребуется изменить стандартную библиотеку. Это бывает редко. FA глупое название для библиотеки. Когда я сделал первую много лет назад | назвал это причалом отличить его от библиотек T сошел с Intemet. Библиотека стала намного популярнее, чем | представили, и поскольку они так хорошо знают | не могу больше узнать имя! * В основном написано экспертом JAL Сте Ментки. 16 Это конфигурация по умолчанию: 16E877 контакты 13 и 14 16 17 25 26 год 39 40 2to Sand? до 10 другие булавки 2.1 Необходимые илемы Функция кристалл PWMC) ШИМ (I) RS232 аппаратный TX RS232 аппаратный RX 232 реалов, программное обеспечение RX Программное обеспечение RS232 TX аналог в (адаптируемый) цифровой вход / выход Аналоговые контакты со 2 по 10 можно переключить на цифровые с помощью команды из библиотеки (см. раздел 14.2). Редактор (JALedit) Вы можете использовать JAL из командной строки, но редактор намного удобнее. В рекомендуемый редактор - JALedit. У этого бесплатного редактора есть ряд уникальных преимуществ: Автоматическое резервное копирование Команды TAL имеют цветовую маркировку. Обзор переменных, констант и процедур, используемых в программе Заблокировать комментарий добавить vr удалить Компиляция и загрузка в один клик Встроенная таблица ASCII, калькулятор и терминал Экспорт исходного кода в html (для публикации на сайте) Вывод компилятора в отдельном окне Загружайте несколько файлов одновременно * Перейти к ошибочной строке программы при ошибке у 2 Что вам понадобится 2.2 дополнительных предмета (желательно иметь) TM Следующие элементы не являются необходимыми для работы с микроконтроллерами PIC ", но они очень удобно. Программное обеспечение для разработки на ПК (Visual Basic) С ПИК! » может общаться с ПК, для этого интересно написать специальное программное обеспечение. kt не требуется, так как вы можете выполнять все проекты в этой книге с помощью прилагаемого программное обеспечение в пакете загрузки. Например, если у вас есть Visual Basic, вы можете писать красивые приложения для своего такие проекты, как вольтметр, несколько графиков на одной странице и визуализация измерения.Многие приложения для ПК в загружаемом пакете написаны на Visual Basic, и во многих случаях исходный код включен. Вы, конечно, можете использовать другой язык, если хотите. Рисунок 8. Visual Basic. Visual Basic »- это коммерческое программное обеспечение, поэтому оно не является частью бесплатной загрузки». * Visual Basic предоставляется Microsoft. См. Http: // www .microsoft.com. * Бесплатное ПО для разработки на ПК можно найти на сайте http: // www .thefreecountry.com. 20 2.2 Дополнительные предметы (желательно иметь) Осциллограф (программное обеспечение) Для скачков и колебаний мощности, а также для проектов с необъяснимым поведением иногда очень удобно иметь простой осциллограф.Фике Эдт Оптиос Хо Дой О фу аии] К fomism eso Рисунок 9. Программный осциллограф. Программный осциллограф использует зонд ПК для преобразования сигналов. Один из своих Ограничение состоит в том, что вам нужно создать небольшой интерфейс для защиты звуковой карты. общий правый левый измерение ручки влево или вправо MIC в общий Рисунок 10. Интерфейс микрофонного или линейного входа звуковой карты на ПК. 21 год 2 Что вам понадобится Интерфейс на Рисунке 10 используется для уменьшения максимального напряжения на микрофоне или линейный вход звуковой карты, от 5 вольт до 0.9 вольт. Максимальная частота также ограничено, но цена приемлемая (программа распространяется бесплатно). Коды резисторов и конденсаторов Резисторы и конденсаторы обычно имеют (цветной) код для обозначения их номинала. Это значение может можно найти в таблицах, но вы не купили компьютер, чтобы возиться с бумажными столами. Два маленьких программы могут сделать эту работу за вас: ESPE Feizem [ooDE к E dO: Рисунок 12. Кодировка конденсатора. 22 3 Учебный проект Теперь, когда все материалы собраны, пора начинать! В Цель этого учебного проекта - построить проблесковый маячок.В процессе подготовки это может быть удобно читать главы 1 и 2, но если вы хотите двигаться дальше, это не так. проблема. В этом руководстве предполагается, что вы загрузили и правильно установили бесплатный программный комплекс с сайта http: // www -boekinfo.tk. Пакет содержит Язык программирования JAL и библиотеки, поэтому вы не можете продолжить, не установив эти первые. Пакет также содержит редактор (JALedit), специально разработанный для использования с JAL. Вы можете использовать свой собственный редактор (а если на вашем компьютере нет Windows, вы можете даже должен), но вам нужно будет следовать прилагаемым инструкциям.Вы можете пропустить определенные функции, такие как цветовое кодирование синтаксиса, компиляция и загрузка в один клик, библиотека вид и обзор процедуры / функции. Также предполагается, что вы используете рекомендуемый программатор Wisp628. Вы можете использовать любой другой программатор (который может программировать 16F877), однако вы также должны следовать инструкции, прилагаемые к нему. И, опять же, вы не сможете использовать все функциональные возможности, принятые в книге, такие как внутрисхемное программирование и проход RS232. через. 3.1 Аппаратное обеспечение Прежде всего, необходимо выбрать PICIM.Обычно это самый маленький и дешевый PICTM, отвечающий всем требованиям. Однако для этого проекта мы выберем простой PICIM, который можно использовать для создания большинства проектов в книге (даже самых сложные): 16F877 от Microchip. Это простой в использовании PICTM со многими функции, но по цене от 7 до 11 долларов США. 16F877 имеет 40 контактов. Возможности этих выводов указаны в их техническом описании ». Не позволяйте слово «даташит» вводит вас в заблуждение; это больше похоже на книгу из более чем 200 страниц! 10 Вы можете бесплатно скачать техническое описание Microchip по адресу http: // www.microchip.com. В название даташита будет напоминать 16F87X, так как похожие микросхемы часто объединяются в одну документ. 25 3 Учебный проект В техническом описании вы найдете следующий рисунок конфигурации: Ne A 40 [1] «- RB7 / PGD 39 [] «- RB6 / PGC 38 [] «-» RB5 37 [] «-» RB4 36 [] «-» RB3 / PGM 35 [] «-» RB2 34 [] «- RB1 33 [|] «-» RBO / INT 32 [1] + - воо 31 [] «—— vss 30 [1] «-» RD7 / PSP7 29 [] «- RDerpsP6 28 [1] «-» RD5 / PSP5 27 [|] «-» RD4 / PSP4 26 1] «-» RC7 / RX / DT 25 [] «-» RC6 / TxX / CK 24 [1] + - »RC5 / SDO 23 [] «-» RC4ISDI / SDA 22 [] «-» RD3 / PSP3 21 [] «- RD2 / PSP2 MCLRiVPP - [| РАО / АНО «

RAt / AN1 + [1] RAZ / ANZ / NVREF- 4 »[1] RA3 / AN3NREF + + [1] РАСИТОЦКИ «+ [] RAS / AN4ISS «+ - [1] REO / RD / AN5 <+ - [] RE1ÍNRIANG <+ - [1] REZICS / ANT + [] НД »А до 4 4ч ОСЦИЛКИН - »[] = OSC2ICLKOUT + —— [| RCOTIOSOMACKI + - [| CAITIOSICCP2 + - »D] аналоговый вход (порт A) аналог инпуи (порт E) кристалл цифровой inpuloutput PogsckiSCL + - »[1 av0eNDaA sn RCZICCP1 + D 17 C16F877 / 874 RB7 / PGD RB6 / PGC RB5 RB4 RB3 / PGM RB2 RB1 RBO / INT О + - воо - сила [1] + - vss RD7 / PSP7 RD6 / PSP6 RD5 / PSP5 RD4 / PSP4 j серийный RETRATA соединение RCB / TX / CK RC5 / SDO RC4 / SDI / SDA RD3 / PSP3 RD2 / PSP2 цифровой ввод, вывод (порт B) rt C (RC rDopSPO + »[ цифровой /, RD1 / PSP1 «+ -» D] ввод / вывод mr di (порт D) TD.Рисунок 17. Расположение выводов для 16F877 с пояснениями. 27 3 Учебный проект + 5В 11/32 E 168877 142310 13 14 2 23 [1] о Ma gi PM TA s | É Is сделать Ss 2 A e 5 8 s TT YE Yi (зеленый) (синий) k Рисунок 18. Схема учебного проекта. В этом примере светодиоды синие »? и зеленый. Но цвет не важен. Резистор Однако это очень важно для последовательного включения светодиода кэш-памяти. Он ограничивает ток через ВЕЛ. Без этого резистора PICTM или светодиод вышли бы из строя - и обычно это самый дорогой компонент, который ломается первым.Рисунок 19. Учебный проект по оборудованию. Поместите все компоненты на макетную плату. Убедитесь, что все провода на самом деле вставлены в отверстия, и что все 40 штифтов 16F877 также находятся в отверстиях, а не согнутый под PICTM, на одном конце PICTM вы увидите то, что выглядит как половина Луна; здесь расположены контакты 1 и 40. Часто бывает также небольшой кружок, обозначьте контакт 1. Точно следуйте схеме и используйте изображение на Рисунке 19, чтобы проверить 2 синих светодиода очень дороги.Вы найдете его в комплекте оборудования из-за фейдера RGB. проект в разделе 13.1.5. Если вы не приобрели комплект оборудования, вы можете заменить синие светодиоды в этот и другие проекты с красными (кроме, конечно, фейдера RGB). 30 3.1 Аппаратное обеспечение что вы правильно поняли схему. Слева видны провода. соединяющие верхнюю и нижнюю шины питания, а также длинные провода от программатора. Их нет на схеме, но их все равно нужно соединить.В верхней правой части макета находятся провода от источника питания 5 В. В блок питания должен быть достаточно стабилизированным (например, с UA7805). В кэш-памяти В четырех углах макета находится конденсатор емкостью 0,1 мкФ (что соответствует 100 нФ). (Обратите внимание, что на картинке видны только два угла.) Они устраняют колебания мощности. Длинные провода, выходящие из рисунка слева, от программатора. Если вы используете Внутрисхемный программатор Wisp628 соединения должны быть выполнены следующим образом: Цветовое соединение желтая булавка l синий контакт 40 зеленый pin39 белая булавка36 красный + 5В черный - земля У ряда деталей, таких как светодиоды, есть положительные и отрицательные стороны.Если вы посмотрите внимательно внутри светодиода вы увидите, что один из контактов кажется шире. Это отрицательная сторона и должна быть подключена к более низкому напряжению. (Обычно этот провод тоже короче другой стороны.) На схеме символ светодиода выглядит как стрелка. Легко запомнить правило: стрелка всегда указывает в отрицательную сторону. + D- Рисунок 20. Положительные и отрицательные стороны светодиода. ! 4 Настоящее название положительной стороны - анод, а отрицательной - катод.31 год 3 Учебный проект Перед включением питания дважды проверьте все детали и соединения. Затем переключите выключить снова. 3.2 Программное обеспечение Программа написана с использованием редактора: JALedit. Конечно, любой другой редактор может быть используется, но у этого есть специальные функции, которые делают очень хорошо подходящим для использования с JAL. После запуска редактора вы увидите пустую страницу: здесь вы войдете в программа. [Flo EMF Soseh Vw Compl Took Hb 7 Dj - [m | x / 6/58] Pale mise] Обозреватель кода 2x E Нажмите FStoRehesh + | | a] [яйцо Алеслей E старше Процедуры Funetene 5 Постоянная точность записи | осца Vassbies 7 pin / d9 direccion = Ouepur un - Labs ám stand 1 12 pán ds = высокий 13 пине = низкий 14 декабря 1401) 45 15 LaDe omgawi cesta 2 pán ea = низкий 18 pánieé = высокий 19 задержка 1с (1) 20 21 конец 1o0p Рисунок 21.JALedit с учебной программой. Программа состоит из серии команд. Эти команды сообщают 16F877, что он нужно сделать. Команды обрабатываются, начиная с верха страницы и далее вниз. (некоторые команды заставят его переходить в разные части). Программирование JAL язык не очень конкретен в том, как вы размещаете команды на странице. Но вам нужно уметь это понимать самостоятельно, поэтому мы сформулируем для себя несколько правил: 1. В каждой строке будет только одна команда. 2. Короткие комментарии будут использоваться для объяснения того, что делает программа.3. При циклах и условных командах делаем отступ. Смысл третьего правила станет ясен позже. Чтобы программу было легче читать JALedit будет отмечать все, что вы вводите, цветовым кодом. Это не влияет на функциональность программа. 32 3.2 Программное обеспечение При использовании команд, используемых до сих пор, светодиоды будут мигать только один раз, но настоящий свет затирания не останавливается. Таким образом, наши команды нужно повторять непрерывно, по сути, «вечно»: вечная петля конец цикла Вот как выглядит вся программа: -—- JAL 204 включают 16F877 bem - определения контакт c4 направление = выход контакт d3 направление = выход вечная петля - светодиоды в стартовом состоянии штифт d3 = высокий контакт cd = низкий задержка Is (l) -— светодиоды включены пин d3 - низкий контакт c4- высокий задержка Есть (1) конец луп Вы видите, что цикл, который повторяется бесконечно, является отступом.Это очень ясно дает понять где цикл начинается и где он заканчивается. Помните, это было третье правило, которое мы сделали о запись в программе: «Циклы AL и условные команды, которые мы делаем отступом» Теперь самое время ввести программу в редактор и сохранить ее. В меню файла выберите «Сохранить как» и введите подходящее название для этой программы, например «Учебник». Не вводите файл. расширение, оно будет добавлено автоматически. Может быть хорошей идеей использовать отдельный каталог для каждого проекта, который вы создаете. Сюда все, что связано с проектом, аккуратно сгруппировано.35 год 3 Учебный проект 3.3 Компиляция и загрузка Первая проверка - убедиться, что программа введена правильно. Нажмите на кнопку с зеленым треугольником (скомпилировать активный файл JAL) или нажать F9. Рисунок 23. Компиляция активного файла JAL. Вы можете открывать несколько файлов одновременно, но только один из них является «активным». Для этого файла вкладка вверху синего цвета. Если вы следовали инструкциям, у вас есть только один файл открыт (тот, который вы только что ввели), поэтому он автоматически становится активным.На короткое время появится небольшое окно, а затем в окне «Результаты компиляции» внизу отображается сообщение. Надеюсь, это начнется с: jal 2.0.4 (от 16 августа 2006 г.)! O ошибок, O предупреждений За этими двумя строками следуют многие другие, но на данный момент они не важны. Нет Ошибки, кстати, не означают, что ваша программа будет делать то, что вы хотите, или даже работать. Это просто означает, что вы не допустили никаких синтаксических ошибок. Предположим, например, что вы при случайном вводе вывода вместо вывода вы сразу получите сообщение об ошибке нравится: jal 2.0.4 (составлено 16 августа 2006 г.) [Ошибка] (tutorial.jal) [Строка 6] "вывод" не определен 1 ошибок, O предупреждений Компилятор сообщает, что ошибка была сделана в строке 6. Предполагая, что вы не допустили ошибок, программу можно загрузить в PICTM. оборудование, описанное в предыдущем разделе, необходимо укомплектовать и подключить к программатор и блок питания. Включите питание »и на ПК нажмите кнопку с интегральной схемой и зеленой стрелкой (компиляция + программа) или нажмите Ctrl-F9. «Если используется более новая версия JAL, в этой строке будет отображаться другой номер и дата.Это не влияет на результат. 36 3.4 Отладка EEE Рисунок 24. Компиляция и программа. Снова появляется окно компиляции, но на этот раз за ним следует окно с черным фон. Это второе окно принадлежит программному обеспечению вашего программиста, в этом чехол для программного обеспечения Xwisp2. Рисунок 25. Программное обеспечение Xwisp2 в действии. Вы можете наблюдать за процессом загрузки в черном окне. После скачивания программа PICTM, программа автоматически проверяется, чтобы подтвердить, что загрузка прошла успешно.Если все в порядке, светодиоды начнут мигать, а окно закроется. 3.4 Отладка Если все прошло хорошо, вы можете пропустить этот раздел и сразу перейти к разделу 3.5. Если это не так Действуйте по плану, найдите свой симптом в таблице ниже и следуйте инструкциям. «7 Примечание: эти инструкции применимы только в том случае, если вы используете рекомендуемый программатор Wisp628. если ты используйте другого программиста, вам нужно изменить настройки JALedit в соответствии с требованиями этого программиста. Wisp628 - это внутрисхемный программатор. Если ваш нет.тогда PIC должен быть удален из макетной платы (с выключенным питанием), а затем следуйте инструкциям, прилагаемым к вашему программист. 37 3 Учебный проект Шестнадцатеричный файл «Это файл, который фактически отправляется программисту для загрузки в PICTM. Он содержит скомпилированная программа в шестнадцатеричном коде ». Вот его фрагмент: : «10001000840A AOOBO7280800A0018313263084005F : 100020000330042083 132B308400063004201 E 2864 : 100030002708870008002808880008008312 430109 : 100040008B014528AFO1B0013C2883120313F23025 : 10005000 400004304 100283042000A 128A | LAZOBCT7 Файл asm (ассемблер) Это дополнительный файл, созданный для того, чтобы вы могли использовать свою программу с инструментами, которые были специально разработан для использования ассемблера, такого как бесплатный редактор / симулятор, предлагаемый производитель Microchip.” Если вы посмотрите этот файл, вы сразу поймете, почему JAL так популярен. язык. Каждая строка кода JAL показана с переводом на ассемблер под ней. 5 13-контактный dS = высокий datalo clrv порт d тень bsf v порт d тень, 3 коллируйте 1 банк d флеш s 14 pinc4 = низкий порт данных clrv и тень 83 bef v порт c тень, 4 вызовите 1 порте флеш 15 задержка Is (l) Moviw 1 звонок | задержка !? Подробнее о шестнадцатеричных файлах читайте в разделе 14,7, º Эта программа называется MPLAB * и может быть бесплатно загружена с httpi / swewy микрочип.com. Искать MPLAB? EDI. Есть и платные версии, но бесплатная. версия подойдет, 40 3.6 Другие результаты Делимся своими знаниями Если вы написали интересную программу или обнаружили полезный трюк, выложить в Интернет. Таким образом, другие люди могут извлечь уроки из вашего опыта. И если вы напишите свою страницу на английском, вы сможете связаться с любителями со всего мира, Благодаря моему сайту у меня появились друзья во многих разных странах! На сайте http: // www.boekinto.tk вы найдете несколько таких ссылок на страницы JAL. 41 год 4 переключателя В этой главе будут рассмотрены проекты, связанные с переключателем. Это не очень сложная тема, особенно после того, как вы закончили учебник в главе 3. Но эти проекты хороши следующий шаг перед более сложными проектами позже. Проект Таймер «Двусторонний переключатель Игральная кость Секретный дверной звонок 4.1 Таймер Описание Также известен как моностабильный мультивибратор. (или одноразовый мультивибратор). Вы нажимаете нажмите кнопку один раз, и светодиод останется включенным на фиксированное время.Используйте кнопку, чтобы включить светодиод и выключенный. Также известен как бистабильный мультивибратор. Электронные игральные кости; заявка на дребезженный переключатель. Дверной звонок, который звонит только тогда, когда код вводится с клавиатуры. Включает объяснение того, как процедуры и JAL библиотеки сделаны. Таймер, показанный в этом проекте, также известен как моностабильный мультивибратор. нажмите кнопку vnce, и TED останется включенным в течение фиксированного времени. Техническое образование Используемый вывод (то есть микроконтроллер «смотрит» на этот вывод) никогда не допускается. плавать - он всегда должен быть подключен либо к 5В, либо к земле.Это означает, что у вас есть mwo способы подключения коммутатора: 42 4.1 Таймер ifpin d! тогда - переключить пин d2 - высокий задержка 1563) контакт d2 = низкий конец, если В начале программы вам необходимо определить направление используемого пина кеша: pin dl direction = input контакт d2 направление = выход Переключатель находится на контакте dl, значит, это вход ?. Светодиод находится на контакте d2, так что это выход. Вот завершенная программа: - JAL 2.0.4 включает причал 16F877 - определить булавки pin dt direction = input контакт d2 направление = выход вечная петля ifpin dl тогда = switeh это ом контакт d2 = высокий задержка 1с (3) контакт d2 = низкий конец, если конец цикла * Вход означает вход в микроконтроллер.45 4 переключателя В этой программе вы могли отказаться от трех специальных предметов: - JAL 2.0.4 включает причал 16F877 Комментарии на английском языке Это строка комментария. Компилятор будет ничего с этим не делать; это предназначено для люди. [Послушайте хорошую идею отметить JAL версия, которую вы использовали, потому что не все версии взаимозаменяемые. Кроме того, программу можно скачать в микроконтроллер, необходимый компилятору знать, какой это тип. Эта информация находится в отдельный файл, называемый библиотекой. Стандарт библиотека, используемая во всех проектах, в этой книге называется 16F877 bert.Помимо типа зависимая информация содержит в себе целое диапазон дополнительных команд, которые вы можете использовать в своей программе. Эти команды описано в разделе 14.2. Итак, каждая программа начинается с этой строки. Даже в неанглоязычных версиях этого книга Комментарии на английском языке используются в исходный код. Это облегчит обмен программы и информация с другими пользователями, поскольку основной язык в международном группы пользователей - англ. Довольно неудобно помнить, что к какому выводу подключено.Вы можете значительно упростите задачу, назвав контакты в вашей программе, например: Переключатель битов var - pin dl светодиод бит var is pin d2 Здесь говорится, что «переключатель» означает то же, что «контакт dl», а «светодиод» означает то же, что и «Pin d2», вы уже знаете, [или компилятор, «on» означает то же самое, что и «high» и «Выкл» означает то же самое 46 "низкий". Итак, теперь вы можете написать программу как: 4.1 Таймер если переключить то - переключатель включен ted = on задержка Есть (3) led - выключен конец, если Да, это намного лучше. И вы обнаружите, что оба метода используются в реальном мире, а также в этой книге.Для небольших, простых программ обычно не требуется определить контакты, но в более крупных и сложных программах это отличный способ уменьшить количество ошибок Итак, «читаемая» версия выглядит так: —JAL 2.0.4 включает причал 16F877 Переключатель битов var - pin dl светодиод бит var is pin d2 - определить булавки pin di direction - вход контакт d2 направление = выход вечная петля если переключить то - переключатель включен led = on задержка 1с (3) светодиод = выключен конец, если конец цикла 47 4 переключателя 4.2 Двухпозиционный переключатель В этом проекте кнопочный переключатель используется для включения и выключения светодиода.Это двустороннее переключатель также известен как бистабильный мультивибратор. Техническое образование План состоит в том, чтобы нажать кнопку и включить светодиод, если он не горит, или включить его, чтобы заработать. оказывается включенным. Если бы это была компьютерная программа, трудно было бы узнать, Светодиод горит или выключен. К счастью, это PICIM, поэтому мы можем просто проверить состояние штифта, а потом поменять! Wo будет использовать оператор NOT (или дополнение) для этого. Операция НЕ равняется 1 на O и O на 1 и записывается как восклицательный знак (1).Чтобы проиллюстрировать, что оператор мы используем таблицу истинности: Вход Выход =! Вход 1 0 0 1 Поскольку цифровой вывод может находиться только в одном из двух состояний (O или 1), мы можем изменить его состояние, например это: вывод d2 = "вывод d2 Или, при использовании имен instcad ví pins: led =! вел Таким образом, с помощью этого небольшого фрагмента кода светодиод будет включаться и выключаться каждый раз, когда переключатель находится в нажата: если переключить то led =! ред конец, если * См. Раздел 14.1 для полного обзора всех доступных операторов. 50 4.2 Двухпозиционный переключатель Эта программа будет работать, но вы не добьетесь того, чтобы она работала так, как мы хотим t0.До тебя Даже уберите палец с переключателя, T.FD включается и выключается тысячи раз, и это никто не догадывается, в какой позиции он окажется. Поэтому программе нужно дождаться, пока вы уберите палец с переключателя, прежде чем что-либо делать. Небольшая петля используется там, где программа будет вращаться, пока переключатель не перестанет быть нажатым: в то время как цикл переключения конец цикла Единственная оставшаяся проблема - подпрыгивание. При нажатии переключателя металлические контакты внутренний подход, а затем скользить друг по другу.Во время этого контакт извести происходит и теряется, вперед и назад много раз. Вы не увидите ничего из этого, но микроконтроллер будет! Tt vvill рассматривайте это как серию включений / выключений. Чтобы это исправить, достаточно небольшой задержки. Вот что весь код выглядит так: если переключить то светодиод =! светодиод в то время как цикл переключения задержка 10 мс (1) конец цикла конец, если Использование fed =! светодиод (или вывод d? =! pin d2) связан с небольшим риском. Чтобы заставить эту работу программе сначала необходимо знать текущее состояние вывода. Предположим, вы сделайте булавку высокой.Qn контакт представляет собой конденсатор Jarge, который должен заряжаться первым, прежде чем контактный на самом деле высокий (этот нагрузочный конденсатор «снижает» напряжение). Если в этот момент микроконтроллер должен был проверить состояние контакта, он обнаружит, что он низкий, пока конденсатор не будет заряжено. Если нагрузка достаточно велика, штифт может никогда не достичь высокого состояния! Очевидно, что чем быстрее состояние штифта меняется, тем острее становится эта проблема. С видимый переключаемый светодиод, это не будет большой проблемой, и мы можем смело использовать элегантный техника выше.Однако, когда частота выше, или когда нагрузка находится на этом контакте например, конденсатор или катушка (например, громкоговоритель), лучше использовать промежуточную переменную. флаг -! флаг контакт d2 = флаг Теперь вы «независимы» от реального мира. 51 4 переключателя Конечно, сначала вам нужно определить переменную flug: var bit flap Программное обеспечение Когда проект включен, мы должны убедиться, что светодиод не горит. led - выключен Определения можно скопировать из программы в п. 4.1 (это тот же переключатель и Светодиод на тех же контактах).Итак, полная программа: - JAL 24 включает 165877 берт Переключатель битов var - pin dl var бит ledispin d2 - определить булавки pin dl direction - вход контакт d2 направление - выход светодиод = выключен вечная петля если переключить то led = Hed при переключении Inop задержка 1Oms (1) конец цикла конец, если конец цикла Аппаратное обеспечение идентично проекту из раздела 4.1. 52 4.3 Игральные кости Переключатель битов var - это вывод di светодиод бит var is pin d2 var бит накормил? вывод d3 var бит Icd3 - это вывод c4 var bit led4 - это контакт c5 светодиоды var bit is pin dá var bit led6 - это вывод ds значение байта var -— слоновые булавки pin dl direction = input контакт d2 направление - выход вывод d3 направление - вывод штифт «4 направление = выход контакт c5 направление = выход контакт d4 направление = выход pin ds direction = output штифт d2-0 штифт d3-0 штифт d5-0 вечная петля если переключить то - переключатель включен в то время как цикл переключения задержка 1Oms (1) конец цикла на 200 петель значение = игральные кости если значение> = 1, то ledl = on else led1 - off end, если если значение> - 2, то led2 = on elsc led2 - off end, если il value> - 3, затем led3 = on else led3 = off end, если если значение> = 4, то ledá = on else led4 = off end, если если значение> = 5, то led5 - on else leds = off end if если значение> - 6, то led6 = on else led6 - off end, если задержка 10 мс (1) 55 4 переключателя конец цикла конец, если конец цикла Аппаратное обеспечение После добавления пяти светодиодов у нас теперь есть 6 светодиодных кубиков.Эм 2 [e] 1eg77 | 1 "цю" Рисунок 29. Электронные игральные кости. На макете это выглядит так. Веселым упражнением было бы расставить светодиоды как глаза на кубике, и посмотрите, какие изменения нужно внести в программу, чтобы зажечь правильные светодиоды для каждого номера. Рисунок 30. Электронные игральные кости. 56 4.4 Секретный дверной звонок 4.4 Секретный дверной звонок Здесь у нас есть дверной звонок, который звонит только тогда, когда на клавиатуре введен секретный код. Итак, теперь вы можете выбрать, кто может звонить в ваш дверной звонок.В этом проекте мы также объясним как разрабатывать и создавать процедуры и даже создавать свою собственную библиотеку. Техническое образование Клавиатура - это просто набор кнопок. В этом проекте клавиатура 4x3 (12 кнопок) , они пронумерованы от O до 9 и включают знаки 4 и *. Вы могли ожидать 24 соединения для 12 кнопок, а может быть даже 13, если у них один общий вывод, но когда кнопки расположены грамотно, требуется всего семь подключений ... как вы можете см. рисунок 31 00 1 О я ú 4 / о q Рисунок 31.Расположение клавиш на клавиатуре. На этой клавиатуре, когда нажата цифра O, контакты 3 и 6 соединяются с каждым. Другие. Итак, единственное, что нужно программе (нужно проверить, подключены ли какие-либо контакты к друг с другом. Вот как мы это делаем ... Три ряда подключены к контактам микроконтроллера, которые определены как входы, и эти контакты затем подключаются через резистор к земле. Итак, ПОС! » будет обнаруживать кеш эти руты как земляные (низкие). Столбцы подключены к выводам микроконтроллера, определенным как выходы.Все из этого выходы установлены на низкий уровень. 57 год 4 переключателя это выглядит не очень хорошо, и если выяснится, что цикл противодействия нужно изменить, мы пришлось бы проделать это 12 раз. Это рецепт ошибок. По этой причине лучше используйте процедуру. Сделать процедуру очень легко. Вы начинаете с внешнего: процедура дебонсирования конец процедуры Теперь вам нужно выяснить, какие данные нужны процедуре для работы. В этом в случае, если это число, указывающее, какой штифт деблокировать. Мы назовем переменную pinmr для "пин код".А поскольку возможных выводов всего четыре, байта достаточно. В переменная входит в процедуру следующим образом: дребезг процедуры (байт в pinnr) конец процедуры Никаких данных возвращать (выводить) не требуется, поэтому мы можем приступить к написанию тела процедуры. Этот обрабатывается точно так же, как и при обычном программировании. Код для вывода dcbounce c3 будет выглядеть так: ipinnr == 3, тогда в то время как булавка € 3 == высокая петля задержка 10 мс (1) конец цикла конец, если Итак, мы можем добавить его в нашу процедуру: дребезг процедуры (байт в pinnr) если pinnr == 3, то в то время как контакт c3 == высокий контур задержка 1Oms (1) конец цикла конец, если конец процедуры Теперь все, что вам нужно сделать, это добавить процедуры устранения ошибок для других выводов.Мы решаем на это указывает на то, что другие ряды клавиатуры соединены с контактами cO, cl и c2. 60 4.4 Секретный дверной звонок Пока мы были отвлечены отколотыми штифтами, было ясно, что не только штырь c3 нуждается в можно посмотреть, но и другие строки. Также нам нужно обработать все столбцы. Вот как это выглядит в TAL: процедура чтения койпада (байтовый ключ) есть настройки по умолчанию pin dO - низкий штифт dl = контакт d2 - нажата клавиша инициализации ключ = 255 pin dO - высокий если вывод e0 = - высокий, то ключ - 9 дебаунс (0) endif если контакт cl == высокий, то ключ -6 дебаунс (1) дебаунс (2) конец, если ifpin c3 == high lhen ключ = 0 дебаунс (3) конец, если контакт dO = низкий штифт di = высокий ifpin cO - высокий, то ключ - 10 дебаунс (0) endif ifpin cl - высокий тогда ключ - 7 дебаунс (1) конец, если если контакт c2 == высокий, то 61 4 переключателя ключ - 4 дебаунс (2) конец, если iípin c3 == high, затем ключ - 1 дебаунс (3) конец, если штифт dl = низкий пин d2 - высокий если контакт cO - = высокий, то ключ = 11 дебаунс (0) конец, если ifpín cl == high, то ключ = 8 дебаунс (1) конец, если ifpin c2 - высокий, то ключ -5 дебаунс (2) конец, если ifpin e3 == high, то ключ-2 дебаунс (3) конец, если контакт d2 = низкий конец процедуры Вы заметите, что я снова использовал процедуру.Кажется, что это не нужно или даже полезный. Причина использования проста: если у вас есть клавиатура, вы можете использовать ее в другие проекты. И в каждом проекте вы, вероятно, захотите прочитать и обсудить кнопки. Таким образом, вместо того, чтобы изобретать колесо несколько раз, мы можем поместить недавно найденное знания в библиотеку, а в библиотеке это должно быть записано как процедура Для хорошей библиотеки нам нужны две важные части. Pirst, определение используемых штифтов. Это лучше всего поместить это в библиотеку; иначе в следующий раз вы не вспомните какая булавка куда идет.62 если pinnr == 1, то в то время как штифт cl == высокий цикл задержка 10 мс (1) конец цикла конец, если если pinnr - 2, то в то время как контакт c2 == высокий контур задержка 1Omsfl) конец цикла конец, если если pinnr == 3, то в то время как контакт c3 == высокий контур задержка 10 мс (l) конец цикла конец, если конец процедуры - определить нажатую клавишу процедура чтения клавиатуры (байтовый ключ) настройки по умолчанию контакт dO = низкий штифт dl = низкий пин d2 - низкий - нажата клавиша инициализации ключ = 255 контакт dO = высокий ifpin cO == high, то ключ = 9 дебаунс (0) конец, если iFpin cl - тогда высокий ключ = 6 дебаунс (1) конец, если ifpin c2 == high, то ключ - 3 дебаунс (2) endif контакт c3 == высокий, тогда ключ = 0 4.4 Секретный дверной звонок 65 4 переключателя 66 дебаунс (3) конец, если контакт dO = низкий штифт dl = высокий ifpm cO - высокий, то ключ = 10 дебаунс (0) конец, если tfpm el = высокий, затем ключ - 7 дебаунс (1) конец, если если вывод c2 - высокий, то ключ - 4 debounçe (2) конец, если контакт c3 == высокий, тогда ключ = 1 дебаунс (3) конец, если штифт dl = низкий контакт d2 = высокий ifpin c0 - высокий, то ключ = I1 противник (0) закончи ifpin cl == high, тогда ключ = 8 дебаунс (1) Endaf iFpin e2 == high, тогда ключ = 5 дебаунс (2) конец, если ifpin e3 == high, то ключ —- 2 дебаунс (3) конец, если контакт d2 = низкий 4.4 Секретный дверной звонок конец процедуры Обратите внимание, что кнопке с * bas был присвоен номер 10, а * был присвоил номер 11. Хорошо, теперь откройте новый файл в JALedit и войдите в библиотеку. Выберите хорошее имя, чтобы уметь узнавать библиотеку в будущем и знать, для чего она нужна. Мы будем использовать имя keypadás3 (расширение .JAL добавляется автоматически) и сохраните библиотеку в том же каталог, как и другие библиотеки. Если вы загрузили пакет бесплатного программного обеспечения, эта библиотека уже в каталоге вашей библиотеки.А теперь, когда вы узнали, как создать процедуру и библиотеку, вернемся к секретный проект дверного звонка! Программное обеспечение Теперь у нас есть все программные компоненты, необходимые для надежного определения того, какая кнопка была нажал. В этом проекте мы будем использовать четырехзначный код, где все цифры должны быть в правильный заказ. Сначала мы определим два массива: один для цифр, вводимых в клавиатуры и один для секретного кода. Для вашего секретного кода мы выберем 5-5-7-8. var byte doorbell | 4] байтовый код var [4] - [5,5, Вы, несомненно, обратили внимание на переменную lhat cach в JAL.есть имя. В массиве все переменные имеют одно и то же имя. Поэтому мы должны использовать индекс с этим именем, чтобы указать какую переменную в массиве мы хотим. Например, код [2] будет иметь значение 7 (Обратите внимание, что индекс массива начинается с 0. Итак, код [0] имеет значение 5.) Мы не подадим никакой визуальной или звуковой индикации, если будет нажата неправильная кнопка. Таким образом нежелательный посетитель не знает, какие ключи неправильные, и даже не знает, сколько цифр в секретный код. Фактически, мы ") ставим все введенные числа в ряд и просто ждем, пока четыре правильные цифры появляются в правильном порядке.читать клавиатуру (номер) - посмотреть, была ли введена правильная последовательность ifnumber! = 255, тогда правильно = 0) doorbel! [0] = doorbeilf1) 67 4 переключателя - если код правильный, позвоните в звонок если правильно == 4, то контакт b5 = высокий задержка Есть (1) контакт b5 = низкий правильно = O конец, если конец цикла Аппаратное обеспечение На схеме вы узнаете соединения между клавиатурой и PIC " с рядом резисторов 10 кОм на землю - точно так же, как подключаются другие переключатели. Зуммер содержит катушку и не может быть напрямую подключен к PIC, поэтому TC4427A Был использован драйвер MOSFET.В разделах 7.1 и 12.7 это устройство подробно обсуждается. В настоящее время мы будем считать само собой разумеющимся, что это адекватно приводит в действие зуммер. E + 5v TC442TA, 6валт зуммер Рисунок 33. Схема секретного дверного звонка. На макетной плате вы можете увидеть готовый проект. Если вы присмотритесь, вы заметите что клавиатура имеет 10, а не 7 соединений. Это потому, что это старая телефонная клавиатура. с переставленными клавишами. Зеленые провода рядом с разъемом исправляют это соединяющие провода 1 с 10 и 3 с 8 и 9.70 4.4 Секретный дверной звонок Если в клавиатуре присутствуют диоды dl, d2 и d3, добавлять их не нужно. В противном случае можно использовать диоды 1N4007. Эти диоды гарантируют, что вы выиграете от короткого замыкания. цепи на выводах PIC, если кто-то одновременно нажимает две кнопки ». Рисунок 34. Секретный дверной звонок с зуммером. Опция 1 Вместо зуммера можно было подключить электронный замок. В сочетании с достойным клавиатура теперь у вас есть кодовый замок. Очевидно, что электроника не должна устанавливаться в такая же коробка, что и клавиатура; в противном случае грабителю было бы очень легко.А также поскольку нет визуальной или звуковой индикации неправильного кода, грабитель понятия не имеет какие числа верны или какой длины код. Тем не менее, это все еще игрушка и по нет означает защиту от взлома. Вариант 2 Если вы уже прочитали главу 5, и особенно раздел 6.2, вы могли подумать, вы, что добавив несколько хорошо подобранных резисторов к кнопкам, вам понадобится только один подключение к PIC "вместо 7. Это становится аналоговым входом, где напряжение на входе указывает, какая клавиша нажата.* вы также можете решить эту проблему без диодов, заменив контакты do, dl и d2 на входы, когда они не нужны как выходы. В разделе 14.8 обсуждается эта очень элегантная, но редко используемая техника. п 4 переключателя Теоретически это правильно, но, к сожалению, на практике нет! Каждая клавиша клавиатуры состоит из ol'a проводящая накладка, которая удерживается от контактов упругим материалом. Когда вы нажмите кнопку, площадка касается двух металлических контактов на печатной плате, таким образом соединяя их. Если вы нажмете слегка, контакт будет только малым, и, следовательно, высокое сопротивление, но если вы сильно нажмете, контакт будет намного больше и, следовательно, более низкий сопротивление.Таким образом, чем сильнее вы нажимаете, тем меньше сопротивление, что означает любое значимое измерение этого аналогового значения невозможно. * Кто-то однажды написал, что разница между теорией и практикой в ​​том, что в теории нет разница, но на практике есть. 72 5.1 Мигающий светодиод переменной скорости Остальные scltings так же просты: const АЦП. аппаратное обеспечение NVref = 0 const Rsource оборудования АЦП = 10 000 ” const аппаратное высокое разрешение АЦП = Irue Мы не используем опорное напряжение (все будет измеряться относительно 15В). власть).поэтому NVref = O. Если вы хотите измерить очень малые напряжения, вы можете рассмотреть используя опорное напряжение, чтобы лучше использовать доступное разрешение. Максимальное сопротивление, которое будет подключено к контактам, составляет 10 кОмº, поэтому Rsource = 10 000. Разрешение (точность) установлено на 10 бит (высокое разрешение). После того, как эти настройки были выполнены, появляется целый ряд команд, связанных с АЦП. доступны в составе библиотеки причалов 16H877: ADC init Инициализирует аналого-цифровой преобразователь. no ADC = X Установите количество аналого-цифровых каналов, которое вы хотите использовать (см. таблицу).ADC on Включите A / D (на выбранных каналах). ADC off Выключите A / D (чтобы все контакты стали цифровыми). Чтение АЦП (канал АЦП) Считывание аналогового значения на канале ”в слово. Байты чтения АЦП (канал АЦП, считывание аналогового значения на канале »в ADC Hbyte, ADO Lbyte) два отдельных байта. Чтение АЦП в низком разрешении Чтение аналогового значения на канале ”за один (ADC chan) байт, поэтому с низким разрешением (максимальное значение: 255). * В JAL символы подчеркивания в числах не имеют значения и используются только для облегчения чтения. Так 10 000 совпадает с ЛОГОТИПОМ.3 В таблице рекомендуется это максимальное значение. 3º Канал - это номер AN в таблице на предыдущей странице. 75 5 аналого-цифровое преобразование Программное обеспечение После того, как переменные и направления выводов определены, мы можем провести измерение в низкое разрешение: resist = чтение АЦП в низком разрешении (3) Мы подключим переменный резистор к выводу a3 (аналого-цифровой канал AN3). Обратите внимание, что сопротивление было изменено. определяется как байт, поэтому он не может содержать значение выше 255. Чтобы получить частоту вспышки в диапазоне от 30 до 157 мс, необходимо отрегулировать сопротивление.Деление без остатка * (поэтому 255/2 будет равно 127). - преобразовать в подходящий диапазон сопротивляться = (сопротивляться / 2) +30 Не все, что нам нужно сделать, это чередовать пин между высоким и низким и немного подождать. между: -— и мигать задержка Ims (сопротивляться) контакт dO = низкий задержка Ims (сопротивляться) pin dO - высокий Собирая все это вместе, мы получаем следующее: - AL 2.0.4 включает причал 16F877 - определить штифты | а3, направление - ввод pin dO direction - выход -— общая переменная var byte resist вечная петля * см. пояснения к операторам в разделе 14.1. 76 5.1 Мигающий светодиод переменной скорости - взять образец resist = чтение АЦП в низком разрешении (3) - преобразовать в подходящий диапазон сопротивляться = (сопротивляться / 2) + 30 - и мигать задержка Ims (сопротивляться) контакт dO = низкий задержка Ims (сопротивляться) контакт dO = высокий конец цикла Аппаратное обеспечение Переменный резистор 10 кОм подключен к выводу a3. Выбрано значение 10k. потому что в разделе настроек мы ввели это как максимальное сопротивление для A / D конвертер ». К выводу 19 (dO) подключен светодиод с ограничивающим резистором. Наша схема выглядит так: m1a2 16877 5 1 4281 43 14 19 + 5В 33k 10k LIN б Э.20 пФ 20 МГц TO 20 пФ 330 100 нФ T 1 NZ 3 светодиод IH Рисунок 35. Мигающий светодиод переменной скорости. * «Эта настройка применяется к аналого-цифровому преобразователю и, следовательно, ко всем аналого-цифровым каналам одновременно. 77 5 аналого-цифровое преобразование Аппаратное обеспечение Аппаратное обеспечение практически идентично предыдущему проекту. переменный резистор LDR подключен. Таким образом, переменный резистор можно использовать для регулировки уровень затемнения, при котором загорится светодиод, + 5В а3 Рисунок 37. Подключение LDR через переменный резистор.5.3 Вольтметр В этом проекте аналого-цифровой преобразователь используется для изготовления вольтметра. "Техническое образование В предыдущих проектах мы не обращали особого внимания на реальные измерения, но этот время нам придется присмотреться. Мы упомянули, что (сопротивление оказывалось измеряется, но на самом деле это не совсем так. Переменный резистор был подключен. при полном напряжении питания с центральным контактом, подключенным к PICYM. В этом semp центральный терминал находится под напряжением, которое изменяется в зависимости от положения шкалы.Итак, в Фактически, переменный резистор используется как делитель напряжения. Измерение происходит в & битах в диапазоне 5 вольт. Это означает, что разрешение составляет 5/255 или 0,01961] вольт. Это, конечно, предполагает, что источник питания действительно 5 вольт и остается стабильным, Имейте в виду, что этот измеритель напряжения может измерять только напряжения от 0 до 15 В. Если вы хотите подняться выше "), чтобы добавить делитель напряжения, который технически не очень сложный. На рисунке 38 показано, как можно применить этот делитель напряжения для измерения в диапазон Oto 110 В.(Это, конечно, приведет к снижению разрешения.) 80 5.3 Вольтметр Pery ввод | досв : выход Рисунок 38. Делитель напряжения. Программное обеспечение Программа постоянно измеряет напряжение на AN3: resist = ADC tead с низким разрешением (3) И отправляет результаты измерений на ПК: серийный sw wrile (сопротивляться) Полная программа выглядит так: = JAL 2.0.4 включить 16F877 ее -— определить штифты контакт a3 направление = вход pin dO direction = output - общая переменная var byte resist вечная петля - возьми колодку resist = чтение АЦП в низком разрешении (3) - и переключить последовательный sw запись (сопротивляться) задержка 100 мс (]) 81 год 5 аналого-цифровое преобразование конец цикла ПК может преобразовать это значение в измеренное нами напряжение, просто умножив его на разрешение (0.01961). Достаточно легко добавить небольшой график, чтобы показать фактическое измерение и среднее значение. значение, как вы можете видеть на рисунке 39. Красная линия - это фактическое измерение (как показано на циферблат), а фиолетовая линия i - среднее. 1 включил программное обеспечение вольтметра как часть бесплатного пакета загрузки » | Бет ван Дам (oj2006 ———— вольтметр Вокаге [364 | staa | останавливаться [| 7 Wispsze E | rPoton PE & Coml € Cm3 | € Кома2 € Кома | Comestto IO— | | Рисунок 39.Вольтметр на ПК. * º Посетите http: /Avww.boekinto.tk, чтобы найти готовое к запуску приложение, а также исходный код для Visual Basic. 82 Сдвиг ЖК-дисплея вправо Сдвиг ЖК-дисплея влево Жидкокристаллический курсор pos = позиция ЖК-курсор - выключен ЖК-дисплей мигает = включен ЖК-дисплей = выключен CD custom (память адрес) CharData [] TED clock line pos (байт, строка, позиция) 5.4 Фотометр с ЖК-дисплеем Переместите весь дисплей (оба линий) вправо. Переместите весь дисплей (оба линий) влево. Поместите курсор в позицию указано.Выключите курсор («вкл» убирает его обратно). Включить привязку курсора для Мягкий"). Выключите весь дисплей (или «Онд. Поместите собственный символ в Память T.CD (используйте только адреса Уто 7). Массив для определения пользовательского персонаж. Отправить на ЖК-дисплей запоминать по одному символу за раз Выведите число (от 00 до 99) в указанная позиция, использует ведущую ноль, если меньше 10. В этом проекте мы будем использовать только некоторые из этих команд. Большинство остальных будет использовано в проектах позже в крючке. Начнем с печати текста на ЖК-дисплее.Туалет делать это с помощью нашей новой команды: Положение строки символа на ЖК-дисплее (символ, строка, позиция) Обратите внимание, что номера строк и столбцов начинаются с O. 85 5 аналого-цифровое преобразование | Положение строки | 0 9/1 6 $ | 7/8/9/10 / МН | 12/13) 14 15 | 1 LO 1 | 2/3 | 4] 5 6,7 8 дюймов 9 JiOoJi | IiZiia 14/15 к ва ” А Первый символ (вверху слева) находится в строке 0, позиция 0,7 Для печати слова «Свет» на дисплее первая команда будет: LCD символьная строка pos ("1.", 0.0) [его можно повторять для каждой буквы, но проще использовать массив.Массив - это строка из переменные, которые имеют одно и то же имя, var byte Demo [SJ- EL "Pi ereto Этот массив называется Demo. Таким образом, каждая буква »в массиве также называется Demo, но упоминается с числом, указывающим его позицию в массиве. Demo / 27 - это буква «о». (вы можете видеть, что мы начинаем отсчет с 0). Мы будем использовать небольшой цикл, чтобы отобразить все 5 букв на дисплее: счетчик = () для 5 петли Положение строки символов на ЖК-дисплее (Демо [счетчик], 0 счетчик) counter = counter - | конец цикла Счетчик используется для отслеживания буквы, которую нужно напечатать.Курсор - это надоедливая мигающая строка, которую мы отключим: ЖК-курсор - выключен Свет постоянно измеряется, как мы это делали раньше. Отправка результатов измерения кеша на дисплей возможен, однако постоянная перезапись может привести к Nlicker. Итак, мы «Наивысшая позиция - 15. Вы можете пойти выше, например, LCD num pos (byte, 18), но он будет печатать за пределами видимого дисплея, и вы его не увидите. Если вы еще больше увеличите позицию, вы в конечном итоге в строке 2. Положение столбца, в котором происходит этот цикл, зависит от дисплей используется.В этой книге мы предполагаем 40, но также существуют дисплеи с 0 долларами. «ЕСЛИ вы используете буквы, вы можете написать их одним словом: Demol =" Light " * Вы можете смешивать буквы и цифры - очень интересная особенность JAL. 86 5.4 Фотометр с ЖК-дисплеем будет записывать измерение только тогда, когда оно изменилось. То есть сопротивление не равно к предыдущему измеренному сопротивлению. В JAL мы пишем «не равно» как «1 если сопротивляться! = история тогда Теперь нам нужно вывести результат измерения на дисплей. В слове «Свет» 5 букв, и мы также хотим, чтобы над ним было пространство.Это означает, что измерение должно быть размещено aí положение 6. Вы можете отсчитать его на дисплее, показанном на предыдущей странице, чтобы увидеть, что он верно. Команда буксировки это: LCD num line pos (резист, 0,6) В библиотеке lcd 44780 вы найдете удобную команду 10, отображающую значение в виде полосы. Это немного грубо, потому что блоков всего 16, но все же приятно быстро увидеть приблизительное количество измеренного света. Делим resistanco на Ló и показываем полоса на второй строке (потому что слово «Light» и измерение находятся на первой линия).Вторая строка - это строка номер 1, помните? Итак, наша следующая команда: Прогресс ICD (resist / 16, 1) Программное обеспечение В остальном программа не очень сложна. На старте программы обе библиотеки включены: включают 167877 берт включить светодиод 44780 Следующим шагом будет объявление переменных. Массив тоже объявляется и сразу заполненный. Это не обязательно; вы также можете сначала объявить массив, а затем заполнить его. Как только результат измерения был отображен, нам необходимо его запомнить, чтобы оно не отображалось. для повторного отображения: история - сопротивляться Собирая все это вместе, получаем следующую программу: —JAL 2.04 включают 16E877 берл включить светодиод 44780 87 5 аналого-цифровое преобразование Несколько интересных наблюдений: * ЖК-дисплей подключен в 4-битном режиме. Это означает, что для отправки используются 4 провода. данные с 16F877 на дисплей. Также доступен 8-битный режим, который будет быстрее, но на 16F877 выводов нужно гораздо больше. Используемая нами библиотека поддерживает только 4-битный режим, поскольку он используется чаще. * Контакт «выбор чтения / записи» (5) ЖК-дисплея подключен к земле, потому что никакие данные не считываются с дисплея (ни в одном из проектов в этой книге).Для обоих переменных резисторов | использовали версии тримпота, потому что после их установки правильно, вы никогда не используете их снова. Переменный резистор рядом с LDR можно использовать для точно отрегулируйте измерения в соответствии с количеством света, которое вы хотите измерить. Рисунок 42. Фотометр с ЖК-дисплеем. 90 5.5 Отбор проб 5.5 Отбор проб Этот проект представляет собой пробоотборник температуры с длинной ручкой, используемый для измерения температуры. с термистором NTC в течение длительного периода времени. Результаты отображаются на ПК.Это отличный способ контролировать свой холодильник или температуру в комнате. Техническое образование Цель этого проекта - измерять температуру через равные промежутки времени в течение длительный период времени. Интервал времени между каждой выборкой может составлять всего 10 миллисекунды, до 24 часов ... вы даже можете делать выборки каждые 4000 часов, если хотите. В количество семплов, которые могут быть сохранены в памяти, составляет 7000, поэтому, если вы берете семпл каждые 4000 часов вы не доживете до того дня, когда память заполнится.Первая проблема, которую необходимо решить, - где хранить измерения. Мы собираемся использовать программная память. Детали памяти обсуждаются в главе 10. Это не обязательно. прочитать эту главу, чтобы завершить этот проект, но если вы намереваетесь изменить или Расширьте программу 1 обязательно посоветую сначала прочитать il. Часть программы для хранения в памяти выглядит так: - взять образец data = чтение АЦП в низком разрешении (0) - конечный магазин запись программы eeprom (адрес, данные) counter - counter + 1 адрес - адрес 4 1 если адрес> 7000, то адрес = 7000 счетчик = счетчик -1 конец, если Собранные данные необходимо отправить на ПК по запросу пользователя.! f память полная программа не должна останавливаться, потому что в этом каскаде сохраненные данные больше не будут доступный. Самый простой способ решить эту проблему - перезаписать данные в ячейке памяти. 7000, когда свободных мест больше нет. 91 5 аналого-цифровое преобразование Счетчик переменных отслеживает количество измерений (выборок), у которых есть bcen записано. Это необходимо для того, чтобы мы знали, сколько образцов передать в ПК: ifpin d2 то в то время как контакт d2 конец петли петли задержка 10 мс (1) sendeounter = O для цикла счетчика программа чтения eeprom (начальный адрес + счетчик отправки, данные) последовательная запись SW (данные) sendcounter = sendcounter + 1 конец цикла конец, если Переключатель подключен к выводу d2.В программном коде вы должны распознать техника противодействия, обсуждаемая в разделе 42. Коммутатор запускает извлечение ihe образцы из памяти и отправляют их на ПК. После этого программа продолжится. отбор проб. Таким образом, вы можете использовать переключатель, чтобы получить представление о текущем статусе, не прерывая отбор проб. Однако во время передачи образцы не будут взяты! Образцы берутся не во время каждого цикла, а только по мере необходимости: samplecounter = samplecounter + 1 если счетчик выборок - 60000, то Значение переменной samplecounter увеличивается командой Ims (из-за задержки 1msf7) в примере цикла, который объясняется на следующей странице).В разделе выше каждый 60000 мс (1 минута) выборка, проводная. Поскольку этот счетчик объявлен как слово, он может содержат максимальное значение 65535. А так как там можно записать 7000 измерений это место для 127 часов данных. Если вам нужен более длительный период, можно изменить отчет о задержке. Недостаток в том, что программе также требуется больше времени, чтобы заметить, что пользователь нажал переключатель. если ты измените задержку на один час (примерно за год до того, как у вас закончится память), пользователь может придется подождать час, прежде чем программа проверит состояние переключателя.Решение было бы для использования порта B inlerrupt, но это не будет обсуждаться до раздела 12.2. Итак, на время мы будем придерживаться задержки в 1 миллисекунду. 92 5.5 Отбор проб После того, как программа поработает некоторое время, вы можете запросить выборочные данные, нажав кнопку кнопка (после установки подключения к ПК 232 реалов). Если вы используете Wisp628 программист, перед запуском MICterm необходимо отключить желтый провод, иначе PICTM будет сброшен, и вы потеряете все данные. В разделе 6.1 вы можете найти больше информация о соединениях RS232 с ПК. Терминал ocontroller E) sp | 7 Включить il E Скорость "[[ В среднем 85 песей мне Отправить qa Рисунок 43. Отбор проб по температуре (3 часа). Если вы включите график в MICterm, вы получите хороший обзор всех собранных данных. На Рисунке 43 видно, что утром температура повысилась, а затем осталась на прежнем уровне. константа, кроме момента прикоснулся к NTC. Аппаратное обеспечение NTC подключен как делитель напряжения с резистором 2k2 на выводе 2.95 5 аналого-цифровое преобразование + 5В ti s À о »Е E 168877 ”HE 2ч 1/1281 13 14 20 о 2 з а u u I | 8 e a ds alé a «= А & 8> : Глаза + Рисунок 44. Выборка. Серая капля в нижнем левом углу - это термистор NTC. Синий и зеленый провода от программатора Wisp628. Обратите внимание, что желтый провод не подключен, поэтому программатор можно переключить на сквозной режим без ущерба для PICTM. Если хотите перепрограммировать PICT «вам нужно будет повторно подключить желтый провод (и белый, который не показано на фотографии).Рисунок 45. Отбор проб. 96 6 R $ 232 связь В этой главе мы обсудим несколько проектов, в которых используется последовательное соединение. между PICTM и ПК последовательные соединения представляют собой одноразрядные соединения, в которых данные передаются одним битом. вовремя. Мы будем использовать стандартный протокол для коротких расстояний, который называется 232,2 реала. На ПК полученные данные можно обрабатывать и использовать в других приложениях. Этот очень удобно для проектов домашней автоматизации, где у вас есть несколько модули (PICTMºs), подключенные к одному ПК, настройки и измерения этих затем можно централизованно обрабатывать различные модули.Когда ПК выключен, все модулей будут продолжать работать. Простой пример «это тихая тревога в раздел 6.2. Все проекты в этой книге используют сквозные возможности Wisp628. программатор (см. раздел 14.4). Это позволяет вам установить последовательное соединение с PICTM, когда он не находится в режиме программирования, без необходимости в дополнительном оборудовании. Если ты используйте программиста без его возможностей, вы не сможете выполнять примеры в этом book, если вы не добавите оборудование, описанное в разделе 6.4. Описание Проекта Последовательный счетчик Пример последовательной связи между PICTM и ПК. Тихая сигнализация Бесшумная сигнализация с использованием однопроводной петли. через дом. Внутрисхемная отладка Отличный инструмент для хранения программ PICTM под контролем и произвести отладку намного легче. Последовательное оборудование. Если вы не хотите использовать пароль. через возможности Wisp628 (или если у вас его просто нет) вам нужно это дополнительное оборудование. Рекомендуемый стандарт 232 изначально был разработан для расстояний не более 15 метров.97

PIC микроконтроллеры для начинающих

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

Существуют различные серии 8-битных микроконтроллеров PIC - PIC10F, PIC12F, PIC16F и PIC18F, все с разными функциями и ценами. PIC10F и PIC12F являются самыми дешевыми и обычно имеют меньше памяти, меньшее количество контактов и меньше периферийных устройств.

Серия

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

Серия

PIC16F является самой популярной, поскольку существует дольше всех и имеет самую большую библиотеку кодов в Интернете. Для PIC16F877 было написано много доступного кода и схем, но сегодня это плохой выбор, так как это очень старый дизайн.Если вы хотите как можно проще повторно использовать конструкции PIC16F877, обновитесь до PIC16F887, поскольку теперь он намного дешевле, чем PIC16F877, примерно на 1/3 цены. Он имеет такое же расположение выводов, те же периферийные устройства и тот же код, который будет работать без изменений. Он также имеет встроенные функции отладки, поэтому можно использовать дешевый эмулятор, такой как PICKit2 или PICKit3.

Это 40-контактные микросхемы с 14 КБ памяти, которых достаточно для большинства проектов, даже написанных на C. Они также имеют 256 байт EEPROM для хранения серийных номеров, данных калибровки и других значений, которые необходимо сохранить, если устройство необходимо перепрограммировать. .Периферийные устройства на этом микроконтроллере включают все необходимое для создания проекта и изучения программирования PIC, включая последовательные порты (UART), шины SPI и I2C, а также 14-канальный АЦП. АЦП - 10-битный, что достаточно для большинства приложений. У вас также есть много запасных контактов ввода / вывода.

В качестве выбора для новичков PIC16F887 заслуживает некоторого внимания, потому что он может использовать проекты PIC16F877, но и более новые микроконтроллеры PIC также заслуживают внимания, разумеется, после того, как вы наберетесь опыта.В последние годы Microchip выпустила новую серию микронтроллеров PIC16F, которые начинаются с одного, например PIC16F1519 и PIC16F1789.

Оба эти 40-контактные (такая же распиновка, как у PIC16F877), с аналогичными периферийными устройствами, но вдвое большим объемом памяти и намного лучшим потреблением тока. У них также есть больше инструкций, поэтому, например, вы можете прочитать конфигурационную память (байты идентификатора пользователя, калибровку и предохранители) из вашего кода, в отличие от старых устройств. PIC16F1789 также имеет EEPROM. У них 2 КБ оперативной памяти (PIC16F887 имеет 384 байта), что позволяет компиляторам C создавать лучший и более быстрый код, а их цена разумная.

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

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

PIC18F имеют больше функций и другой набор инструкций - инструкции имеют ширину 16 бит вместо 14 бит, как у PIC16F. Им нужен другой компилятор C, который включен в MPLAB в качестве ограниченной версии. Для них доступно не так много примеров кода, поэтому они не подходят для абсолютных новичков.

Учебные комплекты

Kanda PIC основаны на PIC16F1789, чтобы дать вам лучший старт, но также обсуждают серию PIC18F, чтобы обеспечить хороший путь обновления.

У

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

Microchip PIC Selector в новом окне.

Похожие сообщения
Программисты PIC

PIC16F877 и почему стоит обновить

PIC в системном программировании

.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *