Простой оптический сенсор приближения

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

Тип данных – бит


  1. Тип данных – бит
  2. Битовые операции (установка, сброс и инвертирование бита)
  3. Тестирование бита в байте

Бит

Компилятор XC8 поддерживает разрядные целочисленные типы, которые могут содержать значения  0 или 1. Чтобы обеспечить максимальное удобство программиста при решении задач, связанных с манипуляциями отдельными битами, был введен дополнительный тип данных – бит (bit). Переменные этого типа описываются как обычно:

static bit init_flag;

Переменные типа бит не могут иметь модификатор auto и не могут передаваться в функцию в качестве аргумента, но функция может возвращать значение типа бит. По большому счету переменные этого типа ведут себя как обычные переменные типа unsigned char, но при этом могут принимать значение 0 или 1. Поэтому их удобно использовать для определения различных логических переменных и флагов. Такой подход значительно экономит оперативную память. Компилятор не позволяет создавать указатели типа бит или статически инициализировать переменные этого типа.

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

Все переменные этого типа упаковываются таким образом, что 8 переменных типа бит в памяти займут один байт.


Битовые операции (установка, сброс и инвертирование бита)

Примеры:

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

Пример:

Тестирование бита в байте

Для тестирования бита в байте можно применить,
например,



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


  • MPLAB® Harmony – или как это просто! Часть 3.MPLAB® Harmony – или как это просто! Часть 3.
    Часть третья – копнём немного глубже. Вы наверное заметили, что во второй главе, вроде сначала все шло как по маслу, а потом, что бы заморгали светики, я вставил в код …
  • Проблемы классической светомузыкиПроблемы классической светомузыки
    Светомузыка – что это такое? Определение: Светомузыка  (жаргонное: цветомузыка)  — вид искусства, основанный на способности человека ассоциировать звуковые ощущения со световыми восприятиями. Такое явление в неврологии получило название – синестезии. …
  • Емкостной сенсорЕмкостной сенсор
    Изучаем изготовление емкостных сенсоров на PIC-микроконтроллере. Конструкция емкостных сенсоров имеет вид: Емкостные сенсоры строятся по схеме высокочастотного генератора, сам принцип основан на измерение частоты этого генератора. Частота зависит от емкости …
  • CCP модуль для декодирования ИК-кодов пультов ДУCCP модуль для декодирования ИК-кодов пультов ДУ
    Множество изготовителей для своих пультов дистанционного управления на ИК лучах используют принцип широтно-импульсной модуляции. В таких кодах бит единицы представляется импульсом большой длительности, а ноль импульсом короткой длительности. Внешний вид …
  • Индикатор кода – RC-5 Protocol PhilipsИндикатор кода – RC-5 Protocol Philips
    Индикатор кода – RC-5 Protocol Philips При конструировании дистанционного управления на инфракрасных лучах для контроля удобно иметь индикатор кодов передаваемых пультом. Плата ch-c3000 позволяет изготавливать устройства с возможностью установки фото …
  • Проект с использованием MCC часть 02Проект с использованием MCC часть 02
    Когда мы запустили конфигуратор, самое главное понять, что с этим делать и как проверить, то что мы делаем работает или нет. Для начала настроим регистры конфигурации микроконтроллера и настроем тактовый генератор. …
  • Analog-to-Digital Converter with Computation Technical BriefAnalog-to-Digital Converter with Computation Technical Brief
    Аналого-цифровой преобразователь с вычислительным модулем. ВВЕДЕНИЕ Аналого-цифровой преобразователь (ADC) с вычислительным модулем (ADC2) в 8-разрядном микроконтроллере Microchip имеет встроенные вычислительные функции, которые обеспечивают функции пост-обработки, такие как передискретизация, усреднение и …
  • JDY-62A Audio bluetooth moduleJDY-62A Audio bluetooth module
    Простой модуль для простого аудио блютуса. Встроенные подсказки на английском языке. Модуль включён, режим муте – после подачи питания. Контроль разряда батареи предупреждение что батарея разряжена и необходима подзарядка. При …
  • Акриловый корпус для платы ch-4000Акриловый корпус для платы ch-4000
    Плата ch-4000 подходит для монтажа в корпуса на дин рейку, но для домашней автоматики необходимо что-то другое, поэтому был разработан корпус из акрила который позволит создавать настольные и настенные устройства. Корпус состоит из …
  • Altium Designer – подготовка документации для производства и сборки печатных платAltium Designer – подготовка документации для производства и сборки печатных плат
    В процессе освоения Altium Designer много возникает вопросов по подготовке документации для производства плат, а также для её сборки. Altium Designer позволяет сделать все требуемые документы, хотя скажем откровенно, для …



Работа с многобайтными переменными, Формат данных


Работа с многобайтными переменными.

Например, нам необходимо получить данные из таймера (16 разрядный режим) TMR0 и записать в 16 разрядной переменной «i».

Сделать это можно так:

Преобразование типов. Обратите внимание, если вам необходимо будет производить загрузку в переменную i-длиной 24 бита, то при загрузке будет ошибка. Для правильной загрузки создайте временную переменную в 16 бит, а потом её перегрузите в 24 битную.


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

Целые типы данных
XC8 MPLAB компилятор поддерживает целые типы данных с 1, 2, 3 и 4 байта размеров, а также один тип бита. В таблице приведены типы данных и их соответствующий размер и арифметический тип. Тип по умолчанию для каждого типа указывается.

Тип Размер (в битах) Арифметический тип Диапазон
bit 1 Целое без знака 8 (от 1 до 8 бит занимает в памяти 1 байт)
signed char 8 Целое со знаком -127 +127
unsigned char 8 Целое без знака 0-255
signed short 16 Целое со знаком -32 767 + 32 767
unsigned short 16 Целое без знака 0-65 535
signed int 16 Целое со знаком -32 767 + 32 767
unsigned int 16 Целое без знака 0-65 535
signed short long 24 Целое со знаком -8 388 607 + 8388607
unsigned short long 24 Целое без знака 16 777 215
signed long 32 Целое со знаком -2 147 483 647 +2 147 483 647
unsigned long 32 Целое без знака 0-4 294 967 295
signed long long 32 Целое со знаком -2 147 483 647 +2 147 483 647
unsigned long long 32 Целое без знака 0-4 294 967 295

 

Числа с плавающей запятой

Type Size (bits) Arithmetic Type
float 24 or 32 Real
double 24 or 32 Real
long double same as double Real

 

Format Number Biased exponent 1.mantissa Decimal
32-bit 7DA6B69Bh 11111011b 1.0100110101101101
0011011b
2.77000e+37
(251) (1.302447676659)
24-bit 42123Ah 10000100b 1.001001000111010b 36.557
(132) (1.142395019531)

Диапазон значений чисел с плавающей точкой

Symbol Meaning 24-bit Value 32-bit Value
XXX_RADIX Radix of exponent representation 2 2
XXX_ROUNDS Rounding mode for addition 0 0
XXX_MIN_EXP Min. n such that FLT_RADIXn-1 is
a normalized float value
-125 -125
XXX_MIN_10_EXP Min. n such that 10n is anormalized float value -37 -37
XXX_MAX_EXP Max. n such that FLT_RADIXn-1
is a normalized float value
128 128
XXX_MAX_10_EXP Max. n such that 10n is a
normalized float value
38 38
XXX_MANT_DIG Number of FLT_RADIX mantissadigits 16 24
XXX_EPSILON The smallest number which
added to 1.0 does not yield 1.0
3.05176e-05 1.19209e-07


Формат ввода чисел (литералов)

Литерал Формат Пример цветом признак формата
Двоичный 0b<число> или 0B<число> 0b10011001
Восьмеричный 0<число> 0345
Десятичный <число> 129
Шестнадцатеричный 0x<число> или 0X<число> 0x2F

EEPROM и Flash память программ


(актуально для компилятора XC8 и HI-TECH)


Подготовка данных для EEPROM (стандартные макросы)

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

Макрос позволяет инициализировать блок в 8 байт. Если необходимо инициализация большего количества данных можно использовать несколько макросов. Пример,


Каждый следующий макрос инициализирует следующее 8 байт.



Запись и чтение из EEPROM памяти (стандартные макросы и функции)

Макросы записи чтения из EEPROM

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


Функции записи чтения из EEPROM

variable=eeprom_read(address) и eeprom_write(address,value)

аналогичный пример записи чтения


Функции записи массива или последовательная запись данных

Если вы организуете циклическую запись в EEPROM надо учитывать тот факт, что изменять адрес в регистре EEADR можно только после окончания записи. Если это сделать не дождавшись, то запись в регистр адреса EEADR не воспримется устройством (не изменится).

Если убрать из последовательности ожидание окончания записи while(WR) continue; то все попытки записи будут предприняты только по адресу EEADR=0. Это актуально как для макроса EEPROM_WRITE,  так и для функции eeprom_write.

