Схемы на pic контроллерах – Схемы на микроконтроллерах

Содержание

Устрйоства на микроконтроллерах Microchip серии PIC

Бортовой компьютер для автомобиля (PIC18F258, C) 20.03.2013
Чесались руки сделать что-то для свежекупленного автомобиля, остановился на полезной вещи — бортовой компьютер. Автомобиль Nissan Almera N15…
Просмотров: 9466

Обман одометра (PIC12F629) 08.08.2008
Устройство собрано на МК PIC12F629 и предназначено для управления сигналом идущим от одометра. Сигнал можно отключать, включать тестовый…
Просмотров: 11001

Автомобильный охранный сигнализатор на микроконтроллере (PIC16F84A, asm) 08.08.2008
Это устройство отличается от подобных отсутствием времязадающих RC- цепей. Поскольку его основой служит микроконтроллер, оно…
Просмотров: 4010

Автомобильный цифровой спидометр (PIC16F84A, asm) 08.08.2008
Автомобильный цифровой спидометр предназначен для установки в автомобили со штатными аналоговыми спидометрами, управляемые…
Просмотров: 7378

COM to MIDI или преобразование скорости USART (PIC16F828A, asm) 08.03.2009

К сожалению, практически все переносные компьютеры не оборудованы приёмопередатчиком MPU-401. В связи с этим, подключать их обычным…
Просмотров: 3112

USB Bootloader (загрузчик) для микроконтроллеров PIC18 (asm, C++) 03.11.2010
USB PIC Bootloader — это USB загрузчик для серии микроконтроллеров PIC18 фирмы Microchip. Он позволяет загрузить программное обеспечение в…
Просмотров: 4146

Универсальный таймер на PIC контроллере (PIC16F84A, C) 09.08.2008
Универсальность описываемого в статье устройства в том, что оно способно не только включить и выключить в заданное время четыре…
Просмотров: 5080

АЦП с интерфейсом RS232 (PIC12F675, asm) 09.08.2008
Воспользовавшись восьмивыводным микроконтроллером PIC12F675 со встроенным АЦП, автор разработал простую приставку к компьютеру и…
Просмотров: 5051

Частотомер — цифровая шкала на LED (PIC16F84/PIC16CE625, asm) 26.02.2011
Описание опубликовано в журнале «Радио» № 1 за 2002 г., стр. 60…62, Частотомер — цифровая шкала на PIC16CE625, позднее было опубликовано…
Просмотров: 5753

Частотомер — цифровая шкала с LCD (PIC16F84/PIC16F628, asm) 26.02.2011
Описание опубликовано в журнале «Радио» № 7 за 2004 г., стр. 64, 65 Частотомер — цифровая шкала с ЖК индикатором и «Радиолюбитель»…
Просмотров: 5978

Пробник «Мечта электрика» (PIC12F675, C) 30.10.2010
Возможности : — измерение сопротивления 0 — 300 Ом. — звуковой сигнал при сопротивлении менее 20 Ом. — тест переходов полупроводников. -…
Просмотров: 6899

Частотомер и прибор для проверки конденсаторов, импульсных трансформаторов (PIC16F876A) 28.08.2010
В последнее время, с появлением электролитических конденсаторов предназначенных для работы на высоких частотах, стал популярен способ…

Просмотров: 11908

Кабельный пробник на микроконтроллере (PIC16F84A, asm) 28.08.2010
Устройство состоит из двух частей: передающей и приемной. Жилы кабеля с одной стороны подключают к контактам Х1—Х8 передатчика, с другой…
Просмотров: 3184

Сопряжение с компьютером цифрового мультиметра серии 830 (PIC12F629, asm, C++) 09.08.2008
Подключение малогабаритного мультиметра к персональному компьютеру позволяет проводить статистическую обработку результатов серии…
Просмотров: 4251

АЦП с интерфейсом RS232 (PIC12F675, asm) 09.08.2008
Воспользовавшись восьмивыводным микроконтроллером PIC12F675 со встроенным АЦП, автор разработал простую приставку к компьютеру и…
Просмотров: 5051

Микроконтроллерный определитель выводов транзисторов (PIC16F84A, asm) 09.08.2008
Принцип действия определителя транзисторов основан на том, что на любом из выводов микроконтроллера, настроенном как выходной, может…

Просмотров: 4281

Микроконтроллерный искатель проводки (PIC12F629, C) 09.08.2008
Работа устройств, способных обнаружить электрические провода в стене, основана на улавливании создаваемого ими электромагнитного…
Просмотров: 6807

Генератор на PIC16F84A и AD9850 (PIC16F84A, C) 09.08.2008
Описываемый в статье генератор содержит микроконтроллер, но использован он только для управления специализированной микросхемой —…
Просмотров: 7252

Паяльная станция на PIC-контроллере (PIC16F84A, asm) 09.08.2008
Профессиональные паяльные станции импортного производства обладают большим набором сервисных функций, но очень дороги и недоступны…
Просмотров: 6322

Прибор для контроля многожильных кабелей на НТ9200В (PIC16F84A) 09.08.2008
В современной технике связи, компьютерных сетях и дистанционных контрольно- измерительных приборах, системах телеуправления…

Просмотров: 5405

Приставка на PIC для проверки телефонных аппаратов (PIC16F84A, PIC16F628, asm) 09.08.2008
Мне иногда приходится заниматься ремонтом телефонных аппаратов. И я здорово надоел жене с просьбой перезвонить домой, чтобы проверить…
Просмотров: 2565

Микрофарадометр на PIC микроконтроллере (PIC16F876A, C) 09.08.2008
В радиолюбительской практике необходимость измерения больших значений электрической емкости очевидна. Многие современные…
Просмотров: 4091

Частотомер на PIC микроконтроллере (PIC16F84A, asm) 09.08.2008
Простой 4-разрядный частотомер на микроконтроллере Рис. 1. Схема частотомера на микроконтроллере PIC16F84 Рис. 2. Фото частотомера на…
Просмотров: 11305

Электронный резьборез с микроконтроллерным управлением (PIC16F84A, C) 09.08.2008
Принцип действия резьбонарезного устройства основан на быстром изменении направления вращения режущего инструмента в пределах…

Просмотров: 4453

Частотомер на PIC контроллере с LCD дисплеем (PIC18F252, C) 09.08.2008
Частотомер собран на достаточно распространённых микроконтроллерах фирмы MICROCHIP PIC18F252 с применением 2х16 (он был под рукой), хотя можно…
Просмотров: 6045

Электронный цифровой частотомер на PIC микроконтроллере (PIC16F873) 09.08.2008
Цифровой частотомер на PIC микроконтроллере, позволяет измерять частоту в диапазоне от 10Гц до 40 МГц, с точностью до 0.01кГц. Цифровой…
Просмотров: 3947

Стенд для тестирования ATX блоков питания, методом снятия кросс-нагрузочных характеристик (PIC16F84A, asm) 19.04.2008
Цель проекта — разработка аппаратной части и программного обеспечения стенда для автоматического тестирования АТХ блоков питания…
Просмотров: 6327

Частотомер, прибор для проверки конденсаторов, импульсных трансформаторов V3 (PIC16F876A) 19.12.2007
Это дальнейшее развитие Прибор для проверки конденсаторов, импульсных трансформаторов и измерения частоты. Основные отличия : -…
Просмотров: 5761

Применение семи сегментных LED модулей HT1611, HT1613, МТ10Т7-7 (asm) 24.12.2010
Практически любое микроконтроллерное устройство имеет те или иные устройства индикации. В простейшем случае это всего несколько…
Просмотров: 5211

Контроллер графического LCD WG32240 (PIC18F2520, C) 09.08.2008
В настоящее время промышленностью выпускается большое количество графических ЖКИ. Существуют как модели со встроенным контроллером,…
Просмотров: 3699

ИК пульт ДУ для Canon, Nikon, Minolta, Pentax, Olympus (PIC12F629, asm) 02.12.2010
Некоторые фотокамеры фирм Canon, Nikon, Minolta, Pentax, Olympus имеют функцию дистанционной съёмки с помощью инфракрасного пульта дистанционного…

Просмотров: 3662

Часы с коррекцией времени от GPS (PIC16F876, asm) 16.05.2008
Конструкции и принципиальные схемы электронных часов в настоящее время достаточно хорошо разработаны. Но точность индикации времени…
Просмотров: 4699

Калькулятор для спортивных соревнований с гандикапом (PIC16F88, asm) 21.04.2008
Разработанный авторами калькулятор предназначен для быстрого пересчета времени, затраченного участниками соревнований на…
Просмотров: 2368

Универсальная телефонная приставка (PIC16F84A) 01.03.2008
Сегодня практически во всех крупных городах телефонные номера переводятся на повременную оплату. Недалеко то время, когда поминутная…
Просмотров: 3911

Таймер на PIC16F628 (PIC16F628, asm) 01.03.2008
Проэкт представляет собой часы с таймером, который может быть запрограммирован на включение и на выключение. Я начал его делать так как…

Просмотров: 3861

Термостат для теплого пола (PIC16F84A, asm) 22.01.2008
Сегодня во многих квартирах имеются полы с электроподогревом. Они удобны и достаточно долговечны, но вот их терморегуляторы имеют ряд…
Просмотров: 4605

Дистанционный регулятор освещения (PIC16F629, C) 22.01.2008
Предлагаемый прибор — один из вариантов регулятора яркости ламп накаливания с расширенными за счет применения микроконтроллера…
Просмотров: 5151

Усовершенствованная «поющая ёлка» на PIC (PIC16F628, asm) 20.01.2008
Особенностью данной программы является возможность плавного изменения яркости светодиодов. Прототипом послужила «поющая…
Просмотров: 3810

