Mclr в pic что это
Перейти к содержимому

Mclr в pic что это

  • автор:

Mclr в pic что это

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

Что такое PICmicro?
PICmicro — это серия 8-битных микроконтроллеров, выпускаемых фирмой Microchip, имеющих одинаковые архитектуру и набор команд. Микроконтроллеры PICmicro группируются по размеру инструкции:

  1. Base Line: 12-битные инструкции.
  2. Mid-Range: 14-битные инструкции.
  3. High-End: 16-битные инструкции.

Архитектура
Микроконтроллеры имеют Гарвардскую архитектуру. Это означает, что доступ к памяти данных и памяти программы осуществляется раздельно.

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

Командный цикл выполняется за 4 такта. Эти четыре такта называют Q1, Q2, Q3 и Q4. Тактирование производится со входа OSC1 (или со внутреннего генератора). На Q1 инкрементируется счетчик программы (PC). Остальные 3 такта инструкция копируется из программной памяти в командный регистр. Одновременно, в течение всего цикла выполняется инструкция, помещенная в командный регистр за прошлый цикл.

Пример подключения PIC16F627
Контроллер питается от напряжения от 3.0 до 5.5 Вольт (для f=20МГц), потребляет от 0.7 до 200 мА (сильно зависит от тактовой частоты и подключенных нагрузок).

Простейшая схема подключения:

Программирование микроконтроллера
Составить программу на ассемблере можно в любом текстовом редакторе, сохранив как неформатированный текст в файл с расширением ‘asm’. Удобнее воспользоваться средой MPLab.

MPLab — интегрированная среда разработки для процессоров PICmicro. Скачиваем MPLab с http:\\www.microchip.com. Устанавливаем. Запускаем. Командой File\New создаем новый файл (пока без проекта). В созданном окне редактирования можно набирать текст программы. В составе MPLab есть стандартный PIC-ассемблер MPASM.

Пример программы: ;***********************************************
;* Пример программы для PIC16F627.
;* Версия от 1 января 2001г.
;***********************************************
; Все, что правее точки с запятой — это комментарии.

; Сообщаем компилятору название микроконтроллера.
PROCESSOR PIC16F627
; Подключаем файл с определениями «p16f627.inc».
; Загляните в него, он находится в папке Mplab.
#include
; Задаем слово конфигурации микроконтроллера.
__CONFIG _BODEN_ON & _CP_ALL & _PWRTE_ON & _WDT_OFF & _LVP_OFF & _MCLRE_OFF & _INCRC_OSC_NOCLKOUT

org 0x20 ; Адрес начала ОЗУ.
; Резервируем 1 байт ОЗУ для хранения каких-либо значений.
fREGISTER res 1

ORG 0x000 ; Адрес выполнения первой команды
goto start ; Переход на команду по адресу ‘start’
; Метка ‘start’ — это адрес следующей за меткой команды.
start:
; Помещаем в аккумулятор W константу (десятичное число 15).
movlw d’15’
; Копируем значение W в регистр fREGISTER.
movwf fREGISTER
; Переходим на метку ‘start’ (заносим в счетчик команд адрес ‘start’).
goto start
; Программа будет выполняться по кругу вечно.
end

Хотя эта программа ничего не делает (кроме того, что запоминает в fREGISTER число 15), она поможет разобраться в процессе программирования.

Когда вы набрали и сохранили эту или свою программу, ее нужно откомпилировать. В среде MPLAB это можно сделать выбрав пункт меню ‘Project/Build Node’, или нажав Alt+F10. Если вы пишете в обычном редакторе, запустите ‘mpasmwin.exe’, выберите ассемблируемый файл нажав на кнопку ‘Browse. ‘, далее ‘Assemble’.

Результат ассемблирования должен сохраниться в файле с расширением ‘hex’. Остается только запустить ПО вашего программатора, выбрать тип процессора, загрузить результирующий файл, вставить микросхему в программатор и нажать кнопку программирования.

Продолжение следует.

Mclr в pic что это

Глупый вопрос касательно аппаратной части (вход -MCLR).

