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


| Рисунок 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.
Материалы по теме
- Datasheet Microchip PIC10F222
- Datasheet Microchip 2N7002
Перевод: AlexAAN по заказу РадиоЛоцман
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 в даташите). Удачи 🙂
Тема: PIC контроллеры
только нчинаю общаться с PIC может вопрос глупый, но никак не могу понять вход MCLR это то же самое что и RESET. У меня формирователь формирует импульсы, которыми нужно сбрасывать PIC, будет ли он сбрасываться, если эти импульсы через инвертор подавать прямо на вход (инверсный) MCLR, или нет?
Просто есть еще порт RB0, он может использоваться как вход внешнего прерывания, если на него подавать импульсы с формирователя, это будет как прерывание и будет ли сбрасываться при этом контроллер и все это описывается программно или как?
Заранее всем спасибо
- Поделиться
- Поделиться этим сообщением через
- Digg
- Del.icio.us
- Technorati
- Разместить в ВКонтакте
- Разместить в Facebook
- Разместить в MySpace
- Разместить в Twitter
- Разместить в ЖЖ
- Разместить в Google
- Разместить в Yahoo
- Разместить в Яндекс.Закладках
- Разместить в Ссылки@Mail.Ru
- Reddit!
01.03.2004, 10:54 #2

Без позывного Регистрация 09.07.2003 Адрес Москва Возраст 55 Сообщений 375 Поблагодарили 13 Поблагодарил 2
Вход MCLR — безусловный сброс. Выполнение программы начнется с нулевого адреса, как при включении питания.
А вот прерывания (по RB0 или любому другому запросу) обязательно требуют программной обработки.
Имейте в виду, у многих PIC более поздней, чем PIC16F84, разработки имеется возможность отключить функцию вывода MCLR как входа сигнала сброса и использовать его иным образом.- Поделиться
- Поделиться этим сообщением через
- Digg
- Del.icio.us
- Technorati
- Разместить в ВКонтакте
- Разместить в Facebook
- Разместить в MySpace
- Разместить в Twitter
- Разместить в ЖЖ
- Разместить в Google
- Разместить в Yahoo
- Разместить в Яндекс.Закладках
- Разместить в Ссылки@Mail.Ru
- Reddit!
01.03.2004, 11:59 #3

Low Power Регистрация 11.11.2002 Адрес Минск, Беларусь Возраст 55 Сообщений 73 Поблагодарили 2 Поблагодарил 0
Имейте в виду, у многих PIC более поздней, чем PIC16F84, разработки имеется возможность отключить функцию вывода MCLR как входа сигнала сброса и использовать его иным образом.
- Поделиться
- Поделиться этим сообщением через
- Digg
- Del.icio.us
- Technorati
- Разместить в ВКонтакте
- Разместить в Facebook
- Разместить в MySpace
- Разместить в Twitter
- Разместить в ЖЖ
- Разместить в Google
- Разместить в Yahoo
- Разместить в Яндекс.Закладках
- Разместить в Ссылки@Mail.Ru
- Reddit!
01.03.2004, 17:14 #4

Без позывного Регистрация 09.07.2003 Адрес Москва Возраст 55 Сообщений 375 Поблагодарили 13 Поблагодарил 2
Например, у PIC16F628 при установке в 0 соответствующего разряда слова конфигурации (bit 5 — MCLRE) вывод 4 становится входом RA5 (к сожалению односторонним, только на ввод). Цепь /MCLR в этом случае от внешнего вывода отключена и «подтянута» к питанию внутри микросхемы.
- Поделиться
- Поделиться этим сообщением через
- Digg
- Del.icio.us
- Technorati
- Разместить в ВКонтакте
- Разместить в Facebook
- Разместить в MySpace
- Разместить в Twitter
- Разместить в ЖЖ
- Разместить в Google
- Разместить в Yahoo
- Разместить в Яндекс.Закладках
- Разместить в Ссылки@Mail.Ru
- Reddit!
Простой программатор PIC-контроллеров с использованием PicPgm
В данной статье представлен очень простой и полезный мини-проект с низкой стоимостью. В нем создается программатор PIC-контроллеров с 40 выводами, который подключается по последовательному порту. Микроконтроллеры играют очень важную роль в электронике, поскольку они могут выполнять различные задачи в автоматизированных системах, схемах управления, при обработке изображений и т.д. Их область применения просто огромна. Существуют разнообразные семейства микроконтроллеров, одним из которых выступают PIC-контроллеры (Интерфейс периферийного устройства) компании Microchip. PIC-контроллеры очень популярны, поскольку они относительно дешевые и имеют эффективные характеристики, например, низкое энергопотребление, внутренний тактовый генератор и используют бесплатные средства разработки. В данном примере рассматривается простейший программатор PIC-контроллеров:
Как показано выше, используется только три резистора номиналом 4.7 кОм, включенных между коннектором DB9 и PIC-контроллером. В соответствии со схемой, данные резисторы подсоединяются к следующим выводам PIC-контроллера: MCLR (1), PGC (39) и PGD (40). Вывод номер 8 коннектора DB9 подсоединяется к выводу PGD (40) в PIC-контроллере. Данный программатор работает от напряжения 5 В постоянного тока. Поэтому внешний источник напряжения должен быть подключен к 2-х выводному коннектору. С помощью KiCad программного обеспечения была разработана печатная плата программатора:
Когда мы начали изготавливать печатную плату, мы напечатали макет на листе прозрачной ацетатной пленки. Далее мы использовали метод облучения ультрафиолетовым излучением для перевода схемы на плату. И наконец, мы вытравили печатную плату в растворе хлорного железа. Программатор готов к использованию! Вот как он выглядит:
Для программирования PIC-контроллера выполните следующие шаги: 1. Подключите программатор через последовательный кабель к персональному компьютеру;
2. Вставьте PIC-контроллер в гнездо на плате программатора, например PIC18F4550;
3. Используя средство разработки IDE, например, MPLAB, напишите программу, скомпилируйте код и сгенерируйте .HEX файл;
4. С помощью программного обеспечения, например PICPgm, «залейте» .HEX файл в PIC-контроллер. Таким образом, PIC-контроллер готов к работе, а у вас есть новый программатор для 40-выводных PIC-микроконтроллеров.