В принципе, что макрос, что функция это одно и тоже, функция это вызов того же макроса.

НЕЛЬЗЯ использовать регистр EEADR непосредственно с функциями.



Запись и чтение из Flash памяти программ

Возможно при помощи макросов

Записать блок кода/данных в области во флэш-памяти:

чтение байта данных из флэш-памяти, и сохранение в переменной:


Оператор – sizeof() – Приоритет операторов


Оператор – sizeof()

Этот оператор имеет один параметр, который может быть либо тип, либо сама переменная и возвращает размер в байтах этого типа или объекта:

В этом примере переменной (а) будет присвоено значение 1 потому, что char однобайтовый тип.

Значение, возвращаемое функцией sizeof, является константой, поэтому всегда определяется до выполнения программы.

Например, массив

а конструкция

Если chat то он всегда будет 8 бит или 1 байт, если int то тут будет зависит от используемого микроконтроллера. Например компилятор XC8 вернет значение 2 байта, а компилятор XC32 вернет значение 4 (байта). Это значит, что один элемент в разных системах занимает разное количество байт.  Массив static unsigned int txferTxBuff[256] описанный в программе для PIC32 будет занимать в памяти 1024 байта.

конструкция

вычисляет именно размер массива.


Приоритет операторов

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

Мы может сомневаться, если оно действительно означает:

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

Уровень

Оператор

Описание

Группировка

1

::

scope Слева направо
2

() [] . -> ++ — dynamic_cast static_cast reinterpret_cast const_cast typeid

Postfix Слева направо
3

++ — ~ ! sizeof new delete

Унарный (префикс) Справа налево

* &

косвенного обращения и ссылки (указатели)

+ –

унарный оператор знак
4

(type)

приведение типов Справа налево
5

.* ->*

указатель на член Слева направо
6

* / %

Мультипликативная Слева направо
7

+ –

добавка Слева направо
8

<< >>

сдвиг Слева направо
9

< > <= >=

реляционные Слева направо
10

== !=

равенство Слева направо
11

&

побитового И Слева направо
12

^

Побитовое исключающее или Слева направо
13

|

побитовое OR Слева направо
14

&&

Логическое И Слева направо
15

||

Логическое или Слева направо
16

?:

Условное Справа налево
17

= *= /= %= += -= >>= <<= &= ^= |=

назначение Справа налево
18

,

запятая Слева направо

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


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


  • Цифровой тахометр для автомобиля CH-С3300Цифровой тахометр для автомобиля CH-С3300
     Тахометр Ch-С3300 предназначен для индикации и контроля оборотов, времени работы и максимальных оборотов развиваемых двигателем во время поездки. Датчиком может использоваться как обычный контактный прерыватель или выход датчика холла автомобиля …
  • ESP8266 применение в проектахESP8266 применение в проектах
    (Актуально только для версий прошивки 1.хх) ESP8266 показала себя как надежное и безотказное устройство для обмена данными с применением WIFI. Я использую ESP8266 исключительно через UART, с применением AT команд. Все …
  • Контроллер управления светодиодным освещением с дистанционным управлениемКонтроллер управления светодиодным освещением с дистанционным управлением
    Все активнее светодиоды входят в нашу жизнь. Всё эффективнее становится светодиодное освещение. Всё ниже опускаются цены. Всё больше появляется возможностей получения сочных цветов, простоты в управлении. Всё чаще можно увидеть …
  • Простой цифровой вольтметр ch-c3200Простой цифровой вольтметр ch-c3200
    В этой статье рассмотрен пример создания простого вольтметра постоянного тока на основе печатной платы ch-c0030pcb, а при возможности использования внешнего делителя и вольтметр переменного тока. Дан краткий принцип построения цифровых …
  • Ultrasonic Level Meters – ULM –53LUltrasonic Level Meters – ULM –53L
    Измерение расстояния при помощи ультра звукового датчика ULM–53L–10. Диапазон измерения от 0,5 м до 10 м, полностью пластмассовый излучатель PVDF, механическое соединение фланцем из полиэтилена HDPE (исполнение “N”) Характеристики Диапазон измерения …
  • ch-4050 – дифференциальный терморегуляторch-4050 – дифференциальный терморегулятор
    ch-4050 – это не новая модель, это расширенная версия универсального терморегулятора ch-4000. Различия коснулись в появлении новой функции дифференциального регулирования. Это вид регулирования по разности температур измеренного двумя датчиками. Теперь …
  • ESP32-первое знакомствоESP32-первое знакомство
    Музыкальная тема к статье, слушаем: Настало время познакомиться c ESP32 и для меня, для этого я приобрел в ГАММЕ отладочную плату с модулем ESP-WROOM-32 (ESP32-DevKitC). Первая задача, как он подключается, …
  • Проект с использованием MCC часть 16Проект с использованием MCC часть 16
    Продолжим изучение EUSART. На этом этапе отработает передачи данных с ПК и получения эха. Для этого в основной цикл программы добавим код

    [crayon-61e911fbe99ed440804030/]

    Суть его проста постоянно в главном цикле …

  • Счетчики посетителейСчетчики посетителей
    Вас сосчитали!? или счетчики посетителей.   Для чего нужны счетчики посетителей? Какие они бывают? ТОРГОВЛЯ. Подсчитайте, сколько ваш магазин посещает человек за день. Кок много человек приходит утром, какое количество вечером. …
  • Тестирование модуля генератораТестирование модуля генератора
      Тестирование модуля генератора Настройка, запуск и проверка рабочей частоты на примере PIC18F26K40. PIC18F26K40 Чтобы понять из-за чего зависит производительность микроконтроллера просто надо понять как работает его задающий тактовый генератор. …




Настройка регистра ID и Заголовки h


Настройка регистра ID идентификатора контроллера


Заголовки h

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

Это не значит, что не надо вставлять файлы заголовков их надо обязательно указывать, чтоб предпроцессор выбирал для вас именно те функции, которые вы собираетесь использовать!!! А иначе может использоваться функция с таким же именем из какого-то вами созданного файла и работающая совсем иначе.

Примеры файлов подключения функций:

 Универсальный файл заголовка

В компиляторах майкрочип, теперь не надо указывать тип процессора, тип процессора берется автоматически из проекта, достаточно указать универсальный файл заголовка, т.е. вместо #include <htc.h> или #include <p32xxxx.h> указываем:

 


Операторы уменьшения и увеличения


Операторы уменьшения и увеличения

Оператор увеличения (++) и оператор уменьшения (–) увеличить или уменьшить на единицу значение, хранящееся в переменной. Они эквивалентны += 1 и -=1, соответственно. Таким образом:

все эквивалентны в своей функциональности: три из них увеличить на единицу значение c.

Особенностью этого оператора является, что она может использоваться в качестве префикса и суффикса. Это означает, что оно может быть написано либо до идентификатора переменной (++) или после него (++). Хотя в простых выражениях как а++ или ++а оба имеют одно и тоже значение, в другие выражения, в которых результат операции увеличение или уменьшение оценивается как значение внешнем выражении и они могут оказывать важное различие в их смысле.

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

Пример 1 Пример 2
B = 3;
A = ++B; //A содержит 4, B содержит 4
B = 3;
A = B++; //A содержит 3, B содержит 4

