Осваиваем простейший микроконтроллер 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 из которых нам могут понадобиться- INTOSC_NOCLKOUT — внутренний генератор (4M Hz)
- HS — внешний высокочастотный кварц (8-20 MHz)
- XT = внешний кварц (200 kHz — 4 MHz)
- 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в к питанию.
Результат работы можно увидеть на видео.
Итак, у нас получилось самое простое устройство на микроконтроллере: мигалка светодиодом.
Теперь нам необходимо научиться пользоваться всей оставшейся периферией, но об этом в следущей статье.
Устрйоства на микроконтроллерах 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
Радиолюбительские конструкции на PIC-микроконтроллерах. Книги 1 — 4+ПО
Дата публикации: .
В четырех книгах Н.И. Заец представлены различные конструкции, которые будут интересны не только опытным, но и начинающим радиолюбителям. Для удобства при повторении конструкций приведены рисунки печатных плат, даны исходные тексты программ и «прошивки» контроллеров.
Радиолюбительские конструкции на PIC-микроконтроллерах Книга 1. Автор:Заец Н.И.
Издательство: Солон-пресс
Год издания: 2004
Страниц: 368
ISBN: 5-98003-078-6
Язык: русский
Формат: DJVU
Размер: 3,5 Мб
В книге представлено 20 описаний радиолюбительских устройств различно, назначения: часы, таймеры, автоматы, программатор и многие другие, выполненные на микроконтроллере PIC16F84A. Впервые книга с различными устройствами на PIC-микроконтроллере предназначается для радиолюбителей с любым уровнем подготовленности. Даже те, кто не знаком с программированием микроконтроллеров, смогут без труда повторить любое устройство. Радиолюбители, имеющие опыт работы с программированием, могут изменить программы под свои цели. Для этого в книге даны алгоритмы работы и исходные тексты программ с подробными комментариями.
Автор также делится опытом программирования и работы с ассемблером MPLAB и программатором PonyProg2000.
Радиолюбительские конструкции на PIC-микроконтроллерах. Книга 2
Автор:Заец Н.И.
Издательство: Слон-пресс
Год издания: 2005
Страниц: 192
Язык: русский
Формат: DJVU
Размер: 2,4 Мб
В книге даны новые примеры применения PIC-микроконтроллеров в радиолюбительской практике. Программисты найдут в книге программы с использованием встроенного в микроконтроллер модуля — АЦП и программы с различными внешними устройствами — термодатчиками типа DS 18×20, LCD-дисплеями. Радиолюбители, которые желают повторить устройства, могут выбрать цифровой милливольтметр, для того чтобы защитить свой дом от перепадов напряжения, а трехфазный двигатель — от перегрузки. Термометр-часы, градусник и два терморегулятора будут полезными в любом доме. Ко всем программам даны алгоритмы работы и подробные комментарии.
Книга предназначена для широкого круга радиолюбителей, а также может быть полезна студентам, изучающим программирование микроконтроллеров.
Радиолюбительские конструкции на PIC-микроконтроллерах. Книга 3
Автор:Заец Н.И.
Издательство: Солон-Пресс
Год издания: 2006
Страниц: 240
ISBN: 5-98003-250-9, 5-98003-238-Х
Язык: русский
Формат: dgvu
Размер: 3,1 Мб
Третья книга расширяет диапазон применения PIC-микроконтроллеров в радиолюбительской практике. В ней дан пример программы с использованием встроенного в микроконтроллер модуля USART и различных внешних устройств — LCD-дисплеев и ЖКИ, выполненных по COG-технологии. Радиолюбители, которые желают повторить устройства, могут выбрать: охрану подворья, шахматные часы, таймеры на 7 и 9 выходов, а также автомат кормления аквариумных рыб. Для родной школы можно изготовить простое устройство подачи звонков по расписанию.
В отдельную главу вынесены «трудные темы» взаимодействия микроконтроллеров с внешними устройствами: ЖК-дисплеями и термодатчиками типа DS 18×20. Ко всем программам даны алгоритмы работы и подробные комментарии. К книге прилагается компакт-диск, содержащий 48 исходных текстов программ ко всем устройствам четырех книг автора, («Электронные самоделки. Для быта, отдыха и здоровья» и «Радиолюбительские конструкции на РIС-микроконтроллерах» в трех книгах), вышедших в издательстве СОЛОН-Пресс, справочные материалы по микроконтроллерам на русском и английском языках, установочные программы для программаторов и ассемблера MPASM.
Книга предназначена для широкого круга радиолюбителей, а также может быть полезна студентам, изучающим программирование микроконтроллеров.
Радиолюбительские конструкции на PIC-микроконтроллерах. Книга 4
Автор:Заец Н.И.
Издательство: МК-Пресс
Год издания: 2008
Страниц: 336
ISBN: 978-966-8806-42-1
Язык: русский
Формат: DJVU
Размер: 5.2 Мб
Данная книга — практическое пособие по освоению микроконтроллеров PICmicro компании Microchip и другой современной элементной базы, наподобие индикаторов, выполненных по COG-технологии. Рассмотрены алгоритмы работы, схемы и программы для различных полезных устройств: многофункциональных часов, отображающих текущее время и температуру воздуха; автомобильных часов, фиксирующих время в пути и сообщающих о поломке реле-регулятора; автомата включения освещения; цифрового устройства для блока питания с установкой защиты по току и напряжению; специализированных термометров и др. Для начинающих дана глава о наладке устройств на микроконтроллерах. Книга предназначена для широкого круга радиолюбителей, а также может быть полезна студентам, изучающим программирование микроконтроллеров.
Электронные самоделки. Для быта, отдыха и здоровья
Автор:Заец Н.И.
Издательство: Солон-Пресс
Год издания: 2004
Страниц: 304
ISBN: 5-98003-156-1
Язык: русский
Формат: DJVU
Размер: 3,8 Мб
Представлен широкий спектр электронных устройств для быта, отдыха и здоровья. Вы узнаете, как можно изготовить инкубатор из холодильника, радиоуправляемый катер для рыболова, частотомер и много других необходимых устройств. Описание различного рода электростимуляторов и нейростимулятора поможет вам поправить свое здоровье и здоровье близких людей. Впервые в подобного рода литературе описывается метод лечения никотиновой зависимости, воспользовавшись которым вы сможете бросить курить сами и помочь избавиться от этой вредной привычки своим друзьям.
По материалам книги можно изготовить измеритель пульса, автомобильный цифровой тахометр, частотомер на одной микросхеме и другие устройства на РIС-микроконтроллерах. В описании устройств на микроконтроллерах даются подробные алгоритмы работы и исходные тексты программ.
Устройства предназначены для изготовления широким кругом радиолюбителей.
Скачать: Радиолюбительские конструкции на PIC-микроконтроллерах. Книги 1 — 4 + ПО + Электронные самоделки
Осваиваем простейший микроконтроллер PIC. Часть 2 / Habr
В первой части мы разобрали как можно прошить выбранный МК, как его правильно сконфигурировать, а так же научились работать с цифровыми портами.Теперь пришло время рассмотреть остальную периферию микроконтроллера.
Все параметры работы МК задаются через установку определенных значений в регистрах специального назначения (SFR).
Как и конфигурационные биты, все существующие в выбранном МК регистры доступны нам в виде переменных благодаря подключенной библиотеке.
Что бы узнать, какие биты в каких регистрах нам потребуются для конкретного модуля — придется снова заглянуть в документацию.
Для примера, взглянем на таблицу регистров, имеющих отношение к цифровым входам\выходам порта B:
Считав значения регистра PORTB мы получим текущий логический уровень на каждой ножке порта.
Запись в регистр устанавливает указанный уровень на соответсующих ножках порта.
Каждый бит регистра нам доступен в виде отдельной переменной, именно через них мы управляли светодиодом и считывали состояние кнопки.
Регистр TRISB отвечает за направление данных через порт. Каждый из 8 битов регистра привязан к соответсвующей ножке МК.
Присвоив нужному биту единицу — мы сделаем из него вход, а присвоив ноль — выход.
Именно в этом регистре мы меняли биты через переменные pin_Bx_direction.
В регистре OPTION_REG к порту относится только старший бит:
RBPU: PORTB Pull-up Enable bit
1 = PORTB pull-ups are disabled
0 = PORTB pull-ups are enabled by individual port latch values
Этот бит отвечает за подключение внутренней подтяжки, о которой было упоминание в первой части.
По таблице видно, что изначально подтяжка выключена, а значит при отсутствии внешней подтяжки необходимо включить внутреннюю самостоятельно:
OPTION_REG_NRBPU = 0
При желании узнать принцип работы конкретного модуля поближе всегда можно найти в документации принципиальную схему.
Прерывания
Так как микроконтроллеры не поддерживают многозадачность, возникает ряд проблем по совмещению нескольких процессов.
Допустим, нужно нам мигать одним светодиодом постоянно с большим периодом, а второй переключать по нажатию кнопки.
Какой бы порядок действий мы не выбрали, как надо у нас ничего не заработает: ведь пока микроконтролер отсчитывает время до переключения первого светодиода он может пропустить факт нажатия кнопки.
Тут нам и придут на помощь прерывания.
При определенных условиях микроконтроллер может прервать выполнение бесконечного цикла и выполнить небольшую подпрограмму, после чего вернуться к выполнению основной задачи.
В выбранном нами МК 16f628a имеется 10 возможных источников прерываний:
- внешний источник прерываний INT
- изменение уровня сигнала на цифровых входах RB4:7
- переполнение таймера TMR0
- переполнение таймера TMR1
- совпадение TMR2 и PR2
- завершение записи в EEPROM
- изменение выходного уровня компаратора
- получение\завершение отправки данных через USART
- прерывания от модуля CCP
Прерывание по каждому источнику можно как разрешить, так и запретить индивидуально изменяя соответствуюющие биты в регистрах INTCON и PIE1.
Для разрешения прерываний, управляемых регистром PIE1 необоходимо разрешить прерывания от перифирии битом PEIE в регистре INTCON.
После выбора необходимых источников прерываний необходимо глобально разрешить прерывания битом GIE в регистре INTCON.
Для каждого прерывания имеется еще один бит в регистре INTCON или PIR1 — флаг прерывания.
При срабатывании прерывания соответсвующему флагу присваивается значение 1, по которому можно легко определить какое из прерываний сработало.
Сбрасывать флаги прерываний необходимо вручную после входа в обработчик прерываний, иначе при нескольких источниках разобрать кто конкретно его вызвал будет невозможно.
В качестве примера использования прерываний перепишем нашу программу по миганию светодиодом.
Воспользуемся источником прерываний INT. В зависимости от состояния бита INTEDG в регистре OPTION прерывание будет генерироваться либо по переднему фронту сигнала (переход с низкого уровня к высокому), либо по заднему.
Для изменения уровня сигнала на INT неободимо перенести кнопку на соответсвующую ногу (pin 6).
include 16f628a -- target PICmicro
--
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 -- защита кода отключена
--
enable_digital_io() -- переключение всех входов\выходов на цифровой режим
--
alias led is pin_B5 -- светодиод подключен к RB5
pin_B5_direction = output -- настраиваем RB5 как цифровой выход
--
alias button is pin_B0 -- кнопка подключена к RB0
pin_B0_direction = input -- настраиваем RB0 как вход
var volatile bit led_blink = false -- объявляем переменную
-- настраиваем прерывание
INTCON_INTE = on -- разрешаем прерывание по изменению сигнала на INT
INTCON_INTF = off -- сбрасываем флаг прерывания по INT
OPTION_REG_INTEDG = 0 -- генерировать прерывания при переходе 1->0
INTCON_GIE = on -- включаем обработку прерываний
-- обработчик прерывания INT
procedure INT_ISR is
pragma interrupt
if INTCON_INTF then -- проверяем флаг нужного нам прерывания
INTCON_INTF = off -- сбрасываем флаг прерывания
led_blink = !led_blink -- перключаем флаг светодиода
end if
end procedure
led = off -- выключаем светодиод
forever loop
led = off -- выключаем светодиод
_usec_delay(100000) -- ждем 0,1 сек
if led_blink then -- моргаем только при активном флаге
led = on -- ждем 0,1 сек
_usec_delay(100000) -- ждем 0,1 сек
end if
end loop
Увы, это не самый оптимальный вариант по двум причинам:
- из-за дребезга контактов кнопки прерывание может сработать несколько раз подряд, дребезг желательно подавлять программно
- в основном цикле программы у нас остались паузы, во время которых микроконтролер ничего не делает, кроме как ждет.
Таймеры
Основная работа таймеров — считать. По завершению счета они могут генерировать прерывание. А так как счет идет аппаратно, не забивая процессорное время ожиданием, таймеры удачно подходят на замену нашим паузам.
Каждый из трех таймеров имеет свои особенности, потому для выполнение определенных задач нужно уметь выбрать более подходящий.
TMR0
- 8-битный таймер (считает от 0 до 255)
- тактируется либо от системной частоты, либо от внешнего источника
- может считать как передние, так и задние фронты тактируемого сигнала
- 8-битный предделитель (может считать каждый второй, каждый 4… каждый 256 сигнал)
- прерывание генирируется при переполнении (при переходе от 255 к 0)
- таймер работает постоянно
Что нам это дает?
При тактировании от системной частоты (в нашем случае — 4 MHz/4 = 1 Mhz) таймер будет генерировать прерывания с постоянной частотой.
Не сложно посчитать, что без предделителя прерывания будут иметь частоту 3906,25 Гц. Для светодиода — многовато.
Предделитель может на порядок (двойчный, т.е. в 2 раза) уменьшить частоту восемь раз.
При предделителе 1:256 мы получим частоту в 15.3 Гц. Мигание светодиодом с такой частотой вполне различимо человеческим глазом.
При тактировании МК от внешнего кварца можно добиться другого диапазона частот.
При тактировании таймера от внешнего источника таймер превращается в счетчик внешних импульсов. В принципе счета ничего не меняется, просто в зависимости от источника может не получиться постоянная частота прерываний. Счетчиком можно считать количество нажатий кнопки, оборотов колеса и пр. При этом никто не обязывает считать от нуля до прерывания: текущее значение счетчика всегда доступно как для чтения, так и для записи.
При желании в режиме таймера можно увеличить частоту прерываний изменяя стартовое значение счетчика при каждом прерывании, но так как за время перехода на процедуру обработки уйдет неизвестное время, точно расчитать частоту не удастся.
TMR1
Основные отличия таймера от TMR0:
- данный таймер 16-битный
- таймер может тактироваться не только от внешнего источника, но и от дополнительного часового кварца
- максимально доступный предделитель — 1:8
- таймер может считать только передние фронты сигнала
- таймер может использоваться модулем CCP
- таймер можно отключать
Использовать TMR1 можно так же, как и TMR0: или для генерирования определенной частоты, или для подсчета импульсов.
TMR2
Данный 8-битный таймер имеет несколько иной принцип работы.
Тактироваться он может только от системной частоты. Предделитель может быть выставлен только на значения 1:1, 1:4 или 1:16.
Полученные импульсы таймер считает от нуля и до предварительно заданного значения PR2.
После совпадения TMR2 и PR2 подается сигнал на 4-битный постделитель, и только после переполнения постделителя генерируется прерывание.
Благодаря такой схеме можно корректировать конечную частоту прерываний с минимальным шагом.
Помимо постделителя, сигнал при совпадении PR2 может идти на модуль CCP в качестве базы тайминга ШИМ.
Как и TMR1, данный таймер можно отключить.
Пример использования
В качестве примера зададим частоту мигания светодиода таймером TMR1.
Список всех необходимых переменных можно узнать из таблицы:
Описание каждого бита можно найти в документации на микроконтроллер.
include 16f628a -- target PICmicro
--
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 -- защита кода отключена
--
enable_digital_io() -- переключение всех входов\выходов на цифровой режим
--
alias led is pin_B5 -- светодиод подключен к RB5
pin_B5_direction = output -- настраиваем RB5 как цифровой выход
--
-- настраиваем таймер
T1CON_T1CKPS = 0b_11 -- предделитель, 2 бита
T1CON_TMR1CS = 0 -- тактирование от системной частоты
PIE1_TMR1IE = on -- разрешаем прерывание от TMR1
PIR1_TMR1IF = off -- сбрасываем флаг прерывания от TMR1
INTCON_PEIE = on -- разрешаем прерывания от периферии
T1CON_TMR1ON = on -- включаем таймер
INTCON_GIE = on -- включаем обработку прерываний--
;таймер тактируется от Fosc/4 : 4MHz/4 = 1 Mhz
;предделитель установлен на 1:8 : 1Mhz/8 = 125 kHz
;таймер - 16 бит : 125 kHz/65536 = 1.9 Hz
;светодиод включится и выключится за 2 прерывания : итоговая частота моргания 0,95 Hz
---- обработчик прерывания TMR1
procedure TMR1_ISR is
pragma interrupt
if PIR1_TMR1IF then -- проверяем флаг нужного нам прерывания
PIR1_TMR1IF = off -- сбрасываем флаг прерывания
led = !led -- переключаем состояние светодиода
end if
end procedureforever loop
-- полностью свободный основной цикл
end loop
CCP
Модуль CCP (Capture/Compare/PWM) предназначен для измерения и формирования импульсных сигналов.
Capture
В режиме захвата модуль использует TMR1 в качестве измерителя времени. Как только на ножке CCP1 (pin 9) возникнет отслеживаемое событие, модуль сохранит текущее 16-битное значение TMR1 в регистры CCPR1H:CCPR1L.
Такими событиями могут быть:
- каждый задний фронт сигнала
- каждый передний фронт сигнала
- каждый четвертый передний фронт
- каждый 16 передний фронт
Комбинируя события и высчитывая разность между полученными значениями таймера можно получить такие данные сигнала, как период, длительность импульсов или скважность. Например, некторые акселерометры передают информацию о полученном ускорении изменением скважности сигнала.
Compare
В режиме сравнения модуль рабоает в обратном направлении: как только значение в регистрах CCPR1H:CCPR1L совпадет с текущим значением TMR1, модуль может выставить 1 или 0 на ножке CCP1 (pin 9) или просто сгенерировать прерывание. Так же при совпадении модуль может обнулить TMR1.
Замеряя необходимые промежутки времени можно формировать импульсы определенной формы. Например, для управления положением сервомашинки требуется подавать на сигнальную линию импульсы высокого уровня длиной 700-2200 мкс с частотой 50 Hz. В зависимости от длины импульса серво установит свое положение либо в одно крайнее положение (700 мкс), либо в другое (2200 мкс), либо приблизительно по центру (1500 мкс).
PWM
В режиме ШИМ модуль самостоятельно формирует сигнал с частотой, генерируемой таймером TMR2, и заданной 10-битной скважностью.
Что такое ШИМ-сигнал?
Микроконтроллер может выдавать только цифровой сигнал — логические 1 и 0.
В ШИМ сигнале с постоянной частотой первую часть периода на выход подается 1, а вторую часть — 0. Меняя соотношение длительности обоих частей меняется скважность сигнала. Скважность ШИМ — это соотношение продолжительности импульса логической единицы и периода ШИМ. 10-битный ШИМ может обеспечить точность изменения скважности в 1/1024 длительности периода.
Как этим можно пользоваться?
Так как частота сигнала достаточно велика, то низкоскоростным нагрузкам будет казаться, что они получают напряжение, равное проценту скважности от максимума. Таким образом из ШИМ у нас выйдет обычный аналоговый выход с диапазоном напряжения от 0 до Vdd (в нашем случае — 5В).
Для высокоскоростных нагрузок (к примеру, для светодиодов) ШИМ сигнал будет регулировать процент времени работы. Для человеческого глаза мигание светодиода с большой частотой и переменной скважностью будет казаться постоянным горением с переменной яркостью.
Для работы с ШИМ имеется библиотека, потому нам не потребуется особых усилий по расчетам и настройке регистров.
Пример использования библиотеки:
-- настраиваем ШИМ
pin_CCP1_direction = output -- настраиваем pin 9 как выход
include pwm_hardware -- подключаем библиотеку, упрощающую работу с ШИМ
pwm_max_resolution(4) -- устанавливаем значение предделителя TMR2 для выбора нужной частоты (976 Hz)
pwm1_on() -- включаем ШИМvar bit fade_type = 1 -- переменная для направления изменения яркости
var byte i = 0 -- переменная для текущего уровня яркости
forever loop
-- меняем текущее значение
if fade_type then
i = i + 1
if i == 100 then
fade_type = 0
end if
else
i = i - 1
if i == 0 then
fade_type = 1
end if
end if
pwm1_set_percent_dutycycle(i) -- применяем новое значение яркости
_usec_delay(20000) -- делаем паузу, иначе процесс изменения яркости будет очень быстрым
end loop
Компараторы
Вся работа компаратора заключается в том, что бы сравнить два напряжения и сказать какое из них больше. Сравнение происходит постоянно (при включенном модуле), при изменении результата сравнения может генерироваться прерывание.
В зависимости от настроек, компараторы могут работать в восьми режимах:
По схемам хорошо видно какие напряжения сравниваются в каждом режиме, стоит только пояснить что такое опорное напряжение Vref.
Источник опорного напряжения
Это еще один небольшой модуль, обычно требуется только для работы компараторов.
Единственная задача модуля — разделить напряжение питания до нужного значения.
Модуль представляет из себя простой делитель на 16 резисторах. Все, что он умеет — выделить пониженное до нужного значения напряжение из питания.
При питании 5В модуль может выдать напряжение от 0 до 3.6В.
EEPROM
В микроконтроллере 16f628a нам доступно 128 байт энергонезависимой памяти.
При использовании ассемблера нам пришлось бы много прочитать про порядок записи и чтения в память, нам же понадобится лишь подключить одну бибилотеку для работы с eeprom.
Для подключения библиотеки достаточно написать
include pic_data_eeprom
после чего нам становится доступным ряд процедур и функций:
data_eeprom_read([offset],[byte]) -- процедура читает байт с номером [offset] и -- заносит результат в переменную [byte] data_eeprom_write([offset],[byte]) -- процедура записвает полученный байт [byte] на место [offset] data_eeprom_read_word([offset],[word]) -- процедура считывает 2 байта: [offset] и [offset]+1 data_eeprom_write_word([ofset],[word]) -- процедура записывает 2 байта подряд data_eeprom_read_dword([offset],[dword]) -- процедура считывает 4 байта подряд data_eeprom_write_dword([offset],[dword]) -- процедура записывает 4 байта подряд [byte] = data_eeprom([offset]) -- чтение байта через функцию [word] = data_eeprom_word([offset]) -- чтение двух байт через функцию [dword] = data_eeprom_dword([offset]) -- чтение 4 байт через функцию
Единственное, о чем нужно помнить — о размере памяти. Записать dword по смещению 128 в данном случае не удастся.
USART
USART — последовательный порт ввода-вывода. Данный модуль предназначен для связи микроконтроллера с другими устройствами.
Для организации канала связи достаточно лишь соединить Rx каждого устройства с Tx другого.
При желании настроить режим работы модуля самостоятельно можно подробно изучить документацию на микроконтроллер, но нам снова понадобится лишь одна библиотека.
Единственное, что нам требуется указать — скорость передачи данных. Максимальная скорость зависит от тактового сигнала МК. При 4 MHz рекомендуемая скорость — 2400.
const serial_hw_baudrate = 2400 -- задаем скорость
include serial_hardware -- подключаем библиотеку
serial_hw_init() -- производим настройку модуля
После настройки можно начинать принимать и передавать байты.
serial_hw_write([byte]) -- процедура отправки байта [byte] serial_hw_data = [byte] -- отправка байта через псевдопеременную serial_hw_read([byte]):[boolean] -- при наличии присланного байта заносит значение в -- переменную [byte] и возвращает true -- при отсуствии присланных данных возвращает false serial_hw_data_available -- при наличии принятых байт данная переменная возвращает true, иначе - false [byte] = serial_hw_data -- чтение байта через псевдопеременную, при отсутствии -- принятых байт микроконтролер будет ожидать их прихода -- при использовании такого способа чтения необходимо проверять -- факт прихода данных
Для организации связи с компьютером можно использовать UART-COM и UART-USB адаптеры. Впрочем, никто не мешает собрать их самостоятельно по схемам:
Внешний кварц
Как было видно, внешний кварц необходим не всегда. Но бывают и такие случаи, когда требуется использовать внешний тактовый сигнал.
Подключать внешний кварц нужно к ногам OSC1 и OSC2 (pin16 и pin 15):
Для распространенных кварцев резистор не нужен, ёмкость конденсаторов выбирается в зависимости от частоты кварца. Так же в зависимости от частоты выбирается режим, выставляемый в конфигурационном бите OSC:
Вместо кварца можно так же использовать керамический резонатор, он уже содержит в себе конденсаторы — для подключения резонатора достаточно подсоединить третий контакт к земле.
Итоги
Вот мы и расмотрели основные возможности каждого модуля в микроконтроллере 16f628a. Конечно, в такой короткой статье невозможно описать все тонкости при работе с каждым модулем, при необходимости подробная информация о каждом модуле доступна в документации на каждый микроконтроллер.
С текущим набором перифирии можно выполнить довольно много разнообразных устройств, но иногда бывает проще перейти на более укомплектованный микроконтроллер. Благодаря универсальным библиотекам, начать работать с любым другим поддерживаемым МК не составит особого труда.
Радиолюбительские конструкции на PIC-микроконтроллерах в 4 книгах + CD
В четырех книгах представлены различные конструкции на микроконтроллерах, которые будут интересны не только опытным, но и начинающим радиолюбителям. Для удобства при повторении конструкций приведены рисунки печатных плат, даны исходные тексты программ и «прошивки» контроллеров.
К книгам приложены мануалы использованных микросхем и контроллеров, а так же программы MPLab, IC-Prog и PonyProg2000 на CD диске.
Список книг
Заец Н.И. — Радиолюбительские конструкции на PIC-микроконтроллерах. С алгоритмами работы программ и подробными комментариями к исходным текстам. — М.: СОЛОН-Пресс, 2003. — 368 с.: ил. — (Серия «СОЛОН — радиолюбителям», выпуск 22) ISBN 5-98003-078-6+CD
В книге представлено 20 описаний радиолюбительских устройств различного назначения: часы, таймеру, автоматы, программатор и многие другие, выполненные на микроконтроллере PIC16F84A. Впервые книга с различными устройствами на PIC-микроконтроллере предназначается для радиолюбителей с любым уровнем подготовленности. Даже те, кто не знаком с программированием микроконтроллеров, смогут без труда повторить любое устройство. Радиолюбители, имеющие опыт работы с программированием, могут изменить программы под свои цели. Для этого в книге даны алгоритмы работы и исходные тексты программ с подробными комментариями.
Автор также делится опытом программирования и работы с ассемблером MPLAB и программатором PonyProg2000.
Содержание:
Устройства с цифровой индикацией
Часы с тремя будильниками
Часы с будильником — шахматные часы
Регистратор событий
Автомобильный цифровой тахометр
Программатор
Универсальный таймер
Автомат включения освещения
Счетчик витков
Кабельный пробник
Радиоохрана
Электронный домоуправ
Устройства с индикацией точечными светодиодами
Два автомата суточного включения нагрузки
Часы-будильник
Будильник с установкой времени
Походный будильник
«Песочные» часы
Автомат управления размораживанием холодильника
Рекомендации
Приложения
1 Справочные данные на микроконтроллер PIC16F84A
2 Команды микроконтроллера
3 Макрокоманды ассемблера MPASM
4 Коды прошивок микроконтроллеров
5 PIC-микроконтроллеры в интернете
6 Сообщения MPASM
Литература
Заец Н.И. — Радиолюбительские конструкции на PIC-микроконтроллерах. С алгоритмами работы программ и подробными комментариями к исходным текстам. Книга 2. — М.: СОЛОН-Пресс, 2005. — 192 с.: ил. — (Серия «СОЛОН — радиолюбителям») ISBN 5-98003-238-Х+CD
В книге даны новые примеры применения PIC-микроконтроллеров в радиолюбительской практике. Программисты найдут в книге программы с использованием встроенного в микроконтроллер модуля АЦП и программы с различными внешними устройствами — термодатчиками типа DS 18×20, LCD-дисплеями. Радиолюбители, которые желают повторить устройства, могут выбрать цифровой милливольтметр, для того чтобы защитить свой дом от перепадов напряжения, а трехфазный двигатель от перегрузки. Термометр-часы, градусник и два терморегулятора будут полезными в любом доме. Ко всем программам даны алгоритмы работы и подробные комментарии.
Книга предназначена для широкого круга радиолюбителей, а также может быть полезна студентам, изучающим программирование микроконтроллеров.
Содержание:
К читателям
Устройства с использованием АЦП
Милливольтметр
Цифровой прибор для блока питания с установкой защиты
Автомат защиты от перепадов сетевого напряжения
Устройство защиты от перепадов сетевого напряжения
Устройство защиты без индикации
Устройство защиты трехфазных двигателей
Устройства, измеряющие температуру
Т ермометр-часы
Градусник
Два терморегулятора
Приложение
Коды прошивок микроконтроллеров
Литература
Заец Н.И. — Радиолюбительские конструкции на PIC-микроконтроллерах. Книга 3. — М.: СОЛОН-Пресс, 2006. — 240 с.: ил. — (Серия «СОЛОН — радиолюбителям») ISBN 5-98003-250-9 + Приложение +CD
Третья книга расширяет диапазон применения PIC-микроконтроллеров в радиолюбительской практике. В ней дан пример программы с использованием встроенного в микроконтроллер модуля USART и различных внешних устройств — LCD-дисплеев и ЖКИ, выполненных по COG-технологии. Радиолюбители, которые желают повторить устройства, могут выбрать: охрану подворья, шахматные часы, таймеры на 7 и 9 выходов, а также автомат кормления аквариумных рыб. Для родной школы можно изготовить простое устройство подачи звонков по расписанию.
В отдельную главу вынесены «трудные темы» взаимодействия микроконтроллеров с внешними устройствами: ЖК-дисплеями и термодатчиками типа DS 18×20. Ко всем программам даны алгоритмы работы и подробные комментарии.
К книге прилагается КОМПАКТ-ДИСК, содержащий 48 исходных текстов программ ко всем устройствам четырех книг автора, («Электронные самоделки. Для быта, отдыха и здоровья» и «Радиолюбительские конструкции на PIC-микроконтроллерах» в трех книгах), вышедших в издательстве СОЛОН-Пресс, справочные материалы по микроконтроллерам на русском и английском языках, установочные программы для программаторов и ассемблера MPASM.
Книга предназначена для широкого круга радиолюбителей, а также может быть полезна студентам, изучающим программирование микроконтроллеров.
Содержание:
К читателям
Содержание компакт-диска
Необходимые для дома устройства
Охрана подворьем восемь объектов
Таймер на семь выходов
Таймер на девять выходов
Автомат кормления аквариумных рыб
Устройство подачи звонков по расписанию
Шахматные часы-таймер
Взаимодействие микроконтроллеров с внешними устройствами
Управление термодатчиками типа DS 18×20
Управление жидкокристаллическими дисплеями
Проверка ЖКИ типа TIC9162
Литература
Заец Н.И. — Радиолюбительские конструкции на PIC-микроконтроллерах. Книга 4. — К.: «МК-Пресс», 2008. — 336 с.: ил. ISBN 978-966-8806-42-1+CD
Данная книга — практическое пособие по освоению микроконтроллеров PICmicro компании Microchip и другой современной элементной базы, наподобие индикаторов, выполненных по COG-технологии. Рассмотрены алгоритмы работы, схемы и программы для различных полезных устройств: многофункциональных часов, отображающих текущее время и температуру воздуха; автомобильных часов, фиксирующих время в пути и сообщающих о поломке реле-регулятора; автомата включения освещения; цифрового устройства для блока питания с установкой защиты по току и напряжению; специализированных термометров и др. Для начинающих дана глава о наладке устройств на микроконтроллерах. Книга предназначена для широкого круга радиолюбителей, а также может быть полезна студентам, изучающим программирование микроконтроллеров.
Содержание:
Принципиальная схема
Печатная плата
Общий вид
Работа с устройством
Калибровка термометра
Глава 2 Автомобильные часы, вольтметр, таймер
Принципиальная схема
Наладка устройства
Работа с устройством
Глава 3 Таймеры десятичного счета
Принципиальная схема
Печатная плата
Работа с таймером
Глава 4 Автомат включения освещения
Принципиальная схема
Работа с устройством
Глава 5 Два термометра с памятью
Принципиальная схема
Работа с устройством
Глава 6 Терморегулятор с гистерезисом
Принципиальная схема
Печатная плата
Работа с устройством
Глава 7 Термометр-градуснbк
Принципиальная схема
Работа с устройством
Глава 8 Усовершенствованное устройство для блока питания с установкой защиты
Принципиальная схема
Печатная плата
Наладка устройства
Работа с устройством
Глава 9 Контроллер трех насосов
Работа устройства
Глава 10 Наладка устройств на микроконтроллерах
Работа с программой PonyProg2000
Работа с программой IC-Prog
Устройство не работает
Устройство работает неправильно
Список литературы
Год издания: 2003-2008
Издательство: Солон-Пресс
Серия / Цикл: Радиолюбительские конструкции на PIC-микроконтроллерах.
Формат: pdf, CD
Язык: русский
Размер: 161 Mb
Скачать Радиолюбительские конструкции на PIC-микроконтроллерах
PIC-микроконтроллеры микроконтроллеры Заец
USB программатор PIC своими руками.
Собираем программатор для микроконтроллеров PIC и микросхем EEPROM
Какие первые шаги должен сделать радиолюбитель, решивший собрать схему на микроконтроллере? Естественно, необходима управляющая программа – «прошивка», а также программатор.
И если с первым пунктом нет проблем – готовую «прошивку» обычно выкладывают авторы схем, то вот с программатором дела обстоят сложнее.
Цена готовых USB-программаторов довольно высока и лучшим решением будет собрать его самостоятельно. Вот схема предлагаемого устройства (картинки кликабельны).
Основная часть.
Панель установки МК.
Исходная схема взята с сайта LabKit.ru с разрешения автора, за что ему большое спасибо. Это так называемый клон фирменного программатора PICkit2. Так как вариант устройства является «облегчённой» копией фирменного PICkit2, то автор назвал свою разработку PICkit-2 Lite, что подчёркивает простоту сборки такого устройства для начинающих радиолюбителей.
Что может программатор? С помощью программатора можно будет прошить большинство легкодоступных и популярных МК серии PIC (PIC16F84A, PIC16F628A, PIC12F629, PIC12F675, PIC16F877A и др.), а также микросхемы памяти EEPROM серии 24LC. Кроме этого программатор может работать в режиме USB-UART преобразователя, имеет часть функций логического анализатора. Особо важная функция, которой обладает программатор – это расчёт калибровочной константы встроенного RC-генератора некоторых МК (например, таких как PIC12F629 и PIC12F675).
Необходимые изменения.
В схеме есть некоторые изменения, которые необходимы для того, чтобы с помощью программатора PICkit-2 Lite была возможность записывать/стирать/считывать данные у микросхем памяти EEPROM серии 24Cxx.
Из изменений, которые были внесены в схему. Добавлено соединение от 6 вывода DD1 (RA4) до 21 вывода ZIF-панели. Вывод AUX используется исключительно для работы с микросхемами EEPROM-памяти 24LС (24C04, 24WC08 и аналоги). По нему передаются данные, поэтому на схеме панели программирования он помечен словом «Data». При программировании микроконтроллеров вывод AUX обычно не используется, хотя он и нужен при программировании МК в режиме LVP.
Также добавлен «подтягивающий» резистор на 2 кОм, который включается между выводом SDA и Vcc микросхем памяти.
Все эти доработки я уже делал на печатной плате, после сборки PICkit-2 Lite по исходной схеме автора.
Микросхемы памяти 24Cxx (24C08 и др.) широко используются в бытовой радиоаппаратуре, и их иногда приходится прошивать, например, при ремонте кинескопных телевизоров. В них память 24Cxx применяется для хранения настроек.
В ЖК-телевизорах применяется уже другой тип памяти (Flash-память). О том, как прошить память ЖК-телевизора я уже рассказывал. Кому интересно, загляните.
В связи с необходимостью работы с микросхемами серии 24Cxx мне и пришлось «допиливать» программатор. Травить новую печатную плату я не стал, просто добавил необходимые элементы на печатной плате. Вот что получилось.
Ядром устройства является микроконтроллер PIC18F2550-I/SP.
Это единственная микросхема в устройстве. МК PIC18F2550 необходимо «прошить». Эта простая операция у многих вызывает ступор, так как возникает так называемая проблема «курицы и яйца». Как её решил я, расскажу чуть позднее.
Список деталей для сборки программатора. В мобильной версии потяните таблицу влево (свайп влево-вправо), чтобы увидеть все её столбцы.
Название | Обозначение | Номинал/Параметры | Марка или тип элемента |
Для основной части программатора | |||
Микроконтроллер | DD1 | 8-ми битный микроконтроллер | PIC18F2550-I/SP |
Биполярные транзисторы | VT1, VT2, VT3 | КТ3102 | |
VT4 | КТ361 | ||
Диод | VD1 | КД522, 1N4148 | |
Диод Шоттки | VD2 | 1N5817 | |
Светодиоды | HL1, HL2 | любой на 3 вольта, красного и зелёного цвета свечения | |
Резисторы | R1, R2 | 300 Ом | МЛТ, МОН (мощностью от 0,125 Вт и выше), импортные аналоги |
R3 | 22 кОм | ||
R4 | 1 кОм | ||
R5, R6, R12 | 10 кОм | ||
R7, R8, R14 | 100 Ом | ||
R9, R10, R15, R16 | 4,7 кОм | ||
R11 | 2,7 кОм | ||
R13 | 100 кОм | ||
Конденсаторы | C2 | 0,1 мк | К10-17 (керамические), импортные аналоги |
C3 | 0,47 мк | ||
Электролитические конденсаторы | C1 | 100 мкф * 6,3 в | К50-6, импортные аналоги |
C4 | 47 мкф * 16 в | ||
Катушка индуктивности (дроссель) | L1 | 680 мкГн | унифицированный типа EC24, CECL или самодельный |
Кварцевый резонатор | ZQ1 | 20 МГц | |
USB-розетка | XS1 | типа USB-BF | |
Перемычка | XT1 | любая типа «джампер» | |
Для панели установки микроконтроллеров (МК) | |||
ZIF-панель | XS1 | любая 40-ка контактная ZIF-панель | |
Резисторы | R1 | 2 кОм | МЛТ, МОН (мощностью от 0,125 Вт и выше), импортные аналоги |
R2, R3, R4, R5, R6 | 10 кОм |
Теперь немного о деталях и их назначении.
Зелёный светодиод HL1 светится, когда на программатор подано питание, а красный светодиод HL2 излучает в момент передачи данных между компьютером и программатором.
Для придания устройству универсальности и надёжности используется USB-розетка XS1 типа «B» (квадратная). В компьютере же используется USB-розетка типа «А». Поэтому перепутать гнёзда соединительного кабеля невозможно. Также такое решение способствует надёжности устройства. Если кабель придёт в негодность, то его легко заменить новым не прибегая к пайке и монтажным работам.
В качестве дросселя L1 на 680 мкГн лучше применить готовый (например, типов EC24 или CECL). Но если готовое изделие найти не удастся, то дроссель можно изготовить самостоятельно. Для этого нужно намотать 250 – 300 витков провода ПЭЛ-0,1 на сердечник из феррита от дросселя типа CW68. Стоит учесть, что благодаря наличию ШИМ с обратной связью, заботиться о точности номинала индуктивности не стоит.
Напряжение для высоковольтного программирования (Vpp) от +8,5 до 14 вольт создаётся ключевым стабилизатором. В него входят элементы VT1, VD1, L1, C4, R4, R10, R11. С 12 вывода PIC18F2550 на базу VT1 поступают импульсы ШИМ. Обратная связь осуществляется делителем R10, R11.
Чтобы защитить элементы схемы от обратного напряжения с линий программирования в случае использования USB-программатора в режиме внутрисхемного программирования ICSP (In-Circuit Serial Programming) применён диод VD2. VD2 – это диод Шоттки. Его стоит подобрать с падением напряжения на P-N переходе не более 0,45 вольт. Также диод VD2 защищает элементы от обратного напряжения, когда программатор применяется в режиме USB-UART преобразования и логического анализатора.
При использовании программатора исключительно для программирования микроконтроллеров в панели (без применения ICSP), то можно исключить диод VD2 полностью (так сделано у меня) и установить вместо него перемычку.
Компактность устройству придаёт универсальная ZIF-панель (Zero Insertion Force – с нулевым усилием установки).
Благодаря ей можно «зашить» МК практически в любом корпусе DIP.
На схеме «Панель установки микроконтроллера (МК)» указано, как необходимо устанавливать микроконтроллеры с разными корпусами в панель. При установке МК следует обращать внимание на то, чтобы микроконтроллер в панели позиционируется так, чтобы ключ на микросхеме был со стороны фиксирующего рычага ZIF-панели.
Вот так нужно устанавливать 18-ти выводные микроконтроллеры (PIC16F84A, PIC16F628A и др.).
А вот так 8-ми выводные микроконтроллеры (PIC12F675, PIC12F629 и др.).
Если есть нужда прошить микроконтроллер в корпусе для поверхностного монтажа (SOIC), то можно воспользоваться переходником или просто подпаять к микроконтроллеру 5 выводов, которые обычно требуются для программирования (Vpp, Clock, Data, Vcc, GND).
Готовый рисунок печатной платы со всеми изменениями вы найдёте по ссылке в конце статьи. Открыв файл в программе Sprint Layout 5.0 можно с помощью режима «Печать» не только распечатать слой с рисунком печатных проводников, но и просмотреть позиционирование элементов на печатной плате. Обратите внимание на изолированную перемычку, которая связывает 6 вывод DD1 и 21 вывод ZIF-панели. Печатать рисунок платы необходимо в зеркальном отображении.
Изготовить печатную плату можно методом ЛУТ, а также маркером для печатных плат, с помощью цапонлака (так делал я) или «карандашным» методом.
Вот рисунок позиционирования элементов на печатной плате (кликабельно).
При монтаже первым делом необходимо запаять перемычки из медного лужёного провода, затем установить низкопрофильные элементы (резисторы, конденсаторы, кварц, штыревой разъём ISCP), затем транзисторы и запрограммированный МК. Последним шагом будет установка ZIF-панели, USB-розетки и запайка провода в изоляции (перемычки).
«Прошивка» микроконтроллера PIC18F2550.
Файл «прошивки» — PK2V023200.hex необходимо записать в память МК PIC18F2550I-SP при помощи любого программатора, который поддерживает PIC микроконтроллеры (например, Extra-PIC). Я воспользовался JDM Programmator’ом JONIC PROG и программой WinPic800.
Ссылка на файл PK2V023200.hex, запакованный в архив rar, дана в конце статьи.
Залить «прошивку» в МК PIC18F2550 можно и с помощью всё того же фирменного программатора PICkit2 или его новой версии PICkit3. Естественно, сделать это можно и самодельным PICkit-2 Lite, если кто-либо из друзей успел собрать его раньше вас:).
Также стоит знать, что «прошивка» микроконтроллера PIC18F2550-I/SP (файл PK2V023200.hex) записывается при установке программы PICkit 2 Programmer в папку вместе с файлами самой программы. Примерный путь расположения файла PK2V023200.hex — «C:\Program Files (x86)\Microchip\PICkit 2 v2\PK2V023200.hex». У тех, у кого на ПК установлена 32-битная версия Windows, путь расположения будет другим: «C:\Program Files\Microchip\PICkit 2 v2\PK2V023200.hex».
Ну, а если разрешить проблему «курицы и яйца» не удалось предложенными способами, то можно купить уже готовый программатор PICkit3 на сайте AliExpress. Там он стоит гораздо дешевле. О том, как покупать детали и электронные наборы на AliExpress я писал тут.
Обновление «прошивки» программатора.
Прогресс не стоит на месте и время от времени компания Microchip выпускает обновления для своего ПО, в том числе и для программатора PICkit2, PICkit3. Естественно, и мы можем обновить управляющую программу своего самодельного PICkit-2 Lite. Для этого понадобится программа PICkit2 Programmer. Что это такое и как пользоваться — чуть позднее. А пока пару слов о том, что нужно сделать, чтобы обновить «прошивку».
Для обновления ПО программатора необходимо замкнуть перемычку XT1 на программаторе, когда он отключен от компьютера. Затем подключить программатор к ПК и запустить PICkit2 Programmer. При замкнутой XT1 активируется режим bootloader для загрузки новой версии прошивки. Затем в PICkit2 Programmer через меню «Tools» — «Download PICkit 2 Operation System» открываем заранее подготовленный hex-файл обновлённой прошивки. Далее произойдёт процесс обновления ПО программатора.
После обновления нужно отключить программатор от ПК и снять перемычку XT1. В обычном режиме перемычка разомкнута. Узнать версию ПО программатора можно через меню «Help» — «About» в программе PICkit2 Programmer.
Это всё по техническим моментам. А теперь о софте.
Работа с программатором. Программа PICkit2 Programmer.
Для работы с USB-программатором нам потребуется установить на компьютер программу PICkit2 Programmer. Это специальная программа обладает простым интерфейсом, легко устанавливается и не требует особой настройки. Стоит отметить, что работать с программатором можно и с помощью среды разработки MPLAB IDE, но для того, чтобы прошить/стереть/считать МК достаточно простой программы – PICkit2 Programmer. Рекомендую.
После установки программы PICkit2 Programmer подключаем к компьютеру собранный USB-программатор. При этом засветится зелёный светодиод («питание»), а операционная система опознает устройство как «PICkit2 Microcontroller Programmer» и установит драйвера.
Запускаем программу PICkit2 Programmer. В окне программы должна отобразиться надпись.
Если программатор не подключен, то в окне программы отобразится страшная надпись и краткие инструкции «Что делать?» на английском.
Если же программатор подключить к компьютеру с установленным МК, то программа при запуске определить его и сообщит нам об этом в окне PICkit2 Programmer.
Поздравляю! Первый шаг сделан. А о том, как пользоваться программой PICkit2 Programmer, я рассказал в отдельной статье. Следующий шаг.
Необходимые файлы:
Главная » Микроконтроллеры » Текущая страница
Также Вам будет интересно узнать: