Универсальный внешний накопитель для всех 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. Часть 1. Необходимые инструменты и программы. Основы MPLAB

Итак, вы решили научиться программировать pic-контроллеры. Для начала поговорим о том, что вам для работы с этими контроллерами понадобится.

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

Программа для контроллера — это, как я уже сказал, набор машинных кодов, записанный в файле с расширением «hex» (здесь можно почитать про формат *.hex), который и нужно заливать в контроллер с помощью программатора. Никакого другого языка контроллер не понимает. Следовательно, нужна специальная программа, которая будет переводить текст программы, написанный на каком-либо языке программирования, в машинные коды. Наиболее удобными в этом плане являются интегрированные среды разработки (IDE — integrated development environment), поскольку они могут не только осуществлять перевод текста программы в машинный код, но и производить симуляцию её работы. Причём симуляцию можно проводить пошагово, при этом можно наблюдать состояние регистров или даже менять их состояние по своему желанию. Короче, интегрированные среды помимо, собственно, компиляции (перевода в машинные коды) предоставляют отличные возможности для отладки программы.

IDE, как и программаторов, существует много. Лично я пользуюсь MPLAB и вам рекомендую, по той простой причине, что MPLAB — это IDE от самого производителя PIC-контроллеров — фирмы Microchip, поэтому имеет отличную поддержку (в том числе на русском языке, что особенно приятно). С официального сайта Microchip можно скачать и сам этот пакет, и подробное описание по работе с ним. Если не нашли или ломает искать — ссылки для скачивания здесь, правда это уже не самая свежая версия.

В описании на русском языке про всё рассказано: от установки и настройки до удаления. В большинстве случаев вся установка заключается в том, чтобы запустить setup и ответить на пару вопросов, типа куда ставить драйверы и тому подобное, от себя лишь добавлю, что во избежание глюков ставить пакет надо в такую папку, чтобы в пути были только английские буквы (а не в какую-нибудь, типа C:\Программы\PIC\MPLAB). Вообще, кириллицу в путях к файлам или в названиях файлов лучше не использовать, иначе возможны глюки.

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

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

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

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

Короче говоря, в случае с языком высокого уровня вы изучаете как какой-то дядя обозвал свои способы реализации необходимых вам функций и по каким правилам их надо записывать. В данном случае можно провести следующую аналогию: вы хотите поговорить с китайцем, но вам говорят: “Китайский слишком сложный язык, но есть один дядя в Болгарии, который 20 лет жил в Китае и отлично его выучил. А болгарский язык с русским очень похожи и русскому человеку он интуитивно понятен, так что выучите болгарский, а уж дядя переведёт.”

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

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

Что нужно сделать в MPLAB, чтобы получить желанную прошивку? Как я уже сказал — подробности читайте в руководстве к IDE MPLAB, оно на русском и там всё понятно (если не понятно — идём на форум), я же только кратко перечислю самое основное и дам некоторые рекомендации.

Итак, мы установили MPLAB, хотим написать в нём программу для контроллера и получить готовую прошивку.

Сначала нужно создать проект. Для каждого проекта рекомендую заводить отдельную папку, потому что, во-первых, в проект может входить несколько файлов, а, во-вторых, сам MPLAB создаст ещё несколько вспомогательных файлов (*.lst, *.err, *.cod, *.bkx). Если несколько проектов будут в одной папке, то легко можно запутаться какие файлы к какому проекту относятся. Короче, создаём для проекта новую папку, потом запускаем MPLAB и выбираем меню

Project -> New Project…

В появившемся окошке, в проводнике справа, выбираем нашу папку, в левой части (в поле под надписью File Name) пишем название будущего проекта, например my1. pjt (не забываем указать расширение), и жмём ОК.

Появляется окно с названием Edit Project. Это менеджер проекта, в котором указываются параметры проекта (какие файлы и библиотеки нужно подключить к проекту, какой будет использоваться камень, будет ли использоваться симуляция и многое другое). Находим поле ввода с названием Development Mode. Справа от этого поля есть кнопочка Change… Нажимаем.

Открывается окошко с названием Development Mode, в котором мы видим кучу вкладок. На вкладке

Tools ставим галочку рядом с MPLAB SIM Simulator (грех для отладки симулятором не пользоваться), в поле ввода Processor выбираем контроллер, с которым мы будем работать. На вкладке Clock указываем какая у нас будет частота генератора. Жмём ОК. На ошибку и предупреждение не обращаем внимания, это просто нам говорят, что пока не могут создать .hex (ну правильно, у нас пока и программы нет) и что при изменении настроек надо заново перекомпилировать проект (так мы ещё вообще ни разу не компилировали).

В поле ввода Language Tool Suite выбираем Microchip.

Нажимаем кнопку с названием Add Node… В появившемся окне, в проводнике справа выбираем папку проекта, в поле ввода слева пишем как будет называться файл с текстом программы на ассемблере, например my1.asm (не забываем указывать расширение), и жмём ОК. Всё, теперь мы подключили к проекту файл my1.asm (указали, что текст программы будет в этом файле).

На этом с Edit project заканчиваем, — нажимаем ОК.

Теперь нужно, собственно, создать файл с текстом программы (в менеджере проекта мы просто указали, что текст будет в таком-то файле, но фактически этот файл ещё не создан). Для этого идём в меню File и выбираем пункт New. Откроется окошко редактора с названием Untitled1. Выбираем меню File -> Save As…, в проводнике справа указываем папку проекта, в поле ввода File Name пишем название файла, которое мы указали в менеджере проекта, то есть в нашем примере это будет my1. asm. Если всё сделано правильно, то название окошка редактора поменяется с Untitled1 на \путь\my1.asm.

Вот и всё! Теперь осталось только набрать в окошке редактора текст программы, скомпилировать проект (меню Project->Build All) и, если в программе нет ошибок (что с первого раза бывает очень редко), то в папке проекта появится готовая прошивка (файл с расширением hex), которую можно заливать в контроллер.

  1. Часть 1. Необходимые инструменты и программы. Основы MPLAB
  2. Часть 2. Что такое микроконтроллер и как с ним работать
  3. Часть 3. Структура программы на ассемблере
  4. Часть 4. Разработка рабочей части программы. Алгоритмы
  5. Часть 5. Ассемблер. Организация циклов и ветвлений
  6. Часть 6. Как перевести контроллер в режим программирования и залить в него прошивку

Микроконтроллеры pic для начинающих: схемы, программирование

Atmel Studio

Интегрированная среда разработки (IDE) от компании Atmel для разработки приложений под микроконтроллеры ARM Cortex-M и AVR. Freeware

AVRDUDE

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

WinAVR

Мощная среда разработки с открытым исходным кодом, созданная с целью написания программ для микроконтроллеров серии AVR от компании Atmel. Freeware

BASCOM-AVR

Среда разработки программного кода для микроконтроллеров серии AVR компании Atmel на языке, подобном стандартному Бейсику. Freeware (бесплатная с ограничением на код 4 кБ) и Shareware

CodeVisionAVR

IDE для AVR микроконтроллеров. Из основных достоинств CodeVisionAVR можно отметить то, что он не слишком сложен для самостоятельного освоения, поддерживает все многочисленное семейство микроконтроллеров AVR, формирует емкий и результативный программный код. Платная, есть бесплатная Evaluation-версия с ограничением на код 4 кБ.

VMLAB

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

MPLAB

Единая бесплатная интегрированная среда разработки для контроллеров производства Microchip

MPIDE

Среда разработки, выполненная на базе открытой системы Arduino IDE и предназначенная специально для контроллеров PIC32 от компании Microchip Technology.

WinPic800

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

PICPgm

Простое программное обеспечение для прошивки PIC-микроконтроллеров, отличающееся стабильностью, качеством и скоростью программирования. Freeware

CooCox CoIDE

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

Keil uVision

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

IAR Embedded Workbench

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

Flowcode

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

Algorithm Builder

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

MikroC

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

mikroPascal

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

mikroBasic

Среда разработки программ на языке Бейсик для микроконтроллеров различных производителей. Программа платная от 199$. Есть бесплатная версия с ограничениями на размер кода (до 4096 байт).

MicroCode Studio Plus

Программа для создания и отладки кода, написанного на языке программирования BASIC, под PIC-микроконтроллеры. Программа платная 50$. MicroCode Studio – облегченный, бесплатный вариант с ограничением на кол-во строк кода.

IC Prog

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

Pony Prog 2000

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

SinaProg

Графическая оболочка для программы AVRdude, включающая в себя простой и функциональный AVR fuse-калькулятор. Freeware.

AVR8 Burn-O-Mat

Графическая оболочка для популярной программы AVRDUDE, использующейся при прошивке микроконтроллеров компании Atmel. Freeware.

Khazama AVR Programmer

Небольшая программа, созданная с целью быстрой прошивки микроконтроллеров Atmel AVR. Freeware.

UniProf

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

eXtreme Burner — AVR

Бесплатное программное обеспечение, предназначенное для прошивки AVR-микроконтроллеров.

Code Composer Studio

Интегральная среда проектирования, предназначенная для создания программного обеспечения, использующегося в процессорах и микроконтроллерах компании Texas Instruments Incorporated. Программа платная, бесплатная версия CCS-FREE с рядом ограничений.

TivaWare

Набор высококачественных, полноценных библиотек для контроллеров семейства TIVA от Texas Instruments. Freeware.

FastAVR

Один из лучших компиляторов Basic-подобного языка для серии восьмибитных микроконтроллеров AVR.

Atollic TrueSTUDIO

Интегрированная среда разработки программ для ARM-процессоров, включающая в себя GNU компилятор и отладчик. Среда разработки платная, но есть бесплатная версия TrueSTUDIO Lite с рядом ограничений.

Sourcery CodeBench

Самодостаточная интегрированная среда разработки, предназначенная для создания приложений на C/C++ для IA32, ColdFire, Power, MIPS, ARM и некоторых других архитектур микроконтроллерных устройств. Платная 400$ (есть 30-дневная ознакомительная версия)

CODESYS

Программно-инструментальный комплекс, основанный на стандарте IEC 61131-3 и предназначенный для программирования промышленных контроллеров и компьютеров. На русском языке. Freeware.

Flash Magic

Бесплатное приложение для программирования микроконтроллеров компании NXP Semiconductors

STEP 7-Micro/WIN

Простое и удобное программное обеспечение, созданное для работы с программируемыми контроллерами серии SIMATIC S7-200 компании Siemens AG. Платная.

PIC Simulator Studio

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

PIC Simulator IDE

Программа, предназначенная для отладки кода контроллеров microPIC компании Microchip Technology. Платная от 39 евро (есть ознакомительная версия с ограничениями)

4D Workshop IDE

Специализированная программная среда, предназначенная для работы с микропроцессорами в графических контроллерах и готовых дисплейных модулях компании 4D Systems. Freeware.

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

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

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

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

Рассмотрим этот важный момент – как программировать контроллер на примере широко известной серии ПЛК (PLC — Peripheral Interface Controller): продукта компании Microchip Technology Inc.

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

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

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

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

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

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

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

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