В примере 1, B увеличивается до того, как его значение копируется A. В примере 2, A копируется значение b и затем b увеличивается.


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


  • Toyota Auto Fader – Модуль включения усилителяToyota Auto Fader – Модуль включения усилителя
    Toyota Auto Fader – Модуль включения усилителя. Часто автолюбители прибегают к замене штатного головного устройства на универсальное мультимедийное, в котором значительно расширены функциональные возможности. Если возникает желание оставить в работе …
  • Оптосимистор и его применениеОптосимистор и его применение
    Эрве Кадино “Цветомузыкальные установки” Ответ на вопрос – управление мощным тиристором или симистором, от терморегулятора. Статья в pdf[wpdm_file id=129 template=”link-template-calltoaction3.php”] Оптосимистор принадлежат к классу оптронов и обеспечивают очень хорошую гальваническую развязку …
  • Акриловый корпус для платы ch-4000Акриловый корпус для платы ch-4000
    Плата ch-4000 подходит для монтажа в корпуса на дин рейку, но для домашней автоматики необходимо что-то другое, поэтому был разработан корпус из акрила который позволит создавать настольные и настенные устройства. Корпус состоит из …
  • I2C MODULE – PIC18F25K42 Device ID Revision = A001I2C MODULE – PIC18F25K42 Device ID Revision = A001
    I2C MODULE Обход ошибок в версии I2C MODULE – PIC18F25K42 Device ID Revision = A001 В Серии K42 применен совершенно новый модуль шины I2C, который позволяет поддерживать все режимы этой …
  • MCC PIC24 – модуль OUTPUT COMPARE – в режиме генератора звуковых сигналовMCC PIC24 – модуль OUTPUT COMPARE – в режиме генератора звуковых сигналов
    При проектировании простых устройств автоматики, часто необходимо иметь механизм звукового оповещения. Самый верхний уровень, это формирование голосовых сообщений, но об этом, как то по позже… В самом примитивном варианте можно …
  • Audio-bluetooth modules BK8000L (noname)Audio-bluetooth modules BK8000L (noname)
    Еще один вариант, так сказать недоразумения Audio-bluetooth modules BK8000L (noname). Его отличительной маркировкой служат два отверстия в плате и надпись R2. Отличают его от модулей на чипе BK8000L, что у …
  • Датчик приближения от Румена ЖелеваДатчик приближения от Румена Желева
    Проект на Болгарском языке. Автор Румен Желев. Болгария. Проект,  датчик приближения в котором устранены все недостатки влияния засветки посторонними источниками. Применен совершенно оригинальный принцип контроля ИК излучения. Основната идея на …
  • Тестирование модуля генератораТестирование модуля генератора
      Тестирование модуля генератора Настройка, запуск и проверка рабочей частоты на примере PIC18F26K40. PIC18F26K40 Чтобы понять из-за чего зависит производительность микроконтроллера просто надо понять как работает его задающий тактовый генератор. …
  • BMP280 – температура и атмосферное давление – учебный проектBMP280 – температура и атмосферное давление – учебный проект
    Учебный проект на PIC32 и светодиодной панели P5 (2121)-168-6432-80 (32*64). Проект позволяет ознакомиться с простой графикой и с чтением давления и температуры с датчика BMP280. Для тестирования необходимо собрать следующую …
  • Бегущие огни на WS2812BБегущие огни на WS2812B
    В настоящее время большой популярностью стали пользоваться светодиоды со встроенным драйвером WS2812B. Текущий проект предназначен показать возможность использования и управления этими светодиодами. Это и проект и исследование по работе с …




Составные операторы присваивания


Составные операторы присваивания (+=, -=, *=, /=, %=, >>=, <<=, &=, ^=, |=)

Когда мы хотим изменить значение переменной, выполняя операции над значением, хранящимся в этой переменной, мы можем использовать составные операторы присваивания:

Выражение Эквивалентное выражение
value += increase; value = value + increase;
a -= 5; a = a - 5;
a /= b; a = a / b;
price *= units + 1; price = price * (units + 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 часть 08Проект с использованием MCC часть 08
    И так создадим проект в котором при помощи двух кнопок мы сможем управлять яркостью светодиодов. При использовании МСС у нас лафа полная, добрые дяди с Microchipa подготовили функции, которыи позволяет …
  • PIC32MZ – прерывания (заметки)PIC32MZ – прерывания (заметки)
    Виды формирования запоминая контекста при входе в прерывания. Компилятор представляет три варианта AUTO – когда запоминания места возврата из подпрограммы возложено на программу, т.е все создается программно. Этот метод является …
  • Гаджеты для домашней автоматики – Датчик движенияГаджеты для домашней автоматики – Датчик движения
    Управление светодиодным освещением – Датчик движения. Данный гаджет предназначен для управления освещением рабочих столов (кухонных столов), освещение прихожих, освещение зеркал в прихожих, автоматическое включение света в коридорах. Датчик позволяет определить наличие …
  • Проект с использованием MCC часть 10Проект с использованием MCC часть 10
    Алгоритм управления освещением от нажатия кнопки. Обработка удержания кнопки: Мы должны проверить кнопка в настоящий момент нажата и флаг удержания установлен, если да Проверить таймер удержания “отработал” – это значит, …
  • APA102 – светодиоды со встроенным драйвером и SPI интерфейсомAPA102 – светодиоды со встроенным драйвером и SPI интерфейсом
    APA102 В 2014 году фирма Shenzhen Led Color Optoelectronic Co., Ltd http://www.szledcolor.com/ начала производство светодиодов на драйвере APA102. Это серия так называемых светодиодов со встроенным драйвером. Основной особенностью этих светодиодов, что …
  • Индикатор температурыИндикатор температуры
    Проект для начинающих, на демо плате BB-2T3D-01. Простой индикатор температуры. Проект никак не задумывался, просто на витрину магазин Ворон нужна была демонстрационная модель на макетной плате, чего нибудь работающего. Остановились на индикаторе температуре. Нужен был какой нибудь выводной …
  • MPLAB® Harmony – или как это просто! Часть 3.MPLAB® Harmony – или как это просто! Часть 3.
    Часть третья – копнём немного глубже. Вы наверное заметили, что во второй главе, вроде сначала все шло как по маслу, а потом, что бы заморгали светики, я вставил в код …
  • Мультизоновый индикатор-терморегулятор ch-c3010Мультизоновый индикатор-терморегулятор ch-c3010
    Часто возникает необходимость получить информацию по температуре с множества точек контроля. Вам необходимо знать температуру в комнате, в коридоре,  температуру на улице, а в погребе (или на балконе) не только …



Арифметические операторы


Арифметические операторы (+,-,*,/,%)

Пять арифметических операций, поддерживаемых в языке C являются:

 

+ Добавление
Вычитание
* Умножение
/ Деление
% Деление по модулю
Операции сложения, вычитания, умножения и деления буквально соответствуют их соответствующих математических операторов. Только что вы может не быть настолько привыкли видеть это по модулю; которых оператором является знак процента (%). По модулю является операцией, которая дает остаток от деления двух значений. Например, если мы напишем:

Переменная (а) будет содержать значение 2, поскольку остаток от деления 11 на 3 = 2.



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


  • Инфракрасный датчик движения, PIR-sensorИнфракрасный датчик движения, PIR-sensor
    Домашняя автоматика предполагает наличие датчиков движения, которые способны контролировать движения человека. Самым простым и доступным устройством позволяющие контролировать изменения ИК-излучения, это ПИР-сенсоры. На текущий момент доступны не дорогие модели D203B, D204B, D205B. Все они позволяют …
  • Дисплей KD035C-3A подключение и управлениеДисплей KD035C-3A подключение и управление
    Дисплей KD035C-3A производиться компанией SHENZHEN STARTEK ELECTRONIC TECHNOLOGY CO.,LTD Характеристики Параметр Спецификация Единицы измерения Размер дисплея 70.08(H)*52.56(V) (3.5inch) mm Тип дисплея TFT active matrix Цветовая гамма 65K/262K colors Разрешение 320(RGB)*240 dots …
  • ESP8266  процедура получение данных даты и времени от серверов точного времени.ESP8266 процедура получение данных даты и времени от серверов точного времени.
    Эта функция доступна уже в версии 1.6.1. Для многих приложений, необходимо часы реального времени,  если в вашем проекте есть модуль WiFI ESP8266, то легко можно сделать следующим образом. Процедура описывает …
  • Защита датчиков температуры DS18B20 от статического электричестваЗащита датчиков температуры DS18B20 от статического электричества
    Статья перепечатана с сайта http://svetomuzyka.narod.ru При удалении датчика на большие расстояния возникает опасность наведения импульсов высокого напряжения на кабель, который соединяет датчик с контролером. Если не принимать меры защиты, то наведенное …
  • MPLAB X IDE – управление проектамиMPLAB X IDE – управление проектами
    Среда  MPLAB X IDE позволяет оперативно работать с несколькими проектами, например, если у вас в работе несколько проектов: Для того чтобы переключиться достаточно выбрать другой проект: Для выбора проекта существует …
  • ch-4000 – универсальная печатная платаch-4000 – универсальная печатная плата
    На смену устаревшей плате ch-3000, пришла новая ch-4000. Плату уже можно приобрести в магазине Ворон. Схема. Плата позволяет создавать таймеры, часы реального времени, регуляторы температуры, регуляторы влажности, вольтметры, дистанционное управление …
  • VU Meter Tower ARTVU Meter Tower ART
    Стерео индикатор уровня аудио сигнала. Компактность и удобство проектирования устройств на светодиодах WS2812B, а также легкость реализации алгоритма родило идею созданию своей конструкции. В этом проекте я предоставлю все материалы …
  • Altium Designer – создание рисунков на печатной платеAltium Designer – создание рисунков на печатной плате
      Для создание рисунков на печатной платы в Altium Designer можно использовать возможность использовать в Altium Designer сторонних скриптов. Мне возможность эта очень понравилась и я решил её расшарить для электронщиков. …
  • Acquaintance with audio-bluetooth modules F-6888 (BK3254).Acquaintance with audio-bluetooth modules F-6888 (BK3254).
    Для проектов появилось необходимость познакомиться с недорогими модулями китайского производства, которые можно приобрести у нас в Украине и у китацев, на алиэкспрессе. Так как меня интересует не просто, как в …
  • Самый простой индикатор уровня звукового сигналаСамый простой индикатор уровня звукового сигнала
    Демонстрационный проект создания индикаторов уровня с использованием WS2812B. Изучив этот проект вы сможете  самостоятельно изготавливать и конструировать свои индикаторы уровня звукового сигнала. Дополнительно читайте статью Бегущие огни на WS2812B по подключению …


Сдвиг переменной, Битовые операторы…


  1. Сдвиг переменной
  2. Битовые операторы (&,|,^,~,<<,>>)
  3. Логические операторы (||, &&, !, ==, !=, >, <, >=, <=)
  4. Условный оператор (?)
  5. Оператор Запятая (,)

Сдвиг переменной на n бит

В микроконтроллерах часто приходиться работать с данными на «низком» уровне. Поэтому коснемся темы сдвига битов переменной.

unsigned char foo; // должна быть описана как целая без знака, иначе логический сдвиг вправо превратиться в арифметический.

foo = (foo >> 1); // сдвиг на 1 вправо
foo = (foo << 2); // сдвиг на 2 влево

Сдвиг с вращением битов переменной

unsigned char foo; // должна быть описана как целая без знака

foo = (foo >> 1) | (foo << 7); // вращение вправо на 1 бит
foo = (foo << 1) | (foo >> 7); // вращение влево

unsigned int foo; // должна быть описана как целая без знака

foo = (foo >> 1) | (foo << 15); // вращение вправо на 1 бит
foo = (foo << 1) | (foo >> 15); // вращение влево


Битовые операторы (&,|,^,~,<<,>>)

Эти операции будут всегда присутствовать в наших программах.

Оператор

ASM эквивалент

Описание

&

AND

Побитовый оператор И

И

0011

0101

0001

|

OR

Побитовое включающее или

ИЛИ

0011

0101

0111

^

XOR

Побитовое исключающее или

Искл.

ИЛИ

0011

0101

0110

~

НЕ

Унарный дополнение (бит инверсии)

НЕ

01

10

<< 

SHL

Сдвиг влево

>> 

SHR

Сдвинуть вправо

 


test & 0b10000000 истинно, если в 7 разряде test «1».

Примеры

// проверка разрядов, где стоят 1 на наличия 1

// е.е. когда в 7 и 6 разрядах единицы (остальные не имеют значения)

// тогда выражение истинно

// проверка разрядов, где стоят 0 на наличия 0

// е.е. когда в 7 и 6 разрядах нули (остальные не имеют значения)

// тогда выражение истинно


Логические операторы (||, &&, !, ==, !=, >, <, >=, <=)

 Необходимо ясно представлять различие между битовыми и логическими операторами. Битовые выполняют операции над данными по битам и возвращают результат данные. Логические операторы оперируют общим значение с данными ИСТИНА или ЛОЖЬ и возвращают значение ИСТИНА или ЛОЖЬ (1 или 0).

|| логическая операция ИЛИ
&& логическая операция И
! логическая операция НЕ
== Равно
!= Не равно
> Больше, чем
< Меньше чем
>= Больше или равно
<= Меньше или равно
Вот несколько примеров:

(7 == 5)     // эквивалентно ЛОЖЬ.
(5 > 4)       // эквивалентно ИСТИНА.
(3 != 2)      // эквивалентно ИСТИНА.
(6 >= 6)     // эквивалентно ИСТИНА.
(5 < 5)       // эквивалентно ЛОЖЬ.
!(5 ==5)   // (5 ==5) – ИСТИНА, а ! – получаем ЛОЖЬ.

 ЛОЖЬ когда полученное выражение равно нулю. ИСТИНА – когда полученное выражение больше нуля.

Конечно вместо того, чтобы с помощью только числовые константы, мы можем использовать любое допустимое выражение, включая переменные. Предположим, что = 2, b = 3 и c = 6.

(a == 5)     // эквивалентно ЛОЖЬ, так «a» не равняется 5.
(a*b >= c)   // эквивалентно ИСТИНА, так как выражение (2*3 >= 6) ИСТИНА.
(b+4 > a*c)  // эквивалентно ЛОЖЬ, так  как выражение (3+4 > 2*6) ЛОЖЬ.
((b=2) == a) // эквивалентно ИСТИНА.

Будь осторожен! Оператор = (один знак равенства) не является таким же, как оператор == (два равных знаки), первый из них является оператором присваивания (присваивает значение, стоящее справа переменной слева) и другая (==) является оператор равенства, который сравнивает ли оба выражения в обе стороны от него равны друг другу.

Таким образом, в последнем выражении ((b=2) == а), мы сначала присвоено значение 2 к b и затем мы сравнил его звучание с а , который также хранит значение 2, поэтому результат операции является значение true.


Условный оператор (?)

? – условный оператор (знак вопроса)

состояние? result1: result2

Если условие имеет значение true, выражение будет возвращать result1, если это не она будет возвращать result2.

Пример:


Оператор Запятая (,)

Оператор Запятая (,) используется для разделения двух или более выражений, которые включены, где ожидается только одно выражение.

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

Например, следующий код:

Будет вначале присвоить значение 3 – b переменной, а затем вычислено b + 2. Таким образом, в конце, переменная a будет содержать значение 5, переменная b будет содержать значение 3.


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


  • 12-BIT A/D CONVERTER WITH THRESHOLD DETECT на примере PIC24FJ128GA20412-BIT A/D CONVERTER WITH THRESHOLD DETECT на примере PIC24FJ128GA204
    Введение. 12-битный модуль A/D Converter является усовершенствованной версией 10-битного модуля, предлагаемого на некоторых устройствах PIC24. Оба модуля являются преобразователями, в своих ядрах, с последовательным приближением (SAR), в окружении ряда аппаратных …
  • Проект с использованием MCC часть 15Проект с использованием MCC часть 15
    EUSART – Универсальный асинхронный приёмопередатчик (УАПП, англ. Universal Asynchronous Receiver-Transmitter, UART) — узел вычислительных устройств, предназначенный для организации связи с другими цифровыми устройствами. … читать на вики. Внесем изменения в нашу схему, добавим выход …
  • Проект с использованием MCC часть 09Проект с использованием MCC часть 09
      Эта часть будет посвящена созданию практического проекта управления освещение. Тех задание: Два выхода управления ШИМ – светодиодным освещением. Две кнопки управления, каждая кнопка управляет, своим каналом, логика самая простая, нажимаем …
  • Дифференциальный терморегуляторДифференциальный терморегулятор
    Дифференциальный терморегулятор ch-3020 Назначение. Ch-c3020 представляет собой дифференциальный терморегулятор. Основное назначение солнечные системы горячего водоснабжения, а также вентиляционные системы управление притоком свежего воздуха. Контроллер позволяет работать пяти режимах. 1 – …
  • TM1650 драйвер LED семисегментного индикатораTM1650 драйвер LED семисегментного индикатора
    Китайский производитель Shenzhen Titan Micro Electronics Co., Ltd.  Выпускает широкую линейку драйверов управления светодиодными дисплеями, которые позволяют разгрузить микроконтроллер для основной работы, главная особенность этих драйверов не только в их …
  • CCP – модуль в режиме Compare на примере PIC18CCP – модуль в режиме Compare на примере PIC18
    CCP – модуль можно использовать в трех режимах: Capture – позволяет захватывать входной сигнал и определять его параметры (длительность или частоту). Дополнительно управлять внутренними модулями. Compare –  позволяет формировать импульсы …
  • Altium Designer – подготовка документации для производства и сборки печатных платAltium Designer – подготовка документации для производства и сборки печатных плат
    В процессе освоения Altium Designer много возникает вопросов по подготовке документации для производства плат, а также для её сборки. Altium Designer позволяет сделать все требуемые документы, хотя скажем откровенно, для …
  • Простой цифровой вольтметр ch-c3200Простой цифровой вольтметр ch-c3200
    В этой статье рассмотрен пример создания простого вольтметра постоянного тока на основе печатной платы ch-c0030pcb, а при возможности использования внешнего делителя и вольтметр переменного тока. Дан краткий принцип построения цифровых …
  • Цифровой спидометр для автомобиляЦифровой спидометр для автомобиля
     Универсальность печатной платы ch-c0030pcb позволяет создавать на её основе разнообразные устройства. Одним из таких устройств является электронный спидометр для автомобиля, в котором можно задать два компаратора скорости, например,  для города и …
  • NS108-5050-16bit от NewstarNS108-5050-16bit от Newstar
    Кто уже использует в своих проектах адресуемые светодиоды хорошо знакомы с такими как WS2812 и им подобные. Эти светодиоды для управления используют однопроводную шину. Из-за этого пропускная способность такой шины  …




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


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

Описание:


Пример:


Как и где посмотреть какие есть регистры в контроллере – смотрим в описании на контроллер.

Как эти регистры описываются для С?

Лезем в каталог C:\Program Files\HI-TECH Software\PICC-18\PRO\9.66\include\legacy (установки компилятора) и открываем файл, например, ppic18f452.h. В нем ищем раздел // Configuration bit values

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


Пример настройки контроллера pic18f452


Пример настройки для PIC18F46K22

Пример настройки регистров PIC16F877A

Пример для XC8 контроллер PIC16F1829


 Варианты альтернативной настройки регистров конфигурации для контроллера PIC18F25K20

Microchip MPLAB XC8 C Compiler V1.12

вариант 1

вариант 2

примеры общего вида конфигураций

для PIC10/12/16

для PIC18


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


  • TM1650 драйвер LED семисегментного индикатораTM1650 драйвер LED семисегментного индикатора
    Китайский производитель Shenzhen Titan Micro Electronics Co., Ltd.  Выпускает широкую линейку драйверов управления светодиодными дисплеями, которые позволяют разгрузить микроконтроллер для основной работы, главная особенность этих драйверов не только в их …
  • Акриловый корпус для платы ch-4000Акриловый корпус для платы ch-4000
    Плата ch-4000 подходит для монтажа в корпуса на дин рейку, но для домашней автоматики необходимо что-то другое, поэтому был разработан корпус из акрила который позволит создавать настольные и настенные устройства. Корпус состоит из …
  • Стабилизатор тока для светодиодов SN3350Стабилизатор тока для светодиодов SN3350
    SN3350 ближайший аналог ZXLD1350 Как собрать готовый вариант, читайте во второй части – http://catcatcat.d-lan.dp.ua/stabilizator-toka-na-sn3350-chast-2/ 40V  драйвер светодиодов с внутренним ключом  SN3350 – импульсный понижающий преобразователь, разработанный для того, чтобы эффективно управлять одним или группой параллельно-последовательно …
  • Стабилизатор тока на SN3350, часть 2Стабилизатор тока на SN3350, часть 2
    Если вам необходимо разработать устройство с применением мощных светодиодов, то никак не обойтись без применения стабилизатора тока. На настоящий момент стабилизаторы тока являются самым эффективным механизмом, для питания светодиода в течение всего его цикла …
  • HVLD модуль на примере PIC24FJ128GA204HVLD модуль на примере PIC24FJ128GA204
    HVLD модуль представляет собой простое устройство, для контроля напряжения питания микроконтроллера или внешнего напряжения (через делитель). Его задача при “выходе” напряжения за заданные пределы сформировать сообщение микроконтроллеру, что необходимо выполнить …
  • LED модуль P10C4V12LED модуль P10C4V12
    LED панели на обычных регистрах типа 74HC595. Они выпускаются как монохромные так двух и полно цветные, особенность, что они предназначены для текстовой информации и имеют один уровень яркости. Общую яркость панелей легко …
  • Проект с использованием MCC часть 08Проект с использованием MCC часть 08
    И так создадим проект в котором при помощи двух кнопок мы сможем управлять яркостью светодиодов. При использовании МСС у нас лафа полная, добрые дяди с Microchipa подготовили функции, которыи позволяет …
  • Проект с использованием MCC часть 02Проект с использованием MCC часть 02
    Когда мы запустили конфигуратор, самое главное понять, что с этим делать и как проверить, то что мы делаем работает или нет. Для начала настроим регистры конфигурации микроконтроллера и настроем тактовый генератор. …
  • MPLAB® Harmony – или как это просто! Часть 2.MPLAB® Harmony – или как это просто! Часть 2.
    Часть вторая – Первая программа на PIC32. Музыкальная тема к статье, слушаем: Для начала изучения PIC32 надо иметь или демоплату или самому её изготовить имея микроконтроллер. Начнем из трудоемкого варианта …
  • CCP модуль для декодирования ИК-кодов пультов ДУCCP модуль для декодирования ИК-кодов пультов ДУ
    Множество изготовителей для своих пультов дистанционного управления на ИК лучах используют принцип широтно-импульсной модуляции. В таких кодах бит единицы представляется импульсом большой длительности, а ноль импульсом короткой длительности. Внешний вид …



Преобразование проекта из MPLAB ® 8 в проект MPLAB ® X IDE


Шаг 1. Процесс преобразования, начинается с копирования папки проекта в MPLAB 8, в новую папку. Это необходимо сделать для того чтобы у вас была копия, потому что если вы преобразуете сам оригинал проекта, то возврат в 8 версию обратно корректно невозможен (это касается особенно комментариев написанных на кириллице).

Шаг 2. Начинаем с нажатия на illi_school_22, в открывшемся окне

illissi_school_30

выбираем преобразование, нажимает Next.

Шаг 3. Необходимо войти в каталог и выбрать имя файла нашего проекта.

illissi_school_31

нажимаем кнопку Browse (браузер)

illissi_school_32

выбираем файл проекта нажимаем кнопку Open.

illissi_school_33

нажимаем кнопку Next.

Шаг 4. Проверка выбранного контроллера.

illissi_school_34

проверяем модель контроллера, нажимаем кнопку Next

Шаг 5.

illissi_school_35

нажимаем кнопку Next

Шаг 6. Выбор отладчика.

illissi_school_36

выбираем отладчик, нажимаем кнопку Next

Шаг 7. Выбор среды программирования.

illissi_school_37

выбираем язык, нажимаем кнопку Next

Шаг 8. Изменение кодировки проекта.

illissi_school_38

в этом окне необходимо изменить кодировку проекта на windows-1251, это необходимо, чтобы ваши комментарии, написанные в кириллице, были читаемые. Нажимаем кнопку Next

illissi_school_39

Нажимаем кнопку Finish.

Шаг 9. Открытие файла проекта.

illissi_school_40

в окне проекты (Projects) сделайте двойной щелчок на файле проекта и он откроется

illissi_school_41

преобразование окончено, можно работать :).


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


  • Дифференциальный терморегуляторДифференциальный терморегулятор
    Дифференциальный терморегулятор ch-3020 Назначение. Ch-c3020 представляет собой дифференциальный терморегулятор. Основное назначение солнечные системы горячего водоснабжения, а также вентиляционные системы управление притоком свежего воздуха. Контроллер позволяет работать пяти режимах. 1 – …
  • PIC18 – System ArbitrationPIC18 – System Arbitration
    Системный арбитр. Разрешает доступ к памяти между выборами уровнями системы (т.е. Main, Interrupt Service Routine) и выбором периферийных устройств (т.е. DMA и Scanner) на основе назначенных пользователем приоритетов. Каждый из уровней …
  • Toyota Auto Fader – Модуль включения усилителяToyota Auto Fader – Модуль включения усилителя
    Toyota Auto Fader – Модуль включения усилителя. Часто автолюбители прибегают к замене штатного головного устройства на универсальное мультимедийное, в котором значительно расширены функциональные возможности. Если возникает желание оставить в работе …
  • Бегущие огни (ch-bo-36)Бегущие огни (ch-bo-36)
    Проект на PIC-микроконтроллере PIC16F648A. Количество каналов 36. Для индикации используется подключение по матрице 6х6. Расположение светодиодов в одну линию. Все эффекты написаны для возможности увеличения количества светодиодов. Рекомендуется увеличивать кратно …
  • LATINO – открытый проект ch-светомузыкиLATINO – открытый проект ch-светомузыки
      Проект построенный на некоторых принципах ch-светомузыка. Проект ознакомительный предназначен, для самостоятельного построения простого и эффективного светосинтезатора. Вывод осуществляется на ВОУ собранной на драйверах HL1606. Для этого была применена светодиодная …
  • ch-4060 – регулятор температуры и влажности на датчике DHT11/DHT22/AM2302ch-4060 – регулятор температуры и влажности на датчике DHT11/DHT22/AM2302
    На плате ch-4000 очень легко собрать устройство регулятора температуры и влажности. Датчик DHT11  самый недорогой вариант для создания такого устройства, правда точность его не велика, но для бытовых устройств он даже …
  • Audio-bluetooth modules BK8000L (noname)Audio-bluetooth modules BK8000L (noname)
    Еще один вариант, так сказать недоразумения Audio-bluetooth modules BK8000L (noname). Его отличительной маркировкой служат два отверстия в плате и надпись R2. Отличают его от модулей на чипе BK8000L, что у …
  • Дисплей KD035C-3A подключение и управлениеДисплей KD035C-3A подключение и управление
    Дисплей KD035C-3A производиться компанией SHENZHEN STARTEK ELECTRONIC TECHNOLOGY CO.,LTD Характеристики Параметр Спецификация Единицы измерения Размер дисплея 70.08(H)*52.56(V) (3.5inch) mm Тип дисплея TFT active matrix Цветовая гамма 65K/262K colors Разрешение 320(RGB)*240 dots …
  • MPLAB® Code ConfiguratorMPLAB® Code Configurator
    MPLAB ® Code конфигуратор (MCC) является свободно распространяемым плагином, это графическая среда программирования, которая генерирует бесшовный, легкий для понимания кода на Cи, чтобы вставить его в свой проект. Метки:MPLAB® Code …
  • Проект с использованием MCC часть 03Проект с использованием MCC часть 03
    Первым делом перенастроим регистры конфигурации, следующим образом: Отключим выход генератора (CLKOUT function is disabled. I/O function on the CLKOUT pin) Включим сторожевой таймер (WDT enabled) После этой настройки мы должны …



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


Все начинается с момента создания проекта. Так как его создать?

Загрузим MPLAB X IDE.

Шаг 1. Выберите File New Project из меню или щелкните значок нового проекта illi_school_22 на панели инструментов. Т.е так

illi_school_19

или так

illi_school_18

а можно и так (кликаем правой кнопкой мыши и отрываем контекстное меню)

illi_school_20

или давим Ctrl+Shift+N.

Шаг 2. Выбор проекта

illi_school_21

Выберите из списка CategoriesMicrochip Embedded, а затем из списка Projects – Standalone Projects. Нажмите кнопку Next >, когда закончите.

Шаг 3. Выбор контроллера.

illi_school_23

используя выпадающие окна Семейство (Family) и Устройство (Device) выберите свой целевой PIC микроконтроллер. Нажмите Next > кнопку, когда закончите.

Шаг 4. Выбор заголовка.

illi_school_24

Шаг 5. Выбор инструмента отладки.

Обратите внимание, что если используете устройства отладки одновременно c MPLAB 8, то вам необходимо будет переключить (с помощью MPLAB driver switcher) драйверы устройств.

illi_school_25

Если при выборе отладчика вы увидите надпись “несовместимый драйвер”, отмените создание проекта, выйдите из MPLAB X, переключите драйвер и начните все заново.

