MCC PIC24 – модуль OUTPUT COMPARE – режиме ШИМ

Во многих системах управления, для формирования управляющих сигналов требуется модуль ШИМ, он позволяет не только формировать импульсы заданной длительности, но и с применением обычного RC фильтра строить простые ЦАП. MCC -позволяет быстро и легко настроить модули OC в PIC24 для работы с ШИМ. Структурная схема модуля в режиме ШИМ: Процедура настройки модуля для работы в …
Читать далее MCC PIC24 – модуль OUTPUT COMPARE – режиме ШИМ

12-BIT A/D CONVERTER WITH THRESHOLD DETECT на примере PIC24FJ128GA204

Введение. 12-битный модуль A/D Converter является усовершенствованной версией 10-битного модуля, предлагаемого на некоторых устройствах PIC24. Оба модуля являются преобразователями, в своих ядрах, с последовательным приближением (SAR), в окружении ряда аппаратных функций для гибкой конфигурации. Эта версия модуля расширяет функциональность, обеспечивая 12-битное разрешение, более широкий диапазон параметров автоматической выборки, более тесную интеграцию с другими аналоговыми модулями, …
Читать далее 12-BIT A/D CONVERTER WITH THRESHOLD DETECT на примере PIC24FJ128GA204

HVLD модуль на примере PIC24FJ128GA204

HVLD модуль представляет собой простое устройство, для контроля напряжения питания микроконтроллера или внешнего напряжения (через делитель). Его задача при “выходе” напряжения за заданные пределы сформировать сообщение микроконтроллеру, что необходимо выполнить соответствующие действия. Метки:PIC24, PIC24FJ128GA204

АЦП ADS1230 и PIC24FJ64GA004


Cat_ADS1230_05АЦП ADS1230 – это 20 битный АЦП со скоростью измерения 10 или 80 раз в секунду. При подаче питания АЦП постоянно выполняет измерения. Данные можно получить с него по SPI шине. Максимальная тактовая частота шины до 1 мГц. Каждое измерение выполненное АЦП инициализируется самим АЦП по шине данных положительным импульсом. Чтение микроконтроллер должен начинать по получению отрицательного фронта.

Cat_ADS1230_02

Данные передаются старшим битом в перед для чтения 20 бит необходимо 3 байта. Данные выровнены влево.

Cat_ADS1230_03

Для чтения данных необходимо настроить SPI по отрицательному фронту синхроимпульсов.

Управляя количеством синхроимпульсов можно управлять функциями АЦП, одна из них это калибровка АЦП.

Калибровки смещения

Калибровка смещения может быть начата в любое время для компенсации в ADS1230 погрешности смещения. Чтобы начать калибровку смещения, необходимо по крайней мере, два дополнительных SCLKs после получения 20 бит данных. Данные мы получаем чтением 24 бита. Если продолжить формирование SCLK, то задний фронт 26-го SCLK начинается цикл калибровки. Дополнительные импульсы SCLK могут быть отправлены после 26 SCLK, однако, активность на шине SCLK должны быть сведены к минимуму, во время калибровки смещения, для достижения наилучших результатов. В течение выполнения функции калибровки, аналоговые входные контакты отсоединены от входов АЦП и соответствующий сигнал подается внутри, чтобы выполнить калибровку. Когда калибровка завершена, DRDY/DOUT переходит в низкий уровень, что указывает, что новые данные готовы. Первое преобразование после калибровки содержит достоверные данные.

Cat_ADS1230_04

Стандартная схема подключения АЦП к мосту датчика для измерения веса.

Cat_ADS1230_01

Вариант подключения АЦП к PIC24FJ64GA004.

Подключение будет выполнено к SPI2

Сама обработка данных и синхронизация выполняется через прерывания по входу через которые на SPI2 поступают данные. Настройка прерывание:

Первые две строчки это если есть необходимость в управлении подачей питания на измерительный мост и управления режимом “слип” АЦП. Следующие три строки это настройка режима прерывания по входу через который АЦП получает данные.

Получение данных происходит через функцию прерывания:

Флаг Bit.calADC – предназначен для активирования режима калибровки. Данные загружаются в буфер ADCbufer[] размер которого может быть ограничен переменной filtrADC.



Это может быть интересно


  • Цифровой спидометр для автомобиляЦифровой спидометр для автомобиля
     Универсальность печатной платы ch-c0030pcb позволяет создавать на её основе разнообразные устройства. Одним из таких устройств является электронный спидометр для автомобиля, в котором можно задать два компаратора скорости, например,  для города и …
  • MPLAB® Code Configurator and EncoderMPLAB® Code Configurator and Encoder
    Еще раз про энкодер… Для некоторых приложений очень удобно и экономически выгодно, для настройки и управления использовать энкодер. Такие энкодеры имеют строенную тактовую кнопку которую можно применить для выбора режимов работы …
  • Проект с использованием MCC часть 12-2Проект с использованием MCC часть 12-2
    Настало время для изучения шины I2C. Изучать будем на примере работы с индикатором RET012864E. Что изменили со старой схемы: В прошлой теме я затупил и не добавил подтягивающие резисторы которые необходимы …
  • Мониторинг температурыМониторинг температуры
    Настоящий проект создан как обучающий с применением библиотек ds18b20 и LCDHD44780 и компилятора Microchip MPLAB XC8 C Compiler V1.12. Если необходимо иметь информацию по состоянию температуры в помещении или в здании, с количеством до 6 точек (16), то вы сможете …
  • Гаджеты для домашней автоматики – Датчик движенияГаджеты для домашней автоматики – Датчик движения
    Управление светодиодным освещением – Датчик движения. Данный гаджет предназначен для управления освещением рабочих столов (кухонных столов), освещение прихожих, освещение зеркал в прихожих, автоматическое включение света в коридорах. Датчик позволяет определить наличие …
  • Защита датчиков температуры DS18B20 от статического электричестваЗащита датчиков температуры DS18B20 от статического электричества
    Статья перепечатана с сайта http://svetomuzyka.narod.ru При удалении датчика на большие расстояния возникает опасность наведения импульсов высокого напряжения на кабель, который соединяет датчик с контролером. Если не принимать меры защиты, то наведенное …
  • Acquaintance with audio-bluetooth modules F-6888 (BK3254).Acquaintance with audio-bluetooth modules F-6888 (BK3254).
    Для проектов появилось необходимость познакомиться с недорогими модулями китайского производства, которые можно приобрести у нас в Украине и у китацев, на алиэкспрессе. Так как меня интересует не просто, как в …
  • LED модуль P10 (1R) V706ALED модуль P10 (1R) V706A
    Это еще одно чудо от китайского брата. Это монохромные матрицы, называются они P10 (1R) V706A, ну типа  R-красные, но не верьте паяют светики и зеленые и синие, в общем любые какие …
  • Гаджеты для домашней автоматики – Датчик приближенияГаджеты для домашней автоматики – Датчик приближения
    Управление светодиодным освещением – Датчик приближения. Данный гаджет предназначен для управления внутренним освещением мебели. Датчик позволяет определить закрытие или открытие дверцы или ящика и при этом включать или выключать освещение. …
  • ESP8266 применение в проектахESP8266 применение в проектах
    (Актуально только для версий прошивки 1.хх) ESP8266 показала себя как надежное и безотказное устройство для обмена данными с применением WIFI. Я использую ESP8266 исключительно через UART, с применением AT команд. Все …


Визуализация данных


Для отладки часто необходимо на дисплей вывести данные не только в десятичном виде, но и шестнадцатеричном или двоичном виде.

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

Преобразование 16 бит в 4 HEX – шестнадцатеричный вид


Вывод на дисплей двоичных 16 битных чисел – двоичный вид – 16 BIN.


Вывод в десятичном виде – 5 DEC


Многокнопочная клавиатура


Самый недорогой и простой вариант ввода данных в устройство на микроконтроллерах, это считывание состояния тактовых кнопок. Для подключения к порту микроконтроллера достаточно одного резистора. А если порт позволяет подключать встроенные подтягивающие резисторы, то подключение имеет элементарно простой вид:

catcatcat_tact_01.png

Самый эффективный вариант опроса кнопок и формирования управляющих флагов, это когда обработка выполняется через прерывания. Для семейства PIC24 (MPLAB® XC16) это легко реализовать через прерывания по изменению состояния на входе порта B.

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

Первое что необходимо это для себя определить, какие флаги состояния нам необходимо получит при выполнении события по нажатию тактовой кнопки. При нажатии на кнопку PB1 – должен установиться флаг MINUS, для  PB2 – PLUS, для PB3 – FUNC. Дополнительно опишем флаги предыдущего состояния кнопок, они нам понадобиться, что-бы программа могла формировать только типа один импульс при нажатии кнопки, а не последовательность.

Следующее – выполним настройку портов, выполнить настройку выводов порта – это делается при инициализации в начале программы.

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

Из программы прерывания мы получаем флаги состояния кнопок, эти флаги легко обработать в основном цикле программы например так:

Т.е. как видно, все очень просто!