PIC18F4550

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

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

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

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

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

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

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

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

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

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

Нет никакой гарантии, что эта схема способна обеспечить программирование всех контроллеров, поскольку не соответствует полной спецификации программирования.

ISD1700

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

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

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

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

PIC K150 ICSP

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

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

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

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

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

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

Не рекомендуется подключать активные цепи к линии внешнего (основного) сброса (MCLR – Microcontroller Line Reset).

Если сигнал MCLR используется для сброса PIC, следует устанавливать резистор номинальным сопротивлением более 56 кОм между выводами MCLR и подачи напряжения питания.

Рекомендуется в цепь резистора включать конденсатор небольшой ёмкости — менее 100 пФ со смещением на землю (вывод GND).

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

TL866II USB

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

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

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

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

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

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

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

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

АДАПТЕР

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

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

ARDUINO UNO

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

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

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

  • REAL ICE
  • Pickit 1-2-3
  • IC PROG
  • ICD 2-3-4

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

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

PIC Урок 1. Знакомство с семейством PIC

  • Урок 1
  • Наконец-то сегодня нашлось время познакомить вас с ещё одним семейством микроконтроллеров – это микроконтроллеры PIC.
  • Данные микроконтроллеры также являются очень известными, устанавливаются во многие устройства и давно уже снискали у радиолюбителей очень сильный интерес.
  • Разработчиком данного семейства является компания Microchip, которая также ялвяется очень известной и её продукция востребована по всему миру.

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

Также к тому, чтобы поделиться своими знаниями в области программирования данной линейки, меня подтолкнуло то, что я видел много блогов, уроков (в том числе и видео) очень хорошего качества по контроллерам PIC именно с использованием языка ассемблер. А вот на языке C уроков очень мало, что подчёркивает их востребованность.

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

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

Например, те контроллеры AVR, с которыми мы до сих пор работаем, являются 8-битными, а контроллеры STM, которые мы изучаем – 32-битными.

Вот и контроллеры PIC также делятся по битности.

Первая линейка – это 8-битные контроллеры PIC. Наименование их моделей начинается с префикса PIC10/PIC12/PIC16.

Данная линейка также делится на 3 семейства.

1. BASELINE – данная архитектура присутствует у контроллеров PIC10. От более мощной серии она отличается количеством выводов (от 6 до 28), дешевизной.

2. MID-RANGE – данную архитектуру имеют ядра микроконтроллеров PIC12/PIC16. Количество выводов в данной серии увеличено (от 6 до 64), стоят они несколько дороже, зато имеют помимо 35 машинных инструкций, поддерживаемых серией BASELINE, ещё 14 дополнительных инструкций (оптимизированных под компилятор языка C).

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

3. 8-битовые микроконтроллеры PIC18 – это улучшенная серия контроллеров, здесь на борту много другой периферии, количество выводов от 18 до 100, производительность 16 MIPS, поддержка технологии NanoWatt, наличие программироуемого генератора.

Вторая линейка – это 16-битные контроллеры PIC. Они имеют префикс PIC24F и PIC24H. Это уже более мощные контроллеры.

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

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

Третья линейка – это 32-битные контроллеры. Префикс у них уже PIC32. Частота тактирования таких контроллеров до 120 МГц, а у новой серии MZ – до 200 и даже выше.

У меня, например, есть отладочная плата, на которой устрановлен контроллер PIC32MZ2048EFH064, у которого тактовая частота составляет 252 мегагерца. Также здесь ещё более увеличена производительность ядра.

Данное семейство построено на ядре MIPS32®, которое также кроме высокой производительности отличается ещё и низким потреблением энергии.

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

Также, как и рассмотренные, а также рассматриваемые нами контроллеры AVR и STM32, контроллеры PIC работают приблизительно по той же схеме.

Сочиняется программа, собирается в машинный код, понятный арифметическо-логическому устройству контроллера, загружается (прошивается или заливается) в контроллер и затем обеспечивает работу по определённому алгоритму.

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

Давайте немного разберёмся с организацией памяти в контроллерах PIC. Так как мы начнём изучение семейства PIC с более простых 8-битных (принцип от простого – к сложному ведь не отменял никто), то и организацию памяти мы посмотрим у данной серии.

Сначала посомтрим блок-схему контроллера на примере МК PIC16F84A (нажмите на картинку для увеличения изображения)

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

Эти два вида памяти являются энергонезависимыми и после отклчения и сброса контроллера не стираются.

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

Оперативная память контроллера PIC делится на память программ и память данных.

Вот так организована память программ у контроллера PIC16F84A

Микроконтроллеры данной серии имеют счётчик команд, способный адресовать 8К x 14 слов памяти программ и 14-разрядную шину данных памяти программ. Вся память программ разделена на 4 страницы по 2 килослов каждая (0000h-07FFh, 0800h-0FFFh, 1000h-17FFh, 1800h-1FFFh).

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

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

Также немного познакомимся с организации оперативной памяти, отведённой под хранение данных.

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

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

Регистры общего назначения (GPR) – это ячейки памяти, которые имеют только адреса и предназначены они для хранения любых данных.

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

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

Соответственно, у каждого контроллера кроме памяти существует много чего ещё интересного, в том числе порты ввода-вывода. Наши контроллеры PIC – также не исключение. Посмотрим назначение ножек контроллера PIC16F84A

У данного контроллера два порта – порт A и порт B. Из порта A наружу выведены 5 ножек – RA0-RA4, а из порта B – все 8 ножек RB0-RB7.

Также ножки портов могут иметь и другое назначение в зависимости от того, как мы их сконфигурируем. Наример ножка 6 или RB0 может в любой момент превратиться в ножку для захвата внешних прерываний, а ножка 3 или RA4 – стать ножкой для тактирования таймера от внешнего генератора.

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

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

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

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

  1. Программирование МК PIC Следующий урок
  2. Смотреть ВИДЕОУРОК (нажмите на картинку)

Примеры программирования микроконтроллеров

Новостная лента

Microchip расширяет экосистему Arduino-совместимой отладочной платформы chipKIT
Компания Microchip сообщила о расширении экосистемы отладочной платформы chipKIT. В состав Arduino-совместимой платформы chipKIT вошла высокоинтегрированная отладочная плата с Wi-Fi модулем и плата расширения для управления электродвигателями, разработанные компанией Digilent. Подробнее >>>
�сточник: http://www.rlocman.ruПросмотров: 28590Дата добавления: 02.10.2014
MicroView — супер миниатюрная Arduino-совместимая отладочная плата СЃ OLED дисплеем
РќР° портале Kickstarter представлен проект супер миниатюрной отладочной платформы Arduino, выполненной РІ форм-факторе 16-выводного РєРѕСЂРїСѓСЃР° DIP Рё имеющей встроенный OLED дисплей СЃ разрешением 64×48 точек. Несмотря РЅР° то, что отладочная плата является полностью завершенным решением, РѕРЅР° может устанавливаться РЅР° макетную плату или непосредственно впаиваться РІ печатную плату для расширения функционала Рё управления внешней периферией. Подробнее >>>
�сточник: http://www.rlocman.ruПросмотров: 27934Дата добавления: 17.04.2014
Размеры самого миниатюрного в мире ARM-микроконтроллера Freescale сократила еще на 15%
Freescale Semiconductor совершила новый технологический прорыв, добавив Рє семейству Kinetis самый миниатюрный Рё энергоэффективный РІ РјРёСЂРµ 32-разрядный микроконтроллер Kinetis KL03 СЃ архитектурой ARM. Основанный РЅР° микроконтроллере предыдущего поколения Kinetis KL02, новый РїСЂРёР±РѕСЂ получил дополнительную периферию, стал намного проще РІ использовании, Рё РїСЂРё этом сократился РІ размерах РґРѕ 1.6 × 2.0 РјРј. Подробнее >>>
�сточник: http://www.rlocman.ruПросмотров: 1871Дата добавления: 17.04.2014
Как вырастить микросхему с помощью белка
Без кремния немыслимо производство полупроводников, где он буквально нарасхват. При этом, естественно, большое значение имеют чистота вещества и строение кристаллов кремниевых соединений. �сследователи из Университета Лидса (Великобритания) предлагают способ выращивания таких кристаллов с помощью молекулярной биологии. По их мнению, это позволит создавать электронные микросхемы более высокого качества. Подробнее >>>
�сточник: http://www.newscientist.com/Просмотров: 3019Дата добавления: 06.03.2014
Открытие нового раздела на сайте MCULAB.RU
На нашем сайте открыт новый раздел. Раздел посвящён моделированию различных схем по сопряжению микроконтроллеров и датчиков. Освещается схемотехника подключения к МК внешних устройств. В данной области до сих пор отсутствует систематизация, поэтому сделана попытка создать банк типовых решений, который в дальнейшем может дополняться, уточняться, расширяться. Подробнее >>>
�сточник: /Просмотров: 129718Дата добавления: 04.02.2014

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

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

Основную массу составляют примеры программирования микроконтроллеров avr и микроконтроллеров microchip.

Пользователю предлагается познакомиться с различными примерами программирования и различными средами программирования: MicroLab, AVRStudio, MikroC, FloweCode.

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

Современные микроконтроллеры относятся к классу микропроцессорных устройств.

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

Микроконтроллер получает программные команды в виде отдельных машинных кодов.

�звестно, что для создания и отладки программ, машинные коды подходят плохо, так как трудно воспринимаются человеком. Этот факт привел к появлению различных языков программирования и огромного количества различных компиляторов.

В основе языков программирования микроконтроллеров лежат классические языки для компьютеров.

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

Последние выполняют работу с отдельными линиями портов ввода/вывода или флагами регистров. Подобные команды отсутствуют в большинстве крупных архитектур.

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

Примеры программирования микроконтроллеров будут представлены на хорошо всем известном языке Си.

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

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

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

Для компактного кода подойдет Ассемблер, а если ставятся серьезные задачи, то альтернативы С/С++ практически нет. Также необходимо учитывать доступность компилятора.

В итоге самым универсальным решением можно назвать связку Ассемблера и C/C++. Для простого освоения языков, можно воспользоваться примерами программ для микроконтроллера.

�спользование примеров программирования упростит и ускорит процесс освоения программирования микроконтроллеров.

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

Программирование PIC16F876A. Собираем схему с плавно мигающим светодиодом

Эта статья направлена на новичков в программировании микроконтроллеров семейства PIC16 от Microchip. В нашем случае, я выбрал немного превосходящий микроконтроллер для таких задач, а именно — PIC16F876A. Программирование микроконтроллера будем производить в MPLAB IDE.

Цель работы: собрать схему, которая будет мигать светодиодом, внимание, с применением ШИМ.

И так, цель задачи обозначили. Теперь перейдем к реализации наших планов.

Часть 1. Железо

В первую очередь нам понадобятся компоненты, из которых мы будем собирать схему. А именно:

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

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