illi_school_26

Выберите инструмент для отладки устройства. Если у вас нет аппаратного инструменты отладки, то симулятор является хорошим выбором.

Нажмите Next > кнопку, когда закончите.

Шаг 6. Выбор языка программирования.

illi_school_27

 Выберите необходимый инструмент для сборки (C компилятор или ассемблер для вашего проекта). Нажмите Next > кнопку, когда закончите.

Шаг 7. Имя проекта и место хранения.

illi_school_29

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

Обратите внимание на кодировку файла проекта. Нажмите кнопку Finish кнопку, для окончания.

Создание рабочего файла проекта main, правой кнопкой мыши выбираем на папке Source Files контекстное меню

illi_school_29a

задаем имя файла

illi_school_31

В тоге мы получим заготовку:

illi_school_30

Для продолжения надо выбрать из заготовок (Заготовки для программ на Си)

 



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


  • MCC PIC24 – модуль OUTPUT COMPARE – в режиме генератора звуковых сигналовMCC PIC24 – модуль OUTPUT COMPARE – в режиме генератора звуковых сигналов
    При проектировании простых устройств автоматики, часто необходимо иметь механизм звукового оповещения. Самый верхний уровень, это формирование голосовых сообщений, но об этом, как то по позже… В самом примитивном варианте можно …
  • ch-светомузыка от теории до реализацииch-светомузыка от теории до реализации
    Сразу оговоримся технология или теория ch-светомузыки, это постоянно развивающийся процесс и то что будет сказано сегодня завтра может быть опровергнуто и считаться ошибочным. Назовем само решение проблемы автоматического преобразования или …
  • Altium Designer – подготовка документации для производства и сборки печатных платAltium Designer – подготовка документации для производства и сборки печатных плат
    В процессе освоения Altium Designer много возникает вопросов по подготовке документации для производства плат, а также для её сборки. Altium Designer позволяет сделать все требуемые документы, хотя скажем откровенно, для …
  • OLED RET012864E/REX012864JOLED RET012864E/REX012864J
    RET012864E/REX012864J ОЛЕД индикатор производитель Raystar-Optronics приобретался в http://www.microchip.ua/ к сожалению никакой информации на сайте поставщика нет. Поэтому решил работу с этой версией индикатора на драйвере SSD1305 предоставить на своем сайте. Так как есть ошибки …
  • Дифференциальный терморегуляторДифференциальный терморегулятор
    Дифференциальный терморегулятор ch-3020 Назначение. Ch-c3020 представляет собой дифференциальный терморегулятор. Основное назначение солнечные системы горячего водоснабжения, а также вентиляционные системы управление притоком свежего воздуха. Контроллер позволяет работать пяти режимах. 1 – …
  • Проект с использованием MCC часть 09Проект с использованием MCC часть 09
      Эта часть будет посвящена созданию практического проекта управления освещение. Тех задание: Два выхода управления ШИМ – светодиодным освещением. Две кнопки управления, каждая кнопка управляет, своим каналом, логика самая простая, нажимаем …
  • Просто о структурах и объединениях в СиПросто о структурах и объединениях в Си
    Какие задачи нам позволяют решать структуры и объединения? Для разработчика встроенных систем эффективность и компактность кода всегда на первом месте. Если программировании на Ассемблере ты сам определяешь как и где …
  • DS18B20 – удаленный контроль температурыDS18B20 – удаленный контроль температуры
    Плата в корпусе Датчики температуры DS18B20 Схема подключения Вывод данных на ПК Установка дополнительных резисторов Назначение выводов This jQuery slider was created with the free EasyRotator for WordPress plugin from …
  • MTouch® Модуль Емкостной Библиотеки для MPLAB®X Code Configurator (MCC)MTouch® Модуль Емкостной Библиотеки для MPLAB®X Code Configurator (MCC)
    Введение MTouch ® Модуль Емкостной Библиотеки для MPLAB ® X Code Configurator (MCC) позволяет быстро и легко генерировать решение кода на  Cи для емкостной сенсорной кнопки, датчика приближения и слайдера. В записи нет …
  • Простой цифровой вольтметр ch-c3200Простой цифровой вольтметр ch-c3200
    В этой статье рассмотрен пример создания простого вольтметра постоянного тока на основе печатной платы ch-c0030pcb, а при возможности использования внешнего делителя и вольтметр переменного тока. Дан краткий принцип построения цифровых …



С чего начать?


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

schna


  1. Установка MPLAB@X и компилятора Си (загрузить последние версии)
  2. Создание проекта
  3. Преобразование проекта из MPLAB ® 8 в проект MPLAB ® X IDE
  4. Компоновка окон
  5. Создание первой рабочей программы
  6. Первый проект для самых маленьких (практические примеры)
  7. Настройка регистров конфигурации контроллера.
  8. Настройка регистра ID идентификатора контроллера
  9. Заголовки h
  10. Сдвиг переменной
  11. Битовые операторы (&,|,^,~,<<,>>)
  12. Логические операторы (||, &&, !, ==, !=, >, <, >=, <=)
  13. Условный оператор (?)
  14. Оператор Запятая (,)
  15. Операторы присваивания (=)
  16. Арифметические операторы (+,-,*,/,%)
  17. Составные операторы присваивания (+=, -=, *=, /=, %=, >>=, <<=, &=, ^=, |=)
  18. Операторы уменьшения и увеличения
  19. delay формирование задержки
  20. Оператор – sizeof()
  21. Приоритет операторов
  22. Подготовка данных для EEPROM (стандартные макросы)
  23. Запись и чтение из EEPROM памяти (стандартные макросы и функции)
  24. Запись и чтение из Flashпамяти программ
  25. Работа с много байтными переменными
  26. Формат данных
  27. Тип данных – бит
  28. Битовые операции (установка, сброс и инвертирование бита)
  29. Тестирование бита в байте
  30. 8 – битные целые переменные
  31. 16 – битные целые переменные
  32. 32 – битные целые переменные
  33. Числа с плавающей запятой
  34. Статистические переменные
  35. Структуры и строки
  36. Битовые поля
  37. Строковые поля в ОЗУ и ПЗУ
  38. Запись констант
  39. Квалификаторы типа const и volatile
  40. Специальные квалификаторы типов
  41. Указатели
  42. Поддержка прерываний
  43. Функции
  44. Передача аргументов в функцию
  45. Возвращение результата из функции
  46. Вызов функции
  47. Управление запуском программы
  48. Директивы компилятора
  49. Стандартные функции ввода-вывода
  50. Комментарии в Си
  51. Использование ассемблера #asm, #endasm and asm()
  52. Совмещение кода C и Assembler
  53. Использование переменных совместно в С и ассемблере
  54. Применение структур для создания флагов управления
  55. Преобразование форматов и использование функции rand()
  56. Структура простой программы
  57. Алгоритм использования импульсов от кнопки для подсчета импульсов
  58. Программа с двумя кнопками управления
  59. Оператор IF else
  60. Оператор множественного выбора switch case break default
  61. Функция KLAVA.
  62. Сторожевой таймер
  63. Вставка дополнительного файла в программу
  64. Подключение дисплея платы PICDEM2 Plus
  65. Функции для работы с LCD HD44780
  66. Тестовая программа вывода на дисплей символов и строк
  67. Программа часов реального времени
  68. Оператор dowhile
  69. Измерение температуры
  70. Программа для работы до 16 датчиков DS18B20 на шине
  71. Оператор break
  72. Графические индикаторы на драйвере UC1601S
  73. I2C
  74. Опция FILL
  75. Конфугурация для PIC16
  76. Очистка памяти данных для PIC16
  77. Динамическия индикация на семисегментных светодиодных дисплеях
  78. Преобразование 16 бит двоичного чила в десятичное bin_dec()
  79. Макросы задержки _DELAY , __DELAY_MS,  __DELAY_US
  80. … … …
  81. продолжение следует…

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


 Первый шаг – где, это все взять и как его установить.