Это может быть интересно


  • Moving average – скользящее среднееMoving average – скользящее среднее
    Скользящая средняя, скользящее среднее (англ. moving average, MA) — общее название для семейства функций, значения которых в каждой точке определения равны среднему значению исходной функции за предыдущий период. Скользящие средние обычно используются с данными временных рядов для сглаживания краткосрочных колебаний …
  • PIC32MZ – прерывания (заметки)PIC32MZ – прерывания (заметки)
    Виды формирования запоминая контекста при входе в прерывания. Компилятор представляет три варианта AUTO – когда запоминания места возврата из подпрограммы возложено на программу, т.е все создается программно. Этот метод является …
  • Акриловый корпус для платы ch-4000Акриловый корпус для платы ch-4000
    Плата ch-4000 подходит для монтажа в корпуса на дин рейку, но для домашней автоматики необходимо что-то другое, поэтому был разработан корпус из акрила который позволит создавать настольные и настенные устройства. Корпус состоит из …
  • Контроллер управления светодиодным освещением с дистанционным управлениемКонтроллер управления светодиодным освещением с дистанционным управлением
    Все активнее светодиоды входят в нашу жизнь. Всё эффективнее становится светодиодное освещение. Всё ниже опускаются цены. Всё больше появляется возможностей получения сочных цветов, простоты в управлении. Всё чаще можно увидеть …
  • Мультизоновый индикатор-терморегулятор ch-c3010Мультизоновый индикатор-терморегулятор ch-c3010
    Часто возникает необходимость получить информацию по температуре с множества точек контроля. Вам необходимо знать температуру в комнате, в коридоре,  температуру на улице, а в погребе (или на балконе) не только …
  • УКВ – радиоприем, часть 1УКВ – радиоприем, часть 1
    Музыкальная тема к статье, слушаем: Первый мой радиоприемник, выглядел так. Использовал исключительно в школе на уроках, держась за одно ухо и преданно смотря на училку и сладко улыбаясь. Проблема была …
  • LCD драйвер – UC1601sLCD драйвер – UC1601s
    http://svetomuzyka.narod.ru/project/UC1601s.html Читайте обновление на http://catcatcat.d-lan.dp.ua/?page_id=178 В данный момент можно приобрести в ООО “Гамма” несколько типов индикаторов на драйвере UC1601s. RDX0048-GC, RDX0077-GS, RDX0154-GC и RDX0120-GC выполнены по технологии COG. Метки:UC1601s
  • Датчик приближения от Румена ЖелеваДатчик приближения от Румена Желева
    Проект на Болгарском языке. Автор Румен Желев. Болгария. Проект,  датчик приближения в котором устранены все недостатки влияния засветки посторонними источниками. Применен совершенно оригинальный принцип контроля ИК излучения. Основната идея на …
  • Проект с использованием MCC часть 09Проект с использованием MCC часть 09
      Эта часть будет посвящена созданию практического проекта управления освещение. Тех задание: Два выхода управления ШИМ – светодиодным освещением. Две кнопки управления, каждая кнопка управляет, своим каналом, логика самая простая, нажимаем …
  • Мониторинг температурыМониторинг температуры
    Настоящий проект создан как обучающий с применением библиотек ds18b20 и LCDHD44780 и компилятора Microchip MPLAB XC8 C Compiler V1.12. Если необходимо иметь информацию по состоянию температуры в помещении или в здании, с количеством до 6 точек (16), то вы сможете …



Визуализация данных


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

Данные полученные при измерениях должны быть помещены в буфер CaptBuf[N] где N – размер буфера. предварительно надо указать размер дисплея для вывода данных и координаты нижнего левого угла расположения дисплея. Данные в буфере должны иметь формат signed int (16 бит -32768 … 32767 со знаком).

При вызове функции она извлекает количество данных (равных размеру дисплея dispoX) и преобразовывает их (если это необходимо) в одно полярное, а затем к диапазону 0-31, по высоте дисплея dispoY (в этом месте нет оптимизации, для других размеров придется подбирать значения деления и вводить постоянную смешения нуля). Преобразованные данные помещаем в массив BflyBuf[].

После это используя функции построение точки и линии на дисплее строим график из обработанных данных помещенных в массив BflyBuf[].


Пример работы функции для реализации визуализации аудио-данных в реальном времени.

 


Полный текст функции.



Это может быть интересно


  • HVLD модуль на примере PIC24FJ128GA204HVLD модуль на примере PIC24FJ128GA204
    HVLD модуль представляет собой простое устройство, для контроля напряжения питания микроконтроллера или внешнего напряжения (через делитель). Его задача при “выходе” напряжения за заданные пределы сформировать сообщение микроконтроллеру, что необходимо выполнить …
  • MPLAB® Code ConfiguratorMPLAB® Code Configurator
    MPLAB ® Code конфигуратор (MCC) является свободно распространяемым плагином, это графическая среда программирования, которая генерирует бесшовный, легкий для понимания кода на Cи, чтобы вставить его в свой проект. Метки:MPLAB® Code …
  • WiFi ESP8266 ESP-202 (ESP-12F)WiFi ESP8266 ESP-202 (ESP-12F)
    Первое знакомство, сначала надо его купить… http://voron.ua/catalog/024404 Схема для подключения и тестирования По схеме ставим две кнопки, сброс и кнопку BT2, для перевода в режим обновления прошивки. Если надо сделать аппаратный сброс …
  • Часы-кухонный таймерЧасы-кухонный таймер
    Каждая кухня должна иметь кухонный таймер, который позволяет напоминать хозяйке когда проходить определенный промежуток времени. Например, печем пирог, варим яйца… , чтобы не смотреть постоянно на часы, установим таймер и через заданный …
  • Простой оптический сенсор приближенияПростой оптический сенсор приближения
    Оптический сенсор, назначение оптический концевик, для автоматики, бесконтактный выключатель с функцией автоматического отключения...
  • Altium Designer – создание рисунков на печатной платеAltium Designer – создание рисунков на печатной плате
      Для создание рисунков на печатной платы в Altium Designer можно использовать возможность использовать в Altium Designer сторонних скриптов. Мне возможность эта очень понравилась и я решил её расшарить для электронщиков. …
  • LED модуль P10C4V12LED модуль P10C4V12
    LED панели на обычных регистрах типа 74HC595. Они выпускаются как монохромные так двух и полно цветные, особенность, что они предназначены для текстовой информации и имеют один уровень яркости. Общую яркость панелей легко …
  • WiFi ESP8266 – AT команды связанные с функцией TCP/IP (v.1.6.1)WiFi ESP8266 – AT команды связанные с функцией TCP/IP (v.1.6.1)
    AT команды связанные с функцией TCP/IP В этом разделе описаны команды которые позволяют устанавливать соединения между серверами и клиентами в сети. Приведено описание команд и примеры их выполнения. Функции TCP/IP …
  • NeoPixel LED и PIC18NeoPixel LED и PIC18
      Еще раз об управлении светодиодами на драйвере WS2812 и ему подобных. Как известно эти светики управляются по однопроводной шине. Основная особенность, что программно можно описать передачу данных, но это …
  • LCD индикаторы на драйвере ML1001LCD индикаторы на драйвере ML1001
     ML1001 – статический LCD GOG (чип в стекле) драйвер для 40-сегментного LCD в позолоченном противоударном исполнении. На них можно каскадно строить цельные из 80 или 120 сегментов LCD индикаторы. Описание драйвера  …



 

Настройка тактового генератора PIC24H


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

Рассмотрим пример настройки частоты от внутреннего генератора с тактовой частой 7,37 мГц. Точность его настолько велика, что его можно использовать для множества приложений не требующих высокоточных временных интервалов.


Схема генератора.

Catcatcat_ch_music_color_02


Схема умножителя (PLL)

Catcatcat_ch_music_color_01

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

Пример настройки для работы контроллера PIC24HJ128GP502 от внутреннего генератора на скорости 50 Mips.

Настройка регистра конфигураций

 Настройка генератора

При этом надо указать

#define FCY 50208130UL      // определение тактовой частоты для макросов __delay_ms() и __delay_us()


Расчет тактовой частоты файл в формате Microsoft Excel 2010[wpdm_file id=228]


Часы реального времени DS1340


ds1340_Catcatcat_02

DS1340 часы реального времени от  ОПИСАНИЕ. Особенностью этой микросхемы является наличие схемы управления питанием резервного источника питания. Для резервирования питания можно использовать как обычную литиевую батарейку, так и обычный конденсатор или ионистор.

ds1340_Catcatcat_03

Особенности управления.

В 9 регистре хранится флаг OSF – это флаг аварии. Авария может возникать по нескольким причинам, сбой работы генератора от внешних помех, выключение генератора битом EOSC, снижение напряжения основного питания или напряжения резервного питания ниже нормы. Этим битом необходимо контролировать работу часов после включения питания, если этот бит установлен, то гарантированно произошел сбой времени и необходима коррекция. На практике это кусок кода может выглядеть так:

Бит OSF устанавливается аппаратно, его нужно программно сбросить (установить программно нельзя).

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

Обратите внимание, что запись (или чтение) в регистры данных 0 -6 можно выполнять последовательно в одном цикле. А для записи в системные регистры 0x07, 0x08, 0x09 надо обращаться конкретно к каждому.

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

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