В понятие «рассыпухи» входят такие детали как: пара конденсаторов для кварца и конденсатор на выход модуля CPP (Для того что бы сгладить пульсации). Собранная схема выглядит следующим образом: Это типовое включение микроконтроллера, ничего нового я тут не придумывал.

Так же, для программирования микроконтроллера я пользуюсь программатором-отладчиком ICD2. Он подключается к компьютеру по USB и прекрасно работает как на системе Windows, так и на GNU/Linux. В нашем случае будем использовать родной MPLAB IDE в Windows.

Скрин в процессе разработки:

Часть 2. Программная

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

За его конфигурацию отвечает регистр T2CON. Инициализация: movlw  .

0      bcf   STATUS, 5 movwf  T2CON ; Помещаем в регистр T2CON — 0 bsf   T2CON, 0 ; Устанавливаем бит T2CKPS0 (Предделитель) bsf   T2CON, 2 ; Включаем таймер TMR2 битом TMR2ON

bsf   T2CON, 3 ; Устанавливаем бит TOUTPS0 (Постделение)

На этом инициализация таймера закончена. Теперь при включении контроллера от будет служить источником для нашего ШИМ модуля. Инициализация ШИМ модуля происходит следующим образом:movlw   00101111b ; Подготавливаем конфигурацию movwf   CPPCON ; Конфигурируем ШИМ

bsf    CPPCON, 2 ; Включаем модуль ШИМ

Все, на этом инициализация закончена. Теперь мы можем помещать в регистр CPP1L число от 0 до 255, тем самым меняя скважность выходных импульсов. Полный исходник программы для прошивки нашего микроконтроллера: STATUS   equ     03h     TRISC    equ     07h                 CPPCON   equ      17h CPP1L    equ      15h T2CON    equ      12h counter  equ      23h tmp      equ      25h           org     0            goto    start     start      bsf     STATUS, 5                       movlw    .0        movwf    TRISC      bcf      STATUS, 5   movwf    T2CON   bsf      T2CON, 0   bsf      T2CON, 2   bsf      T2CON, 3   movlw    00101111b   movwf    CPPCON   bsf     CPPCON, 2   movlw    .0   movwf    CPP1L   movlw    .255   movwf    tmp   decfsz  tmp, 1     goto $+2     goto $+4       call delay10mS       incf CPP1L, 1       goto $-5   movlw    .255   movwf    tmp     decfsz  tmp, 1     goto $+2     goto $+4       call delay10mS       decf CPP1L, 1       goto $-5   goto $-16 delay10mS   movlw  .50   movwf  counter loop   call  delay200uS   decfsz  counter   goto  loop   return delay200uS   movlw  .100     addlw  -1   btfss  STATUS,2   goto  $-2   return  

end  

Краткая заметка по командам, использованных в программе. equ — Присвоение имени на определенный адрес. goto — Переход программы на метку, либо определенную строку call — Вызов подпрограммы movlw — Поместить в регистр W, число movwf — Переместить из регистра W число bsf — Установить бит в регистре, в состояние 1 bcf — Установить бит в регистре, в состояние 0 addlw — Прибавить в регистр W число btfss — Проверить бит в регистре на 1 incf — Инкриминировать регистр (прибавить 1) decf — Декриминировать регистр (вычесть 1) decfsz — Вычесть 1 из регистра + проверка на 0 Задержки в программе откалиброваны на частоту кварцевого резонатора в 8мгц. Принцип работы программы. В начале, происходит инициализация регистров, затем настройка внутренних модулей микроконтроллера.

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

Далее реализована часть программы, которая отвечает за само мигание светодиода, с учетом использования ШИМ. Сначала, инкриминируя CPP1L до значения tmp мы заставляем светодиод медленно начать светиться, а затем делаем обратную операцию.

Часть 3. Финальная

Перед тем как прошивать Ваш контроллер, Вам необходимо установит биты конфигурации микроконтроллера. Без них, ничего работать не будет. И так: 1) WDT — выключаем. Это сторожевой таймер.

Предназначен для аппаратного сброса микроконтроллера в момент непредвиденного зависания. 2) LWP — выключаем. Это низковольтное программирование. Мы используем нормальный программатор, который подает на MCLR 13В.

3) Осцилятор: В данном случае мы имеем 8мгц. Значит ставим значение XT.

Часть 4. Бонусная

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

Часть 5. Информация

Микроконтроллер в цепи последовательного программирования (ICSP) с Microchip PIC и Atmel AVR | Lirtex — Технология на краю времени

Метки: AVR , Электроника , Embedded , ICSP , микроконтроллер , PIC

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

В схеме программирования имеет много преимуществ:

  • Это сокращает цикл разработки — это действительно раздражает взять чип из платы каждый раз необходимо перепрограммировать, а это еще сложнее с SMD.
  • Позволяет клиенту и обновления прошивки поле
  • Калибровка системы в процессе производства или в сфере
  • Назначение уникального идентификатора серийный номер продукта

Как подготовить схему для работы с ICSP?

Программист использует последовательный сигнализации схема для программирования чипов в цепи. Сигнализация осуществляется через программирование часов (PGC или ICSPCLK) и программирования данных (ПГД или ICSPDAT) контакты. Кроме того, MCLR / VPP вывод использоваться как сигнал высокого напряжения программирования или внимания индикатора на устройстве.

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

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

В этом случае:

1. Изолировать Vpp от схемы с использованием диодов Schotkey и R / C. Примечание: в некоторых устройствах, например, PIC12F629, этот вывод будет определяться до 13 вольт программист при программировании устройства. Убедитесь, что все, что связано с выводом Vpp может выдержать это напряжение, или изолировать его с соответствующим резистор или диод Schotkey.

2. Изолировать ICSP_Clock и ICSP_Data от остальной части схемы. Изоляция методом является применение конкретного, к сожалению, означает, что нет готовых рецептов. Часто, резистивный изоляции работает отлично. Рекомендуемые значения резистор 1k до 10k.

3. Физически найти ICSP заголовок как можно ближе к запрограммировано чипа, уменьшить затухание.

Общие Microchip PIC ICSP макетов

Дополнительная литература и ссылки

Подпишитесь сейчас через RSS и никогда не пропустите сообщение!

Arduino программатор PIC-ов. | AlexGyver Community

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

Вот тут Вы сильно ошибаетесь

Жаль не грузится файлик, размер большой.
In-Circuit Serial Programming Guide DS30277
DS41227
DS41226
DS30228 и т.д.

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

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

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

Хотя в свободном доступе есть схемы PicKIT2 и PicKIT3. И прошивки на них в свободном доступе.
А они позволяют осуществлять внутрисхемную отладку.
Так что ардуину можно использовать один раз для программирования PicKIT.

Они его придумали?
По этимологии что оно значит? Как-то задавался таким вопросом, но инфы не нашёл.

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

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

Да называйте как хотите. Просто знайте, когда будете разговаривать с человеком, который проработал всю жизнь с PIC микроконтроллерами и ничего не знает об Atmel, Вас никогда не поймёт, если вы будете дуть ему в уши про “фьюзы”и “Скетчи” (Скетч) — короткая одноактная пьеса комедийного содержания с небольшим числом действующих лиц (как правило двумя, реже — тремя). Это выше понимания как прошивка может называться “Одноактной пьесой”

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?

Работа с программой PicKit2 Programmer

Если вы уже собрали USB программатор PIC своими руками, то пора научиться им пользоваться. Для этого нам необходимо установить программную оболочку “PICkit 2 Programmer”, которая разрабатывалась специально для управления программатором PICkit2.

Для работы программы требуется .NET Framework. Если этот пакет не установлен на компьютере, то его нужно установить. Также можно воспользоваться дистрибутивом “PICkit 2 Programmer” с интегрированным пакетом – PicKit 2 V2.61 Install with .NET Framework. Скачать его можно здесь.

Итак, если программа установлена, приступим к изучению её возможностей.

Устанавливаем микроконтроллер в панель программации, подключаем программатор к компьютеру и запускаем “PICkit 2 Programmer”.

При запуске программа производит опрос программатора и автоматически определяет тип программируемого микроконтроллера по идентификационным битам (так называемому device ID). Внимание! Микросхемы семейства Baseline, а также микросхемы EEPROM и KeeLOG не имеют device ID. Чтобы программа смогла работать с этими микросхемами, нужно выбрать конкретное изделие через меню “Device Family”.

Если вместо такой дружелюбной картинки покажется вот такая…

…, то нужно проверить корректно ли подключен usb-кабель, и через меню “Tools” – “Check Communication” произвести переподключение устройства.

Открытие файла с прошивкой.

Чтобы записать программу МК в его память, необходимо выбрать в меню пункт “File” – “Import Hex”.

Затем выбрать в открывшемся окне нужный файл прошивки.

После этого в окне памяти программ (Program Memory) и данных (EEPROM Data) отобразится содержимое .hex файла.

Запись программы в МК.

Теперь можно программировать МК. Для этого жмём кнопку “Write”. Процесс записи занимает 3 – 5 секунд.

Об успешном выполнении процедуры записи уведомит надпись “Programming Successful”.

Для большей уверенности можно провести процедуру проверки. При нажатии на кнопку “Verify” программа сравнивает данные hex-файла и данные, записанные в МК. Если верификация прошла успешно, то в окне сообщений появится надпись “Verification Successful”.

Внимание! Если вы прошиваете микроконтроллеры PIC12F675, PIC12F629 и аналогичные с внутренним тактовым генератором, то при верификации может выскакивать ошибка. Дело в том, что PICkit2 Programmer (версии 6.21) сохраняет калибровочную константу, а затем записывает её в последнюю ячейку памяти МК. Понятно, что исходный файл прошивки и записанные данные в памяти будут отличаться. О калибровочной константе будет рассказано далее.

Быстрые кнопки.

Кнопка “Auto Import Hex + Write Device” понравиться тем, кто хочет “загонять прошивку” в МК нажатием одной кнопки. Один щелчок и программа предложит выбрать файл прошивки, а затем незамедлительно запишет её в МК.

Кнопка “Read Device + Export Hex File” выполняет обратную функцию – производит считывание данных с МК и предлагает сохранить файл прошивки в .hex файл.

Изменение битов конфигурации.

Биты конфигурации задают основные параметры работы МК. Это и тип генератора (кварц, RC-цепь), включение/отключение так называемого “сторожевого таймера”, установка защиты от считывания памяти программ и некоторые другие. Как правило, при написании алгоритма работы МК (программы) прописываются значения, которые нужно записать в биты конфигурации. При “прошивке” программная оболочка берёт данные о конфигурации из самого файла прошивки и принудительно указывать эти данные не требуется.

Но, нам, как начинающим не будет лишним знать, как можно просмотреть или изменить конкретные биты конфигурации. Для этого щёлкаем по надписи “Configuration”. Откроется окно редактирования битов конфигурации.

Если нужно поменять 0 на 1, то меняем – жмём “Save”. Естественно, менять надо осознанно. Повторяю, при использовании готового файла прошивки менять ничего не надо, программа сделает всё автоматически.