Для начала процесса обучения, необходимо установить интегрированную среду разработки MPLAB. На настоящий момент есть две версии MPLAB® X  и MPLAB IDE. Все последнюю информацию надо смотреть на сайте Microchip. Мы начнем привыкать к новой среде  MPLAB X. Всегда будем считать, что все новое лучше старого.

Установка.

 

С начала надо загрузить последнюю версию с сайта Microchip или по ниже указанным ссылкам (последнии версии):

Windows (x86/x64) – MPLAB® X IDE

Linux 32-Bit and Linux 64-Bit (Requires 32-Bit Compatibility Libraries) – MPLAB® X IDE

Mac (10.X) – MPLAB® X IDE

Далее запускаем установку MPLAB X.

school_01

кликаем на файле

school_02

нас предупредят (как минздрав), жмем Запустить

school_03

и пошло и поехало

school_04

это окно, так на всякий случай если передумаем, жмем Next

school_05

теперь, пугают безответственной ответственностью, мы покорно соглашаемся

school_06

и быстро жмем Next, чтобы не передумать.

school_07

предложат побаловаться с директорий инсталяции

school_08

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

school_09

после копирования, выполниться инсталляция

school_11

далее напугают каким-то переключателем, при этом не оставив нам выбора

school_13

и в конце концов вы обнаружите, что все окончено, успешно :)

school_14

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

school_15


Далее необходимо проинсталлить компиляторы С. Посетите раздел:

 


Описания  

MPLAB® XC8 User Guide
MPLAB® XC16 User Guide
MPLAB® XC32 User Guide

Install & License a Compiler 

Загрузка компиляторов Си (последние версии)

XC8 XC16 XC32
Windows Windows Windows
Linux Linux Linux
OS X OS X OS X
Read Me Read Me Read Me

 Установка компиляторов проблемы не составит, надо только со всем соглашаться, поэтому особого интереса не вызывает. Интерес может вызвать, только как протестировать режим PRO некоторое неограниченное время :), но об этом более подробно на форуме.

Запустим наш MPLAB X, на экране вы должны увидеть, что то типа этого:

school_17

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

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

Поэтому, что бы ничего не мешало, (как плохому танцору), начнем с Си.



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


  • MPLAB® Harmony – или как это просто! Часть 2.MPLAB® Harmony – или как это просто! Часть 2.
    Часть вторая – Первая программа на PIC32. Музыкальная тема к статье, слушаем: Для начала изучения PIC32 надо иметь или демоплату или самому её изготовить имея микроконтроллер. Начнем из трудоемкого варианта …
  • PIC32MZ – прерывания (заметки)PIC32MZ – прерывания (заметки)
    Виды формирования запоминая контекста при входе в прерывания. Компилятор представляет три варианта AUTO – когда запоминания места возврата из подпрограммы возложено на программу, т.е все создается программно. Этот метод является …
  • Просто о структурах и объединениях в СиПросто о структурах и объединениях в Си
    Какие задачи нам позволяют решать структуры и объединения? Для разработчика встроенных систем эффективность и компактность кода всегда на первом месте. Если программировании на Ассемблере ты сам определяешь как и где …
  • Контроллер управления светодиодным освещением с дистанционным управлениемКонтроллер управления светодиодным освещением с дистанционным управлением
    Все активнее светодиоды входят в нашу жизнь. Всё эффективнее становится светодиодное освещение. Всё ниже опускаются цены. Всё больше появляется возможностей получения сочных цветов, простоты в управлении. Всё чаще можно увидеть …
  • TM1650 драйвер LED семисегментного индикатораTM1650 драйвер LED семисегментного индикатора
    Китайский производитель Shenzhen Titan Micro Electronics Co., Ltd.  Выпускает широкую линейку драйверов управления светодиодными дисплеями, которые позволяют разгрузить микроконтроллер для основной работы, главная особенность этих драйверов не только в их …
  • AD9833 – Programmable Waveform Generator – part twoAD9833 – Programmable Waveform Generator – part two
    Прошло время и появилась тема, что-бы закончить проект AD9833 – Programmable Waveform Generator. Приехали печатные платы. В этот раз я печатные платы заказывал в https://jlcpcb.com/ делал это в первый раз …
  • MCC – K42 – настройка модуля DMAMCC – K42 – настройка модуля DMA
    MCC – в версии v.3.95.0 и начиная ядра 4.85.0 конфигуратор предоставляет графический интерфейс для настройки модуля DMA. Для начала: Посмотреть какая версия МСС можно в закладке версии, если у вас …
  • Цифровой тахометр для автомобиля CH-С3300Цифровой тахометр для автомобиля CH-С3300
     Тахометр Ch-С3300 предназначен для индикации и контроля оборотов, времени работы и максимальных оборотов развиваемых двигателем во время поездки. Датчиком может использоваться как обычный контактный прерыватель или выход датчика холла автомобиля …
  • JDY-62A Audio bluetooth moduleJDY-62A Audio bluetooth module
    Простой модуль для простого аудио блютуса. Встроенные подсказки на английском языке. Модуль включён, режим муте – после подачи питания. Контроль разряда батареи предупреждение что батарея разряжена и необходима подзарядка. При …
  • Проект с использованием MCC часть 01Проект с использованием MCC часть 01
    Для изучения MCC я выбрал простой контроллер PIC16F1509. Выбор его был обусловлен богатой новой периферией которую можно изучить. Для начала была собрана схема на макетной плате Внешний вид собранной схемы …



MPLAB ® X


 MPLAB ® X интегрированная среда разработки (IDE)

MPLAB®X представляет собой программное обеспечение, которое работает на ПК (под управлением Windows ® , Mac OS ® , Linux ® ) и предназначено для разработки приложений для микро и цифровых сигнальных контроллеров корпорации Microchip. MPLAB®X называется интегрированной средой разработки (IDE), поскольку она обеспечивает единую интегрированную “окружающую среду” для разработки кода для встроенных систем.

MPLAB® X интегрированная среда разработки, вносит много изменений в цепочку средств разработки микроконтроллеров PIC®. В отличие от предыдущих версий MPLAB®, которая была абсолютно закрытым проектом, MPLAB® X основан на IDE NetBeans с открытым исходным кодом от Oracle. Этот путь развития позволил очень быстро и легко добавить новые требуемые функций и в то же время предоставил расширяемую архитектуру. Что дало возможность включать еще больше новых функций в будущем.


MPLAB ® X Ссылки
MPLAB® X Integrated Development Environment (IDE)

 



Первый проект для самых маленьких


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

PIC10F222 / PIC10F320/322

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

pic10_01

Контроллер имеет 4 порта ввода вывода, 3 двунаправленных, т. е. могут как выводить информацию из контроллера, так и получать информацию из вне. Один порт, который может только работать на ввод данных.

Восьми битный АЦП работы с аналоговыми сигналами. Он позволяет сигналы в диапазоне 0-5 вольт преобразовывать в числовое значение в диапазоне от 0 до 255.

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

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

Сторожевой таймер – для контроля работы программы.

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

К сожалению для обучения необходимо наличие программатора. Рекомендую использовать PICKIT-2, PICKIT-3.

Схема примера для обучения.

pic10_02

 Резистор R1 для тестирования работы АЦП контроллера. Кнопки PB1 и PB2 предназначены для проведения опытов по вводу цифровых данных. Светодиоды LD1 и LD2 для индикации выполнения запрограммированных функций.

И так первое собираем схему на демо-плате.

Второе создаем проект.

Загружаем MPLAB®X.

pic10_03

Создаем новый проект

pic10_04

Выбираем тип проекта

pic10_05

Выбираем контроллер

pic10_06

Нажать продолжить

pic10_07

pic10_08

Выбираем компилятор для проекта.

pic10_09

Придумаем имя проекта, а также создадим каталог для проекта, выберем кодировку windows-1251.

pic10_10

Создаем рабочий файл – с именем main.

pic10_11

и вот оно начало

pic10_12


Прошло время и вышел на первое место PIC10F320/322 это уже полноценный микроконтроллер изучая который можно получить практически полное понятие о работе и функциях микроконтроллера.