Простые часы-будильник на PIC16F84 (PIC16F84, asm) 17.01.2008
Не так давно электронные часы строили на так называемых часовых микросхемах серии К176 и специализированных микросхемах серий К145…

Просмотров: 4987

Экономичный цифровой термометр (PIC16F628, asm) 16.01.2008
В последнее время конструирование цифровых термометров очень популярно. Применение микроконтроллеров (МК) и современных датчиков…
Просмотров: 4332

Часы-будильник с ЖК-индикатором (PIC16F84A) 15.01.2008
Особенности устройства: Два будильника. Сохранение времени установки будильников при выключении питания. Возможность отключения…
Просмотров: 3479

Таймер на PIC16F84 (PIC16F84A, asm) 07.01.2008
Таймер — одна из наиболее популярных радиолюбительских конструкций Вниманию читателей предлагается еще один вариант В отличие от…
Просмотров: 4441

Точные часы-будильник на микроконтроллере (PIC16F628A, asm) 04.01.2008
При создании этой конструкции основной упор был сделан на точности хода часов и удобстве управления.   — Реализовано 2 режима…

Просмотров: 4565

Часы с таймером на микроконтроллере (PIC16F628A, asm) 04.01.2008
Проэкт представляет собой часы с таймером, который может быть запрограммирован на включение и на выключение. Я начал его делать так как…
Просмотров: 4068

Автомат вечернего освещения (PIC12C508, C) 04.01.2008
Устройство, схема которого показана на рис. 1, ежедневно в установленное время включает и выключает свет. Разработал его таиландец Wrchit…
Просмотров: 2992

PIC для младенца (PIC12F629, asm) 07.12.2007
Назначение: Разработанное устройство предназначено для звуковой сигнализации намокания пеленок малыша. Как и памперсы, оно не…
Просмотров: 2627

Кодовый замок на PIC микроконтроллере (PIC16F84, asm) 09.08.2008
Устройство кодового замка для разнообразных применений. В частности, я использую замок дома. Внешнее исполнение может быть любым, в…
Просмотров: 3383

Охранное устройство с управлением ключами-таблетками iBUTTON (PIC16F84, asm) 09.08.2008
Предлагаемое устройство может выполнять функции охранной сигнализации или просто включать освещение при движении человека в…
Просмотров: 2894

Кодовый замок на PIC16F84 (PIC16F84) 09.08.2008
Схема этого устройства (разработчик — Jon Rck из США) размещена по адресу http://www.vermontficks.org/pic.htm К младшим разрядам портов А и В…
Просмотров: 3659

Охранная система MICROALARM (PIC16F84) 09.08.2008
Данное устройство предназначено для охраны квартир, дач, гаражей и т.д. Основой охранной системы является PIC-контроллер 16F84A. Постановку…
Просмотров: 2283

Электронный замок с ключом-таблеткой I-BUTTON (PIC16F627A (628A, 648A), asm) 09.08.2008
Здесь представлена схема электронного замка, в котором в качестве ключа используется устройство DS1990A(Touch Memory). Touch Memory типа DS1990A…
Просмотров: 4539