Выбор модели микроконтроллера.

Микроконтроллеры бывают разные. Поэтому при программировании МК бывает необходимость указать конкретную модель микроконтроллера. При выборе пункта меню “Device Family” выпадает список семейств микроконтроллеров. Есть среди этого списка и микросхемы памяти EEPROM.

В отличие от микроконтроллеров, микросхемы памяти EEPROM не определяются автоматически по команде “Tools” – “Check Communication”. Поэтому при считывании/записи микросхем EEPROM в программе необходимо указать маркировку микросхемы.

В меню выбираем пункт “Device Family” – “EEPROMS” – “24LC”.

Далее выбираем конкретную марку микросхемы в выпадающем списке “-Select Part-“. Как видим, у нас микросхема 24LC08B (аналоги 24C08, 24WC08L и др.).

Чтобы считать данные с микросхемы EEPROM жмём “Read”. Если в памяти записаны данные, то в окне “Program Memory” значения обновятся.

Кнопки “Write” (считать), “Erase” (стереть) выполняют соответствующие функции.

Калибровочная константа.

Как известно, для работы микроконтроллера требуется тактовый генератор. Элементом, который задаёт частоту работы этого генератора, может быть внешний кварцевый резонатор, RC – цепь. Но среди микроконтроллеров PIC есть такие, которые содержат необходимые задающие цепи внутри самой микросхемы. К таким МК относятся, например PIC12F629, PIC12F675.

На заводе в память таких микроконтроллеров записывается специальная константа, которая задаёт параметры встроенного генератора на 4 МГц. Эта калибровочная константа вида 34хх записывается в последнюю ячейку памяти программ по адресу 0x3FF.

При программировании микроконтроллера эту константу легко стереть. И хоть PICkit2 Programmer версии 2.61 автоматически сохраняет эту константу и затем записывает её при программации, не лишним будет записать значение константы OSCCAL.

При необходимости константу легко указать вручную. Для этого в меню выбираем пункт “Tools” – “OSCCAL” – “Set Manually”.

В поле “OSCCAL value” указываем ранее записанное значение константы. Жмём кнопку “Set” (установить).

Теперь, когда вы знакомы с основными возможностями PICkit2 Programmer, можно смело начать сборку какого-нибудь устройства на микроконтроллере, например, RGB-светильника на PIC12F629/675.

Главная &raquo Микроконтроллеры &raquo Текущая страница

Также Вам будет интересно узнать:

 

РадиоКот :: Начинающим программистам микроконтроллеров 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

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

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

PIC16F628A 8-битный микроконтроллер PIC – схема расположения контактов, характеристики, приложения, техническое описание, работа, обзор

PIC16F628A – это 8-битный микроконтроллер среднего уровня на базе CMOS FLASH, который поставляется с 18-контактным корпусом, из которого 16 контактов могут использоваться в качестве контактов ввода-вывода. Этот микроконтроллер имеет 4 МГц внутреннего генератора с 128 байтами памяти данных EEPROM, упакованных с помощью одного Capture / Compare / PWM, и модуля USART с 2 компараторами. Этот микроконтроллер поддерживает программирование низкого напряжения.

PIC16F628A Конфигурация контактов

Номер контакта

Имя контакта

Описание

1

RA2 / AN2 / VREF

двунаправленного ввод / вывод контактного порта A Бит 2 или аналогового компаратор входного канала 2 или аналоговое опорное напряжение выход

2

RA3 / AN3 / CMP1

Двунаправленный порт ввода / вывода или вход аналогового компаратора или выход компаратора 1.

3

RA4 / T0CKI / CMP2

Двунаправленный вывод ввода / вывода порта A, бит 4, вход тактового сигнала таймера 0 или выход канала 2 компаратора.

4

RA5 / MCLR / VPP

Входной порт или Мастер сброса, или Вход напряжения программирования.При настройке как MCLR этот вывод является сбросом с активным низким уровнем для устройства, в основном используется для программирования или вывода 5-го бита порта А.

5

VSS

Контакт заземления питания.

6

РБ0 / ИНТ

Вывод двунаправленного ввода-вывода порта B, бит 0 или вывод внешнего прерывания.

7

РБ1 / RX / DT

Вывод двунаправленного ввода-вывода порта B, бит 1 или вывод USART, или вывод синхронных данных.

8

RB2 / TX / CK

Двунаправленный вывод ввода / вывода порта B, бит 2 или вывод USART для передачи или ввод / вывод синхронных часов.

9

RB3 / CCP1

Двунаправленный вывод ввода-вывода порта B, бит 3 или ввод-вывод с ШИМ-схемой сравнения Capture.

10

РБ4 / PGM

Двунаправленный вывод ввода / вывода порта B, бит 4 или вывод программирования низкого напряжения.

11

РБ5

Двунаправленный контакт ввода / вывода порта B, бит 5.

12

RB6 / T1OSC / T1CKI / PGC

Двунаправленный вывод ввода / вывода порта B, бит 6, или выход генератора таймера 1, или вход тактового сигнала таймера 1, или тактовый сигнал ICSP, используемый в основном для программирования.

13

RB7 / T1OSI / PGD

Двунаправленный вывод ввода / вывода порта B, бит 7 или вход генератора Timer1, или данные программирования ICSP, в основном используемые для целей программирования.

14

VDD

Вывод положительного питания.

15

RA6 / OSC2 / CLKOUT

Двунаправленный вывод ввода / вывода порта A, бит 6 или выход кварцевого генератора или выход тактовой частоты в RC / INTOSC

16

RA7 / OSC1 / CLKIN

Двунаправленный вывод ввода / вывода порта A, бит 7 или вход кварцевого генератора или вход внешнего тактового сигнала

17

RA0 / AN0

Двунаправленный вывод ввода / вывода порта A, бит 0 или аналоговый компаратор, входной канал 0.

18

RA1 / AN1

Двунаправленный контакт ввода / вывода порта A, бит 1 или аналоговый компаратор, входной канал 1

Характеристики и спецификации микроконтроллера PIC16F628A

PIC16F628A – Упрощенные функции и спецификации

ЦП

Средний 8-битный

Количество контактов

18

Рабочее напряжение (В)

2 – 5.5 В

Количество контактов ввода / вывода

16

Модуль АЦП

Нет

Модуль таймера

3

Компараторы

2

Модуль ЦАП

Нет

Периферийные устройства связи

UART (1)

Внешний осциллятор

Есть

Внутренний осциллятор

4 МГц

Программная память (КБ)

3.5 КБ

Скорость процессора (MIPS)

5

байтов RAM

224 байта

Данные EEPROM

128 байт

Примечание : Полную техническую информацию можно найти в листе данных PIC16F628A , ссылка на который находится внизу этой страницы.

Альтернатива для PIC16F628A

Альтернативные продукты для микроконтроллера PIC16F628A перечислены ниже –

  1. PIC12F629
  2. PIC12F683
  3. PIC16F505
  4. PIC12F508
  5. PIC16F676
  6. PIC16F72
  7. PIC16F873A
  8. PIC16F876A
  9. PIC16F886
  10. PIC16F252

Введение в PIC16F628A

PIC16F628A – это 8-битный микроконтроллер среднего уровня на базе CMOS FLASH, который поставляется с 18-контактным корпусом, из которого 16 контактов могут использоваться в качестве контактов ввода-вывода.Этот микроконтроллер имеет 4 МГц внутреннего генератора с 128 байтами памяти данных EEPROM, упакованных с помощью одного Capture / Compare / PWM, и модуля USART с 2 компараторами. Этот микроконтроллер поддерживает программирование низкого напряжения.

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

PIC16F628A также имеет два 8-битных и один 16-битный таймер, подходящий для приложений среднего уровня, связанных с синхронизацией, где требуются разные таймеры.

PIC16F628A работает от 2 В до 5,5 В, поэтому подходит для 3.Приложения логического уровня 3 В и 5,0 В. Сброс просмотра, сброс при включении питания, сторожевой таймер с независимым генератором, энергосберегающие спящие режимы также поддерживаются микроконтроллером PIC16F628A. Схема контактов PIC16F628A показана ниже –

Подробные характеристики PIC16F628A

PIC16F628A – Подробные характеристики

ЦП

Средний диапазон 8 – бит

Архитектура

8 – бит

Размер памяти программ (Кбайт)

3.5 КБ

RAM (байты)

224 байта

EEPROM / HEF

128 байт

Количество выводов

18

Макс. Частота процессора (МГц)

20 МГц

Выбор периферийных контактов (PPS)

Внутренний осциллятор

4 МГц

№Компараторов

2

№ операционного усилителя

Нет

Кол-во каналов АЦП

Нет

Максимальное разрешение АЦП (бит)

АЦП с вычислением

Количество преобразователей ЦАП

Нет

Максимальное разрешение ЦАП

Внутреннее опорное напряжение

2 – 5.5В

Обнаружение нулевого пересечения

Количество 8-битных таймеров

2

Количество 16-битных таймеров

1

Таймер измерения сигнала

Аппаратный таймер ограничения

№Выходов ШИМ

1

Максимальное разрешение ШИМ

1024

Угловой таймер

Математический ускоритель

№Модуля UART

1

№ модуля SPI

Нет

№ модуля I2C

Нет

№ USB-модуля

Нет

Оконный сторожевой таймер (WWDT)

CRC / сканирование

Генератор с числовым программным управлением

Кап.Сенсорные каналы

Нет

Сегментный ЖК-дисплей

Нет

Минимальная рабочая температура (* C)

-40 ° С

Максимальная рабочая температура (* C)

125 ° С

Минимальное рабочее напряжение (В)

2 В

Максимальное рабочее напряжение (В)

5.5В

Возможность высокого напряжения

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

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

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

IDE: MPLABX v3.35

IPE: MPLAB IPE v3.35

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

Компания

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

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

В дополнение к этому нам также понадобится другое оборудование, такое как плата Perf или макетная плата, паяльная станция, микросхемы PIC, кварцевые генераторы, конденсаторы и т. Д.

Компоненты, связанные с PIC

PICkit3, PIC Development Board, кварцевые генераторы, конденсаторы, адаптер 12 В, регулятор напряжения 7805.

Применение PIC16F628A

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

1. Операции ввода вывода

2. Управляющие приложения

3. Обработка аналоговых данных

4. Интеграция датчиков и регистрация данных

5. Мелкомасштабное, дешевое производство на базе встроенных приложений

2D Модель

Размеры PIC16F628A показаны ниже –

PIC16F628A

PIC16F628A

Сводка поддержки

  • Программирование – Да
  • Положения об отладке – №

Подключение ICSP

Программирование невозможно при напряжении ниже 4.5В.

Программирование LVP

Поскольку NSDSP является программатором низкого напряжения (LVP), он может только программировать Устройства PIC, если бит конфигурации LVP включен. В новых (незапрограммированных) устройствах установлен бит LVP, поэтому их можно программировать. Во время программирования LVP отключить бит LVP невозможно, но если устройство ранее было запрограммировано с помощью программатора HVP, бит LVP мог быть отключен.

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

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