Netwolf: Всем доброе время суток. Вопрос по принципиальной схеме из Главы 7: подскажите, к чему на входе -MCLR висит резистор 1. 10 кОм? Разве входы PICа не позволяют уровень лог.1 брать напрямую с питания? Может, этот вход хитрый какой? К тому же, мне попадались схемы, где вход -MCLR заведен напрямую на плюс питания. Если есть какие-то скрытые хитрости в этом резисторе, то хочется знать. С уважением, Шрам Дмитрий aka Netwolf

Ответов — 13

Пётр: Вывод «MCLR» в основном служит для сброса микроконтроллера. Этот резистор нужен в случае если предполагается переводить ПИК в исходное состояние во время его работы. При таком подключении вывода «MCLR» к источнику питания, его можно замыкать на общий провод т. е. сбрасывать контроллер. В этом случае приграмма начнёт исполнятся с самого начала. Возможно изначально в этой схеме была кнопка или конденсатор, которые подключались к общему проводу и к выводу «MCLR». Если не предполагается сбрасывать ПИК, этот резистор можно заменить проволочной перемычкой.

Evgeny Korabelnikov: Согласен с Петром. Это «атавизм» RC цепочки (противодребезговый фильтр нижних частот), применяемой при сбросе по входу MCLR при помощи кнопки или другого «дребезжащего устройства». Если такого сброса нет, то резистор можно убрать. На своих принципиальных схемах я его «прорисовываю» по причине их «учебности»: а вдруг, в ходе «изысканий», потребуется организовать сброс по MCLR? Может быть, во многих случаях, это и лишний «прибамбас», но пусть «глаза помозолит». Хуже от этого не будет.

vnleon: При внутрисхемном програмировании нужная штука

Netwolf: Спасибо, по вашим комментариям разобрался. А так без бутылки не разберешься.

vnleon: Не знаю, как с бутылкой, но с даташитами разобраться, когда нужен резистор, а когда нет невозможно. Если порассуждать, при работе нужно подавать напряжение питания микроконтроллера, при програмировании 12в. В разных даташитах больше 14в подавать нельзя. В даташите на 16F628 зачем-то прилепили на RA5/MCLR защитный диод на Vdd. Быть его там не может! Мы бы при програмировании больше напряжения питания + падение на этом диоде поднять не смогли. Другое дело, если там стоит защитный стабилитрон на 14в, на землю. А если его нет, при прямом подключении MCLR к Vпит и при пробое входа произойдет короткое замыкание на внутреннюю схему. При достаточной мощности источника питания можно и дымок увидеть . Так что резистор лучше ставить.

Ruslan Lipin: Netwolf Резистор ставить нужно! Как-то от нечего делать лохматил даташит (просто тупо всё вподряд) и объяснение по этому вопросу запомнил. Разработчики утверждают, что на входе MCLR внутри пика стоит фильтр нижних частот. И этот резистор служит для нормальной работы этого фильтра. На мой законный вопрос: от чего фильтровать? нашёл краткое объяснение: от помех в цепи питания! А вообще вопрос сброса весьма обширный, тонкостей хватает. Я однажды уже споткнулся штампуя по шаблону эту схему для всех вподряд устройств. Оказывается нужно учитывать скорость нарастания напряжения питания. и под этот параметр строить схему включения MCLR и слово конфигурации.

Ruslan Lipin: Netwolf Резистор ставить нужно! Как-то от нечего делать лохматил даташит (просто тупо всё вподряд) и объяснение по этому вопросу запомнил. Разработчики утверждают, что на входе MCLR внутри пика стоит фильтр нижних частот. И этот резистор служит для нормальной работы этого фильтра. На мой законный вопрос: от чего фильтровать? нашёл краткое объяснение: от помех в цепи питания! А вообще вопрос сброса весьма обширный, тонкостей хватает. Я однажды уже споткнулся штампуя по шаблону эту схему для всех вподряд устройств. Оказывается нужно учитывать скорость нарастания напряжения питания. и под этот параметр строить схему включения MCLR и слово конфигурации.