Преобразование двоичного в двоично-десятичное
char bin_decbin (char data)
Преобразование двоично-десятичного в двоичное
char decbin_bin (char data)

Для записи и чтения:

Сохранение настроек календаря
void savetime (void)

Чтение времени и даты
void readtime (void)

Для работы с PIC24 можно использовать библиотеку I2C

 


Это может быть интересно


  • Простой цифровой милливольтметр постоянного токаПростой цифровой милливольтметр постоянного тока
    Простой цифровой вольтметр постоянного тока. Три диапазона измерений с автоматическим переключением 1 – 0,001 – 0,999 V, 2 – 0,01-9,99 V, 3 – 0,1-99,9. Четыре управляемых выхода с возможностью задания функции контроля и времени реакции на …
  • OLED RET012864E/REX012864JOLED RET012864E/REX012864J
    RET012864E/REX012864J ОЛЕД индикатор производитель Raystar-Optronics приобретался в http://www.microchip.ua/ к сожалению никакой информации на сайте поставщика нет. Поэтому решил работу с этой версией индикатора на драйвере SSD1305 предоставить на своем сайте. Так как есть ошибки …
  • Инфракрасный датчик движения, PIR-sensorИнфракрасный датчик движения, PIR-sensor
    Домашняя автоматика предполагает наличие датчиков движения, которые способны контролировать движения человека. Самым простым и доступным устройством позволяющие контролировать изменения ИК-излучения, это ПИР-сенсоры. На текущий момент доступны не дорогие модели D203B, D204B, D205B. Все они позволяют …
  • MCC PIC24 – модуль OUTPUT COMPARE – в режиме генератора звуковых сигналовMCC PIC24 – модуль OUTPUT COMPARE – в режиме генератора звуковых сигналов
    При проектировании простых устройств автоматики, часто необходимо иметь механизм звукового оповещения. Самый верхний уровень, это формирование голосовых сообщений, но об этом, как то по позже… В самом примитивном варианте можно …
  • Гаджеты для домашней автоматики – Датчик приближенияГаджеты для домашней автоматики – Датчик приближения
    Управление светодиодным освещением – Датчик приближения. Данный гаджет предназначен для управления внутренним освещением мебели. Датчик позволяет определить закрытие или открытие дверцы или ящика и при этом включать или выключать освещение. …
  • DS18B20 – удаленный контроль температурыDS18B20 – удаленный контроль температуры
    Плата в корпусе Датчики температуры DS18B20 Схема подключения Вывод данных на ПК Установка дополнительных резисторов Назначение выводов This jQuery slider was created with the free EasyRotator for WordPress plugin from …
  • Система AT команд версии V2.0 для ESP8266 и ESP32Система AT команд версии V2.0 для ESP8266 и ESP32
    Появление нового модуля на базе ESP32 заставило систематизировать систему AT команд, а так же систему обновления и для модулей на базе ESP8266. Начиная с версии v2.0 в ESP8266 внедряется прошивка …
  • DIXELL XWEB500D-EVO + RUT900 или как пробить NAT-серверDIXELL XWEB500D-EVO + RUT900 или как пробить NAT-сервер
    Когда необходимо под какой нибудь контроллер имеющий вэб сервер в инет, то нужен статический IP, что оказалось проблемой при работе с операторами сотовых сетей, конкретно с оператором сети “Киевстар”. Их …
  • NeoPixel LED and PIC24NeoPixel LED and PIC24
    Популярность однопроводной шины для управления светодиода типа WS2812 не ослабевает, а новые типы светодиодов в корпусах 3,5*3,5мм, 2,0*2,0мм становяться все больше привлекательными. Построение дисплеев для анимации требуют все большей производительности …
  • Цифровой спидометр для автомобиляЦифровой спидометр для автомобиля
     Универсальность печатной платы ch-c0030pcb позволяет создавать на её основе разнообразные устройства. Одним из таких устройств является электронный спидометр для автомобиля, в котором можно задать два компаратора скорости, например,  для города и …


Измерение частоты


Измерение частоты классически можно выполнить двумя способами.

Способ первый.

Необходимо за фиксированный промежуток времени подсчитать количество периодов измеряемой частоты. После этого необходимо количество импульсов разделить на время измерения. Точность измерения зависит от длительности измеряемого промежутка времени. Чем длиннее промежуток, тем точнее можно выполнить изменения.

 PIC24-08-01

 Второй способ.

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

 PIC24-08-02

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

Для измерения частоты (в нашем варианте частоты электросети), модифицируем нашу схему следующим образом.

 PIC24-08-04

Все эти измерения можно выполнить при помощи встроенного таймера. Так-как у нас таймер 1 и 2 занят формированием временных интервалом. Поэтому  будем для измерения частоты использовать сборку на таймерах TMR4 и TMR5. Для входа сигнала будем использовать Т4СК.

PIC24-08-03

Так как периферийные модули по умолчанию “никуда не подключен”, то первым делом необходимо настроить регистры конфигурации выбора периферийного модуля. Нам надо определиться к какой ножке микроконтроллера мы подключим его вход. У нас свободна 14 нога. Это функция RP5. Для подключения входа T4CK к ноге 14 на необходимо в регистра настройки входа RPINR4 загрузить значение 5.

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

Название входа Имя периферийного модуля Регистр Биты конфигурации
External Interrupt 1 INT1 RPINR0 INTR1<4:0>
External Interrupt 2 INT2 RPINR1 INTR2R<4:0>
Timer2 External Clock T2CK RPINR3 T2CKR<4:0>
Timer3 External Clock T3CK RPINR3 T3CKR<4:0>
Timer4 External Clock T4CK RPINR4 T4CKR<4:0>
Timer5 External Clock T5CK RPINR4 T5CKR<4:0>
Input Capture 1 IC1 RPINR7 IC1R<4:0>
Input Capture 2 IC2 RPINR7 IC2R<4:0>
Input Capture 3 IC3 RPINR8 IC3R<4:0>
Input Capture 4 IC4 RPINR8 IC4R<4:0>
Input Capture 5 IC5 RPINR9 IC5R<4:0>
Output Compare Fault A OCFA RPINR11 OCFAR<4:0>
Output Compare Fault B OCFB RPINR11 OCFBR<4:0>
UART1 Receive U1RX RPINR18 U1RXR<4:0>
UART1 Clear To Send U1CTS RPINR18 U1CTSR<4:0>
UART2 Receive U2RX RPINR19 U2RXR<4:0>
UART2 Clear To Send U2CTS RPINR19 U2CTSR<4:0>
SPI1 Data Input SDI1 RPINR20 SDI1R<4:0>
SPI1 Clock Input SCK1IN RPINR20 SCK1R<4:0>
SPI1 Slave Select Input SS1IN RPINR21 SS1R<4:0>
SPI2 Data Input SDI2 RPINR22 SDI2R<4:0>
SPI2 Clock Input SCK2IN RPINR22 SCK2R<4:0>
SPI2 Slave Select Input SS2IN RPINR23 SS2R<4:0>

Функции ввода

Функция Номер ножки Код для записи в регистр
RP0 4 0
RP1 5 1
RP2 6 2
RP3 7 3
RP4 11 4
RP5 14 5
RP6 15 6
RP7 16 7
RP8 17 8
RP9 18 9
RP10 21 10
RP11 22 11
RP12 23 12
RP13 24 13
RP14 25 14
RP15 26 15

Настройка входа таймера:

Конфигурирование таймеров: (будем настраивать для 32 битного режима):

Чтобы настроить Timer2/3 или Timer4/5 для 32-разрядной работы необходимо:
1. Установить T32 бит (T2CON <3> или T4CON <3> = 1).
2. Настроить предделителя для Timer2 или Timer4 битами TCKPS1: TCKPS0.
3. Настроить вход для тактовых импульсов и режимов работы с помощью TCS и TGATE бит. Если TCS установлен для внешней синхронизации, RPINRx (TxCK) должны быть настроены на доступные RPn вход.
4. Настроить период работы таймера загрузив регистр PR. PR3 (или PR5) будет содержат старшее слово, в то время как PR2 (или PR4) содержать младшие слово.
5. Если требуется прерывания, установить биты в регистрах T3IE или T5IE; использовать приоритет бит, T3IP2: T3IP0 или T5IP2: T5IP0, чтобы установить прерывание приоритет. Обратите внимание, что в то время как Timer2 или Timer4 управления таймера, прерывания появляется как Timer3 или Timer5 прерывания.
6. Установить TON бит (= 1). 

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

Регистр Управляющий бит Вывод контроллера
CNPU1 CN0PUE 12
CNPU1 CN1PUE 11
CNPU1 CN2PUE 2
CNPU1 CN2PUE 3
CNPU1 CN3PUE 4
CNPU1 CN4PUE 5
CNPU1 CN5PUE 6
CNPU1 CN6PUE 7
CNPU1 CN7PUE
CNPU1 CN8PUE
CNPU1 CN9PUE
CNPU1 CN10PUE
CNPU1 CN11PUE 26
CNPU1 CN12PUE 25
CNPU1 CN13PUE 24
CNPU1 CN14PUE 23
CNPU1 CN15PUE 22
CNPU2 CN16PUE 21
CNPU2 CN17PUE
CNPU2 CN18PUE
CNPU2 CN19PUE
CNPU2 CN20PUE
CNPU2 CN21PUE 18
CNPU2 CN22PUE 17
CNPU2 CN23PUE 16
CNPU2 CN24PUE 15
CNPU2 CN25PUE
CNPU2 CN26PUE
CNPU2 CN27PUE 14
CNPU2 CN28PUE
CNPU2 CN29PUE 10
CNPU2 CN30PUE 9

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

 Так как в нашем примере, мы используем внутренний тактовый генератор, то измерения соответственно будет менее точные если бы мы использовали кварцевую стабилизацию частоты. Для корректировки длительности, будем использовать регистр PR1.