Программирование HVP

Программирование HVP возможно, но только с внешней схемой HVP.

NSHVX не будет работать с PIC16F628A потому что NSHVX выдает высокое напряжение 9 В, но для этого чипа требуется не менее 11 В. если ты нужна версия NSHVX, которая выдает 12 В и подходит для этого ПОС, пожалуйста Связаться с нами.

Спецификации программирования Microchip HVP для PIC16F628A требовать, чтобы VPP применялся к MCLR перед ВДД.Поскольку NSDSP не имеет никакого контроля над VDD, это требование не может быть выполнено, однако в наших тестах Программирование HVP удалось даже без манипуляций с VDD. Таким образом, программное обеспечение NSDSP, начиная с версии 126, поддерживает HVP. программирование для PIC16F628A.

Будьте осторожны. Можно кирпич PIC16F628A с программированием HVP, если выполняется каждое из этих трех условий:

  • Биты конфигурации MCLRE и LVP отключены
  • PIC использует внутренний генератор или внешний генератор, который подключен во время программирования
  • Вывод RB6 или RB7 активирован или T1OSCEN устанавливается в течение одной секунды после сброса

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

Мы измерили время, необходимое для программирования и проверки PIC16F628A.

Эксплуатация Время
Программирование и проверка 9.2 с Только программирование 9.1 с Только проверка 0,2 с

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

Отладка

NSDSP нельзя использовать для отладки PIC16F628A.

Ссылки

Микросхема PIC16F628A, стр.

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

– PIC16F628A

Это первая из серии статей, описывающих конструкцию интерфейсной платы, подходящей для управления 2 двигателями, 2 сервоприводами и предоставляющей набор двоичных входов и выходов.Плата обеспечивает ограниченный встроенный интеллект (достаточный только для защиты двигателей и сервоприводов от недопустимых операций) – она ​​предназначена для управления с внешнего компьютера через соединение RS232.

Обновление Файл проекта MPLAB X для этого поста доступен здесь.

Эта статья представляет собой введение в микроконтроллер, лежащий в основе проекта – PIC 16F628A. Все предоставленные программы написаны на языке ассемблера PIC, использование C на PIC (по крайней мере, 8-битные процессоры PIC) кажется излишним – полученный код очень похож на язык ассемблера, но с гораздо большим количеством шаблонов вокруг него.

Есть несколько вещей, которые вам понадобятся, чтобы это было больше, чем интеллектуальное упражнение …

  1. Вам понадобится способ конвертировать код языка ассемблера в двоичный файл, который можно загрузить в память программ на PIC. Самое простое решение – загрузить и установить MPLABX IDE, доступную для Windows, Mac и Linux. Вам нужно будет загрузить соответствующие установщики для MPLABX IDE и MPLAB XC8 Compiler по предыдущей ссылке и установить их в указанном порядке.Если вы предпочитаете использовать командную строку и у вас уже есть предпочтительный редактор, вы можете рассмотреть пакет gputils (его можно установить с помощью apt-get для Debian и Ubuntu).
  2. Симулятор удобен для тестирования вашего кода перед записью на чип – он помогает сгладить наиболее очевидные ошибки в более дружественной среде и снизить вероятность повреждения любых компонентов в вашей схеме. MPLABX включает симулятор, вы также можете посмотреть gpsim или PICsim, которые доступны как для Linux, так и для Windows.Проект gpsim предоставляет интерфейс командной строки (аналогичный gdb) и простой графический интерфейс. PICsim, с другой стороны, предоставляет гораздо более графический интерфейс, а также имитирует некоторое внешнее оборудование (переключатели, светодиоды, ЖК-дисплеи и т. Д.).
  3. Требуется аппаратный программист, чтобы записать полученный код на сам чип. Я использую один, известный как K150 (v2.1) – я не уверен, доступен ли он больше (и если он есть – например, у торговых посредников – как долго будет доступно вспомогательное программное обеспечение) в качестве основного сайта производителей. (кицрус) похоже истек.Доступен широкий спектр альтернативных программистов (поиск в Google должен найти то, что соответствует вашему бюджету и потребностям).
  4. Как минимум одна микросхема PIC16F628A – желательно две на случай ошибок. В Австралии они доступны в Element14 по цене 4,40 австралийских доллара за единицу, в США вы можете получить их в SparkFun по цене 3,18 доллара США.

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

Эта конкретная модель PIC имеет 2048 слов памяти программ (каждая инструкция занимает одно слово, поэтому максимальная длина программы составляет 2048 инструкций), 224 байта ОЗУ, 128 байтов EEPROM для постоянного хранения и 16 контактов ввода-вывода. Если вы посмотрите на распиновку слева, вы увидите, что большинство контактов ввода-вывода имеют несколько целей – в любой момент времени доступна только одна функция, поэтому выбор использования определенной функции исключит этот контакт из любого другого назначения.Это очень важный фактор, который следует учитывать при разработке вашего проекта.

Расположение памяти на PIC сильно отличается от того, к которому вы, вероятно, привыкли, если разрабатывали программы для настольных компьютеров. Каждая ячейка памяти рассматривается как регистр и доступна по ее адресу. Чтобы еще больше усложнить проблему, не все регистры доступны в любой момент времени – память организована в виде четырех банков по 128 регистров в каждом, и только один банк может быть доступен одновременно.Первые 32 регистра в каждом банке – это регистры специального назначения, которые используются для управления и настройки процессора и контактов ввода-вывода, последние 16 регистров в каждом банке используются всеми банками, что позволяет получить доступ к значениям независимо от того, какой банк выбран в данный момент . Реализованы не все адреса регистров, что оставляет некоторые пробелы в карте памяти, которые необходимо устранить. Полная карта памяти показана на изображении справа. Записи, обозначенные как Регистр общего назначения , и блок из 16 байтов в конце каждой страницы свободны для использования вашей программой.

Процессор PIC – это система на основе RISC, поэтому он имеет очень простой набор инструкций – всего 35 инструкций. Помимо упомянутых выше регистров существует единственный рабочий регистр (обозначаемый как W ), который требуется для многих операций. Операции, которые изменяют значения, имеют возможность сохранить результат в этом регистре или регистре файла, с которым выполняется операция.

Каждая инструкция занимает 4 тактовых цикла для выполнения, за исключением условных инструкций и команд перехода, которые могут занимать 8 тактовых циклов.Эта модель PIC может работать на частоте до 20 МГц (приблизительно 5 MIPS) с использованием внешнего генератора. На плате есть осциллятор, который работает на частоте 4 МГц (примерно 1 MIPS) и может быть замедлен до 48 кГц для экономии энергии или облегчения отладки и тестирования. Во всех примерах этой серии будет использоваться внутренний генератор.

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

Электрически PIC будет работать с входным напряжением от 3,0 В до 5,5 В и потребляет очень небольшой ток (обычно менее 2 мА при 5 В для самого чипа). Требуется постоянный источник питания постоянного тока, но в цепи стабилизации напряжения, как правило, нет необходимости. Поскольку большинство моих проектов предназначены для мобильных (или, по крайней мере, портативных), я обычно использую батарейный блок на 6 В (4 батарейки типа AA NiCD).

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

Сам светодиод питается от выхода RB5 через ограничивающий ток резистор 180 Ом. Выходы от PIC могут управлять нагрузкой до 25 мА (так что достаточно одного светодиода) с общим значением 200 мА для всех активных выходов. Для более высоких нагрузок вы обычно используете выход PIC для управления транзистором, который будет нести нагрузку, а не протягивать ее через сам выходной контакт.

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

 
                список P = 16F628A; Определите используемый чип, включая P16F628A.INC

                ; Установите биты конфигурации для этого приложения __config _WDT_OFF & _BOREN_OFF & _INTOSC_OSC_NOCLKOUT

; ------------------------------------------------- ---------------------------; Константы и определения; ---------------------------------------------- ------------------------------



; ------------------------------------------------- ---------------------------; Таблица векторов прерываний; ---------------------------------------------- ------------------------------

                ; Сбросить вектор org 0x0000 программа goto

                ; Вектор прерывания org 0x0004 goto interrupt

; ------------------------------------------------- ---------------------------; Функции и процедуры; ---------------------------------------------- ------------------------------

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

прерывать:                 ; Сохранить текущее состояние; Обработка и очистка невыполненных прерываний; Восстановить состояние retfie

; ------------------------------------------------- ---------------------------; Основная программа; ----------------------------------------------- -----------------------------

программа:; Настроить периферийные устройства и ввод-вывод main_loop:; Основной цикл программы (выполняется вечно) goto main_loop

                end '', который я использую в качестве отправной точки для большинства проектов, и он является основой для кода, представленного здесь.Полный код проекта: ``; ======================================= =====================================; Демонстрационная программа для микросхем PIC16F628A. ; ------------------------------------------------- ---------------------------; 29-СЕН-2012 шанег; ; Простая тестовая программа для мигания светодиода на порте RB5. ; ================================================= ===========================

                список P = 16F628A; Определите используемый чип, включая P16F628A.INC

                ; Установите биты конфигурации для этого приложения __config _WDT_OFF & _BOREN_OFF & _INTOSC_OSC_NOCLKOUT

; ------------------------------------------------- ---------------------------; Константы и определения; ---------------------------------------------- ------------------------------

REG_LOOP0 экв 0x20 REG_LOOP1 экв 0x21

; ------------------------------------------------- ---------------------------; Таблица векторов прерываний; ---------------------------------------------- ------------------------------

                ; Сбросить вектор org 0x0000 программа goto

                ; Вектор прерывания org 0x0004 goto interrupt

; ------------------------------------------------- ---------------------------; Функции и процедуры; ---------------------------------------------- ------------------------------

delay_250:; Эта процедура просто входит в цикл, чтобы задержать процессор примерно на 250 мс; потребляя процессор примерно на 1 000 000 инструкций.movlw 0xff movwf REG_LOOP0 loop0:; Внешний цикл movlw 0xff movwf REG_LOOP1 loop1:; Внутренняя петля nop; NOP x 4, чтобы получить задержку nop nop nop; Проверить конечное условие decfsz REG_LOOP1, F goto loop1 decfsz REG_LOOP0, F goto loop0 return

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

прерывать:                 ; Сохранить текущее состояние; Обработка и очистка невыполненных прерываний; Восстановить состояние retfie

; ------------------------------------------------- ---------------------------; Основная программа; ----------------------------------------------- -----------------------------

программа:; Настроить периферийные устройства и IO banksel TRISB movlw 0x20 xorwf TRISB, F; Установите RB5 для вывода banksel PORTB movwf PORTB

main_loop:; Основной цикл программы (выполняется бесконечно) movlw 0x20 xorwf PORTB, F; Переключить RB5; Подождите четверть секунды call delay_250; Перезапустить цикл goto main_loop

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