Охранное устройство с оповещением по телефонной линии (PIC16F628) 09.08.2008
Устройство предназначено для охраны помещения ( магазин , квартира ) с применением датчика движения и датчика открывания двери (…
Просмотров: 2980

Электронный замок с управлением от таблеток iBUTTON (PIC16F628A, C) 09.08.2008
Ниже представлена схема замка с использованием электронных ключей Touch Memory типа DS1990A. Устройство собрано на базе микроконтроллера…
Просмотров: 4742

Охранное устройство с управлением от таблеток iBUTTON (PIC16F628A) 09.08.2008
Ниже представлена схема охранного устройства с использованием электронных ключей Touch Memory типа DS1990A. Устройство собрано на базе…
Просмотров: 3480

GSM сигнализация (PIC16F628A) 09.08.2008
Данная страничка посвящена разработке экономичной GSM сигнализации с использованием телефона Siemens 35/45 серий и 8-разрядного…
Просмотров: 6837

Автомобильный охранный сигнализатор на микроконтроллере (PIC16F84A, asm) 08.08.2008
Это устройство отличается от подобных отсутствием времязадающих RC- цепей. Поскольку его основой служит микроконтроллер, оно…
Просмотров: 4010

Инвертор для однофазного асинхронного электродвигателя (PIC16F73, asm) 29.08.2010
Инвертор предназначен для управления скоростью и направлением вращения выходного вала однофазных асинхронных электродвигателей типа…
Просмотров: 6353

Блок питания с микроконтроллерным управлением (PIC16F628A, asm) 24.05.2008
Состоит из блока индикации и управления, измерительной части и блока защиты от КЗ. Блок индикации и управления. Индикатор — ЖКИ…
Просмотров: 11143

Стенд для тестирования ATX блоков питания, методом снятия кросс-нагрузочных характеристик (PIC16F84A, asm) 19.04.2008
Цель проекта — разработка аппаратной части и программного обеспечения стенда для автоматического тестирования АТХ блоков питания…
Просмотров: 6327

Зарядное устройство на PIC микроконтроллере (PIC12F675) 24.01.2008
Данное зарядное устройство (ЗУ) автоматизирует процесс зарядки аккумуляторов. Если аккумулятор не разряжен до напряжения 1 В, оно…
Просмотров: 7337

Регулируемый биполярный блок питания на микроконтроллере 0…15 В (PIC16F84A) 08.12.2007
Предлагаю вашему вниманию биполярный блок питания для повседневных нужд радиолюбителей, который имеет регулировку выходного…
Просмотров: 5904

COM to MIDI или преобразование скорости USART (PIC16F828A, asm) 08.03.2009
К сожалению, практически все переносные компьютеры не оборудованы приёмопередатчиком MPU-401. В связи с этим, подключать их обычным…
Просмотров: 3112

GTP USB Lite PIC программатор (PIC18F2550) 19.02.2011
Данный программатор с оригинальным названием GTP USB Lite разработан для прошивки PIC микроконтроллеров и микросхем памяти. Основной…
Просмотров: 11573

Устройство ввода вывода (PIC16F628A) 02.12.2010
Это устройство ввода вывода, применять можно в любых целях, где нужны кнопки и индикация. Устройство позволяет выводить на индикаторы…
Просмотров: 3054

Электронная записаня книжкa (PIC12F84, С) 02.12.2010
Новая элементная база позволяет создавать компактные и экономичные устройства, способные с помощью персонального компьютера…
Просмотров: 3146

Микроконтроллерная система управления токарным станком 16Б25ПСп (PIC16F876, C) 02.12.2010
Штатная система управления станком 16Б25ПСп разработана в 70-е годы и была реализована на тиристорно — транзисторной элементной базе. В…
Просмотров: 4781

ИК пульт ДУ для Canon, Nikon, Minolta, Pentax, Olympus (PIC12F629, asm) 02.12.2010
Некоторые фотокамеры фирм Canon, Nikon, Minolta, Pentax, Olympus имеют функцию дистанционной съёмки с помощью инфракрасного пульта дистанционного…
Просмотров: 3662

Инвертор для однофазного асинхронного электродвигателя (PIC16F73, asm) 29.08.2010
Инвертор предназначен для управления скоростью и направлением вращения выходного вала однофазных асинхронных электродвигателей типа…
Просмотров: 6353

Светодиодное табло «Волшебная палочка» (AT89C2051/PIC18C84, asm) 06.11.2010
За этим замысловатым названием кроется очень интересная конструкция на PIC-контроллере. Главное достоинство — это оригинальность идеи. В…
Просмотров: 4449

Устройство управления яркостью 8 светодиодов (PIC16F628, asm) 11.10.2010
По заданной программе изменяется яркость светодиодов. Изменение яркости осуществляется широтно-импульсной модуляцией (ШИМ). Так как…
Просмотров: 2732

Световое табло с круговой механической разверткой (PIC16F84A) 21.08.2008
Предлагаемое табло с помощью небольшого числа светодиодов создает относительно сложные графические изображения, для которых при…
Просмотров: 4970

Термометр на TC77 (PIC16F628, C) 11.10.2010
Такой термометр подходит для большинства потребностей измерения температуры в быту. Но не смотря на то, что он очень прост и дешев,…
Просмотров: 3873

Термометр на PIC (PIC16F628A) 29.10.2008
Ниже представлена схема простого термометра на PIC’е. Индикатор (в моём случае BA56-12SRWA) используется с общим анодом. Датчик температуры…
Просмотров: 10021

Аппаратно-программный комплекс многоточечного мониторинга температуры (PIC16F84A, asm) 19.04.2008
Цель проекта — разработка системы многоточечного мониторинга температуры, причем наблюдение за температурой должно быть доступным…
Просмотров: 3428

Цифровой термометр с выводом показаний на компьютер (PIC16F84A, asm) 19.04.2008
В качестве датчика температуры используется микросхема цифрового термометра DS18S20, который опрашивается контроллером на основе PIC16F84A….
Просмотров: 5199

Термометр с функцией таймера или управления термостатом (PIC16F84A, asm) 22.01.2008
Описания различных электронных цифровых термометров неоднократно публиковались на страницах журнала «Радио». Как правило, они…
Просмотров: 4481

Термореле с цифровым датчиком температуры (PIC16F84A) 18.11.2007
Термодатчики повсеместно используются в различных областях электроники. Это термометры, пожарные датчики сигнализации, мониторинг…
Просмотров: 3751

eldigi.ru

Осваиваем простейший микроконтроллер PIC. Часть 1 / Habr

Выбор микроконтроллера обычно осуществляется под необходимые задачи. Для изучения хорошо подойдет популярный МК с минимальным набором периферии: PIC16F628A.

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

На первых страницах перечислены основные характеристики МК (русское описание).

Основные моменты, которые нам понадобятся:

  • микроконтроллер содержит внутренний генератор на 4 MHz, так же можно подключить внешний кварц частотой до 20 MHz
  • 16 ног микроконтроллера можно использовать как цифровые входы\выходы
  • есть 2 аналоговых компаратора
  • 3 таймера
  • CCP модуль
  • USART модуль
  • 128 байт энергонезависимой памяти EEPROM

Схема расположения выводов:

Vdd — питание.
Vss — земля.

Это минимум, необходимый для работы МК.

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

Компилятор


Как я уже писал в предыдущих статьях, самым простым и легким я посчитал компилятор JAL с IDE JALEdit.

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

Запускаем JALEdit. Открываем пример програмы для нашего микроконтроллера: 16f628a_blink.jal, дабы не портить исходник, сразу сохраняем ее в новый файл, к примеру, 16f628a_test.jal.

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

  • выбор МК и его конфигурация
    include 16f628a -- подключение библиотеки нашего МК
    --
    -- This program assumes a 20 MHz resonator or crystal
    -- is connected to pins OSC1 and OSC2.
    pragma target clock 20_000_000 -- oscillator frequency
    -- configuration memory settings (fuses)
    pragma target OSC HS -- HS crystal or resonator
    pragma target WDT disabled -- no watchdog
    pragma target LVP disabled -- no Low Voltage Programming
    pragma target MCLR external -- reset externally
    --

  • объявление переменных, процедур, функций
    alias led is pin_A0
    pin_A0_direction = output

  • выполнение настроек и расчетов до основного цикла
    enable_digital_io() -- переключение всех входов\выходов на цифровой режим
  • бесконечный цикл основных действий МК
    forever loop
    led = on
    _usec_delay(250000)
    led = off
    _usec_delay(250000)
    end loop

Нажав F9 (или соответсвующую кнопку) программа скомпилируется в готовую прошивку, при этом будет видно сколько ресурсов МК будет задействовано:
Code :58/2048 Data:4/208 Hardware Stack: 0/8 Software Stack :80

Если прочитать комментарии, то станет ясно, что данная программа рассчитана на использование внешнего кварца 20MHz.
Так как у нас его пока нет, разберемся с конфигурацией и перепишем программу на использование внутреннего генератора.

Конфигурация


В разных микрокотнролерах существуют различные наборы конфигурационных битов. Узнать о назначении каждого бита можно в даташите (стр. 97).
В подключенной библиотеке каждому биту и каждому его значению присвоена читабельная переменная, остается только выбрать необходимые нам параметры.
-- Symbolic Fuse definitions
-- -------------------------
--
-- addr 0x2007
--
pragma fuse_def OSC 0x13 { -- oscillator
RC_CLKOUT = 0x13 -- rc: clkout on ra6/osc2/clkout, rc on ra7/osc1/clkin
RC_NOCLKOUT = 0x12 -- rc: i/o on ra6/osc2/clkout, rc on ra7/osc1/clkin
INTOSC_CLKOUT = 0x11 -- intosc: clkout on ra6/osc2/clkout, i/o on ra7/osc1/clkin
INTOSC_NOCLKOUT = 0x10 -- intosc: i/o on ra6/osc2/clkout, i/o on ra7/osc1/clkin
EC_NOCLKOUT = 0x3 -- ec
HS = 0x2 -- hs
XT = 0x1 -- xt
LP = 0x0 -- lp
}
pragma fuse_def WDT 0x4 { -- watchdog timer
ENABLED = 0x4 -- on
DISABLED = 0x0 -- off
}
pragma fuse_def PWRTE 0x8 { -- power up timer
DISABLED = 0x8 -- disabled
ENABLED = 0x0 -- enabled
}
pragma fuse_def MCLR 0x20 { -- master clear enable
EXTERNAL = 0x20 -- enabled
INTERNAL = 0x0 -- disabled
}
pragma fuse_def BROWNOUT 0x40 { -- brown out detect
ENABLED = 0x40 -- enabled
DISABLED = 0x0 -- disabled
}
pragma fuse_def LVP 0x80 { -- low voltage program
ENABLED = 0x80 -- enabled
DISABLED = 0x0 -- disabled
}
pragma fuse_def CPD 0x100 { -- data ee read protect
DISABLED = 0x100 -- disabled
ENABLED = 0x0 -- enabled
}
pragma fuse_def CP 0x2000 { -- code protect
DISABLED = 0x2000 -- off
ENABLED = 0x0 -- on
}
  • OSC — конфигурация источника тактирования
    может принимать 8 различных значений, 4 из которых нам могут понадобиться
    1. INTOSC_NOCLKOUT — внутренний генератор (4M Hz)
    2. HS — внешний высокочастотный кварц (8-20 MHz)
    3. XT = внешний кварц (200 kHz — 4 MHz)
    4. LP — внешний низкочастотный кварц (до 200 kHz)
  • WDT — сторожевой таймер.
    Основная работа этого таймера в том, что бы перезагрузить микроконтроллер когда он дотикает до конца.
    Что бы перезагрузки не происходило, его нужно своевременно обнулять.
    Таким образом при сбое счетчик таймера перестанет обнуляться, что приведет к сбросу МК. Иногда бывает удобно, но в данный момент нам это не потребуется.
  • PWRTE — очередной таймер.
    При активации он будет сбрасывать МК до тех пор, пока питание не поднимется до нужного уровня.
  • BROWNOUT — сброс МК при падении питания ниже нормы.
  • MCLR — активация возможности внешнего сброса МК.
    При включении функции МК будет в постоянном резете до тех пор, пока на ноге MCLR (pin 4) не будет положительного напряжения.
    Для сброса МК достаточно установить кнопку, замыкающую pin 4 на землю.
  • LVP — активация возможности программирования при низком напряжении.
    При активации один цифровой вход переключится в режим LVP (pin 10). Если подать 5В на эту ногу, то МК перейдет в режим программирования. Для нормальной работы МК требуется держать на этой ноге 0В (подсоединить к земле).
    Мы будем использовать программатор, использующий повышенное напряжение, потому LVP активировать не требуется.
  • CPD — защита EEPROM от считывания программатором.
  • CP — защита FLASH (прошивки) от считывания программатором.

Изменим конфигурацию под себя:

pragma target clock 4_000_000 -- указываем рабочую частоту, необходимо для некоторых функций расчета времени
-- конфигурация микроконтроллера
pragma target OSC INTOSC_NOCLKOUT -- используем внутренний генератор
pragma target WDT disabled -- сторожевой таймер отключен
pragma target PWRTE disabled -- таймер питания отключен
pragma target MCLR external -- внешний сброс активен
pragma target BROWNOUT disabled -- сбос при падении питания отключен
pragma target LVP disabled -- программирование низким напряжением отключено
pragma target CPD disabled -- защита EEPROM отключена
pragma target CP disabled -- защита кода отключена

Моргаем светодиодом по нажатию кнопки


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

Выберем еще неиспользуемую ногу МК. Возьмем, к примеру, RB5(pin 11). Данная нога не имеет дополнительных функций, потому она нам более нигде не понадобится.
В режиме цифрового выхода МК может притягивать к ноге либо питание, либо землю.
Подключать нагрузку можно как к плюсу, так и к минусу. Разница будет лишь в том, когда и в какую сторону потечет ток.


В первом случае ток потечет от МК при установке единицы, а во втором — к МК при установке нуля.

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

Для ограничения тока через ногу (максимально допустимо 25 мА на цифровой вход или 200 мА на все порты) установлен токоограничительный резистор. По простейшей формуле высчитываем минимальное значение в 125 Ом. Но так как предел нам не нужен, возьмем резистор в 500 Ом (а точнее ближайший подходящий).

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

Цифровой вход

Возьмем вторую неиспользуемую нигде ногу — RB4 (pin 10, указанная в распиновке функция PGM отностися к LVP, который мы отключили).
В режиме цифрового входа микроконтроллер может считывать два состояния: наличие или отсутствие напряжения. Значит нам необходимо подключить кнопку так, что бы в одном состоянии на ногу шел плюс, а во втором состоянии — к ноге подключалась земля.

В данном варианте резистор используется в качестве подтяжки (Pull-up). Обычно для подтяжки применяют резистор номиналом 10 кОм.

Впрочем, подтягивающий резистор не всегда необходим. Все ноги PORTB (RB0-RB7) имеют внутреннюю подтяжку, подключаемую программно. Но использование внешней подтяжки куда надежнее.

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

Пока не забыли, что мы активировали внешний сброс, добавим аналогичную кнопку на ногу MCLR (pin 4).

После нажатия такой кнопки МК начнет выполнение программы с нуля.

Прошивка

Присваиваем нашему светодиоду и кнопке переменные:
enable_digital_io() -- переключение всех входов\выходов на цифровой режим
--
alias led is pin_B5 -- светодиод подключен к RB5
pin_B5_direction = output -- настраиваем RB5 как цифровой выход
--
alias button is pin_B4 -- кнопка подключена к RB4
pin_B4_direction = input -- настраиваем RB4 как вход
led = off -- выключаем светодиод

Теперь присваивая переменной led значения 1 или 0 (on или off, true или false, другие алиасы..) мы будем подтягивать к нужной ноге МК или плюс, или минус, тем самым зажигая и гася светодиод, а при чтении переменной button мы будем получать 1 если кнопка не нажата и 0 если кнопка нажата.

Теперь напишем необходимые нам действия в бесконечном цикле (эти действия будут выполняться постоянно. При отсутствии бесконечного цикла МК зависнет):

forever loop
led = off -- выключаем светодиод
_usec_delay(500000) -- ждем 0,5 сек
if Button == 0 then -- если кнопка нажата, выполняем действия
led = on -- зажигаем светодиод
_usec_delay(500000) -- ждем 0,5 сек
end if
end loop

Задержка считается просто:
частота генератора у нас 4MHz. Рабочая частота в 4 раза меньше: 1 MHz. Или 1 такт = 1 мкс. 500.000 мкс = 0,5 с.

Компилируем прошивку:

Errors :0 Warnings :0
Code :60/2048 Data:4/208 Hardware Stack: 0/8 Software Stack :80

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

Программатор


Все таже схема:

Смотрим на распиновку:

  • PGD — pin 13
  • PGC — pin 12
  • MCLR(Vpp) — pin 4
  • Vdd — pin 14
  • Vss — pin 5

Паяем…


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

В качестве питания 5В в данном случае использовался хвост от старой PS/2 мыши, вставленный в разъем для мыши.

Подключаем к компьютеру.

Качаем и запускаем WinPic800.

Идем в Settings->Hardware, выбираем JDM и номер порта, на котором висит программатор

Нажимаем Hardware Test, затем Detect Device

Открываем нашу прошивку pic628a_test.hex

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

Program All, затем Verify All

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

Результат


Финальная схема:

От программатора нам мешает только высокое напряжение (12в) на MCLR. Дабы не отпаивать весь программатор, можно отпаять только один провод… Или просто не подключать программатор к COM порту. Остальные провода нам мешать не будут (а подключенные питание и земля только упростят пайку).

Кнопку на MCLR паять можно по желанию, но подтяжка обязательна.

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


Результат работы можно увидеть на видео.

Итак, у нас получилось самое простое устройство на микроконтроллере: мигалка светодиодом.

Теперь нам необходимо научиться пользоваться всей оставшейся периферией, но об этом в следущей статье.

habr.com

Электроника,схемы на микроконтроллере

Подробности

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

Подробнее…

Подробности

   В интернете цены на часы основанные на лампах ИН-14 если и попадаются еще, то цены на них весьма дороговаты. Мы рассмотрим как спаять часы на лампах ИН своими руками, так как это намного дешевле чем купить готовые,при этом они всегда будут радовать ваши глаза.

Подробнее…

Подробности

   Пришло время еще раз затронуть тему изготовление программатора, так как цены на них не такие и маленькие,и при этом гарантии нет что он заработает. Рассмотрим схему программатора jdm с внешним питанием,с помощью которого програмируются микросхемы PIC и подключаемому к стационарному компьютеру через COM(rs232) порт.

Список прошиваемых PIC микроконтроллеров в статье.

Подробнее…

Подробности

Простое ИК управление своими руками

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

Данное устройство предназначено для управления нагрузками на небольшой дистанции. За основу взят дешевый, миниатюрный ПДУ с eBay. К нему был изготовлен дешифратор на микроконтроллере PIC12F675. Режим работы — кнопка. Состояние на выходе дешифратора удерживается до тех пор, пока нажата кнопка на пульте.

 

Подробнее…

Подробности

Гирлянда на микроконтроллере своими руками

С наступающим вас дорогие пользователи. И к предстоящему празднику решил порадовать вас схемой-новогодняя гирлянда на микроконтроллере pic.

И прошу к просмотру подробнее данной статьи.

 

Подробнее…

Подробности

Полицейская крякалка своими руками на PIC

Предлагаю вам для повторения схему звукового устройства, имитирующего сигнал «Милицейской Сирены». Устройство сделано на микроконтроллере  PIC16F628. Схема имеет две различные сирены и «Крякалку».

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

Так же вам понадобиться программатор для PIC, вот схема

Подробнее…

Подробности

Простой измеритель емкости и индуктивности

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

В статье предлагается проверенная схема своими руками измерителя емкости и индуктивности катушки.Если вы задавались вопросом как измерить емкость или индуктивность.То вам сюда.Схема собрана на микроконтроллере PIC 16F84A.

Подробнее…

Подробности

Схема копирования ключей от домофона

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

Копии домофонных ключей делаются с помощью компьютерной программы и адаптера, подключаемого к компьютеру.

 

Подробнее…

Подробности

Часы с будильником на PIC

Схема часов с будильником своими руками вы можете собрать такую как на фото слева.

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

 

 

 

Подробнее…

Подробности

Схема электронных часов на pic16f628a

Предлогаю вашему вниманию схему электронных часов своими руками на микроконтроллере PIC 16F628A

 

 

 

 

 

 

 

 

 

Подробнее…

radiostroi.ru

Устройства на микроконтроллере PIC12F629 Сборник схем прошивок — УСТРОЙСТВА НА МК — radio-bes

Если у вас вдруг возникло желание приобщиться к великому таинству программирования микроконтроллеров или даже создать свою собственную так называемую «Embedded system», но:
  1. вы не знаете, с чего начать
  2. у вас нет паяльника, программатора, коробки с радиодеталями и умения все это совместить
  3. вам лень отрываться от кресла и компьютера

то эта статья точно для вас.

Ни для кого не секрет, что современное программное обеспечение очень облегчило нелегкую жизнь инженера. Имеются тысячи программ для автоматизированного проектирования электронных схем, для моделирования их работы, в том числе и для микроконтроллерных систем. Одна из таких САПР — Proteus VSM, разработнанная компанией Labcenter Electronics(требуйте бесплатную ознакомительную версию).

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

  1. желание
  2. компьютер с установленным Proteus
  3. свободное время


Для того, чтобы постичь все секреты микроконтроллера, начинать изучение лучше с прочтения документации (для микроконтроллеров PIC документацию можно скачать на сайте производителя ), а программировать начать не на С, Pascal или даже Basic, а на старом добром ассемблере, что позволит понять, как же эта железяка на самом деле работает.
Что можно в первую очередь отметить в микроконтроллере семейства PIC16 с точки зрения программиста:
  1. раздельные память программ (14 бит) и память данных (8 бит)
  2. всего 35 инструкций
  3. большинство инструкций (кроме инструкций перехода и проверки условий) выполняется за 1 машинный цикл (4 такта тактового генератора)
  4. один явно выраженный регистр общего назначения – аккумулятор
  5. обращение к любой ячейке оперативной памяти как к регистру (так называемые регистровые файлы)
  6. порты ввода-вывода
  7. наличие прерываний
  8. аппаратные таймеры

Создадим простое устройство на простом микроконтроллере PIC16F84A. Для этого в Proteus найдем этот микроконтроллер в библиотеке элементов, добавим в проект и разместим его на рабочем листе.

Далее создадим файл с исходным кодом и откроем его во встроенном редакторе.

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

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

LIST p=16F84a
include "P16F84A.INC"
;---------------------------------
CBLOCK 0x0C
W_TEMP ;0x0C
STATUS_TEMP ;0x0D
FLAGS ;0x0E
COUNTER ;0x0F
ENDC
;---------------------------------
TF EQU 0x00 ;Task flag
ORG 0x00
goto START
ORG 0x04
;---------------------------------
INT movwf W_TEMP ;save W
swapf STATUS, W
movwf STATUS_TEMP ;save STATUS
btfss INTCON, T0IF
goto ENDISR
bcf INTCON, T0IF ;clear flag
bsf FLAGS, TF
ENDISR swapf STATUS_TEMP, W
movwf STATUS ;recover STATUS
swapf W_TEMP, F
swapf W_TEMP, W ;recover W
retfie
;---------------------------------
START clrf PORTA
clrf PORTB
bsf STATUS, RP0 ;Bank1
clrf TRISB ;PortB Output
movlw b'11010111'
movwf OPTION_REG ;Set Option_REG
bcf STATUS, RP0 ;Bank0
clrf TMR0
bsf INTCON, T0IE ;Enable Timer0 interrupt
bsf INTCON, GIE ;Enable interrupts
movlw 0x3D
movwf COUNTER
;---------------------------------
MAIN btfss FLAGS, TF
goto MAIN ;If TF = 0
call OUTPUT
bcf FLAGS, TF ;Clear TF
goto MAIN
;---------------------------------
OUTPUT decfsz COUNTER, F
goto NOT0
movlw 0x3C
movwf COUNTER
NOT0 movf COUNTER, W
call TAB
movwf PORTB
return
;---------------------------------
TAB addwf PCL, F
nop
retlw b'00100001' ;1
retlw b'00000001' ;2
retlw b'00100001' ;3
retlw b'00000001' ;4
retlw b'00100001' ;5
retlw b'00000001' ;6
retlw b'00100001' ;7
retlw b'00000001' ;8
retlw b'00100001' ;9
retlw b'00000001' ;10
retlw b'00100001' ;11
retlw b'00100001' ;12
retlw b'00100001' ;13
retlw b'00100001' ;14
retlw b'00100001' ;15
retlw b'00100001' ;16
retlw b'00100001' ;17
retlw b'00100001' ;18
retlw b'00100001' ;19
retlw b'00100001' ;20
retlw b'00010010' ;21
retlw b'00010010' ;22
retlw b'00010010' ;23
retlw b'00010010' ;24
retlw b'00010010' ;25
retlw b'00010010' ;26
retlw b'00010010' ;27
retlw b'00010010' ;28
retlw b'00010010' ;29
retlw b'00010010' ;30
retlw b'00010010' ;31
retlw b'00010010' ;32
retlw b'00010010' ;33
retlw b'00010010' ;34
retlw b'00010010' ;35
retlw b'00010010' ;36
retlw b'00010010' ;37
retlw b'00010010' ;38
retlw b'00010010' ;39
retlw b'00010010' ;40
retlw b'00001100' ;41
retlw b'00001000' ;42
retlw b'00001100' ;43
retlw b'00001000' ;44
retlw b'00001100' ;45
retlw b'00001000' ;46
retlw b'00001100' ;47
retlw b'00001000' ;48
retlw b'00001100' ;49
retlw b'00001000' ;50
retlw b'00001100' ;51
retlw b'00001100' ;52
retlw b'00001100' ;53
retlw b'00001100' ;54
retlw b'00001100' ;55
retlw b'00001100' ;56
retlw b'00001100' ;57
retlw b'00001100' ;58
retlw b'00001100' ;59
retlw b'00001100' ;60
;---------------------------------
END

Данная программа при всей своей простоте содержит почти все элементы, присущие и более сложным программам.
Рассмотрим структуру подробнее.

Комментарием считается строка или ее часть начинающаяся с символа «;».

Строка «LIST p=16F84a» представляет собой директиву ассемблера, предназначенную для изменения параметров компиляции и определяет тип используемого микроконтроллера (16F84a).

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

С помощью директивы:
CBLOCK 0x0C
W_TEMP
STATUS_TEMP
FLAGS
COUNTER
ENDC

мы размещаем в памяти данных несколько констант, начиная с адреса 0x0С, так что обратившись, например, к FLAGS, мы получим доступ к ячейке оперативной памяти с адресом 0x0E. Эти константы понадобятся нам в дальнейшем.

Директива EQU в строке «TF EQU 0x00» определяет константу TF равную числу 0x00.

Директива ORG предназначена для размещения программы по определенным адресам в памяти данных.

Исторически сложилось и закрепилось в архитектуре микроконтроллеров PIC, что по адресу 0x0000 расположен вектор сброса, а по адресу 0x0004 – вектор прерывания (то есть при сбросе, который происходит при включении контроллера с помощью специальной схемы, выполнение программы начнется с адреса 0x0000, а при возникновении прерывания произойдет переход на адрес 0x0004).
Таким образом, по адресу 0x0000 мы располагаем команду безусловного перехода на начало основной программы «goto START», а по адресу 0x0004 у нас будет подпрограмма обработки прерываний (метка INT).
Часть программы, начинающаяся с метки START, предназначена для инициализации начальных параметров, и выполняется только один раз при старте микроконтроллера. Часть программы, начинающаяся с метки MAIN, организует бесконечный цикл выполнения программы с помощью команды безусловного перехода «goto MAIN».
Программа должна заканчиваться директивой END.

Инициализация

Команда «clrf» предназначена для обнуления содержимого регистра. Командами

clrf PORTA
clrf PORTB

мы обнулим содержимое регистров, связанных с портами ввода-вывода PortA и PortB. Это необходимо, поскольку при сбросе микроконтроллера они могут получить случайные значения.
Команда «bsf» предназначена для установки определенного бита в байте регистра. Таким образом при выполнении:

bsf STATUS, RP0

в регистре STATUS бит RP0 примет значение 1. Регистр STATUS кроме того, что содержит флаги результатов арифметических операций (ноль, возникновение переноса), также отвечает за выбор банка памяти при прямой адресации. Микроконтроллер PIC16F84A содержит 2 банка памяти (начинающихся с адресов 0x00 и 0x80), специальные регистры расположены как в первом, так и во втором банке. Установив бит RP0, мы сможем обращаться ко второму банку памяти.

Во втором банке памяти нас интересует регистр TRISB, определяющий, какие выводы порта PortB являются входами, а какие выходами. Установкой с помощью команды «clrf TRISB» всех битов регистра TRISB в 0, определяем все выводы PortB как выходы.

Команда «bcf» сбрасывает определенный бит в регистре, таким образом с помощью команды

bcf STATUS, RP0

мы опять можем обращаться к банку первому банку памяти.

Теперь необходимо изменить значение регистров:

  • OPTION_REG, с помощью которого можно сконфигурировать таймер Timer0
  • INTCON, определяющий, какие прерывания разрешены в системе.

Команда «movlw b’11010111’» загружает в аккумулятор W число, с помощью которого мы устанавливаем источник для тактирования таймера от внутреннего генератора, подключаем предделитель к таймеру а также устанавливаем коэффициент предделителя (подробности смотрите в документации). Командой «movwf OPTION_REG» мы отправляем число из аккумулятора в специальный регистр OPTION_REG.

Команда «clrf TMR0» сбрасывает значение таймера Timer0, далее его значение будет инкрементироваться с частотой равной частоте цикла микропроцессора, деленной на выбранный нами предделитель. При переполнении регистра TMR0 будет происходить соответствующее прерывание.

Для разрешения прерывания от таймера в специальном регистре INTCON необходимо установить бит T0IE, а для глобального разрешения прерываний, необходимо установить бит GIE, что и делают команды:

bsf INTCON, T0IE
bsf INTCON, GIE

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

movlw 0x3D
movwf COUNTER

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

На этом инициализация заканчивается и начинается основной цикл программы.

Основной цикл

В основном цикле проверяется состояние флага задания TF (бит 0x00) в регистре FLAGS (по адресу 0x0E). Если флаг установлен (значение 1) выполняется подпрограмма OUTPUT. после выполнения подпрограммы флаг задания сбрасывается (значение 0).

Проверка значения бита в регистре осуществляется с помощью команды «btfss FLAGS, TF». Команда тестирует бит в регистре, если бит установлен в «1», то следующая инструкция не выполняется, а следующие 2 цикла выполняется команда «nop» («нет операции»). Если бит имеет значение «0» то выполняется следующая по порядку инстукция.

Поскольку следующая инструкция является командой безусловного перехода на метку MAIN, то при сброшенном флаге задания TF продолжается бесконечный основной цикл программы. При установленном флаге задания выполняется команда вызова подпрограммы «call OUTPUT», таким образом текущее значение счетчика команд (PC – «Program counter») помещается в стек, и происходит переход на подпрограмму с меткой OUTPUT.

Возврат из подпрограммы происходит при выполнении инструкции «return», при этом значение адреса из вершины стека помещается в счетчик команд. Стек имеет 8 уровней, таким образом, возможна вложенность (то есть вызов одной из другой) до 8 подпрограмм (в том числе и подпрограмма обработки прерываний).
После возврата из подпрограммы флаг задания сбрасывается уже знакомой нам командой «bcf».

Подпрограмма обработки прерываний

При переполнении регистра таймера происходит переход на вектор прерывания по адресу 0x0004 и запрещаются все прерывания (автоматически сбрасывается бит GIE в регистре INTCON). Подпрограмма обработки прерывания прежде всего должна обеспечивать сохранение содержимого аккумулятора W и регистра STATUS при перед началом обработки прерывания, и восстанавливать значения W и STATUS по окончании обработки. Это необходимо для предотвращения их случайной модификации в подпрограмме обработки прерывания.

Содержимое аккумулятора просто помещается в заранее выделенную ячейку памяти командой «movwf W_TEMP».
Регистр STATUS может изменять свое значение при выполнении ряда инструкций, поэтому применяется маленькая хитрость. Содержимое регистра помещается в аккумулятор с перестановкой нибблов (полубайтов) командой «swapf STATUS, W», а оттуда помещается в заранее выделенную ячейку памяти командой «movwf STATUS_TEMP».

Восстановление содержимого W и STATUS в конце подпрограммы происходит в обратном порядке. Содержимое ячейки памяти, хранящей содержимое регистра STATUS помещается в аккумулятор с перестановкой нибблов командой «swapf STATUS_TEMP, W», и из аккумулятора переносится непосредственно в регистр STATUS командой «movwf STATUS». Для предотвращения случайной модификации регистра STATUS при помещении неизвестного заранее значения из временной ячейки памяти в аккумулятор, восстановление аккумулятора осуществляется двумя командами с перестановкой нибблов:

swapf W_TEMP, F
swapf W_TEMP, W

Такое применение команды «swapf» объясняется тем, что она не оказывает влияния на флаги в регистре STATUS.

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

btfss INTCON, T0IF
goto ENDISR
bcf INTCON, T0IF
bsf FLAGS, TF

Если бит не установлен, то произойдет переход к инструкциям восстановления содержимого W и STATUS на метку ENDISR. Если бит установлен то мы его сбросим вручную командой «bcf INTCON, T0IF» и установим флаг задания командой «bsf FLAGS, TF». Далее выполнятся инструкции восстановления содержимого W и STATUS.
Выход из подпрограммы обработки прерываний происходит при выполнении инструкции «retfie». Содержимое счетчика команд восстанавливается из стека, а прерывания автоматически разрешаются путем установки бита GIE регистра INTCON в «1».

Подпрограмма OUTPUT

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

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

Подпрограмма содержит инструкции:

OUTPUT decfsz COUNTER, F
goto NOT0
movlw 0x3C
movwf COUNTER
NOT0 movf COUNTER, W
call TAB
movwf PORTB
return

Инструкция «decfsz» предназначена для организации циклов. Она декрементирует содержимое регистра COUNTER, в случае если результат не равен нулю, выполняется следующая по порядку инструкция (переходим на метку NOT0), иначе в течение 2 циклов выполняется пустая инструкция «nop», а затем в регистр COUNTER помещается начальное значение 0x3C (заметьте, т.к. декремент регистра осуществляется до использования значения этого регистра в программе, при инициализации мы задали значение на 1 большее).

Значение регистра COUNTER помещается в аккумулятор W, после чего осуществляется чтение из таблицы путем вызова подпрограммы инструкцией «call TAB». При возврате из таблицы в W содержится необходимое нам значение состояния выходов. Это значение записывается в регистр PORTB, чем осуществляется вывод сигналов из микроконтроллера. Далее происходит возврат из подпрограммы командой «return».

Таблица значений

Таблица содержит несколько сервисных инструкций и, собственно, сами 60 требующихся нам значений:
TAB addwf PCL, F
nop
retlw b'00100001' ;1
retlw b'00000001' ;2
………
retlw b'00001100' ;60

Принцип чтения из таблицы в следующем. При вызове таблицы мы поместили в W значение – номер «ячейки» таблицы. В подпрограмме происходит сложение младшего байта счетчика команд PCL и значения из W инструкцией «addwf PCL, F». Таким образом в памяти программ произойдет переход к инструкции с адресом PCL+W. В диапазоне адресов, которые могут получиться в результате, находятся непосредственно «ячейки» таблицы в виде инструкций «retlw» (например «retlw b’00100001’»), которые вызывают возврат из подпрограммы с занесением своего аргумента в W.

Таким образом, в результате возврата из таблицы, мы имеем в W требуемое значение.

Инструкция «nop» применена для выравнивания значений в таблице, т.к. таблица не вызывается при W=0.
Следует отметить необходимость контроля содержимого аккумулятора W при вызове таблиц, чтобы не произошел переход за границы программы.

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

radio-bes.do.am

Схемы на микроконтроллерах


    Схема и фото самодельных электронных часов с календарём и термометром.

20.07.2012 Читали: 23420


     Схема и фото программатора микроконтроллеров AVR Stk 200-300 через порт компьютера LPT.

14.06.2012 Читали: 17539


     Схема и фотографии проверенной сигнализации на микроконтроллере ATmega8, с оповещением на мобильный телефон.

10.06.2012 Читали: 35947


     Схема и подробное описание проверенного usb программатора микроконтроллеров avr.

09.06.2012 Читали: 48733


     Недавно собрал первый программатор в своей жизни. Решил поделится своей поделкой с вами, уважаемые посетители сайта ELWO.RU, так как результат работы устройства порадовал.

07.06.2012 Читали: 30947


     Ещё одна схема и описание конструкции проверенного контроллера USB-DMX.

28.04.2012 Читали: 38961


     Схема, фотографии и описание самодельного контроллера USB-DMX для управления световыми приборами через ПК.

25.04.2012 Читали: 20386



Снижение расхода топлива в авто

Ремонт зарядного 6-12 В

Солнечная министанция

Самодельный ламповый

Фонарики Police

Генератор ВЧ и НЧ

elwo.ru

Средства программирования PIC-контроллеров / Habr

Введение


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

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

Компания Microchip распространяет MPLAB — бесплатную интегрированную среду редактирования и отладки программ, которая записывает бинарные файлы в микроконтроллеры PIC через программаторы.

Взаимодействие MPLAB и Matlab/Simulink позволяет разрабатывать программы для PIC-контроллеров в среде Simulink — графического моделирования и анализа динамических систем. В этой работе рассматриваются средства программирования PIC контроллеров: MPLAB, Matlab/Simulink и программатор PIC-KIT3 в следующих разделах.

• Характеристики миниатюрного PIC контроллера PIC12F629
• Интегрированная среда разработки MPLAB IDE
• Подключение Matlab/Simulink к MPLAB
• Подключение программатора PIC-KIT3

Характеристики миниатюрного PIC-контроллера


Семейство РIС12ххх содержит контроллеры в миниатюрном 8–выводном корпусе со встроенным тактовым генератором. Контроллеры имеют RISC–архитектуру и обеспечивают выполнение большинства команд процессора за один машинный цикл.

Для примера, ниже даны характеристики недорогого компактного 8-разрядного контроллера PIC12F629 с многофункциональными портами, малым потреблением и широким диапазоном питания [1].

• Архитектура: RISC
• Напряжение питания VDD: от 2,0В до 5,5В (< 6,5В)
• Потребление:
— <1,0 мА @ 5,5В, 4МГц
— 20 мкА (тип) @ 32 кГц, 2,0В
— <1,0 мкА (тип) в режиме SLEEP@2,0В
• Рассеиваемая мощность: 0,8Вт
• Многофункциональные каналы ввода/вывода: 6/5
• Максимальный выходной ток портов GPIO: 125мА
• Ток через программируемые внутренние подтягивающие резисторы портов: ≥50 (250) ≤400 мкА @ 5,0В
• Разрядность контроллера: 8
• Тактовая частота от внешнего генератора: 20 МГц
Длительность машинного цикла: 200 нс
• Тактовая частота от внутреннего RC генератора: 4 МГц ±1%
Длительность машинного цикла: 1мкс
• FLASH память программ: 1К
Число циклов стирание/запись: ≥1000
• ОЗУ память данных: 64
• EEPROM память данных: 128
Число циклов стирание/запись: ≥10K (-40оС ≤TA≤ +125 оС)
• Аппаратные регистры специального назначения: 16
• Список команд: 35 инструкций, все команды выполняются за один машинный цикл,
кроме команд перехода, выполняемых за 2 цикла
• Аппаратный стек: 8 уровней
• Таймер/счетчик ТМR0: 8-разрядный с предделителем
• Таймер/счетчик ТМR1: 16-разрядный с предделителем

Дополнительные особенности:
• Сброс по включению питания (POR)
• Таймер сброса (PWRTтаймер ожидания запуска генератора (OST
• Сброс по снижению напряжения питания (BOD)
• Сторожевой таймер WDT
• Мультиплексируемый вывод -MCLR
• Система прерываний по изменению уровня сигнала на входах
• Индивидуально программируемые для каждого входа подтягивающие резисторы
• Программируемая защита входа
• Режим пониженного энергопотребления SLEEP
• Выбор режима работы тактового генератора
• Внутрисхемное программирование ICSP с использованием двух выводов
• Четыре пользовательские ID ячейки

Предельная рабочая температура для Е исполнения (расширенный диапазон) от -40оС до +125 оС;
Температура хранения от -65оС до +150 оС.

КМОП технология контроллера обеспечивает полностью статический режим работы, при котором остановка тактового генератора не приводит к потере логических состояний внутренних узлов.
Микроконтроллер PIC12F629 имеет 6-разрядный порт ввода/вывода GPIO. Один вывод GP3 порта GPIO работает только на вход, остальные выводы можно сконфигурировать для работы как на вход так и на выход. Каждый вывод GPIO имеет индивидуальный бит разрешения прерываний по изменению уровня сигнала на входах и бит включения внутреннего подтягивающего резистора.

Интегрированная среда разработки MPLAB IDE

MPLAB IDE — бесплатная интегрированная среда разработки ПО для микроконтроллеров PIC включает средства для создания, редактирования, отладки, трансляции и компоновки программ, записи машинного кода в микроконтроллеры через программаторы.

Загрузка MPLAB IDE

Бесплатные версии MPLAB (включая MPLAB 8.92) хранятся на сайте компании Microchip в разделе «DOWNLOAD ARCHIVE».

Создание проекта

Пример создания проекта программ PIC контроллера в среде MPLAB включает следующие шаги [2].

1. Вызов менеджера проекта.


2. Выбор типа PIC микроконтроллера.
3. Выбор компилятора, например, Microchip MPASM для ассемблера.
4. Выбор пути к каталогу проекта (клавиша Browse…) и ввод имени проекта.

5. Подключение файлов к проекту в окне Project Wizard → Step Four можно не выполнять. Это можно сделать позднее, внутри активного проекта. Клавиша Next открывает следующее окно.

6. Завершение создания проекта (клавиша Finish).

В результате создания проекта FirstPrMPLAB интерфейс MPLAB принимает вид, показанный на Рис. 1.


Рис. 1. Интерфейс среды MPLAB v8.92 и шаблон проекта.

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

Создание программы в MPLAB можно выполнить в следующей последовательности.

1. Открыть редактор программ: меню → File → New. Изначально программе присвоено имя Untitled.

2. Набрать или скопировать программу, например, на ассемблере.

3. Сохранить программу под другим именем (меню → File → Save As), например, FirstPrMPLAB.asm.


Рис. 2. Пример простейшей программы (на ассемблере) вывода сигналов через порты контроллера GP0, GP1, GP2, GP4, GP5 на максимальной частоте.

Запись ‘1’ в разряде регистра TRISIO переводит соответствующий выходной буфер в 3-е состояние, в этом случае порт GP может работать только на вход. Установка нуля в TRISIO настраивает работу порта GP на выход.

Примечание. По спецификации PIC12F629 порт GP3 микроконтроллера работает только на вход (соответствующий бит регистра TRISIO не сбрасывается – всегда находится в ‘1’).

Регистры TRISIO и GPIO находятся в разных банках области памяти. Переключение банков выполняется 5-м битом регистра STATUS.

Любая программа на ассемблере начинается директивой org и заканчивается директивой end. Переход goto Metka обеспечивает циклическое выполнение программы.

В программе (Рис. 2) используются следующие обозначения.

Директива LIST — назначение типа контроллера
Директива __CONFIG — установка значений битов конфигурации контроллера
Директива equ — присвоение числового значения
Директива org 0 — начало выполнения программы с адреса 0
Команда bsf — устанавливает бит указанного регистра в 1
Команда bсf — сбрасывает бит указанного регистра в 0
Команда movlw — записывает константу в регистр W
Команда movwf — копирует содержимое регистра W в указанный регистр
Команда goto — обеспечивает переход без условия на строку с меткой
Директива end — конец программы

Установка требуемой конфигурации микроконтроллера
Конфигурация микроконтроллера PIC12F629 зависит от настроек слова конфигурации (2007h), которые можно задать в программе через директиву __CONFIG.

Непосредственно или через окно MPLAB: меню → Configure → Configuration Bits:

Где:

Бит 2-0 — FOSC2:FOSC0. Выбор тактового генератора
111 — Внешний RC генератор. Подключается к выводу GP5. GP4 работает как CLKOUT
110 — Внешний RC генератор. Подключается к выводу GP5. GP4 работает как ввод/вывод
101 — Внутренний RC генератор 4МГц. GP5 работает как ввод/вывод. GP4 — как CLKOUT
100 — Внутренний RC генератор 4МГц. GP5 и GP4 работают как ввод/вывод
011 — EC генератор. GP4 работает как ввод/вывод. GP5 — как CLKIN
010 — HC генератор. Резонатор подключается к GP4 и GP5
001 — XT генератор. Резонатор подключается к GP4 и GP5
000 — LP генератор. Резонатор подключается к GP4 и GP5

Бит 3 — WDTE: настройка сторожевого таймера (Watchdog Timer)
1 — WDTE включен
0 — WDTE выключен

Сторожевой таймер предохраняет микроконтроллер от зависания – перезапускает программу через определенный интервал времени если таймер не был сброшен. Период таймера устанавливается в регистре OPTION_REG. Обнуление сторожевого таймера вызывается командой CLRWDT.

Бит 4 — PWRTE: Разрешение работы таймера включения питания:
1 — PWRT выключен
0 — PWRT включен

Таймер задерживает микроконтроллер в состоянии сброса при подаче питания VDD.

Бит 5 — MCLR: Выбор режима работы вывода GP3/-MCLR
1 — работает как -MCLR
0 — работает как порт ввода-вывода GP3

Бит 6 — BODEN: Разрешение сброса по снижению напряжения питания (как правило < 2.0В)
1 — разрешен сброс BOR
0 — запрещен сброс BOR автоматически включается таймер

При разрешении сброса BOR автоматически включается таймер PWRT

Бит 7 — .CP: Бит защиты памяти программ от чтения программатором
1 Защита выключена
0 Защита включена

При выключения защиты вся память программ стирается

Бит 8 — .CPD: Бит защиты EPROM памяти данных
1 Защита выключена
0 Защита включена

После выключения защиты вся информация будет стерта

Бит 11-9 — Не используются: Читается как ‘1’.

Бит 13-12 — BG1:BG0. Биты калибровки сброса по снижению питания
00 — нижний предел калибровки
11 — верхний предел калибровки


Добавление программы к проекту

Пример добавления программы к проекту показан на (Рис. 3).


Рис. 3. Добавление программы FirstPrMPLAB.asm к проекту FirstPrMPLAB.mcp

Сохранить материалы проекта можно командой: меню → File → Save Workspace.

Компиляция


Чтобы создать бинарный файл с расширением hex для прошивки микроконтроллера необходимо откомпилировать проект. Запуск компиляции выполняется командой меню → Project → Build All. Результаты компиляции можно увидеть в окне Output (Рис. 1). Если в программе нет ошибок, то компилятор выдаёт сообщение об успешной компиляции: BUILD SUCCEEDED, загрузочный HEX файл можно найти в рабочем каталоге:

Отладка программы


Отладку программы в среде MPLAB IDE можно выполнить при помощи аппаратного эмулятора MPLAB REAL ICE или программного симулятора MPLAB SIM. Запуск последнего выполняется как показано на Рис. 4.
Рис. 4. Подключение к симулятору MPLAB SIM для отладки программы.

После запуска отладчика в окне Output (Рис. 1) появляется закладка MPLAB SIM, куда MPLAB выводит текущую информацию отладчика. Команды отладчика (Рис. 5) после запуска становятся активными.


Рис. 5. Команды отладчика.

Команды отладчика:

• Run — Непрерывное выполнение программы до точки останова (Breakpoint) если таковая установлена.
• Halt — Остановка программы на текущем шаге выполнения.
• Animate — Анимация непрерывного выполнения программы.
• Step Into — Выполнение по шагам (вызовы Call выполняются за один шаг).
• Step Over — Выполнение по шагам включая команды вызовов Call.
• Reset — Начальная установка программы. Переход указателя на первую команду.
• Breakpoints — Отображение списка точек останова. Обработка списка.

При выполнении программы по шагам текущий шаг выделяется стрелкой (Рис. 6). Непрерывное выполнение программы останавливается командой Halt или достижением программой точки останова. Точка останова устанавливается/снимается в строке программы двойным щелчком.
Пример программы на ассемблере, которая с максимальной скоростью меняет состояние портов контроллера показан на Рис. 6 (справа). Программа передаёт в регистр портов GPIO данные b’10101010’ и b’01010101’. Поскольку в регистре GPIO передачу данных в порты контроллера выполняют не все разряды, а только 0,1,2,4 и 5, то состояние регистра GPIO (Рис. 6, слева) отличается значениями: b’00100010’ и b’00010101’.


Рис. 6. Состояние регистров специального назначения контроллера на момент выполнения программы (слева) и выполняемая по шагам программа (справа).

В процессе отладки можно наблюдать за состоянием регистров, переменных, памяти в соответствующих окнах, открываемых в разделе View основного меню. В процессе отладки можно вносить изменения в код программы, содержимое регистров, памяти, изменять значения переменных. После изменения кода необходимо перекомпилировать программу. Изменение содержимого регистров, памяти и значения переменных (окна раздела View: Special Function Register, File Register, EEPROM, Watch) не требует перекомпиляции.

Входные сигналы портов модели микроконтоллера можно задать в разделе Debugger → Stimulus. Устанавливаемые состояния сигналов портов привязываются к времени (тактам) отладки.

Иногда результаты выполнения программы в режиме отладки не соответствуют выполнению этой же программы в реальном контроллере, так, например, отладчик программы (Рис. 6) без инструкций movlw 0x07 и movwf cmcon показывает, что выходы GP0 и GP1 регистра GPIO не изменяются — находятся в нулевом состоянии, содержимое регистра GPIO попеременно равно 0x14 и 0х20. Однако, контроллер, выполняющий программу без указанных инструкций, показывает на осциллографе циклическую работу всех пяти выходов: 0x15 и 0х22, включая GP0 и GP1 (см. Рис. 7).

Осциллограммы контроллера, выполняющего циклы программы Рис. 6 (Metka… goto Metka) показаны на Рис. 7.


Рис. 7. Осциллограммы выхода GP0 (слева) и GP1 (справа) микроконтроллера PIC12F629, работающего от внутреннего 4МГц RC генератора. Программа (Рис. 6) формирует сигналы максимальной частоты на всех выходах контроллера. За период сигналов 5.3 мкс выполняется 5 команд (6 машинных циклов), амплитуда GP0 сигнала на осциллограмме равна 4.6В, измеренное программатором питание контроллера 4.75В.

Прошивка микроконтроллера


Для записи программы в микроконтроллер (прошивки контроллера) необходимо микроконтроллер подключить к интегрированной среде MPLAB IDE через программатор. Организация подключения показана ниже в разделе «Подключение программатора PIC-KIT3».

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

Команды для работы с программатором и изменения его настроек находятся в меню MPLAB Programmer. Тип программатора в MPLAB выбирается в разделе: меню → Programmer → Select Programmer.


Рис. 8. Выбор программатора для подключения к среде MPLAB.

Прошивка микроконтроллера через программатор запускается командой: меню → Programmer → Program. Сообщение об успешной прошивке показано на Рис. 9.


Рис. 9. Запуск прошивки микроконтроллера и вид сообщения об успешной прошивке.

Примечание: Во время прошивки микроконтроллера у программатора PIC-KIT3 мигает желтый светодиод.

Подключение MATLAB/SIMULINK к MPLAB


В системе моделирования динамических систем Simulink (приложение к Matlab) на языке графического программирования [7] можно разрабатывать программы для семейства PIC контроллеров имеющих АЦП/ЦАП, счетчики, таймеры, ШИМ, DMA, интерфейсы UART, SPI, CAN, I2C и др.

Пример Simulink программы PIC контроллера показан на Рис. 10.


Рис. 10. Пример программы на языке графического программирования для PIC контроллера выполненной в среде моделирования динамических систем Simulink.

Взаимодействие средств разработки и компиляции программ для PIC контроллеров в Simulink показано на Рис. 11 [6].


Рис. 11. Структура средств построения адекватной модели PIC контроллера на языке графического программирования.

Для построения среды разработки необходимы следующие компоненты Matlab:

• Simulink
• Real-Time Workshop Embedded Coder
• Real-Time Workshop

И Cи компилятор компании Microchip:

• C30 для контроллеров PIC24, dsPIC30 и PIC33
• или C32 для контроллеров серии PIC32

Установка компонентов Matlab


На сайте имеются Simulink библиотеки (dsPIC Toolbox) для PIC контроллеров и версий Matlab c R2006a по R2012a:

Для скачивания библиотеки необходимо зарегистрироваться. Программы поддерживают работу 100 микроконтроллеров из серий PIC 16MC, 24F, 30F, 32MC, 33F, 56GP, 64MC, 128MC, 128GP.
Бесплатные версии работают с Simulink моделями PIC контроллеров имеющих до 7 портов ввода-вывода.

Для установки dsPIC Toolbox — библиотеки блоков PIC контроллеров для Matlab/Simulink необходимо [4]:

• Скачать dsPIC Toolbox для требуемой версии Matlab.
• Распаковать zip файл в папке, в которой будут установлены Simulink блоки.
• Запустить Matlab.
• Настроить текущий каталог Matlab на папку с распакованным файлом.
• Открыть и запустить файл install_dsPIC_R2012a.m, например, кнопкой меню или клавишей клавиатуры.

Библиотеки dsPIC и примеры Simulink моделей устанавливаются в текущую папку Matlab (Рис. 12). Установленные блоки для моделирования PIC контроллеров доступны в разделе Embedded Target for Microchip dsPIC библиотеки Simulink (Рис. 13).


Рис. 12. Содержимое текущего каталога после выполнения install_dsPIC_R2012a.m.
Рис. 13. Блоки, установленной библиотеки «Embedded Target for Microchip dsPIC».

Для совместной компиляции Simulink модели средствами Matlab и MPLAB необходимо прописать в переменной окружения path Matlab с высшим приоритетом путь к каталогу MPLAB с файлами MplabOpenModel.m, MplabGetBuildinfo.m и getHardwareConfigs.m:

>> path('c:\Program Files (x86)\Microchip\MPLAB IDE\Tools\MATLAB\',path) 

Установка Си компилятора MPLAB


Компиляторы MPLAB находятся на сайте Microchip (Download Archive → MPLAB C Compiler for PIC24 and dsPIC DSCs). Для установки демонстрационной версии компилятора С30 необходимо его скачать по ссылке PIC24/dsPIC v3.25 (Рис. 14) и запустить принятый файл mplabc30-v3.25-comboUpgrade.exe.
Рис. 14. Версии Си компилятора (слева) и режимы его установки (справа).

Примечание. Работа выполнена с версией v3.25 компилятора С30 для PIC24/dsPIC. Проверка показала, что следующая версия v3.30 не поддерживает совместную компиляцию моделей Matlab R2012a (dsPIC Toolbox) без ошибок.

Установочный exe файл создаёт в разделе c:\Program Files (x86)\Microchip\ новый каталог mplabc30 с файлами:


Рис. 15. Каталоги компилятора C30 MPLAB.

Последовательность Simulink программирования для PIC контроллеров

1. Создайте рабочий каталог и скопируйте в него *.mdl примеры из раздела example (см. Рис. 12).
2. Загрузите Matlab. Настройте его на рабочий каталог.
3. Включите в переменную окружения path Matlab с высшим приоритетом путь к MPLAB — каталогу c:\Program Files (x86)\Microchip\MPLAB IDE\Tools\MATLAB\:

>> path('c:\Program Files (x86)\Microchip\MPLAB IDE\Tools\MATLAB\',path) 

Примечание: Использование команды >>path без аргументов приводит к отображению списка путей переменной path в окне команд (Command Window). Удалить путь из переменной path можно командой rmpath, например:
>>rmpath(' c:\Program Files\Microchip\MPLAB IDE\Tools\MATLAB\')

4. Создайте Simulink модель для PIC контроллера, используя блоки библиотеки «Embedded Target for Microchip dsPIC» (Рис. 13), или загрузите готовую модель, например, Servo_ADC.mdl.

Тип контроллера, для которого разрабатывается Simulink модель, выбирается из списка в блоке Master > PIC (Рис. 16, Рис. 10), который должен быть включен в состав модели.


Рис. 16. Выбор типа контроллера в блоке Master модели.

5. Проверьте настройки конфигурации модели: Меню → Simulation → Configuration Parameters <Ctrl+E>. В строке ввода System target file раздела Code Generation должен быть указан компилятор S-функций dspic.tlc (Рис. 17). Выбор dspic.tlc настраивает все остальные параметры конфигурации модели, включая шаг и метод интегрирования.


Рис. 17. Выбор компилятора S-функций dspic.tlc для моделей PIC-контроллеров в разделе «основное меню → Simulation → Configuration Parameters → Code Generation».

6. Откомпилируйте модель tmp_Servo_ADC.mdl. Запуск компилятора показан на Рис. 18.


Рис. 18. Запуск компилятора Simulink модели.

В результате успешной компиляции (сообщение: ### Successful completion of build procedure for model: Servo_ADC) в текущем каталоге создаются HEX файл для прошивки PIC контроллера и MCP проект среды MPLAB (Рис. 19).


Рис. 19. Результаты компиляции модели.

Запуск модели в Matlab/Simulink выполняется в окне модели кнопкой, условное время моделирования устанавливается в строке:


Управление компиляцией Simulink моделей из среды MPLAB

Управление компиляцией Simulink модели можно выполнять командами раздела Matlab/Simulink среды MPLAB, например, в следующем порядке.

1. Разработайте модель PIC контроллера в Matlab/Simulink. Сохраните модель.
2. Запустите MPLAB.
3. Выберите MPLAB меню → Tools → Matlab/Simulink и новый раздел появится в составе меню.


4. В разделе Matlab/Simulink откройте Simulink модель, например, Servo_ADC, командой «Matlab/Simulink → Specify Simulink Model Name → Open → File name → Servo_ADC.mdl → Open». Команда Open запускает Matlab и открывает модель.

5. Откомпилируйте модель и создайте MCP проект командами Generate Codes или Generate Codes and Import Files. Перевод MDL модели в MCP проект выполняется TLC компилятором Matlab.
В результате создаётся проект MPLAB:

со скриптами модели на языке Си.

6. Откройте проект: меню → Project → Open → Servo_ADC.mcp (Рис. 20).


Рис. 20. Структура MCP проекта Simulink модели Servo_ADC.mdl в среде MPLAB.
Проект Simulink модели готов для редактирования, отладки и компиляции в машинные коды контроллера средствами MPLAB.

Подключение программатора PIC-KIT3


Узнать какие программаторы записывают бинарный код в конкретный микроконтроллер можно в разделе меню → Configure → Select Device среды MPLAB 8.92. Например, программатор PIC-KIT3 не поддерживает контроллер PIC12C508A (Рис. 21, левый рисунок), но работает с контроллером PIC12F629 (Рис. 21, правый рисунок).
Рис. 21. Перечень программаторов для прошивки микроконтроллера.

Информацию об установленном драйвере программатора PIC-KIT3 можно запросить у менеджера устройств ОС Windows (Рис. 22).


Рис. 22. Информация об установленном драйвере программатора PIC-KIT3.

Схема подключения микроконтроллера PIC12F629 к программатору PIC-KIT3 показана на Рис. 23.


Рис. 23. Схема подключения микроконтроллера PIC12F629 к программатору PIC-KIT3.

Вывод PGM программатора для прошивки контроллеров PIC12F629 не используется. Наличие вывода PGM для разных типов PIC контроллеров показано на Рис. 24. Вывод PGM рекомендуется «притягивать» к общему проводу (GND), через резистор, номиналом 1К [3].


Рис. 24. Выводы PGM PIC контроллеров.

Индикация светодиодов программатора Olimex PIC-KIT3 показана в ниже:

Желтый — Красный — Состояние программатора
Вкл — Выкл — Подключен к USB линии
Вкл — Вкл — Взаимодействие с MPLAB
Мигает — Включен постоянно — Прошивка микроконтроллера

Не следует подключать питание микроконтроллера VDD (Рис. 23) к программатору, если контроллер запитывается от своего источника питания.

При питании микроконтроллера от программатора на линии VDD необходимо установить рабочее напряжение, например, 5В программой MPLAB (Menu → Programmer → Settings → Power), как показано на Рис. 25.

Примечание. При отсутствии напряжения на линии VDD MPLAB IDE выдает сообщение об ошибке: PK3Err0045: You must connect to a target device to use


Рис. 25. Установка напряжения VDD на программаторе PIC-KIT3 программой MPLAB IDE v8.92.

Если программатор не может установить требуемое напряжение, например, 5В при его питании от USB, в которой напряжение меньше 5В, MPLAB IDE выдает сообщение об ошибке: PK3Err0035: Failed to get Device ID. В этом случае, сначала необходимо измерить напряжение программатора — считать его в закладке меню → Programmer → Settings → Status, а затем установить напряжение (не больше измеренного) в закладке меню → Programmer → Settings → Power.


Рис. 26. Измерение (слева) и установка (справа) VDD напряжения программатора PIC-KIT3 программой MPLAB IDE v8.92.

Пример MPLAB сообщения успешного подключения микроконтроллера к программатору по команде меню → Programmer → Reconnect показан на Рис. 27.


Рис. 27. Сообщение MPLAB об успешном подключении микроконтроллера к программатору.

Можно программировать не только отдельный PIC контроллер, но и контроллер, находящийся в составе рабочего устройства. Для программирования PIC контроллера в составе устройства необходимо предусмотреть установку перемычек и токоограничивающих резисторов как показано на Рис. 28 [3].


Рис. 28. Подключение микроконтроллера в составе электронного устройства к программатору.

Заключение


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

habr.com

Схемы на микроконтроллерах


   Делаем самодельный термоконтроллер на МК ATMEL90S2313.

10.11.2013 Читали: 15647


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

26.08.2013 Читали: 21967


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

31.07.2013 Читали: 27169


     Схема, печатная плата и демонстрационнй аудиофайл сирены на контроллере Pic12F629, с усилителем мощности.

23.06.2013 Читали: 26168


     Схема и видео работы светодиодной лампы «хорошего настроения» на микроконтроллере PIC12F629.

22.01.2013 Читали: 18569


     Принципиальная схема цифрового секундомера на микроконтроллере PIC16F648A и светодиодном индикаторе.

05.01.2013 Читали: 21935



Снижение расхода топлива в авто

Ремонт зарядного 6-12 В

Солнечная министанция

Самодельный ламповый

Фонарики Police

Генератор ВЧ и НЧ

elwo.ru

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

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