Пётр: Ruslan Lipin пишет: внутри пика стоит фильтр нижних частот Т. е. конденсатор на несколько десятков микрофорад. Интиресно, а как он туда поместился?

igor: были сбои по питанию. На MCLR поставил емкость 10 МкФ второй ногой в землю, резистор, естественно был. Получился фильтр низких частот. Сбои прекратились.

Ruslan Lipin: Пётр пишетИнтиресно, а как он туда поместился? В даташите про кондёр ничего не сказано, написано, что фильтр. Конечно же это ёмкость, только расковырять её в кристале рука не подымается

Vladimir: По поводу MCLR столкнулся был с таким приколом: когдато непомню где встретил что паралельно этому резистору включена емкость порядка 10 нан на макете поставил эту емкость собрал устройство, отладил все красиво и прекрасно собрал готовое устройство но не поставил эту емкость устройство наотрез отказалос работать пока таки не влепил туда ету емкость. P.S. Netwolf пишет: Глупый вопрос касательно аппаратной части (вход -MCLR). напротив не глупый а очень интересный.

pic-nn: Netwolf задал очень интересный вопрос. Типичное «радиолюбительское» заблуждение: Вывод «MCLR» в основном служит для сброса микроконтроллера. Этот резистор нужен в случае если предполагается переводить ПИК в исходное состояние во время его работы. Если не предполагается сбрасывать ПИК, этот резистор можно заменить проволочной перемычкой. Ещё одно заблуждение: Это «атавизм» RC цепочки (противодребезговый фильтр нижних частот), применяемой при сбросе по входу MCLR при помощи кнопки или другого «дребезжащего устройства». Если такого сброса нет, то резистор можно убрать. Внимание! RC-цепочка _там_ ставится не для того чтобы подавить дребезг (кнопка тут вообще непонятно откуда выросла) а для того чтобы обеспечить более-менее надёжный сброс МК и медленно нарастающем питании (удерживать MCLR в низком уровне пока питание нарастает от нуля до Vdd). Если программер использует внутренний POR (BOR тоже необходим), MCLR обычно подключают к (+) питания и на этом останавливаются. Конденсатор (0.01, 01мкФ) на MCLR увеличивает помехоустойчивость только в случае когда в схему лезут руками, пинцетами и прочими железяками (от статики, стекающей от рук на MCLR, ПИК естественно ресётится — конденсатор спасает положение). Ещё боле тяжёный случай — плохое питание, но тут уже надо перерабатывать источник питания (цепи фильтрации) а не защиту входа MCLR. Иногда подтяжку к Vdd ставят даже тогда когда MCLR отключен (кстати а попробуйте объяснить почему? 😉 По поводу диодов — господа, читайте внимательно даташит. Там нет никаких чудес. Диод разряжает конденсатор в момент выключения питалова, иначе через MCLR может потечь большой ток. От этого же тока ставят доп. резистор R1. [img]http://rh.foto.radikal.ru/0707/65/2920f53283ec.png[/img] Всё это естественно необходимо лишь в том случае когда используется конденсатор, и то очень редко (когда написано в явном виде в даташите на конкретный ПИК).

pic-nn: Забыл написать главную мысль. Не нужно ICSP? Смело ставь подтяжку к (+) на 5-10К и включай POR + BOR. Не надо конденсаторов. Нужно ICSP? Смело ставь подтяжку к (+) на 5-10К и включай POR + BOR. Не надо конденсаторов. Если мучают сомнения по поводу того в какую часть схемы пойдёт ток (и какой) при подаче 13В на MCLR, и сколько вольт при этом останется собственно на самом MCLR, можно воткнуть диод последовательно с резистором (как по схеме ICSP в даташите). Удачи 🙂

Использование вывода MCLR микроконтроллера PIC в качестве выхода

Хотя производители микроконтроллеров стараются предлагать разработчикам продукты, которые почти точно соответствуют требованиям их проектов, часто бывает так, что не хватает всего одного выходного контакта. Такая ситуация особенно типична для небольших конструкций, использующих микроконтроллеры с восемью выводами или менее. В этой статье используется микроконтроллер PIC10F222 компании Microchip. PIC10F222, выпускаемый в корпусе SOT23-6, имеет три контакта ввода-вывода, один входной контакт, ПЗУ, флеш-память и модуль АЦП. Программировать эти крошечные микроконтроллеры нужно точно так же, как их старших братьев. Для этого требуются вывод MCLR, две линии ввода-вывода (данные и тактовый сигнал) и выводы питания (VCC и GND). Чтобы войти в режим программирования, понадобятся выводы MCLR и питания. Поскольку микроконтроллер должен различать нормальный режим и режим программирования, в режиме программирования напряжение на выводе MCLR обычно достигает примерно 12 В. После этого при нормальной работе вывод MCLR можно настроить либо как вход внешнего сброса, либо как выход.

Вебинар «Литиевые аккумуляторы EVE Energy и решения для управления перезаряжаемыми источниками тока» (16.11.2023)

Рисунок 1. Добавление MOSFET и соответствующих цепей к входному
контакту MCLR микроконтроллера PIC превращает этот
контакт в выход.

В этой конструкции один контакт был необходим для аналогового ввода, а остальные три для вывода. Таким образом, в рассматриваемой схеме потребовался дополнительный выход. По этой причине вывод MCLR в этой схеме используется в качестве выхода. Для простоты на Рисунке 1 показана только одна выходная цепь, связанная с выводом GP3/MCLR. Чтобы вывод GP3/MCLR мог работать как выход, в схеме используются конфигурируемые слабые подтягивающие резисторы, имеющиеся в этом микроконтроллере. Контакт GP3/MCLR должен работать на вывод, для чего в слове конфигурации микроконтроллера следует установить бит глобальный слабой подтяжки. Хотя индивидуальное конфигурирование резисторов слабой подтяжки невозможно, это не является проблемой, поскольку все остальные контакты настраиваются как аналоговые входы или цифровые выходы.

Резисторы слабой подтяжки, в зависимости от напряжений питания, имеют сопротивления от 20 до 150 кОм, поэтому для управления более сильноточными нагрузками, такими как изображенный светодиод. в этой схеме используется транзистор Q1. Резистор R1 закрывает транзистор при отключении подтяжки. Поскольку затвор транзистора управляется сопротивлениями, максимальная частота переключения зависит от выбранного транзистора. Наихудшая ситуация возникает, когда транзистор Q1 нужно выключить. Время выключения транзистора Q1 определяется его емкостью затвор-исток и сопротивлением резистора R1.

Напряжения программирования для вывода MCLR равны примерно 12 В. Следовательно, транзистор Q1 должен выдерживать напряжение затвор-исток, превышающее это значение. Для выбранного MOSFET это напряжение составляет ±18 В. По этой причине не следует использовать в схеме цифровые MOSFET. Эту схему можно использовать и с другими микроконтроллерами PIC, а также почти со всеми микроконтроллерами семейства RS08KA компании Freescale.

Материалы по теме

  1. Datasheet Microchip PIC10F222
  2. Datasheet Microchip 2N7002

Перевод: AlexAAN по заказу РадиоЛоцман

Mclr в pic что это

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

Последовательность действий

  1. Для начала следует определиться на какой именно железке вы будете работать. Самый простой и быстрый вариант — купить какую-нибудь отладочную плату для PIC. Если же вы разбираетесь в схемотехнике и хотите получить более углублённые знания, можно, например, собрать базовую схему самому на макетной плате, используя микроконтроллер в DIP-корпусе. Во второй половине статьи описано какие особенности нужно учесть при разработке схемы.
  2. Купить прогамматор для прошивки вашего МК по ICSP-интерфейсу. Безусловно, лучший вариант это PICkit2 или PICkit3, либо их клоны. Я пробовал работать с несколькими JDM-программаторами, работающими через COM-порт, и ещё каким-то noname (по типу ICD), и могу сказать, что лучше не тратить на всё это время, а просто купить на ближайшем радиобазаре клон PICkit2 (естесственно ещё лучше оригинал) и навсегда забыть про все проблемы. Либо, если уж очень хочется начать, но возможности купить указанный программатор нет, можно собрать простейший JDM-программатор со стабилизацией питания для COM-порта, либо чуть более сложный с согласованием уровней для переходника USB-RS232. Однако, если уж вы будете покупать себе адаптер USB-RS232 для этих целей, я всё-таки настоятельно рекомендую вам хорошенько подумать и купить вместо него сразу PICkit, поскольку JDM-программаторы это тот ещё изврат. И, кроме всего прочего, PICkit тоже может работать как самостоятельный USB-RS232, кроме того он же ещё и как отладчик должен уметь работать.
  3. Если вы выбрали JDM, то вам пригодится программа для прошивки типа XXX. Если же у вас оригинальный PICkit2 или его клон, скачивайте PICkit 2 v.2.60.

Скачать ПО для PICkit 2

Скачать PICkit 2 v.2.60

PICkit 2 v.2.60 (zip-архив, 3.93 МБайт)

Особенности схемотехники и внутреннего устройства PIC

  1. Пин MCLR отвечает за сброс МК. Есть несколько вариантов внешней схемы сброса, самая правильная приведена в даташите, но в случае попроще достаточно притянуть данный пин через резистор 5-10 кОм к питанию. Меньше 1 кОм ставить не советую — в даташите есть ограничения на максимальный ток данного пина. Ставить больше 15 кОм тоже нежелательно — ваш контроллер может начать перезагружаться от каждого внешнего электромагнитного всплеска.
  2. Пины программирования также желательно подтягивать к питанию. Диапазон сопротивлений тот же: 5-10 кОм. Ставить сильно большие резисторы или не ставить их вовсе чревато перезагрузками и зависаниями, ставить номиналы меньше 5 кОм — чревато бросками токов, а также проблемами с программатором, который на большие подтяжки не расчитан. В идеальном случае, желательно реализовать отсоединение пинов от схемы при программировании (например перемычками), тогда нижняя граница сопротивления будет определяться только нагрузочной способностью пина.
  3. Для выхода на нормальный режим работы генератора частоты МК требуется определённое время, пусть и небольшое. Это время определяться двумя факторами:
    • Скоростью нарастания напряжения источника питания при включении.
    • Временем, нужным для зарядки нагрузочных конденсаторов кварцевого или керамического резонатора (при режимах работы XT и HS). Чаще всего, больший номинал нагрузочных ёмкостей обеспечивает лучшую стабильность работы, однако требует большего времени для старта, что тоже нужно учитывать.

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

    • Таймер Power-up Timer (PWRT) служит для установки фиксированного времени ожидания выхода питания на рабочий режим. Если вы уверены что у вас качественный и быстрый источник питания (либо питание от батареи и нет бросков тока), данный таймер допустимо не включать.
    • Второй таймер — Oscillator Start-up Timer (OST) работает немного по другому — этот таймер удерживает устройство в режиме Reset пока не пройдёт некоторое количество циклов генератора (обычно 1024) нужных для стабилизации частоты. Как следует из вышесказанного, данный таймер может иметь различное время, поэтому для исключения труднопрогнозируемых ошибок в программе, данный таймер лично я советую всегда оставлять включенным.

    Немного отклоняясь от темы, хочу заметить, что контроллеры PIC — не единственные, требующие задержек при включенни, похожие требования есть, например у ядер Cortex-M, или C2000 от TI. Только, чаще всего, там задержку нужно прописывать самостоятельно в коде.

  4. Если в вашей программе используются прерывания, обратите внимние на регистры, управляющие работой прерываний в вашей модели контроллера (в PIC они называются INTCON от англ. Interrupt Control), в частности на бит GIE, либо аналогичный. При перезагрузке данный бит устанавливается в 0, что может выключить все прерывания (если бит IPEN = 0).

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

Собственно, вот и всё, если были учтены описанные выше требования и выполнены все шаги — можно писать свой первый Hello World и заливать в контроллер, большая часть возможных проблем тут описана.

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

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