список P = 16F628A; Определите используемый чип, включая p16f628a.inc

                    ; Установите биты конфигурации для этого приложения __config _WDT_OFF & _BOREN_OFF & _INTOSC_OSC_NOCLKOUT

Следует отметить строку, начинающуюся с ** __ config ** - она ​​включает и отключает различные функции чипа.Информация о конфигурации записывается в микросхему на этапе программирования и не может быть изменена во время выполнения. В этом случае мы отключаем сторожевой таймер (_WDT_OFF), сбрасываем потери (_BOREN_OFF) и выбираем внутренний тактовый генератор 4 МГц без вывода тактового сигнала (_INTOSC_OSC_NOCLKOUT). Это оставляет назначение всех контактов ввода-вывода нашей программе и гарантирует, что микросхема не будет сброшена на нас, пока на выводах питания 3 В или более.

При запуске процессор начинает выполнение кода в самом начале памяти программ (адрес 0).Если вы разрешите прерывания на некоторых периферийных устройствах (последовательный контроллер, таймеры и др.), Процессор * прервет * любой выполняющийся в данный момент код и начнет выполнение кода в векторе прерывания (адрес 4). После обработки прерывания возобновится предыдущий код. Несмотря на то, что в этом примере мы не используем прерывания, мы устанавливаем запуск программной памяти, как если бы они были. Следующий фрагмент кода делает это за нас - при запуске мы переходим к основной программе, если возникает прерывание, мы переходим к обработчику прерывания, чтобы с ним справиться.``; Сбросить вектор org 0x0000 программа goto

                    ; Вектор прерывания org 0x0004 goto interrupt

Поскольку мы не используем встроенные таймеры, нам нужен способ принудительно установить задержку. Самый простой способ сделать это - держать процессор занятым выполнением инструкций в течение периода, который мы хотим отложить. В этом случае требуется задержка около 250 мс, поэтому нам нужно что-то сделать для примерно 250 000 инструкций.В показанной ниже подпрограмме используются некоторые вложенные циклы (и некоторые ** nop ** - нет операций - инструкции) для использования времени. В этом случае мы используем два вложенных цикла по 255 циклов каждый, а внутренний цикл включает некоторые инструкции ** nop ** для отсчета времени. Затраченное время составляет примерно 255 x 255 x 4 (260100) инструкций. На самом деле это время немного больше, чем из-за дополнительных инструкций по тестированию и инициализации.

`` задержка_250:; Эта процедура просто входит в цикл, чтобы задержать процессор примерно на 250 мс; потребляя процессор примерно на 250 000 инструкций.movlw 0xff movwf REG_LOOP0 loop0:; Внешний цикл movlw 0xff movwf REG_LOOP1 loop1:; Внутренняя петля nop; NOP x 4, чтобы получить задержку nop nop nop; Проверить конечное условие decfsz REG_LOOP1, F goto loop1 decfsz REG_LOOP0, F goto loop0 return

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

`` REG_LOOP0 equ 0x20 REG_LOOP1 equ 0x21

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


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

Вот как это выглядит ...

Программа:; Настроить периферийные устройства и IO banksel TRISB movlw 0x20 xorwf TRISB, F; Установите RB5 для вывода banksel PORTB movwf PORTB main_loop:; Основной цикл программы (выполняется бесконечно) movlw 0x20 xorwf PORTB, F; Переключить RB5; Подождите четверть секунды call delay_250; Перезапустить цикл goto main_loop

Первая часть этого кода настраивает контакты ввода-вывода - в этом случае мы модифицируем порт ** TRISB **, чтобы установить контакт ** RB5 ** в качестве выхода (по умолчанию все контакты настроены как входы).Это делается путем установки бита 5 регистра ** TRISB ** на «1» - обратитесь к таблице данных для получения дополнительной информации о том, как это работает. Затем мы устанавливаем на выходной контакт высокий уровень (записывая в регистр ** PORTB **) перед тем, как перейти к основному циклу.

Как я упоминал в начале статьи, PIC имеет несколько банков регистров, и только один банк может быть активен в любой момент времени. Регистры ** TRISB ** и ** PORTB ** находятся в разных банках, поэтому в зависимости от того, к какому из них вы обращаетесь, необходимо убедиться, что этот банк выбран в данный момент.Оператор * banksel *, показанный в приведенном выше коде, является полезным макросом, предоставленным ассемблером, чтобы помочь вам в этом процессе. Использование * banksel TRISB * излучает соответствующий код, необходимый для перехода в банк, содержащий регистр ** TRISB **.

! [Программирование PIC] (/ content / images / galleries / electronics / picdemo_programming.png)

Теперь остается скомпилировать программу в файл HEX, а затем с помощью вашего программатора загрузить этот код в PIC. Лично я предпочитаю инструмент * gpasm * из пакета * gputils *, упомянутого в начале статьи.Я использую программатор K150 (показан на изображении справа) и программное обеспечение, которое поставляется с ним. Когда вы выполняете прожиг, всегда дважды проверяйте, что код загружен правильно (у большинства программистов есть функция * verify *, которую вы можете использовать) и проверяйте, что биты конфигурации установлены должным образом (они также известны как * fuse * биты) - некоторые У программистов есть плохая привычка заменять биты, установленные в шестнадцатеричном файле, тем, что было установлено в графическом интерфейсе для программиста, что может привести к некоторому неожиданному поведению.# Что будет дальше?

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

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

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



  

pic16f628a% 20memory% 20map техническое описание и примечания по применению

PIC16F628A

Аннотация: PIC16F648A PIC16C58A PIC16C54 SG01 enplas socket PIC16C622 PIC16C54A PIC16C56 PIC16C620
Текст: Текст файла недоступен


Оригинал
PDF PA20SS-P54 розетка / 18 PIC16C54 PIC16C56 PIC16C54A PIC16C58A PIC16C620 PIC16C621 PIC16F628A PIC16F648A PIC16C58A PIC16C54 SG01 розетка enplas PIC16C622 PIC16C54A PIC16C56 PIC16C620
2003 – Исходный код PIC16F627A

Аннотация: Карта памяти PIC16F628A PIC16F628A PIC16F627A pic16F627A * Программирование микроконтроллера PIC16F628A 628A ds41196 PIC16LF648A PIC16LF628A
Текст: Текст файла отсутствует


Оригинал
PDF PIC16F627A / 628A / 648A PIC16F627A / 628A / 648A PIC16F627A PIC16F628A PIC16F648A PIC16LF627A PIC16LF628A Исходный код PIC16F627A Карта памяти PIC16F628A PIC16F628A PIC16F627A pic16F627A * программирование Микроконтроллер PIC16F628A 628A ds41196 PIC16LF648A PIC16LF628A
2007 – pic16F627A как программировать

Аннотация: карта памяти PIC 628a PIC16F628A Исходный код PIC16F627A pic16F627A * программирование программирование pic16f628a pic16f628a примечание по применению на pic16f628a PIC16F628 thld
Текст: текст файла отсутствует


Оригинал
PDF PIC16F627A / 628A / 648A PIC16F627A / 628A / 648A PIC16F627A PIC16F628A PIC16F648A PIC16LF627A PIC16LF628A PIC16LF648A pic16F627A как программировать ПИК 628a Карта памяти PIC16F628A Исходный код PIC16F627A pic16F627A * программирование программирование pic16f628a Примечание по применению на pic16f628a PIC16F628 thld
2003 – ПИК 628a

Аннотация: ds41196 pic16f628a PIC16F627A pic16F627A * программирование PIC16F648A PIC16LF628A Исходный код PIC16F627A PIC16F628A DATASHEET программатор pic16f628a
Текст: текст в файле отсутствует


Оригинал
PDF PIC16F627A / 628A / 648A PIC16F627A / 628A / 648A PIC16F627A PIC16F628A PIC16F648A PIC16LF627A PIC16LF628A ПИК 628a ds41196 pic16f628a PIC16F627A pic16F627A * программирование PIC16F648A PIC16LF628A Исходный код PIC16F627A ТЕХНИЧЕСКАЯ ИНФОРМАЦИЯ НА PIC16F628A pic16f628a программист
2004 – ds41196

Резюме: ds41204 DS51331 DS40245 “ds41196” DS41191 AC162049 PIC16F684-ICD DS41173 PIC12F675-ICD
Текст: Текст файла недоступен


Оригинал
PDF AC162050 AC162058 PIC12F629 / 675 PIC12F683 14-контактный AC162052 AC162057 AC162055 AC162056 PIC16F630 / 676 ds41196 ds41204 DS51331 DS40245 “ds41196” DS41191 AC162049 PIC16F684-ICD DS41173 PIC12F675-ICD
PIC16F873

Аннотация: PIC16F876A PIC16C73B pic16f870 PIC18F2320 PIC16C76 PIC16C74B PIC18F242 PIC18F458 PIC16C77
Текст: Текст файла недоступен


Оригинал
PDF PIC12C508 PIC16C72 PIC12C508A PIC16C72A PIC12C509 PIC16C73A PIC12C509A PIC16C73B rfPIC12C509AF PIC16C745 PIC16F873 PIC16F876A PIC16C73B pic16f870 PIC18F2320 PIC16C76 PIC16C74B PIC18F242 PIC18F458 PIC16C77
pic16f84a

Аннотация: pic16F877 PIC16F628 ADC IN PIC16F877 PIC16F873 pic16f877a ethernet PIC16F727 pic16f722 pic16F723 PIC16F690 lcd
Текст: Нет текста в файле


Оригинал
PDF PIC18 PIC16F726 PIC16F727 PIC16F76 PIC16F77 pic16f84a pic16F877 PIC16F628 АЦП В PIC16F877 PIC16F873 pic16f877a Ethernet PIC16F727 pic16f722 pic16F723 PIC16F690 жк
1999 – 16f628

Аннотация: 16f62x PIC16F628A DATASHEET PIC16f628a PIC 16F628 pic 16f628 схемы PIC16F627 mclr PIC16F628 pic 16f628 примечания по применению
Текст: Текст файла отсутствует


Оригинал
PDF CVMF628M 16F62X PIC16F627 PIC16F627A PIC16F628 PIC16F628A CVM03F CVMF628M 16f628 ТЕХНИЧЕСКАЯ ИНФОРМАЦИЯ НА PIC16F628A PIC16f628a ПИК 16F628 схемы pic 16f628 PIC16F627 mclr PIC16F628 pic 16f628 заметки по применению
PIC16F877A программирование сборки

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


Оригинал
PDF EB006 PIC16F88 IC16C765, PIC16C77, PIC16C773, PIC16C774, PIC16C84, PIC16CE623, PIC16CE624, PIC16CE625, Программирование сборки PIC16F877A Программирование кода потока PIC16F877A код потока PIC16F877 и схема сопряжения параллельного порта стоимость микроконтроллера PIC16F877A Микроконтроллер PIC16F877A бесплатно pic16f877a Схема программатора USB PIC16F84 Программатор PIC16F877A ПРОГРАММА PIC16F73
2006 – Спецификация программирования PIC18F4 *

