PIC18 | MCU Space

Архив

Публикации с меткой ‘PIC18’

Watchdog Sleep

2 октября 2014

wdt_p

Порой требуется запускать МК на очень короткое время, производить какие либо действия(измерение температуры и т.п.) и снова засыпать для экономии заряда батареи, для этих целей удобно использовать Watchdog. В МК серии PIC18F все довольно просто.  Нужно лишь правильно указать нужное время сна в регистре предделителя таймера Watchdog . В даташите написано следующее:

Для PIC18F2420/2520/4420/4520 устройств, WDT тактируется от внутренней RC. Номинальный период WDT составляет 4 мс и имеет такую ​​же стабильность, как INTRC генератор.  Сон  WDT может быть от 4 мс до 131.072 сек (2.18 минуты).  Регистр WDTPS может принимать значение от 1 до 32768WDT и предделитель очищаются при любом из следующих событий: выполнение команды SLEEP или CLRWDT,  IRCF бит (OSCCON <6:4>) изменен или произошел сбой тактирования.

Т.е. при предделителе равном 256, мы имеем 0,004 х 256 = 1,024 секунды сна.

В данном примере зажигаем светодиод на 50 мс каждую секунду:

Отсчет времени , , ,

Частотомер

64_0Частотомер, а так же цифровая шкала являются довольно востребованными устройствами среди радиолюбителей. В данной статье постараюсь кратко изложить принцип измерения частоты с использованием двух таймеров. Существует два метода — измерение длительности периода и измерение количества периодов за определенный промежуток времени. Я расскажу про второй вариант. Одним таймером будем отсчитывать промежутки времени, а вторым — считать импульсы.

 

freq_metr

Читать далее…

Измерения , , ,

Timer1

4 апреля 2014

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

timer1_prot

 Пример работы с данным таймером:

Читать далее…

Отсчет времени , , ,

Кнопка и светодиод

4 апреля 2014

buttonЗабыл написать о самых начальных знаниях — кнопка и светодиод. Все довольно просто для начинающих программистов. Преднамеренно усложнил немного код — что бы в данном примере почерпнули немного больше. А именно — анти дребезг.

button_prot

  Читать далее…

Управление , , ,

Внутренняя EEPROM

4 апреля 2014

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

in_eeprom

 Приступим:

Читать далее…

Память , , ,

PWM(ШИМ)

11 марта 2014

SHIMШИМ — одно из замечательных изобретений человека, наверняка каждый в быту видел плавное управление яркостью лампы накаливания, оборотами электродвигателя и т.п. В настоящее время ШИМ присутствует практически в каждой умной вещи, примером даже может стать зарядное устройство для телефона — в котором ШИМ чаще всего работает на частоте 30-150 кГц. На ранних порах изучения МК я всячески избегал аппаратного ШИМ в МК, и извращался при помощи прерываний и таймеров, но потом всё таки уловил его «сладкий вкус». Самой сложной задачей — является конфигурирование ШИМ, а именно расчет и установка периода.  В данном примере буду использовать контроллер PIC18F2520, у которого CCP1 и CCP2  работают в связке с Timer2.

pwm_prot

 

Пришло время расставить все точки над «И», начнем:  Читать далее…

Управление , , , , ,

u-blox NEO-6M GPS

10 февраля 2014

gps_iconСегодня настало время достать из загашника плату GY-GPS6MV2 с модулем u-blox NEO-6M на борту. Покупал у китайского товарища на Ebay. Прелесть данной платы заключается в наличии  на ней памяти EEPROM — для сохранения настроек, батарейки — для быстрого старта за счет RTC и LDO — для подключения к 5 В.

Ublox_NEO_6M

 

Китайцы на плате вывели только 1 интерфейс — UART, но сам модуль имеет так же USB, SPI, DDC(совместимый с I2C).  «Плюется» по UART протоколом NMEA. Скорость подключения по умолчанию по UART составляет 9600 бод. Читать далее…

Навигация , , ,

Timer0

7 февраля 2014

Timer0При изучении МК обязательно следует обратить внимание на таймеры, т.к во многих проектах требуется отсчитывать точное время или вести счет внешних импульсов. Для расчета всех регистров данного таймера удобно использовать программу PIC Timer Calculator о которой я рассказывал ранее. Все довольно просто: выбирается частота,  нужный период  и программа рассчитывает значения регистров таймера.

Timer0_prot

Рассмотрим принцип работы с Timer0:

Читать далее…

Отсчет времени , , ,

HT1611

6 февраля 2014

HT1611Дисплей WM-1611 на контроллере HT1611 достаточно распространен среди радиолюбителей. Довольно прост в управлении и довольно часто его можно встретить в АОНах или простой офисной технике.  Имеет последовательный вход данных, в свою очередь данным модулем можно управлять всего по двум проводам — подавая тактовый сигнал и отправляя данные по второму проводу. Не забудь посадить вывод HK на землю, и так как модуль 1.5 вольтовый потребуется 3 одинаковых делителя — 10K + 4.7K — для питания, линии данных и линии тактирования. 

Ht1611_prot

 

Код моей библиотеки отлажен не только в Proteus’e, но и в железе как  и остальные примеры кода.

Читать далее…

Индикация , , , , ,

DS1307

2 февраля 2014

remote_watchОблазив весь интернет толком не нашел нормальных исходников по работе с RTC DS1307 на PIC18F2520 в MPLAB X HI-TECH. Пришлось самому изобретать из того что было в голове и под рукой. О DS1307 довольно хорошо написано в даташите, думаю многие наслышаны о них — поэтому сразу приступим к делу.

 

Распиновка

ds1307_pins

X1, X2 – выводы для подключения кварцевого резонатора с частотой 32.768 кГц
VBAT – вывод для подключения 3-х вольтовой батареи резервного питания
SDA – линия данных шины i2c
SCL – линия тактовых импульсов шины i2c
SQW/OUT – телеметрический выход

ds1307

 

Рассмотрим код библиотеки:

Читать далее…

Отсчет времени , ,