Все примеры написаны на Microchip MPLAB XC8 C Compiler (Free Mode) V1.30

Функциональная схема микроконтроллера

cat_chem_ob_00

Еще раз с чего начинаем, как подключить микроконтроллер к питающему напряжению и как подключить к программатору:

cat_chem_ob_01

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

 Первое на что начинающему электронщику надо обратить внимание, для питания необходимо взять пятивольтовый стабилизатор для нашего примера подойдет 78L05. Добавьте последовательно диод для защиты от неправильного подключения питания, это спасет от первых ошибок. Основная проблема по работе с таким микроконтроллером это его габариты, второе, что для тренировки необходимо выполнить условие внутрисхемного программирования. Для подключения внешних устройств к микроконтроллеру, необходимо учитывать, что должны быть подключены через резисторы с сопротивлением не ниже 680 ом. При первом включении проверьте напряжение на выходе стабилизатора должно быть 5 вольт и замерьте ток потребления, он не должен превышать нескольких миллиампер.

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

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

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


Этап первый конфигурирование:

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

 Кратко можно понять из комментарием по работе каждого бита конфигурации. В будущем мы их будет менять, для изменения функций микроконтроллеры.

Следующий этап это настроить работу основной модуль это тактовый генератор:

cat_chem_ob_02

В таком маленьком контроллера, такой функционально навороченный генератор. По функциональной схеме видно, что можно использовать для тактирования микропроцессора как внутренний генератор, так и внешний источник тактовых импульсов, эта функция переключается в регистре конфигурации бит FOSC. Если мы выбираем внутренний генератор, то можно выбрать широкий диапазон частот. Нам необходимо учитывать только одно, если нет необходимости в быстроте обработки данных, то выбираем максимально низкую частоту для экономии потребления. Хочу оговориться в микроконтроллере есть константа калибровки частоты внутреннего генератора и необходима его загрузка, но эту функцию выполнить компилятор Си автоматически. Для нашего проекта выполним настройку (она также будет изменяться в зависимости от необходимости):

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

cat_chem_ob_03

 Таймер тактируется от собственного генератора и имеет предделитель для настройки периода срабатывания. Мы настроим на максимальное время 256 секунд. После коррекции программа примет вид

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

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

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

Текст программы для загрузки [wpdm_file id=301 template=”link-template-calltoaction3.php”] функция программы нажимаем кнопку – светодиод загорается.


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

Логика работы следующая:

  1. Проверяем нажатие кнопки, т.е. проверяем уровень.
    1. Если уровень не соответствует нажатой кнопки пропускаем функцию и сбрасываем флаг  кнопка нажата.
    2. Если уровень соответствует нажатой кнопке – выполним ожидание 10 мСек. которое необходимо для успокоения переходных помех при нажатии тактовый кнопки.
  2. Опять проверяем уровень на таковой кнопки
    1. Если уровень высокий пропускаем функцию, считаем, что это просто помеха была
    2. Если уровень низкий проверяем состояние флага  кнопка нажата
  3. Если бит высокий, то мы считаем, что кнопка уже нажата и выполняется удержание, функция пропускается
  4. Если бит низкий то это значит, что кнопка еще не нажималась и необходимо активировать переключение светодиода
  5. Выполняем переключение и установку бита кнопка нажата, для блокировки повторения выполнения переключения если при следующем цикле клавиша будет удерживаться.

Текст программы главного цикла

Но для реализации этого фрагмента необходимо описать следующие параметры:

#define _XTAL_FREQ 16000000 // тактовая частота – указать компилятору рабочую тактовую частоту

bit NAG; // флаг кнопки нажатия – описать флаг

Скачать программу [wpdm_file id=302 template=”link-template-calltoaction3.php”]


Теперь заставим светодиод мигать, для этого будем использовать макросы задержки _delay(х), __delay_ms(х), __delay_us(х).

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

cat_chem_ob_04

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

При такой настройке мы получим прерывание с частотой 61,035 Гц  (61=4000000/256/256).

Настройка прерываний

Разрешим прерывание от таймера и разрешим глобальные прерывания.

 Сам текст функции прерывания

 В этой функции переменой timer_sek выполняется функция дополнительного делителя. При значении 30 время выполнения составляет приблизительно 0,5 секунды.

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

Файл для загрузки [wpdm_file id=303 template=”link-template-calltoaction3.php”]


Измерение температуры при помощи модуля индикатора температуры

cat_chem_ob_05

Для этого необходимо включить два модуля в работу

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

Файл примера для загрузки [wpdm_file id=304 template=”link-template-calltoaction3.php”]


Пример простая “мигалка”. Используется для управления три кнопки, в две предназначенные задания частоты мигания, третья для включения выключения мигания.

Файл для загрузки [wpdm_file id=306 template=”link-template-calltoaction3.php”]


Для дальнейшего развития, читайте проекты:

Самый простой диммер для светодиодного освещения
Гаджеты для домашней автоматики – Емкостной сенсор
Гаджеты для домашней автоматики – Датчик приближения
Гаджеты для домашней автоматики – Датчик движения

Датчик приближения от Румена Желева



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


  • Обновление ESP8266 c ESPFlashDownloadTool_v3.6.3Обновление ESP8266 c ESPFlashDownloadTool_v3.6.3
    Технология обновления следующая: Загружаем программу со страницы espressif.com. Разархивируем. Где находятся файлы, для прошивки? Заходим в каталоги Подключаем по схеме в статье WiFi ESP8266 (замыкаем BT2, перемычка). Запускаем программу, откроется два …
  • ESP32-первое знакомствоESP32-первое знакомство
    Музыкальная тема к статье, слушаем: Настало время познакомиться c ESP32 и для меня, для этого я приобрел в ГАММЕ отладочную плату с модулем ESP-WROOM-32 (ESP32-DevKitC). Первая задача, как он подключается, …
  • MPLAB® Harmony – или как это просто! Часть 1.MPLAB® Harmony – или как это просто! Часть 1.
    Часть первая – Установка Гармонии. Музыкальная тема к статье, слушаем: В начале запуска нового проекта и выбора микроконтроллера стоит задача правильно его сконфигурировать, прежде чем перейти к реализации самой задачи. …
  • MCC PIC24 – модуль OUTPUT COMPARE – в режиме генератора звуковых сигналовMCC PIC24 – модуль OUTPUT COMPARE – в режиме генератора звуковых сигналов
    При проектировании простых устройств автоматики, часто необходимо иметь механизм звукового оповещения. Самый верхний уровень, это формирование голосовых сообщений, но об этом, как то по позже… В самом примитивном варианте можно …
  • BMP280 – температура и атмосферное давление – учебный проектBMP280 – температура и атмосферное давление – учебный проект
    Учебный проект на PIC32 и светодиодной панели P5 (2121)-168-6432-80 (32*64). Проект позволяет ознакомиться с простой графикой и с чтением давления и температуры с датчика BMP280. Для тестирования необходимо собрать следующую …
  • Ссылки на интересные источникиСсылки на интересные источники
    Сбор 3D моделей от André L’Hérault конденсаторы, резисторы, индуктивности dropbox IPC-SM-782 Surface Mount Design and Land Pattern Standard Видео уроки по Altium designer Alexey Sabunin https://www.youtube.com/channel/UCG7N5CqXpyK8nQjr1EmMgng Сергей Булавинов https://www.youtube.com/channel/UCISAMXRnN_Qw9UTjUwZI1Jw Robert Feranec https://www.youtube.com/user/matarofe Самый быстрый, …
  • MPLAB® Harmony – или как это просто! Часть 2.MPLAB® Harmony – или как это просто! Часть 2.
    Часть вторая – Первая программа на PIC32. Музыкальная тема к статье, слушаем: Для начала изучения PIC32 надо иметь или демоплату или самому её изготовить имея микроконтроллер. Начнем из трудоемкого варианта …
  • HVLD модуль на примере PIC24FJ128GA204HVLD модуль на примере PIC24FJ128GA204
    HVLD модуль представляет собой простое устройство, для контроля напряжения питания микроконтроллера или внешнего напряжения (через делитель). Его задача при “выходе” напряжения за заданные пределы сформировать сообщение микроконтроллеру, что необходимо выполнить …
  • ESP8266  процедура получение данных даты и времени от серверов точного времени.ESP8266 процедура получение данных даты и времени от серверов точного времени.
    Эта функция доступна уже в версии 1.6.1. Для многих приложений, необходимо часы реального времени,  если в вашем проекте есть модуль WiFI ESP8266, то легко можно сделать следующим образом. Процедура описывает …
  • MPLAB® Code ConfiguratorMPLAB® Code Configurator
    MPLAB ® Code конфигуратор (MCC) является свободно распространяемым плагином, это графическая среда программирования, которая генерирует бесшовный, легкий для понимания кода на Cи, чтобы вставить его в свой проект. Метки:MPLAB® Code …