Резюме: AC162049 Для получения дополнительной информации см. 14-контактный MPLAB ICD 2 DS51331 PIC16F62 * код АЦП pic16F627A * программирование PIC12F675-ICD AC162053 pic16f630 техническое описание платы заголовка
Текст: текст файла недоступен


Оригинал
PDF RE36-4803 DS51292M-страница PIC18F4 * Спецификация программирования AC162049 Для получения дополнительной информации см. 14-контактный MPLAB ICD 2. DS51331 PIC16F62 * код АЦП pic16F627A * программирование PIC12F675-ICD AC162053 pic16f630 лист данных Спецификация платы заголовков
2002 – Счетчик PIC16F628A

Аннотация: Исходный код PIC16F628A PIC16F627A Внешний генератор PIC16f628a PIC 628a pic16f627a PIC16F628 PIC16LF628A
Текст: Текст файла недоступен


Оригинал
PDF PIC16F627A / 628A 18/20-контактный Внутрисхемный 627-144 DS41197A-страница Счетчик PIC16F628A PIC16F628A Исходный код PIC16F627A Внешний генератор PIC16f628a ПИК 628a pic16f627a PIC16F628 PIC16LF628A
2003 – pic16f819 учебник

Резюме: проекты pic16f628a 13,56 МГц RFID Microchip Technology microID PIC16F676 Техническое описание PIC16F628a rs232 Генератор pic16f pic16F627A * проекты программирования RFID picstart plus MPLAB C17
Текст: текст файла отсутствует


Оригинал
PDF PIC16F PIC18F 18-контактный PIC12F, DS51339A DS51339A * pic16f819 учебник pic16f628a проекты 13,56 МГц RFID Микрочип Технология microID PIC16F676 Лист данных PIC16F628a RS232 генератор pic16f pic16F627A * программирование проекты RFID picstart plus MPLAB C17
2005 – 16f628a tmr0

Аннотация: DS00552 16F628A MPLAB IDE PIC 16F627a 16f628a tmr1 ds41196 16f648a 16f627a 16f648 DS00556
Текст: Нет текста в файле


Оригинал
PDF PIC16F627A / 628A / 648A DS40044D 16f628a tmr0 DS00552 16F628A MPLAB IDE PIC 16F627a 16f628a tmr1 ds41196 16f648a 16f627a 16f648 DS00556
Схема 4-значного счетчика объектов

Аннотация: схема счетчика объектов счетчик цифровых объектов PIC16F628A счетчик счетчик объектов 7 СЕГМЕНТНЫЙ ДИСПЛЕЙ sc52 11ewa PIC16f628a внешний генератор PIC16f628A ассемблерный код схема счетчика объектов приложения PIC16F628A порт компаратора a
Текст: текст файла отсутствует


Оригинал
PDF 24-оу 256 кбод com / 100715did.Схема 4-значного счетчика объектов схема счетчика объектов счетчик цифровых объектов Счетчик PIC16F628A счетчик объектов ДИСПЛЕЙ 7 СЕГМЕНТОВ sc52 11ewa Внешний генератор PIC16f628a Код сборки PIC16f628A схема счетчика прикладных объектов PIC16F628A порт компаратора a
2005 – AC162049

Аннотация: PIC16F690 DS51194 pic16f630 datasheet PIC12F510 программирование памяти 40-контактный разъем ICD pic16f690 datasheet РАЗЪЕМ POWERMATE PIC16F648A-ICD AC162059
Текст: текст файла отсутствует


Оригинал
PDF DS51292L * DS51292L-страница AC162049 PIC16F690 DS51194 pic16f630 лист данных Программирование памяти PIC12F510 40-контактный разъем ICD pic16f690 лист данных РАЗЪЕМ ПИТАНИЕ PIC16F648A-ICD AC162059
2008 – Справочное руководство pic16F628A

Аннотация: AC162061 PIC16F505-ICD AC162083 PIC16F690-ICD PIC16F677 приложения AC162059 AC162096 AC162078 AC162050
Текст: Текст файла недоступен


Оригинал
PDF DS51292P-страница Справочное руководство pic16F628A AC162061 PIC16F505-ICD AC162083 PIC16F690-ICD Приложения PIC16F677 AC162059 AC162096 AC162078 AC162050
2003 – Диммер PIC

Аннотация: диммер ccs компилятор PIC16f628a внешний генератор 40mhz пример схемы передатчика дистанционного управления PIC в ccs pic18f1320 pwm термостат шаговый двигатель PIC16F628A пример кода PIC18F i2c uart PIC16F628a c программа с рис. 18
Текст: текст в файле отсутствует


Оригинал
PDF 40 МГц.DS30493A PIC Light Dimmer диммер ccs компилятор Внешний генератор PIC16f628a Схема передатчика дистанционного управления 40 МГц пример PIC в ccs pic18f1320 pwm термостат шаговый двигатель PIC16F628A PIC18F пример кода i2c uart PIC16F628a c программа фото 18
PIC16F84A Металлоискатель Free Projects

Аннотация: PIC16F628A Бесплатные проекты светодиодов PIC16F84A Бесплатные проекты светодиодов PIC16F877A Бесплатные проекты светодиодных металлоискателей ПРОГРАММА PIC16F84 Простая электрическая схема пульсометра Электронная схема кодового замка PIC16F877A PIC16F876A Бесплатные проекты PIC16F73 Бесплатные проекты интерфейса с ЖК-детектором Текстовый файл PIC16F118 текст доступен


Оригинал
PDF HP488-60-3 16F88 PIC16F84 outF877, PIC16F87, PIC16F88 PIC18F242, PIC18F248, PIC18F252, PIC18F258, PIC16F84A Металлоискатель Free Projects PIC16F628A Бесплатные проекты светодиодов PIC16F84A Бесплатные проекты светодиодов PIC16F877A Бесплатные проекты светодиодов ПРОГРАММА ДЕТЕКТОРА МЕТАЛЛОВ PIC16F84 простая принципиальная схема пульсометра проект электронного кодового замка PIC16F877A PIC16F876A бесплатные проекты PIC16F73 Бесплатные проекты интерфейса с lcd Металлоискатель PIC16F877A
2003 – схема mplab icd 3

Резюме: ds41196 PIC12F675-ICD pic16f676-icd AC162053 DS41191 pic12f675 datasheets AC162050 mplab icd 3 DS51331
Текст: Нет текста в файле


Оригинал
PDF AC162050 PIC12F629 / 675 14-контактный AC162052 PIC16F630 / 676 18-контактный AC162053 PIC16F627A / 628A / 648A QS-9000 QS-9000 Схема mplab icd 3 ds41196 PIC12F675-ICD pic16f676-icd AC162053 DS41191 таблицы данных pic12f675 AC162050 mplab icd 3 DS51331
2004 – технологический код

Аннотация: схема pic16c745 PIC16F628A Бесплатные проекты светодиодных матричных проектов Схема программиста pic pic16f628a светодиодные проекты pic16c745 Схема PIC16F628 Бесплатные проекты MATRIX LED pic16f648 микрочип проекты pic16f628a
Текст: текст в файле отсутствует


Оригинал
PDF EB-010-00-1.EB-010-00-1 PIC16C745 код потока Схема pic16c745 PIC16F628A Бесплатные проекты светодиодов светодиодные матричные проекты схема программиста pic pic16f628a светодиодные проекты pic16c745 схема PIC16F628 Бесплатные проекты MATRIX LED pic16f648 микрочип pic16f628a проекты
2010 – Примеры кодов PIC16f690

Аннотация: Пример кода PIC12f675 Пример кода PIC18 PIC16F877 Пример кода на внешнем генераторе PIC16f688 Пример кода PIC18F4480 Пример кода приложения PIC18F4580 Пример кода PIC18F66J60 Пример кода PIC18F2330 PIC18 пример кода прерывания
Текст: Текст файла отсутствует


Оригинал
PDF PIC12F609 PIC16F716 PIC12HV609 PIC16F737 PIC12F615 DS41302 PIC12HV615 PIC12F629 PIC12F675 DS41190 Примеры кодов PIC16f690 Примеры кодов PIC12f675 Примеры кодов PIC18 Пример кода PIC16F877 на внешнем генераторе PIC16f688 пример кода Пример кода приложения PIC18F4480 PIC18F4580 пример кода Примеры кодов PIC18F66J60 PIC18F2330 PIC18 пример кодов прерывания
2005 – ДС51194

Аннотация: PIC12F675-ICD AC162053 AC162049 AC162058 PIC12F635 AC162055 PIC16F688 icd DS51331 PIC16F684-ICD
Текст: Текст файла недоступен


Оригинал
PDF PIC12F629 / 675 AC162058 AC162050 PIC12F683 AC162052 PIC16F630 / 676 AC162057 PIC16F684 AC162056 PIC16F688 DS51194 PIC12F675-ICD AC162053 AC162049 AC162058 PIC12F635 AC162055 PIC16F688 icd DS51331 PIC16F684-ICD
2007 – Примеры кодов PIC16f690

Аннотация: pic16f887 Приложения Примеры кодов PIC16f876 Примеры кодов PIC12f675 Пример кода PIC18 sleep pic18 часы реального времени c код PIC16F877 прерывание pic16f887 Описания Примеры кодов PIC18 pic16f887
Текст: Текст файла недоступен


Оригинал
PDF DS80233C-страница Примеры кодов PIC16f690 pic16f887 Приложения Примеры кодов PIC16f876 Примеры кодов PIC12f675 PIC18 пример кода сна pic18 часы реального времени c код PIC16F877 прерывание pic16f887 Описания Примеры кодов PIC18 pic16f887
2005 – частотомер с использованием PIC16F73

Аннотация: пример pic18f6680 PIC16F877 прерывание PIC18 пример кода прерывания PIC16F628A счетчик PIC16C72 PIC16C65B PIC16C65A Контроль часов PIC PIC16F873 PIC16C63
Текст: текст файла недоступен


Оригинал
PDF DS80233B-страница частотомер с использованием PIC16F73 pic18f6680 пример PIC16F877 прерывание PIC18 пример кода прерывания Счетчик PIC16F628A PIC16C72 PIC16C65B PIC16C65A Управление часами PIC PIC16F873 PIC16C63
2009 – PIC18F14K50-ДВС

Аннотация: Схема mplab icd 3 PIC24FJ128GA006 AC164112 AC162053 PIC24FJ96GA006 AC162058 PIC24FJ64GA006 Схема AC164112 PIC18F4 * Спецификация программирования
Текст: Текст файла недоступен


Оригинал
PDF DS51292R-страница PIC18F14K50-ДВС Схема mplab icd 3 PIC24FJ128GA006 AC164112 AC162053 PIC24FJ96GA006 AC162058 PIC24FJ64GA006 Схема AC164112 PIC18F4 * Спецификация программирования

PIC Assembly Tutorial 1 – Introduction to Assembly Programming.- [Brads Electronic Projects]

Добро пожаловать в первую часть руководств по сборке PIC.