Для измерения частоты, добавить в цикл прерывания от таймера Т1 две команды:

 т.е. таймер Т1 формирует заданный нами интервал времени, по прерыванию таймера , мы считываемым значение таймера Т4, а затем обнуляем его.

Для индикации в главном цикле программы добавим

 теперь внизу дисплея мы увидим измеряемую частоту в герцах. Если период измерения 1 секунда, то измерять будем с точностью до 1 Герца, для увеличение точности до 0,1 Герца или 0,01 герца, нам надо соответственно увеличить время измерения.

 Фото для первого варианта, когда период измерения равен 1 секунде.

 PIC24-08-05

 Но для контроля качества частоты в сети нам необходимо более высокая точность, поэтому увеличим период измерения до 10 секунд. Для это нам необходимо добавить делитель, программный, чтобы увеличить время измерения до 10 секунд.

а для красоты, индикации десятых долей, включит индикацию запятой перед младшим разрядом.

 pic24-08-0610 секунд на измерение это уже много. А если необходимо измерять частоту с точностью до 0,01 Герца, так это надо ждать 100 СЕКУНД!!!, а эффект усреднения который может за это время внести свои погрешности. Вообще сделаем вывод, для оперативного контроля частоты электросети такой метод не эффективен. Хотя при написании этого урока, наблюдая за частотой сети, она колебалась от 50,04 – 50,31 Герца (в режиме измерения 100 секунд). 

Испробуем второй метод измерения длительности периода (или импульса). Благо, что сам модуль микроконтроллера позволяет это делать.

 

продолжение следует…


Это может быть интересно


  • Защита датчиков температуры DS18B20 от статического электричестваЗащита датчиков температуры DS18B20 от статического электричества
    Статья перепечатана с сайта http://svetomuzyka.narod.ru При удалении датчика на большие расстояния возникает опасность наведения импульсов высокого напряжения на кабель, который соединяет датчик с контролером. Если не принимать меры защиты, то наведенное …
  • Проект с использованием MCC часть 12-2Проект с использованием MCC часть 12-2
    Настало время для изучения шины I2C. Изучать будем на примере работы с индикатором RET012864E. Что изменили со старой схемы: В прошлой теме я затупил и не добавил подтягивающие резисторы которые необходимы …
  • VU Meter Tower ART – part 2VU Meter Tower ART – part 2
    Проект – VU Meter Tower ART получил продолжение в своем развитии. Теперь можно заказать набор деталей из акрила для самостоятельной сборки. В проект корпуса внесено целый ряд доработок, позволяющие улучшить …
  • NeoPixel LED and PIC24NeoPixel LED and PIC24
    Популярность однопроводной шины для управления светодиода типа WS2812 не ослабевает, а новые типы светодиодов в корпусах 3,5*3,5мм, 2,0*2,0мм становяться все больше привлекательными. Построение дисплеев для анимации требуют все большей производительности …
  • Цифровой спидометр для автомобиляЦифровой спидометр для автомобиля
     Универсальность печатной платы ch-c0030pcb позволяет создавать на её основе разнообразные устройства. Одним из таких устройств является электронный спидометр для автомобиля, в котором можно задать два компаратора скорости, например,  для города и …
  • Регулятор влажности ch-3800Регулятор влажности ch-3800
      И еще один проект на плате ch-c3xxx –  универсальный регулятор влажности ch-3800. Регулятор позволяет работать как в режиме индикатора влажности, так и в режиме регулятора. Рабочий диапазон измеряемой относительной …
  • WiFi ESP8266 – AT команды связанные с функцией Wi-FiWiFi ESP8266 – AT команды связанные с функцией Wi-Fi
    AT команды связанные с функцией Wi-Fi Функции Wi-Fi подключения, запускаться из командной строки Команда Описание  1 AT+CWMODE Проверка, настройка режима работы Wi-Fi (sta/AP/sta+AP), (не рекомендуется для новых проектов). 2 AT+CWMODE_CUR Проверка, …
  • MCC PIC24 – модуль REAL-TIME CLOCK AND CALENDAR (RTCC)MCC PIC24 – модуль REAL-TIME CLOCK AND CALENDAR (RTCC)
    RTCC предоставляет пользователю часы реального времени и функция календаря (RTCC), точность “хода” может быть откалибрована. Основные особенности модуля RTCC: • Работает в режиме глубокого сна. • Возможность выбора источника синхронизации. • …
  • Мультимедийная сеть – AVC-LAN TOYOTAМультимедийная сеть – AVC-LAN TOYOTA
    AVC LAN – протокол обмена данными мультимедийных систем автомобиля. Кодирование данных. При кодировании различаться три типа данных : преамбула – её назначение, это сообщение устройствам на шине, что начинается передача данных. бит 0 …
  • Стробоскоп для автомобиляСтробоскоп для автомобиля
    Одним из популярных решений светового тюнинга автомобиля, мотоцикла или скутера стал эффект –  “полицейский стробоскоп“. На база платы ch-c0050 реализовано несколько проектов. В этой статье приводятся две версии программы. Рекомендации …


10-бит, высокоскоростной, аналого-цифровой преобразователь, часть 2


Измерение переменного напряжения, вычисление TrueRMS.

Этот урок обучения работе с АЦП будет предназначен для измерения параметров переменного тока, это актуально к нашим электросетям, где качество поставляемой электроэнергии является проблемой. За основу вычисления величины переменного напряжения возьмем информацию на сайте http://www.easycalculation.comTrueRMS переменного тока, это количество передаваемой энергии которое в идеале соответствует такой же величине постоянного тока.

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

pic24-15-600x240
 

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

Схема.

pic24-08-071

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

pic24-16-600x256

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

Для измерения нам скорости от RC генератора АЦП будет недостаточно, поэтому Первое, что сделаем переключимся на системный генератор. Нам необходимо будет определиться какое количество измерений нам необходимо сделать за один период. Первое – необходимо организовать формирования массива данных которые потом понадобятся для вычисления.

Необходимо определить, скорость преобразования. Скорость преобразования зависит от тактовой частоты. В нашем проекте тактовая 32 мГц. Это длительность 31,25 ns.   Для преобразователя необходимо 12 TAD для конвертирования 10 данных. Длительность вычисляется по формуле TAD = TCY • (ADCS<7:0>+1). Где TCY = 2 * Tosc для нашего микроконтроллера. Tosc=32 мГц.

Для буфера измерений отведем буфер 125 измерений. Для тактовой частоты 32 мГц и измеряемой 50 Гц нам необходимо установить для битов  ADCS7:ADCS0: – 63, длительность выборки SAMC4:SAMC0: 28.

Для вычислений можно использовать файл ME (подготавливается).

В функции прерывания от АЦП выполним процедуру считывания регистров буфера АЦП и загрузки в буфер данных 

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

Сам механизм вычисления:

 


Фото проекта.