Этот набор руководств основан на постоянно популярных микроконтроллерах PIC16F628A и PIC16F648A. Мы будем программировать на ассемблере по ряду причин:

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

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

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

Вы можете скачать техническое описание здесь

Когда вы откроете его, вы захотите перейти к странице с номером «112».Эта страница содержит красивую таблицу для печати, в которой рассказывается, каковы все инструкции для этого микроконтроллера (и что они делают). Рекомендуется распечатать ее и держать рядом с собой во время программирования. Если вы прокрутите страницу вниз со страницы 112, вы увидите, что она дает вам более подробную информацию о том, что делают эти инструкции, и примеры того, как их использовать – так что не стесняйтесь немного посмотреть и там.

Вам также необходимо будет загрузить себе копию MPLAB IDE – это бесплатное программное обеспечение, которое можно загрузить с веб-сайта микрочипов www.microchip.com

Что касается аппаратного обеспечения, вам понадобится микроконтроллер. Либо 16f628a, либо 16f648a.

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

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

Хорошо, теперь, когда у нас было небольшое представление, пора перейти к делу.

Откройте MPLAB IDE и дождитесь полной загрузки. После загрузки нажмите «Project», затем «Project Wizard». Вам будет представлена ​​приветственная страница, нажмите «NEXT». Теперь вам нужно выбрать микроконтроллер, который вы будете программировать. Просто используйте раскрывающийся список и найдите либо 16f628a, либо 16f648a (в зависимости от того, что вы используете) после выбора, нажмите “ ДАЛЕЕ ”, на следующей странице вас спросят, какой набор инструментов использовать, он будет автоматически выбран в соответствии с тем, что мы хотим, поэтому просто нажмите ‘ NEXT ‘Теперь он попросит вас создать новый файл проекта.Нажмите «BROWSE» («ПРОСМОТРЕТЬ»), и вы увидите окно «Сохранить как». Я рекомендую создать папку с названием «микроконтроллеры» в папке «Мои документы». откройте папку микроконтроллеров (или как вы ее назвали, а затем сохраните файл проекта как 16f628a или 16f648a (какой бы чип вы ни использовали), затем нажмите «ДАЛЕЕ». На четвертом шаге вас спросят, хотите ли вы включить какие-либо файлы в свой проект. Об этом не нужно беспокоиться, поэтому просто нажмите «ДАЛЕЕ»

Наконец, откроется сводная страница. Нажмите «ЗАВЕРШИТЬ», и теперь вы закончили настройку MPLAB для нашего конкретного микроконтроллера!

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

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

либо щелкните ссылку правой кнопкой мыши и сохраните шаблон, либо просто щелкните ссылку, чтобы открыть ее в браузере, а затем вы можете скопировать и вставить текст в MPLA IDE

ПРИМЕЧАНИЕ: MPLAB IDE не будет отображаться полностью различные цвета и правильное форматирование, пока вы не сохраните файл в формате.asm, вы должны ввести расширение самостоятельно при первом сохранении файла в MPLAB IDE.

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

Каждый раз, когда вы видите точку с запятой; я имею в виду, что все, что следует после этого, – это просто некоторые комментарии. Это означает, что при сборке (или компиляции вашего кода) MPLAB игнорирует комментарии.I.E. это не часть кода, а просто удобный способ написания комментариев, чтобы вы знали, что на самом деле делает код.

Ну вот и все для вводного руководства.

PIC16F628A Программируемый цифровой таймер – Electronics-Lab.com

Программируемые реле

находят применение во многих приложениях автоматизации, таких как автоматическое управление уличным освещением, управление поливом и насосами, HVAC, домашняя автоматизация, автоматизация электростанций в промышленности и т. Д.В этой статье описывается, как создать полнофункциональный одноканальный программируемый релейный переключатель с использованием микроконтроллера PIC16F628A. Это позволяет вам установить время включения и выключения. Максимальный интервал времени, который вы можете установить для включения и выключения, составляет 99 часов 59 минут. Еще одна интересная особенность этого проекта заключается в том, что он предлагает циклическую опцию, что означает, что вы можете запускать его в непрерывном цикле из циклов включения и выключения. Устройство можно запрограммировать с помощью 4-х кнопочных переключателей. Меню программирования и статус устройства отображаются на ЖК-дисплее размером 16 × 2 символа.Временное разрешение этого реле-таймера составляет 1 минуту. Таймер также сохраняет вводимые пользователем данные во внутреннюю EEPROM, чтобы сохранить эти значения после любого прерывания подачи питания. Вот краткое описание функций этого таймера:

  • Таймер с питанием от микроконтроллера
  • Установка времени выключения и включения для срабатывания реле
  • Опция для циклического прогона
  • Диапазон времени включения / выключения: от 0 до 99 часов 59 минут
  • 1-минутное разрешение по времени
  • Интерактивный пользовательский интерфейс с 4 тактовыми переключателями и символьным ЖК-дисплеем
  • Зуммер тревоги
  • Регулятор напряжения + 5В бортовой

Принципиальная схема

Аппаратная часть этого проекта очень проста.Вся схема работает от стабилизированного источника питания 5 В, созданного с использованием популярного линейного регулятора LM7805 (рисунок 1). Чтобы свести к минимуму рассеивание тепла в регуляторе напряжения, рекомендуемое входное напряжение постоянного тока для LM7805 составляет 9 В, которое можно легко получить от настенного адаптера постоянного тока. Диод D1 (1N4001) используется для защиты от обратной полярности в схеме. S1 – ползунковый переключатель для включения и выключения источника питания.

На рисунке 2 показаны настройки ввода и вывода. В этом проекте есть пять тактовых переключателей: один для сброса микроконтроллера и четыре для пользовательского ввода.Четыре переключателя входа имеют названия «Меню / +», «Выбор», «Ввод» и «Пуск / Стоп». Их функции будут описаны в разделе программного обеспечения. Состояние 4 входных переключателей считывается микроконтроллером PIC16F628A через порты RA2, RA3, RA4 и RB0. Выходной ЖК-дисплей представляет собой стандартный дисплей на основе HD44780, работающий в 4-битном режиме. Назначение контактов для данных ЖК-дисплея и сигналов управления показано на рисунке 2. S2 – еще один ползунковый переключатель, который позволяет вручную управлять подсветкой ЖК-дисплея.

Переключатель выходного реле приводится в действие транзистором NPN (2N2222).Проект также включает зуммер постоянного тока, который издает звуковой сигнал, когда релейный переключатель меняет свое состояние. Цепи реле и зуммера показаны на рисунке 3.

Микроконтроллер PIC16F628A работает на частоте 4,0 МГц с использованием внешнего резонатора. Контакты ввода-вывода PIC16F628A, разъем резонатора и внутрисхемный последовательный программатор (ICSP) показаны на рисунке 4.


Рисунок 1. Регулируемый блок питания + 5 В

Рисунок 2. Схема ввода-вывода с назначением контактов PIC16F628A


Рисунок 3.Схема управления реле и зуммером

Рисунок 4. Разъемы резонатора PIC16F628A и заголовка ICSP
Назначение контактов PIC16F628A для ЖК-дисплея, переключателей, реле и цепей зуммера приведено в следующей таблице.

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

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

Программируемый релейный таймер получает сигналы от 4-х кнопок. Их функции описаны ниже:

Меню / + : Эта кнопка позволяет перемещаться между различными опциями меню, такими как установка времени включения, установка времени выключения и установка циклических опций.Эти параметры отображаются на ЖК-дисплее. Эта кнопка также служит для увеличения цифры во время установки времени. Время устанавливается в формате ЧЧ: ММ, что дает минимальное значение временного интервала 1 мин.

Выбор: Позволяет выбрать отображаемый параметр меню, а также отдельные цифры часов и минут. Выбранная цифра увеличивается на 1 при нажатии кнопки Menu / +.

Введите: Когда соответствующие часы и минуты установлены, нажатие кнопки Enter завершит установку времени.Опция «Циклический» также вводится с помощью этой кнопки.

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

А теперь посмотрим, как это работает. Допустим, релейный переключатель нужно включить через 15 минут на 10 минут. Это означает, что время выключения составляет 15 минут, а время включения – 10 минут. Как только таймер будет запущен после ввода вышеуказанного времени, устройство включится через 15 минут и будет оставаться включенным в течение 20 минут.После этого снова выключится. Если для параметра «Циклический» выбрано значение 1, таймер будет работать в цикле, и после еще 15 минут времени ВЫКЛЮЧЕНИЯ реле будет включено на следующие 10 минут и так далее.

Прошивка для этого проекта разработана с использованием mikroC Pro для компилятора PIC от компании «МикроЭлектроника». Учет времени достигается с помощью модуля Timer 0, встроенного в PIC16F628A. Прерывание Timer0 разрешено и выполняется со значением предварительного делителя 1: 256 для создания точной длительности 500 мс (полсекунды).Символ двоеточия между цифрами ЧЧ и ММ мигает с частотой 1 Гц. Полусекундная задержка зацикливается 120 раз для создания минутной длительности. Вы можете загрузить полные файлы проекта, включая исходный код и скомпилированный HEX-файл, в прикрепленном файле.

Фото

На следующем видео показано устройство таймера в действии.

Ключевые слова:

  • Функция зуммера состоит в том, чтобы уведомлять пользователя звуковым сигналом всякий раз, когда реле включается и выключается.
  • В случае сбоя питания таймер извлечет выбранное пользователем время включения и выключения из EEPROM. Но таймер будет остановлен и не будет работать, пока пользователь не нажмет Start
  • Все принципиальные схемы, используемые в этом проекте, являются оригинальными и нарисованы автором с помощью редактора схем EasyEDA. EasyEDA – это бесплатный онлайн-инструмент САПР для компоновки схем, проектирования печатных плат и моделирования.

Автор: Радж Бхатт (энтузиаст электроники и производитель оборудования, а также основатель Embedded Lab; посетите мой магазин Tindie)

PIC16F628A Светодиодный охотник

Автор: Динеш Кумар Викрамасингхе

Введение

Эта аккуратная маленькая схема содержит 8 светодиодов, управляемых напрямую от PIC, а также переключатель управления одним режимом.Прошивка в другом месте на этой странице управляет светодиодами с 5-битным ШИМ-сигналом, обеспечивающим каждый из 8 светодиодных каналов с четырьмя уровнями интенсивность; выкл., тусклый, средний, яркий. Ряд последовательностей запрограммирован в прошивка для обеспечения некоторых интересных визуальных эффектов и последовательностей чейза, в том числе классический эффект, наблюдаемый на автомобиле в сериале Knight Rider TV (Первоисточник – пикпроекты.org.uk).

PIC16F628A LED Chaser YouTube Видео

Завершенная схема PIC16F628A LED Chaser

PIC16F628A LED Chaser при работе

Схема устройства поиска светодиода PIC16F628A


PIC16F628A LED Chaser Загрузки

Скачать исходный код
Скачать скомпилированный шестнадцатеричный код (готов к программированию)
Скачать схему
Все в одном молнии .

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

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