На дисплей выводиться информация по минимаксам (минимальное и максимальное значение напряжения зафиксированное за время работы, а также максимальное амплитудное. Посредине внизу напряжение в сети измеренное методом TrueRMS.

pic24-08-06


Проект, среда разработки MPLAB® X v1.70, компилятор С MPLAB XC16 v1.11.

Значок

10-бит, высокоскоростной, аналого-цифровой преобразователь, часть 1 72.81 KB 1040 downloads

10-бит, высокоскоростной, аналого-цифровой преобразователь. Проект,...
Значок

10-бит, высокоскоростной, аналого-цифровой преобразователь, часть 2 99.45 KB 832 downloads

10-бит, высокоскоростной, аналого-цифровой преобразователь,...

10-бит, высокоскоростной, аналого-цифровой преобразователь, часть 1


Измерение постоянного напряжения.

Ну и  как можно обойти АЦП, тем более что он позволяет сканировать со скоростью до 500 тысяч преобразование в секунду (500 ksps).

Структурная схема

pic24-13-600x600

И так мысли в слух:

В PIC24 серии АЦП более продвинутый, более гибкая схема управления, выборки и конвертирования и получения результата. принцип работы прост усилитель (S/H) выборки/хранения может через коммутаторы подключаться к контактам контроллера настроенным как аналоговые входы. Через эти контакты он получает входное напряжения которое он запоминает для последующей оцифровки в АЦП. Управление выборкой сигнала может быть управляться как вручную, так и автоматически. Существует минимальное время выборки для того, чтобы усилитель выборки/хранения дал желаемую точность преобразования, т.е. чтобы измерительная емкость смогла полностью зарядиться от входного сигнала. Далее включается в работу АЦП и запускается цикл преобразования – это время, необходимое для преобразования напряжения формируемое усилителем выборки/хранения на его входе. Весь процесс может обеспечивается триггером управления работой АЦП, он автоматически заканчивает время выборки и начинает аналогоцифровое преобразование. Управлявшие сигналы для триггера могут быть взяты из различных аппаратных средств контроллера, или он может управляться вручную из программного обеспечения. Для АЦП требуется один такт (TAD), для преобразования каждого бита результата и плюс два дополнительных такта, или в общей сложности 12 TAD циклов для 10-разрядного преобразования. Когда время преобразования будет завершено, результат загружается в один из 16 буферов АЦП.  АЦП может формировать прерывания для программного обеспечения. Сумма времени выборки и АЦП преобразования, дает общее время преобразования.
Один из режимов преобразования – есть режим непрерывного преобразования, когда триггер автоматического преобразования, использует счетчик и генератор АЦП для формирование времени между преобразованиями. Режим Auto-Sample и триггер автоматического преобразования могут быть использованы совместно, чтобы обеспечить циклическое преобразование без вмешательства программы.

 АЦП в общей сложности использует 22 регистра.

Регистры управления
Модуль имеет шесть регистров управления и состояния:
• AD1CON1:  – регистра управления 1
• AD1CON2:  – регистра управления 2
• AD1CON3:  – регистра управления 3
• AD1CHS:     – выбор входного канала
• AD1PCFG:  – конфигурация порта
• AD1CSSL:  – регистра выбора входов измерения для режима последовательного сканирования.
AD1CON1, AD1CON2 и AD1CON3 регистры контролировать общую работу модуля АЦП. Это подразумевает подключение модуля,
Настройка времени преобразования и источники опорного напряжения, выбрав отбора проб и Преобразование триггеров и ручного управления образца / преобразование последовательности.
AD1CHS регистр (регистр 17-4) выбирает входных каналов для подключения к S/H усилитель. Она также позволяет выбор входных мультиплексоров и выбор источника опорного напряжения для дифференциального режима работы.
AD1PCFG регистр (регистр 17-5) настраивает порты ввода / вывода аналоговых входов или цифровых входов / выходов.
AD1CSSL регистр (регистр 17-6) выбирает каналы должны быть включены для последовательного сканирования.

АЦП Буферы результата измерений.

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

Для изучения работы АЦП необходимо будет немного изменить схему.

pic24-14

Светодиод перенесем на RB4, а вход RA0, будем использовать для измерения напряжения. Для этого подключим потенциометр на 20 кОм к шинам питания контроллера, а сигнал с “движка” подадим на RA0.

Для настройки АЦП добавим в нашу программу следующие строки.

Эти строки позволяют настроить полностью АЦП и входы микроконтроллера, в этом примере мы задаем тактирование от внутреннего RC-генератора АЦП. В основном необходимые пояснения сделаны в комментариях.

Для преобразования числа в символы, будем использовать следующую функцию:

void bin_dec(int data,char mode,char vyv,char raz);

где, data число в диапазоне от -9999 до +32768
mode – положение десятичной точки 0- нет точки, 1-4 после 2-4 знакоместа
vyv – не печатать пустые знакоместа 0-печатать все 5 знакомест, 1-не печатать
raz – размер выводимых цифр 0/1-нормальные, 2-7 увеличение в соответствующее раз

Логика преобразования числа в символ простая, необходимо математически выделить число и преобразовать его в код

А теперь сам процесс измерения. Изменение будем проводить когда контроллер спит, чтобы уменьшить цифровой шум, это как один из вариантов работы, хотя можно было сделать вариант усреднение результатов измерения, благо 16 регистров имеется.

Первое включит прерывание от АЦП

Создадим функцию прерывания, только сброс бита прерывания

И сам процесс измерения, один из вариантов

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

 


Видео работы программы.

  


Проект, среда разработки MPLAB® X v1.70, компилятор С MPLAB XC16 v1.11.


I2C™ – INTER-INTEGRATED CIRCUIT и PIC24


Для работы с периферийными устройствам I2C™ просто незаменим. Дисплеи, память, драйверы и много другое…

В нашем примере мы будем подключать дисплей RDX077 (на драйвере UC1601S) к нашей макетной плате. Почему RDX077 – пока на настоящий момент, это самый доступный индикатор (для меня) с приемлемой ценой. Схема подключения:

pic24-10

RDX0077 – графический индикатора с драйвером UC1601s. В этой главе научимся выводить информацию на индикатор. Описывать сам драйвер UC1601s здесь не будем, будем создавать библиотеку для работы с индикатором.

Первое что необходимо выбрать это модуль I2C, у нас подключен индикатор ко второму модулю. Индикатор может работать на скорости до 400 кГц, поэтому необходимо разобраться как настроить необходимую скорость в модуле. За скорость отвечает регистр I2C2BRG из описания мы можем видеть формулы для расчета скорости и таблица с приведенными расчетами.

pic24-11

 Для стандартных тактовых частот приведены расчетные данные:

Заданная частота шины Fscl

Fcy=Fosc/2 Значение в I2CxBRG Реальная частота Fscl
(Десятичное) (Hex)

100 kHz

16 MHz

157

9D

100 kHz

100 kHz

8 MHz

78

4E

100 kHz

100 kHz

4 MHz

39

27

99 kHz

400 kHz

16 MHz

37

25

404 kHz

400 kHz

8 MHz

18

12

404 kHz

400 kHz

4 MHz

9

9

385 kHz

400 kHz

2 MHz

4

4

385 kHz

1 MHz

16 MHz

13

D

1.026 MHz

1 MHz

8 MHz

6

6

1.026 MHz

1 MHz

4 MHz

3

3

0.909 MHz

Будем использовать максимальную возможную скорость шины 400 кГц.

Во всех новых моделях микроконтроллеров в основном по два модуля I2C. В нашем варианте подключение производиться к модулю 2. Для работы с  индикатором нам понадобиться написать 7 функций по работе с интерфейсом. Некоторое отличие от стандартных функций будет состоять в том, что они будут ориентированы на модуль 2, а также формирование состояния старт будет объедено с указанием для драйвера индикатора записью адреса и  инициализацию типа передачи и команды запись или чтение.

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

Команда начальной инициализации модуля

void I2C_Open (unsigned int FCLOCK);// инициализация, значение частоты шины в килогерцах (например, 100,150,200….400)
настраивает работу модуля.

Команда стоп

void i2c_stop (void); // формирование стоп

Две команды старт

unsigned char i2c_start (unsigned char adres, unsigned char C_D, unsigned char R_W); // адрес устройства и управление младшими битами
unsigned char i2c_restart (unsigned char adres, unsigned char C_D, unsigned char R_W);

Команда записи байта данных

unsigned char i2c_write (unsigned char data); //запись байта

И две команды чтения

unsigned char i2c_read_ack (void); //чтение с подтверждением
unsigned char i2c_read_noack (void); //чтение без подтверждения

Мое мнение такое чем их меньше тем проще. Для работы с индикатором необходимо сделать библиотеку которая бы упрощала вывод на дисплей символьной информации и графики. О создании библиотеки говорить не буду это не интересно скачать её можно из раздела библиотеки. В этой главе мы ограничимся примером для демонстрации вывода на индикатор текста и графических примитивов.

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

Теперь все уже понятно и первая программа для работы с графическим LCD на драйвере на драйвере UC1601S будет выглядеть так:

Думаю для начала этого более чем достаточно.


Результат работы программы:

pic24-12

Теперь необходимо скачать проект и поэкспериментировавший с выводом сообщений и графики.


Описание библиотеки в разделе Библиотеки.  Демонстрационное видео функций библиотеки.

 


Файлы для загрузки

Демопроект с полным текстом + библиотека (графические примитивы и символы).[wpdm_file id=66 template=”link-template-calltoaction3.php”]



Это может быть интересно


  • Проект с использованием MCC часть 05Проект с использованием MCC часть 05
    Эту часть назовем так как избавься от delay, там где а это реально не надо. Для это нам потребуется научиться использовать прерывания и работать с таймерами. Что такое таймер? Это …
  • WiFi ESP8266 ESP-202 (ESP-12F)WiFi ESP8266 ESP-202 (ESP-12F)
    Первое знакомство, сначала надо его купить… http://voron.ua/catalog/024404 Схема для подключения и тестирования По схеме ставим две кнопки, сброс и кнопку BT2, для перевода в режим обновления прошивки. Если надо сделать аппаратный сброс …
  • Индикатор температурыИндикатор температуры
    Проект для начинающих, на демо плате BB-2T3D-01. Простой индикатор температуры. Проект никак не задумывался, просто на витрину магазин Ворон нужна была демонстрационная модель на макетной плате, чего нибудь работающего. Остановились на индикаторе температуре. Нужен был какой нибудь выводной …
  • ch-светомузыка от теории до реализацииch-светомузыка от теории до реализации
    Сразу оговоримся технология или теория ch-светомузыки, это постоянно развивающийся процесс и то что будет сказано сегодня завтра может быть опровергнуто и считаться ошибочным. Назовем само решение проблемы автоматического преобразования или …
  • ch-4050 – дифференциальный терморегуляторch-4050 – дифференциальный терморегулятор
    ch-4050 – это не новая модель, это расширенная версия универсального терморегулятора ch-4000. Различия коснулись в появлении новой функции дифференциального регулирования. Это вид регулирования по разности температур измеренного двумя датчиками. Теперь …
  • MPLAB X IDE – управление проектамиMPLAB X IDE – управление проектами
    Среда  MPLAB X IDE позволяет оперативно работать с несколькими проектами, например, если у вас в работе несколько проектов: Для того чтобы переключиться достаточно выбрать другой проект: Для выбора проекта существует …
  • Altium Designer – создание рисунков на печатной платеAltium Designer – создание рисунков на печатной плате
      Для создание рисунков на печатной платы в Altium Designer можно использовать возможность использовать в Altium Designer сторонних скриптов. Мне возможность эта очень понравилась и я решил её расшарить для электронщиков. …
  • PIC32MZ – Core Timer (библиотека)PIC32MZ – Core Timer (библиотека)
    Переработанные файлы от Microchip, библиотека для работы с Core Timer. Метки:PIC32MZ
  • Бегущие огни на WS2812BБегущие огни на WS2812B
    В настоящее время большой популярностью стали пользоваться светодиоды со встроенным драйвером WS2812B. Текущий проект предназначен показать возможность использования и управления этими светодиодами. Это и проект и исследование по работе с …
  • ESP8266  процедура получение данных даты и времени от серверов точного времени.ESP8266 процедура получение данных даты и времени от серверов точного времени.
    Эта функция доступна уже в версии 1.6.1. Для многих приложений, необходимо часы реального времени,  если в вашем проекте есть модуль WiFI ESP8266, то легко можно сделать следующим образом. Процедура описывает …


Output Compare – формирование импульсов


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

А пока надо научиться настраивать PIC-контроллер, для аппаратного формирования на выходе заданной частоты импульсов.

Для этого будем использовать модуль Output Compare. Он имеет возможность сравнивать значение выбранное времени (подразумевается значение таймер) со значение одного или двух регистров сравнения (в зависимости от выбранного режима). Кроме того, он имеет возможность формировать на выходе единичный импульс, или формировать непрерывную последовательность выходных импульсов, по заданным событиям. Как и большинство PICmicro ® периферийных устройств, он также имеет способность генерировать прерывания в момент события сравнения.

В нашем используемом для обучении контроллере (PIC24FJ64GA002) доступны 5 таких устройств. Все выходные каналы сравнения функционально идентичны. Обозначение они носят OC1 – OC5. Разработчики PIC24 подошли более глубоко к конфигурированию периферии, это связано необходимостью создания  возможности для подключения периферийного устройства к необходимым выводам микроконтроллера, таким подключением занимаются регистры настройки подключения периферийных устройств RPINR0 – RPINR23. В описании можно увидеть обозначение RP0, RP1… и так далее в зависимости от количества выводов микроконтроллера. Это выводы к которым могут быть подключены входы или выходы цифровых периферийных модулей. Естественно более конкретно, что может быть подключено, а что нет надо светиться с описанием на конкретный микроконтроллер. Функция подключения настолько гибки, что могут подключать один выход периферийного устройства к нескольким ножкам микроконтроллера или один вход, для разных периферийных устройств.

Схема, задача – на 26 ножке микроконтроллера получить меандр с заданной частотой.

pic24-09

В нашем случае мы конфигурируем выход OC1 на (RB15) 26 ножку микроконтроллера. Это вывод RP6. Наш выход Output Compare 1 (OC1) соответствует функциональному номеру 18 (все эти данные надо смотреть в описании). Прямая запись в регистры конфигурации настройки периферийных устройств невозможна, если установлен бит IOLOCK в регистре OSCCON (его функция еще связана с регистром конфигурации), это сделано для блокировки случайной их перенастройки в процессе работы. Если в регистре конфигурации предусмотрено возможность снятия этого бита после установки, то необходимо будет выполнить последовательность разблокирования.  Если попробовать выполнить запись в регистр конфигурации периферийных устройств с установленным битом IOLOCK, то такая запись будет выполнена, но значение регистров не измениться.

Сначала по порядку, за подключение к ножке 26 отвечает регистр RPOR7 в нем в старшем байте размещены биты управления функций RP15 (см. таблица 1-2)

Таблица 1-2.

Функция Номер ножки Регистр который отвечает за настройку выходных сигналов для указанной ножки контроллера Регистр выхода
RP0 4 RPOR0 RPOR0bits.RP0R
RP1 5 RPOR0 RPOR0bits.RP1R
RP2 6 RPOR1 RPOR1bits.RP2R
RP3 7 RPOR1 RPOR1bits.RP3R
RP4 11 RPOR2 RPOR2bits.RP4R
RP5 14 RPOR2 RPOR2bits.RP5R
RP6 15 RPOR3 RPOR3bits.RP6R
RP7 16 RPOR3 RPOR3bits.RP7R
RP8 17 RPOR4 RPOR4bits.RP8R
RP9 18 RPOR4 RPOR4bits.RP9R
RP10 21 RPOR5 RPOR5bits.RP10R
RP11 22 RPOR5 RPOR5bits.RP11R
RP12 23 RPOR6 RPOR6bits.RP12R
RP13 24 RPOR6 RPOR6bits.RP13R
RP14 25 RPOR7 RPOR7bits.RP14R
RP15 26 RPOR7 RPOR7bits.RP15R

Для настройки выхода Output Compare 1, необходимо записать в соответствующий регистр выхода, который связан с нужной нам ножкой контроллера значение 18 (см. таблицу 10-3).

Таблица 10-3.

Функция Номер функции Название выхода
NULL 0 NULL
C1OUT 1 Comparator 1 Output
C2OUT 2 Comparator 2 Output
U1TX 3 UART1 Transmit
U1RTS 4 UART1 Request To Send
U2TX 5 UART2 Transmit
U2RTS 6 UART2 Request To Send
SDO1 7 SPI1 Data Output
SCK1OUT 8 SPI1 Clock Output
SS1OUT 9 SPI1 Slave Select Output
SDO2 10 SPI2 Data Output
SCK2OUT 11 SPI2 Clock Output
SS2OUT 12 SPI2 Slave Select Output
OC1 18 Output Compare 1
OC2 19 Output Compare 2
OC3 20 Output Compare 3
OC4 21 Output Compare 4
OC5 22 Output Compare 5

Тетерь если мы не устанавливали бит IOLOCK в регистре OSCCON, то настроить выход нам необходимо будет выполнить команду:

Если мы хотим это сделать когда бит IOLOCK уже установлен, и если такая возможность разрешена, сброс бита IOLOCK после установки в регистре конфигурации. При инициализации регистра конфигурации, должна быть сделана такая запись:

То с начала надо сбросить бит IOLOCK, для чего надо выполнить последовательность разблокирования:

а затем выполнить команду

И если в дальнейшем надо заблокировать изменение настроек, то надо установить бит IOLOCK. Для этого выполните:

После того когда подключили наш модуль к ножке контроллера настроим его работу.

Модуль работает только в паре с таймером, который задает все временные параметры. Таймер, с которым может работать наш модуль, может быть Timer2 или Timer3. Один из них может быть выбран битом OCTSEL в регистре (OCxCON <3>).

Для настройки модуля Output Compare 1 предназначены три регистра:

  1. OC1CON – регистр управления.
  2. OC1R – регистр сравнения 1.
  3. OC1RS – регистр сравнения 2.

Регистр управление OC1CON – описание битов:

bit 13 – OCSIDL: отвечает за работу модуля в Idle режиме, если он установлен (1) модуль будет выключен в режиме ожидания, если сброшен (0), то будут продолжать работать в режиме ожидания.

bit 4 – OCFLT: бит состояния режима ШИМ (bit 2-0=111), актуален если модуль работает в режиме ШИМ. Если установлен (1) – произошла неисправность, если (0) – нет неисправности.

bit 3 – OCTSEL: бит выбора таймера для совместной работы, 1 = Timer3, 0 = Timer2.

bit 2-0 – выбор режима работы модуля.

111 = режим PWM, контроль неисправности включен
110 = режим PWM, контроль неисправности выключен
101 = Инициализация выходного контакта модуля низким уровнем, генерация непрерывных импульсов.
100 = Инициализация выходного контакта модуля низким уровнем, генерация одиночного импульса.
011 = Режим сравнения и переключение выхода в противоположное состояние
010 = Инициализация выходного контакта модуля высоким уровнем, после сравнения перевести в низкий уровень.
001 = Инициализация выходного контакта модуля низким уровнем, после сравнения перевести в высокий уровень.
000 = модуль отключен.

Для нашего варианта работы выберем работу с таймером 2 и настроем режим (101) – Инициализация выходного контакта модуля низким уровнем, генерация непрерывных импульсов. Настройка будет выглядеть следующим образом:

Настройка таймера:

pic24-08

При таких настройках мы будем иметь выходную частоту 62,5 кГц, теперь приведем формулу для расчета требуемой частоты. Тактовая частота задается используемым таймером. Частота на выходе таймера определяется настройкой предделителя и значением регистра периода PR.

Fout = Ftakt/2/предделитель/значение PR. Наша тактовая 32 мГц. Предделитель 1:1, значение PR = 255.

Fout = 32 000 000 / 2 / 1 / 255 = 62745 Гц.


Проект для загрузки.

[box title=”Файлы для загрузки” color=”#521BDE”][wpdm_file id=157][/box]


Использование прерываний для управления процессами в PIC24


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

Для решение этой проблемы можно использовать прерывания, которые формирует аппаратный таймер и который работает независимо от функционирования центрального процессора. Одно из решений задачи, контроллер занимается основной задачей и циклически проверяет флаг который устанавливается когда выполняется прерывание от таймера. Если флаг установлен выполняется процедура “мигания” светодиодами  Если нет выполняется основная задача.

Основные различия от предыдущего проекта это при настройки таймера включение прерывания от таймера TMR1.

Создание функции прерывания от таймера TMR1.

А сам главный цикл программы теперь будет выглядеть так:

Расчет периода прерываний для таймера TMR1 (смотри в описании по работе с таймером).


Загрузка проекта

Значок

Использование прерываний для управления процессами в PIC24 45.72 KB 721 downloads

Использование прерываний для управления процессами...


Это может быть интересно

  • REFERENCE CLOCK OUTPUT MODULEREFERENCE CLOCK OUTPUT MODULE
    REFERENCE CLOCK OUTPUT MODULE Модуль формирования опорного тактового сигнала Модуль опорного тактового сигнала обеспечивает возможность посылать сигнал синхронизации на тактовый опорный выходной контакт или контакты (CLKR) в зависимости от конфигурации выводов …
  • Мультизоновый индикатор-терморегулятор ch-c3010Мультизоновый индикатор-терморегулятор ch-c3010
    Часто возникает необходимость получить информацию по температуре с множества точек контроля. Вам необходимо знать температуру в комнате, в коридоре,  температуру на улице, а в погребе (или на балконе) не только …
  • Защита датчиков температуры DS18B20 от статического электричестваЗащита датчиков температуры DS18B20 от статического электричества
    Статья перепечатана с сайта http://svetomuzyka.narod.ru При удалении датчика на большие расстояния возникает опасность наведения импульсов высокого напряжения на кабель, который соединяет датчик с контролером. Если не принимать меры защиты, то наведенное …
  • ESP32-первое знакомствоESP32-первое знакомство
    Музыкальная тема к статье, слушаем: Настало время познакомиться c ESP32 и для меня, для этого я приобрел в ГАММЕ отладочную плату с модулем ESP-WROOM-32 (ESP32-DevKitC). Первая задача, как он подключается, …
  • Просто о структурах и объединениях в СиПросто о структурах и объединениях в Си
    Какие задачи нам позволяют решать структуры и объединения? Для разработчика встроенных систем эффективность и компактность кода всегда на первом месте. Если программировании на Ассемблере ты сам определяешь как и где …
  • CCP – модуль в режиме Compare на примере PIC18CCP – модуль в режиме Compare на примере PIC18
    CCP – модуль можно использовать в трех режимах: Capture – позволяет захватывать входной сигнал и определять его параметры (длительность или частоту). Дополнительно управлять внутренними модулями. Compare –  позволяет формировать импульсы …
  • Датчик контроля протечки воды ch-c0020Датчик контроля протечки воды ch-c0020
    Как здорово летом под теплым дождем с тобою вдвоем оказаться. Как классно по лужам бежать босиком, с тобою играть и смеяться! Но совсем грустно оказаться под таким дождем, который течет с потолка…  И …
  • Гаджеты для домашней автоматики – Датчик движенияГаджеты для домашней автоматики – Датчик движения
    Управление светодиодным освещением – Датчик движения. Данный гаджет предназначен для управления освещением рабочих столов (кухонных столов), освещение прихожих, освещение зеркал в прихожих, автоматическое включение света в коридорах. Датчик позволяет определить наличие …
  • Проект с использованием MCC часть 11Проект с использованием MCC часть 11
    Можно несколько облагородить программу вынести наши процедуры обработки нажатия кнопок в отдельные функции. Но вы должны понимать, что это хоть и не значительно, но будет тормозить общую скорость работы проекта, …
  • My libraries for Altium DesignerMy libraries for Altium Designer
    My libraries for Altium designer  (Updated V – 17/05/2021) (c) 2021 CATCATCAT ELECTRONICS THIS LIBRARIES IS SUPPLIED BY CATCATCAT ELECTRONICS “AS IS”. NO WARRANTIES, WHETHER EXPRESS, IMPLIED OR STATUTORY, APPLY …


Формат данных XC16


Для дальнейшей работы, понадобиться понятие переменных. Кратко чтобы не напрягать – название и размер данных:

Объявление Бит  Диапазон чисел Примечание 
Целочисленные типы
char 8 -128 … 127 со знаком
signed char 8 -128 … 127 со знаком
unsigned char 8 0 … 255 без знака
short 16 -32768 … 32767  со знаком
signed short 16 -32768 … 32767  со знаком
unsigned short 16 0 … 65535  без знака
int 16 -32768 … 32767 со знаком
signed int 16 -32768 … 32767 со знаком
unsigned int 16 0 … 65535 без знака
long 32 -2147483648 … 2147438647 со знаком
signed long 32 -2147483648 … 2147438647 со знаком
unsigned long 32 0 … 4294867295 без знака
long long**, signed long long** 64 -9223372036854775808…9223372036854775807 со знаком
unsigned long long** 64 0…18 446 744 073 709 551 615 без знака
   
Для арифметики с плавающей запятой  
float 32  1.175494e-38 … 3.40282346e+38
double* 32 1.175494e-38 … 3.40282346e+38
long double 64 2.22507385e-308 … 1.79769313e+308

* * ANSI-89 extension
* double is equivalent to long double if -fno-short-double is used.


Исследуем формирования задержки


Сама задержка или ожидание чего-то не самая популярная вещь в программировании, ведь она просто тратит машинное время в пустую. Но как ни крути, время от времени её необходимо использовать. Как видим одним из удобных вариантов формирования задержки нам предоставляет стандартная библиотека libpic30.h в виде трех макросов:

__delay32 – формирование задержки в тактах процессорного времени.

пример: __delay32(NNN); где NNN – unsigned long циклов, минимальное число 12 циклов, если значение меньше 12, то все равно будет задержка в 12 циклов (12-4294967295).

__delay_ms – формирование задержки в миллисекундах.

пример: __delay_ms(NNN); где NNN – unsigned int – миллисекунд (0-65536).

__delay_us – формирование задержки в микросекундах.

пример: __delay_us(NNN); где NNN – unsigned int – микросекунд (0-65536).

Для макросов __delay_ms и __delay_us необходимо сделать определение и указать рабочую тактовую частоту контроллера, сделать это надо до “вставки” библиотеки (типа так):

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

Но для расширения кругозора, приведем пример, решения нашей задачи из прошлой главы с миганием светодиодов.

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

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

А сам главный цикл из прошлой главы может быть иметь такой вид:

Всем желающим можно попробовать этот вариант. Хотя как я уже говорил, он не эффективен.



Это может быть интересно


  • DIXELL XWEB500D-EVO + RUT900 или как пробить NAT-серверDIXELL XWEB500D-EVO + RUT900 или как пробить NAT-сервер
    Когда необходимо под какой нибудь контроллер имеющий вэб сервер в инет, то нужен статический IP, что оказалось проблемой при работе с операторами сотовых сетей, конкретно с оператором сети “Киевстар”. Их …
  • Проект с использованием MCC часть 10Проект с использованием MCC часть 10
    Алгоритм управления освещением от нажатия кнопки. Обработка удержания кнопки: Мы должны проверить кнопка в настоящий момент нажата и флаг удержания установлен, если да Проверить таймер удержания “отработал” – это значит, …
  • Проект с использованием MCC часть 01Проект с использованием MCC часть 01
    Для изучения MCC я выбрал простой контроллер PIC16F1509. Выбор его был обусловлен богатой новой периферией которую можно изучить. Для начала была собрана схема на макетной плате Внешний вид собранной схемы …
  • Часы-кухонный таймерЧасы-кухонный таймер
    Каждая кухня должна иметь кухонный таймер, который позволяет напоминать хозяйке когда проходить определенный промежуток времени. Например, печем пирог, варим яйца… , чтобы не смотреть постоянно на часы, установим таймер и через заданный …
  • PIC18F25K42 – v. A001 – выявленные баги.PIC18F25K42 – v. A001 – выявленные баги.
    Модуль I2C Не работает при использовании в стандартной конфигурации MCC. Требует особой нестандартной конфигурации и управления для нормальной работы. Обойти Обход проблемы возможен библиотека см статью. Модуль ADC2 На выводе RA0, …
  • Униполярный шаговый двигательУниполярный шаговый двигатель
        В приводах различных устройств часто применяются шаговые двигатели, Шаговый двигатели различают двух типов униполярные – когда обмотки коммутируются током текущим только в одну сторону, например при помощи обычных …
  • Moving average – скользящее среднееMoving average – скользящее среднее
    Скользящая средняя, скользящее среднее (англ. moving average, MA) — общее название для семейства функций, значения которых в каждой точке определения равны среднему значению исходной функции за предыдущий период. Скользящие средние обычно используются с данными временных рядов для сглаживания краткосрочных колебаний …
  • Интерактивные LedИнтерактивные Led
    Тема проекта   продолжение следует…. Это может быть интересно Метки:LED
  • Проект с использованием MCC часть 06Проект с использованием MCC часть 06
    Изменим схему следующим образом добавим две тактовые кнопки BT1 и BT2. Теперь переключимся на конфигурацию выводов, для этого сделаем двойной клик в окне Ресурсы проекта на Pin Module. В окне Pin …
  • Мультимедийная сеть – AVC-LAN TOYOTAМультимедийная сеть – AVC-LAN TOYOTA
    AVC LAN – протокол обмена данными мультимедийных систем автомобиля. Кодирование данных. При кодировании различаться три типа данных : преамбула – её назначение, это сообщение устройствам на шине, что начинается передача данных. бит 0 …


Первая программа на PIC24


При написании первой программы всегда начинает вопрос с чего начать. Пропустим весь процесс установки среды программирования так ка считаем, что это пройденный этап. Программировать будем учиться на языке С XC16. Я считаю для начинающих, это самый простой вариант для обучения, так как ассемблер для 16 разрядных более сложен для понимания, чем для 8 разрядных PIC-контроллеров.

Первое, что необходимо, это какие необходимы начальные строки, чтобы компилятор понял, что мы от него хотим. Первая строка:

А хотим мы от него, что бы он выбрал из настроек среды MPLAB с каким контроллером мы работаем.

Дальше, для уменьшения наших мук, будем использовать библиотеку libpic30. Поэтому включим следующие две строчки, в первой – разъясняем компилятору какая у нас тактовая частота. Вторая, что будем использовать библиотеку.

Определение тактовой частоты полезно настройки для макросов __delay_ms() и __delay_us().

Теперь надо настроить регистр конфигурации контроллера. Каждая строка имеет комментарий описывающий назначение. В двух словах – используем внутренний генератор с умножителем, запустим сторожевой, таймер. Для чего? Чтобы научиться с первых шагов с ним работать!

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

Программа, практически всегда, должна начинаться с настройки основного генератора, после этого необходимо перейти к настройке портов ввода вывода, а после можно перейти к этого основному циклу, в котором будет “вечно” работать наше устройство.

Настройка тактового генератора:

По регистру OSCCON хотелось бы добавить, пока мы не трогаем флаг блокировки IOLOCK, он будет вести себя как обычный регистр, но если его установить, то в зависимости от условий в регистре состояния, мы или не сможем его в последствии программе изменить или нам придется выполнять последовательность разблокирование для того чтобы, в нем что-то изменить.

Настройка портов:

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

 Первая программа – мигание светодиода, для встроенных систем, это как “Привет Мир”. Светодиод мигает – мир радуется!


Демонстрационное видео

 


Проект для загрузки

Значок

Первая программа на PIC24 41.56 KB 1052 downloads

Первая программа на PIC24 ...


Это может быть интересно

  • Простой цифровой вольтметр ch-c3200Простой цифровой вольтметр ch-c3200
    В этой статье рассмотрен пример создания простого вольтметра постоянного тока на основе печатной платы ch-c0030pcb, а при возможности использования внешнего делителя и вольтметр переменного тока. Дан краткий принцип построения цифровых …
  • Модуль CAN в микроконтроллерах PIC18Модуль CAN в микроконтроллерах PIC18
    Введение   CAN последовательный интерфейс связи, который эффективно поддерживает распределенное управление в реальном масштабе времени с высокой помехозащищенностью. Протокол связи полностью определен Robert Bosch GmbH, в спецификации требований CAN 2.0B …
  • Цифровой спидометр для автомобиляЦифровой спидометр для автомобиля
     Универсальность печатной платы ch-c0030pcb позволяет создавать на её основе разнообразные устройства. Одним из таких устройств является электронный спидометр для автомобиля, в котором можно задать два компаратора скорости, например,  для города и …
  • MCC PIC24 – модуль OUTPUT COMPARE – в режиме генератора звуковых сигналовMCC PIC24 – модуль OUTPUT COMPARE – в режиме генератора звуковых сигналов
    При проектировании простых устройств автоматики, часто необходимо иметь механизм звукового оповещения. Самый верхний уровень, это формирование голосовых сообщений, но об этом, как то по позже… В самом примитивном варианте можно …
  • Универсальный терморегулятор ch-c3000Универсальный терморегулятор ch-c3000
    Терморегулятор ch-c3000 предназначен для управления системами регулирования температуры в пределах от – (минус) 55 до + 125 С. Регулятор может использоваться как в системах отопления, так и в системах охлаждения …
  • Moving average – скользящее среднееMoving average – скользящее среднее
    Скользящая средняя, скользящее среднее (англ. moving average, MA) — общее название для семейства функций, значения которых в каждой точке определения равны среднему значению исходной функции за предыдущий период. Скользящие средние обычно используются с данными временных рядов для сглаживания краткосрочных колебаний …
  • VU Meter Tower ART – part 2VU Meter Tower ART – part 2
    Проект – VU Meter Tower ART получил продолжение в своем развитии. Теперь можно заказать набор деталей из акрила для самостоятельной сборки. В проект корпуса внесено целый ряд доработок, позволяющие улучшить …
  • Arduino LCD + STONE STVI056WT-01 + Strain gaugeArduino LCD + STONE STVI056WT-01 + Strain gauge
    Author li grey email: greyli1987@outlook.com The strain assessment instrument is used to assess the degree of corresponding muscle strain by obtaining the muscle surface action potential through silver oxide electrodes …
  • ch-4000 – универсальная печатная платаch-4000 – универсальная печатная плата
    На смену устаревшей плате ch-3000, пришла новая ch-4000. Плату уже можно приобрести в магазине Ворон. Схема. Плата позволяет создавать таймеры, часы реального времени, регуляторы температуры, регуляторы влажности, вольтметры, дистанционное управление …
  • LED драйвер TM1639LED драйвер TM1639
    TМ1639 позволяет работать на матрицу 8*8 или 8 семисегметных индикаторов. Может работать как на индикаторы с общим катодом, но и есть возможность подключать общим анодом. Для управления драйвером используется трех …


Как запитать и подключить к программатору PIC24


Для обучения будем использовать PIC24FJ64GA002. Его особенность – низкая цена, 28 выводов, диапазон питания 2,0-3,6 вольта.  Для питания будем использовать источник 3,3 вольта. А так как ядро контроллера работает при напряжении 2,5 вольта, мы должны оставить включенным внутренний регулятор напряжения, для этого к выводу Vcap/Vddcore подключить керамический конденсатор 10,0 мкФ. А вывод DISVREG – подключить к Vss (к общему).

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

Первый вариант подключения.

pic24-02

Второй вариант подключения.

pic24-03

Третий вариант и первая схема для обучения по работе с PIC24.

pic24-04

 Для индикации мы подключим к портам RA0, RA1, RB0, RB1 светодиоды для контроля работы программы. Для питания можно использовать любой 3,3 вольтовый стабилизатор. Для макетирования была применена плата ILLISSI-M4B01

Макетная плата для 28 ногих PIC контроллеров

Макетная плата в сборе для тестирования и обучения.

 pic24-05 pic24-06

 Полная схема, со стабилизатором.

pic24-07

 CON1 предназначен для подключения к программатору, CON2 для подачи питания на микроконтроллер.

Если схема собрана правильно, надо переходить к написанию первой программы.


Изучаем PIC24, компилятор XC16


С чего начать и с чего приступить к изучению 16 разрядных PIC-микроконтроллеров.

Первое, это надо разобраться как установить среду программирования и сам компилятор Си, в нашем варианте это MPLAB IDE v8.89 и MPLAB XC16 v1.11.

Второе, приобрести PIC-контроллер, я использовал PIC24FJ64GA002.

Третье, макетную плату и всякую россыпуху и не только.


pic24-05

Чего не стоит искать здесь.

Здесь не стоит искать изучение языка Си, здесь только практические советы, по необходимости, все можно конечно объяснить и помочь понять, для этого задавайте вопросы на форуме http://musiccolor.d-lan.dp.ua/.


Статьи:

  1. Как подключить питание и подключение для внутрисхемного программирования PIC24.
  2. Настройка тактового генератора.
  3. Первая программа на PIC24.
  4. Исследуем формирования задержки.
  5. Объявление переменных – Формат данных.
  6. Использование прерываний для управления процессами.
  7. Output Compare – формирование импульсов.
  8. I2C™ – INTER-INTEGRATED CIRCUIT и PIC24.
  9. 10-бит, высокоскоростной, аналого-цифровой преобразователь, часть 1.
  10. 10-бит, высокоскоростной, аналого-цифровой преобразователь, часть 2.
  11. Измерение частоты.
  12. PIC24 и работа с SD/MMC картами памяти.
  13. Часы реального времени DS1340.
  14. Энкодер и его применение.
  15. Контроллер DMA (Direct Memory Access).
  16. Визуализация данных.
  17. Многокнопочная клавиатура.
  18. Внешний АЦП ADS1230 и PIC24FJ64GA004.
  19. … продолжение следует …