Pic16F628A программирование через com: Осваиваем простейший микроконтроллер PIC. Часть 1 / Хабр

Содержание

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

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

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

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

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

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

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

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

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


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

Компилятор


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

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

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

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

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

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

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

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

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

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


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

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

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

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


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

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


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

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

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

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

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

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

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

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

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

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

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

Прошивка

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

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

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

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

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

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

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

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

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


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

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

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

Паяем…


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

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

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

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

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

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

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

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

Program All, затем Verify All

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

Результат


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

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

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

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


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

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

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

Микроконтроллеры pic для начинающих: схемы, программирование

Atmel Studio

Интегрированная среда разработки (IDE) от компании Atmel для разработки приложений под микроконтроллеры ARM Cortex-M и AVR. Freeware

AVRDUDE

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

WinAVR

Мощная среда разработки с открытым исходным кодом, созданная с целью написания программ для микроконтроллеров серии AVR от компании Atmel. Freeware

BASCOM-AVR

Среда разработки программного кода для микроконтроллеров серии AVR компании Atmel на языке, подобном стандартному Бейсику. Freeware (бесплатная с ограничением на код 4 кБ) и Shareware

CodeVisionAVR

IDE для AVR микроконтроллеров. Из основных достоинств CodeVisionAVR можно отметить то, что он не слишком сложен для самостоятельного освоения, поддерживает все многочисленное семейство микроконтроллеров AVR, формирует емкий и результативный программный код. Платная, есть бесплатная Evaluation-версия с ограничением на код 4 кБ.

VMLAB

Инструмент для разработки и отладки программного кода, а также моделирования работы радиотехнических устройств на базе AVR микроконтроллеров. Freeware

MPLAB

Единая бесплатная интегрированная среда разработки для контроллеров производства Microchip

MPIDE

Среда разработки, выполненная на базе открытой системы Arduino IDE и предназначенная специально для контроллеров PIC32 от компании Microchip Technology.

WinPic800

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

PICPgm

Простое программное обеспечение для прошивки PIC-микроконтроллеров, отличающееся стабильностью, качеством и скоростью программирования. Freeware

CooCox CoIDE

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

Keil uVision

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

IAR Embedded Workbench

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

Flowcode

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

Algorithm Builder

Бесплатная графическая среда программирования для разработки приложений под микроконтроллеры с архитектурой AVR от отечественных разработчиков.

MikroC

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

mikroPascal

Мощная среда разработки приложений на языке Паскаль для различных архитектур микроконтроллеров. Программа платная. Есть бесплатная версия с ограничениями на размер кода (до 4096 байт).

mikroBasic

Среда разработки программ на языке Бейсик для микроконтроллеров различных производителей. Программа платная от 199$. Есть бесплатная версия с ограничениями на размер кода (до 4096 байт).

MicroCode Studio Plus

Программа для создания и отладки кода, написанного на языке программирования BASIC, под PIC-микроконтроллеры. Программа платная 50$. MicroCode Studio – облегченный, бесплатный вариант с ограничением на кол-во строк кода.

IC Prog

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

Pony Prog 2000

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

SinaProg

Графическая оболочка для программы AVRdude, включающая в себя простой и функциональный AVR fuse-калькулятор. Freeware.

AVR8 Burn-O-Mat

Графическая оболочка для популярной программы AVRDUDE, использующейся при прошивке микроконтроллеров компании Atmel. Freeware.

Khazama AVR Programmer

Небольшая программа, созданная с целью быстрой прошивки микроконтроллеров Atmel AVR. Freeware.

UniProf

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

eXtreme Burner — AVR

Бесплатное программное обеспечение, предназначенное для прошивки AVR-микроконтроллеров.

Code Composer Studio

Интегральная среда проектирования, предназначенная для создания программного обеспечения, использующегося в процессорах и микроконтроллерах компании Texas Instruments Incorporated. Программа платная, бесплатная версия CCS-FREE с рядом ограничений.

TivaWare

Набор высококачественных, полноценных библиотек для контроллеров семейства TIVA от Texas Instruments. Freeware.

FastAVR

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

Atollic TrueSTUDIO

Интегрированная среда разработки программ для ARM-процессоров, включающая в себя GNU компилятор и отладчик. Среда разработки платная, но есть бесплатная версия TrueSTUDIO Lite с рядом ограничений.

Sourcery CodeBench

Самодостаточная интегрированная среда разработки, предназначенная для создания приложений на C/C++ для IA32, ColdFire, Power, MIPS, ARM и некоторых других архитектур микроконтроллерных устройств. Платная 400$ (есть 30-дневная ознакомительная версия)

CODESYS

Программно-инструментальный комплекс, основанный на стандарте IEC 61131-3 и предназначенный для программирования промышленных контроллеров и компьютеров. На русском языке. Freeware.

Flash Magic

Бесплатное приложение для программирования микроконтроллеров компании NXP Semiconductors

STEP 7-Micro/WIN

Простое и удобное программное обеспечение, созданное для работы с программируемыми контроллерами серии SIMATIC S7-200 компании Siemens AG. Платная.

PIC Simulator Studio

многофункциональное и высокопроизводительное программное обеспечение, предназначенное в первую очередь для симуляции в реальном времени цифровых и аналого-цифровых схем, ядром которых выступает микроконтроллер PIC micro. Бесплатное

PIC Simulator IDE

Программа, предназначенная для отладки кода контроллеров microPIC компании Microchip Technology. Платная от 39 евро (есть ознакомительная версия с ограничениями)

4D Workshop IDE

Специализированная программная среда, предназначенная для работы с микропроцессорами в графических контроллерах и готовых дисплейных модулях компании 4D Systems. Freeware.

Программирование микроконтроллеров семейства PIC начинающим

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

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

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

Рассмотрим этот важный момент – как программировать контроллер на примере широко известной серии ПЛК (PLC — Peripheral Interface Controller): продукта компании Microchip Technology Inc.

Общий взгляд на устройства ПЛК

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

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

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

  • память,
  • входные порты,
  • выходные порты.

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

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

Макрос языка высокого уровня — это инструкция, которая является сокращённой строкой, содержащей несколько инструкций. Запись программы с повторяющимися действиями (схожестью инструкций) при использовании макросов значительно сокращается.

PIC18F4550

Программируемые микроконтроллеры используются в составе современной электроники повсеместно. Умение работать с этим функциональным инструментом открывает широкие горизонты

Эффективность программы на основе макросов столь же эффективна, как и запись программы на языке «C». Компилятор отвечает за создание соответствующих подстановок для генерации кода, который передаётся в память программы микропроцессора или микроконтроллера.

Программирование широко распространённых микроконтроллеров PIC12 / PIC16

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

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

Помимо рабочего напряжения, микроконтроллерам требуется ещё три сигнала:

  1. Программируемое напряжение (около 13В).
  2. Таймер программирования (ICSPCLK).
  3. Данные (ICSPDAT).

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

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

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

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

ISD1700

Схема принципиальная упрощённого программатора микроконтроллеров серии PIC и обозначенные линии подключения интерфейсов RS232 / ISSP

Внутрисхемное программирование микроконтроллера PIC

Разъём внутрисхемного программирования (ICSP) предоставляет возможность запрограммировать микроконтроллер непосредственно в рамках прикладной схемы. Этот вариант видится особенно полезным в домашних условиях или в другой не специальной среде, где по каким-либо причинам требуется повторное изменение программированием PIC и тестирование схемы.

Применение разъёма ICSP позволяет избежать рисков при перемещении микроконтроллера PIC между различными гнездами (например, в случае изгиба контактов или воздействия на микроконтроллер электростатических разрядов). Также работа с разъёмом ICSP обеспечивает экономию времени.

PIC K150 ICSP

Вот такой вариант ICSP соединителя вполне подойдёт для подключения линий связи на случай выполнения программирования микроконтроллера серии PIC12/PIC16

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

Основные условия программирования:

  • время переключения напряжения программирования «0 – 13В» составляет несколько микросекунд;
  • полный размах напряжения сигналов таймера и данных достигается в течение одной микросекунды;
  • вывод сигнала PGM остаётся низким всё время программирования.

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

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

Не рекомендуется подключать активные цепи к линии внешнего (основного) сброса (MCLR – Microcontroller Line Reset).

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

Рекомендуется в цепь резистора включать конденсатор небольшой ёмкости — менее 100 пФ со смещением на землю (вывод GND).

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

TL866II USB

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

Этот вариант может иметь место, если схема содержит собственный стабилизатор напряжения питания и оснащается развязывающим конденсатором большой ёмкости. Модуль программатора, предназначенный под напряжение питания 3,3В, не в состоянии заряжать конденсатор достаточно быстро, а для программирования PIC требуется не менее 4,5В.

Между тем вариант изолирования можно исключить, если в схеме используется диод Шоттки. Чтобы удерживать вывод перевода микроконтроллера в режим программирования (PGM) на низком уровне, рекомендуется подключать этот вывод к земле через резистор номиналом от 2,2 кОм до 10 кОм.

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

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

Для обеспечения повторного программирования микроконтроллера PIC в условиях напряжения питания ниже 4,5В, область памяти необходимо отключить от защиты. Это обусловлено применением «Chip Erase», единственного способа удаления кода или защиты данных, которого требуют практически все микроконтроллеры PIC с напряжением питания выше 4,5В.

Сигналы ICSP соответствующие контактам PIC 12Fxxx / 16Fxxx

Число ниже аббревиатуры сигнала соответствует выходу разъема ICSP модуля программатора. Для использования модуля с тестовыми платами сторонних производителей требуется адаптер.

АДАПТЕР

Следует обратить внимание: разъём ICSP этого модуля программатора имеет различный порядок сигналов по сравнению с другими программаторами микроконтроллеров PIC

Следующие схемы показывают, как подключать сигналы программирования к микроконтроллерам PIC 12Fxxx / 16Fxxx:

ARDUINO UNO

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

Фирменные средства программирования

Существует солидная группа фирменных программаторов для микроконтроллеров семейства PIC. Наиболее известные аппаратные средства:

  • REAL ICE
  • Pickit 1-2-3
  • IC PROG
  • ICD 2-3-4

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

На основе информации: Uolsinectis

PIC Урок 1.

Знакомство с семейством PIC
  • Урок 1
  • Наконец-то сегодня нашлось время познакомить вас с ещё одним семейством микроконтроллеров – это микроконтроллеры PIC.
  • Данные микроконтроллеры также являются очень известными, устанавливаются во многие устройства и давно уже снискали у радиолюбителей очень сильный интерес.
  • Разработчиком данного семейства является компания Microchip, которая также ялвяется очень известной и её продукция востребована по всему миру.

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

Также к тому, чтобы поделиться своими знаниями в области программирования данной линейки, меня подтолкнуло то, что я видел много блогов, уроков (в том числе и видео) очень хорошего качества по контроллерам PIC именно с использованием языка ассемблер. А вот на языке C уроков очень мало, что подчёркивает их востребованность.

Поэтому замечу, что программировать МК PIC мы будем именно на языке C. Какую мы выберем среду программирования и компилятор, мы решим чуть позже, а пока же в данном уроке нас ждёт краткое знакомство с самими контроллерами, с их архитектурой и их разновидностями.

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

Например, те контроллеры AVR, с которыми мы до сих пор работаем, являются 8-битными, а контроллеры STM, которые мы изучаем – 32-битными.

Вот и контроллеры PIC также делятся по битности.

Первая линейка – это 8-битные контроллеры PIC. Наименование их моделей начинается с префикса PIC10/PIC12/PIC16.

Данная линейка также делится на 3 семейства.

1. BASELINE – данная архитектура присутствует у контроллеров PIC10. От более мощной серии она отличается количеством выводов (от 6 до 28), дешевизной.

2. MID-RANGE – данную архитектуру имеют ядра микроконтроллеров PIC12/PIC16. Количество выводов в данной серии увеличено (от 6 до 64), стоят они несколько дороже, зато имеют помимо 35 машинных инструкций, поддерживаемых серией BASELINE, ещё 14 дополнительных инструкций (оптимизированных под компилятор языка C).

Также у данной серии производительность увеличена на 50%, они имеют более глубокий и улучшенный аппаратный стек, увеличенный объём памяти и некоторые прочие прелести, с которыми мы познакомимся в дальнейшем, так как, скорее всего, мы с данной серии и начнём процесс изучения программирования микроконтроллеров PIC.

3. 8-битовые микроконтроллеры PIC18 – это улучшенная серия контроллеров, здесь на борту много другой периферии, количество выводов от 18 до 100, производительность 16 MIPS, поддержка технологии NanoWatt, наличие программироуемого генератора.

Вторая линейка – это 16-битные контроллеры PIC. Они имеют префикс PIC24F и PIC24H. Это уже более мощные контроллеры.

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

Также периферия еще более расширена по разновидностям шин, прямой доступ к памяти DMA (у PIC24H), расширенный набор инструкций. Также есть очень много других особенностей.

Третья линейка – это 32-битные контроллеры. Префикс у них уже PIC32. Частота тактирования таких контроллеров до 120 МГц, а у новой серии MZ – до 200 и даже выше.

У меня, например, есть отладочная плата, на которой устрановлен контроллер PIC32MZ2048EFH064, у которого тактовая частота составляет 252 мегагерца. Также здесь ещё более увеличена производительность ядра.

Данное семейство построено на ядре MIPS32®, которое также кроме высокой производительности отличается ещё и низким потреблением энергии.

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

Также, как и рассмотренные, а также рассматриваемые нами контроллеры AVR и STM32, контроллеры PIC работают приблизительно по той же схеме.

Сочиняется программа, собирается в машинный код, понятный арифметическо-логическому устройству контроллера, загружается (прошивается или заливается) в контроллер и затем обеспечивает работу по определённому алгоритму.

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

Давайте немного разберёмся с организацией памяти в контроллерах PIC. Так как мы начнём изучение семейства PIC с более простых 8-битных (принцип от простого – к сложному ведь не отменял никто), то и организацию памяти мы посмотрим у данной серии.

Сначала посомтрим блок-схему контроллера на примере МК PIC16F84A (нажмите на картинку для увеличения изображения)

В левом верхнем углу сразу бросается в глаза модуль памяти FLASH, в которой обычно хранится программа контроллера (прошивка). А в правом верхнем углу мы видим память EEPROM, которая уже исользуется для хранения данных.

Эти два вида памяти являются энергонезависимыми и после отклчения и сброса контроллера не стираются.

Но данная память не является быстрой, поэтому код при старте программы распределяется уже в память RAM (ОЗУ), которая уже является быстродействующей и предназначена для функционирования контроллера при работе. Поэтому данную память мы уже рассмотрим несколько поподробнее.

Оперативная память контроллера PIC делится на память программ и память данных.

Вот так организована память программ у контроллера PIC16F84A

Микроконтроллеры данной серии имеют счётчик команд, способный адресовать 8К x 14 слов памяти программ и 14-разрядную шину данных памяти программ. Вся память программ разделена на 4 страницы по 2 килослов каждая (0000h-07FFh, 0800h-0FFFh, 1000h-17FFh, 1800h-1FFFh).

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

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

Также немного познакомимся с организации оперативной памяти, отведённой под хранение данных.

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

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

Регистры общего назначения (GPR) – это ячейки памяти, которые имеют только адреса и предназначены они для хранения любых данных.

Также из приведённого выше рисунка мы видим, что у нашего контроллера память данных разделена на 2 страницы (или банка) переход между которыми осуществляется посредством установки определённых битов в регистре STATUS. Поэтому данный регистр присутствует в обеих банках и обратиться к нему мы можем в любой момент, чтобы сменить текущую страницу памяти.

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

Соответственно, у каждого контроллера кроме памяти существует много чего ещё интересного, в том числе порты ввода-вывода. Наши контроллеры PIC – также не исключение. Посмотрим назначение ножек контроллера PIC16F84A

У данного контроллера два порта – порт A и порт B. Из порта A наружу выведены 5 ножек – RA0-RA4, а из порта B – все 8 ножек RB0-RB7.

Также ножки портов могут иметь и другое назначение в зависимости от того, как мы их сконфигурируем. Наример ножка 6 или RB0 может в любой момент превратиться в ножку для захвата внешних прерываний, а ножка 3 или RA4 – стать ножкой для тактирования таймера от внешнего генератора.

Тактирование МК PIC также может осуществляться как от внешнего генератора, так и от кварцевого резонатора, от внутреннего резистора, а также существует ещё несколько вариантов, которые поддерживают не все контроллеры данного семейства. На практике как правило используется тактирование от кварцевого резонатора. Скорее всего, мы также последуем данной традиции в наших дальнейших занятиях.

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

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

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

  1. Программирование МК PIC Следующий урок
  2. Смотреть ВИДЕОУРОК (нажмите на картинку)

Примеры программирования микроконтроллеров

Новостная лента

Microchip расширяет экосистему Arduino-совместимой отладочной платформы chipKIT
Компания Microchip сообщила о расширении экосистемы отладочной платформы chipKIT. В состав Arduino-совместимой платформы chipKIT вошла высокоинтегрированная отладочная плата с Wi-Fi модулем и плата расширения для управления электродвигателями, разработанные компанией Digilent. Подробнее >>>
�сточник: http://www.rlocman.ru Просмотров: 28590 Дата добавления: 02.10.2014
MicroView — супер миниатюрная Arduino-совместимая отладочная плата СЃ OLED дисплеем
РќР° портале Kickstarter представлен проект супер миниатюрной отладочной платформы Arduino, выполненной РІ форм-факторе 16-выводного РєРѕСЂРїСѓСЃР° DIP Рё имеющей встроенный OLED дисплей СЃ разрешением 64×48 точек. Несмотря РЅР° то, что отладочная плата является полностью завершенным решением, РѕРЅР° может устанавливаться РЅР° макетную плату или непосредственно впаиваться РІ печатную плату для расширения функционала Рё управления внешней периферией. Подробнее >>>
�сточник: http://www.rlocman.ru Просмотров: 27934 Дата добавления: 17.04.2014
Размеры самого миниатюрного в мире ARM-микроконтроллера Freescale сократила еще на 15%
Freescale Semiconductor совершила новый технологический прорыв, добавив Рє семейству Kinetis самый миниатюрный Рё энергоэффективный РІ РјРёСЂРµ 32-разрядный микроконтроллер Kinetis KL03 СЃ архитектурой ARM. Основанный РЅР° микроконтроллере предыдущего поколения Kinetis KL02, новый РїСЂРёР±РѕСЂ получил дополнительную периферию, стал намного проще РІ использовании, Рё РїСЂРё этом сократился РІ размерах РґРѕ 1.6 × 2.0 РјРј. Подробнее >>>
�сточник: http://www.rlocman.ru Просмотров: 1871 Дата добавления: 17.04.2014
Как вырастить микросхему с помощью белка
Без кремния немыслимо производство полупроводников, где он буквально нарасхват. При этом, естественно, большое значение имеют чистота вещества и строение кристаллов кремниевых соединений. �сследователи из Университета Лидса (Великобритания) предлагают способ выращивания таких кристаллов с помощью молекулярной биологии. По их мнению, это позволит создавать электронные микросхемы более высокого качества. Подробнее >>>
�сточник: http://www.newscientist.com/ Просмотров: 3019 Дата добавления: 06.03.2014
Открытие нового раздела на сайте MCULAB.RU
На нашем сайте открыт новый раздел. Раздел посвящён моделированию различных схем по сопряжению микроконтроллеров и датчиков. Освещается схемотехника подключения к МК внешних устройств. В данной области до сих пор отсутствует систематизация, поэтому сделана попытка создать банк типовых решений, который в дальнейшем может дополняться, уточняться, расширяться. Подробнее >>>
�сточник: / Просмотров: 129718 Дата добавления: 04.02.2014

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

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

Основную массу составляют примеры программирования микроконтроллеров avr и микроконтроллеров microchip.

Пользователю предлагается познакомиться с различными примерами программирования и различными средами программирования: MicroLab, AVRStudio, MikroC, FloweCode.

Представлены схемы на микроконтроллерах ведущих производителей: PIC и AVR. Рассматривается огромное количество схем для начинающих разработчиков. Если Вы начинающий радиолюбитель, то для Вас мы приготовили раздел микроконтроллеры для начинающих.

Современные микроконтроллеры относятся к классу микропроцессорных устройств.

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

Микроконтроллер получает программные команды в виде отдельных машинных кодов.

�звестно, что для создания и отладки программ, машинные коды подходят плохо, так как трудно воспринимаются человеком. Этот факт привел к появлению различных языков программирования и огромного количества различных компиляторов.

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

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

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

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

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

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

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

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

Для компактного кода подойдет Ассемблер, а если ставятся серьезные задачи, то альтернативы С/С++ практически нет. Также необходимо учитывать доступность компилятора.

В итоге самым универсальным решением можно назвать связку Ассемблера и C/C++. Для простого освоения языков, можно воспользоваться примерами программ для микроконтроллера.

�спользование примеров программирования упростит и ускорит процесс освоения программирования микроконтроллеров.

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

Программирование PIC16F876A. Собираем схему с плавно мигающим светодиодом

Эта статья направлена на новичков в программировании микроконтроллеров семейства PIC16 от Microchip. В нашем случае, я выбрал немного превосходящий микроконтроллер для таких задач, а именно — PIC16F876A. Программирование микроконтроллера будем производить в MPLAB IDE.

Цель работы: собрать схему, которая будет мигать светодиодом, внимание, с применением ШИМ.

И так, цель задачи обозначили. Теперь перейдем к реализации наших планов.

Часть 1. Железо

В первую очередь нам понадобятся компоненты, из которых мы будем собирать схему. А именно:

  • Микроконтроллер PIC16F876A
  • Рассыпуха к нему
  • Светодиод
  • Макетная плата

Светодиод можно взять любой по вкусу, какой Вам больше нравится. Макетную плату желательно иметь в наличии.

В понятие «рассыпухи» входят такие детали как: пара конденсаторов для кварца и конденсатор на выход модуля CPP (Для того что бы сгладить пульсации). Собранная схема выглядит следующим образом: Это типовое включение микроконтроллера, ничего нового я тут не придумывал.

Так же, для программирования микроконтроллера я пользуюсь программатором-отладчиком ICD2. Он подключается к компьютеру по USB и прекрасно работает как на системе Windows, так и на GNU/Linux. В нашем случае будем использовать родной MPLAB IDE в Windows.

Скрин в процессе разработки:

Часть 2.

Программная

Светодиод подключаем на 1й модуль CPP (ШИМ). За настройку модуля в микроконтроллере отвечает регистр CPP1CON. Чтобы модуль у нас заработал, предварительно необходимо инициализировать таймер. Для режима ШИМ используется таймер TMR2.

За его конфигурацию отвечает регистр T2CON. Инициализация: movlw  .

0      bcf   STATUS, 5 movwf  T2CON ; Помещаем в регистр T2CON — 0 bsf   T2CON, 0 ; Устанавливаем бит T2CKPS0 (Предделитель) bsf   T2CON, 2 ; Включаем таймер TMR2 битом TMR2ON

bsf   T2CON, 3 ; Устанавливаем бит TOUTPS0 (Постделение)

На этом инициализация таймера закончена. Теперь при включении контроллера от будет служить источником для нашего ШИМ модуля. Инициализация ШИМ модуля происходит следующим образом:movlw   00101111b ; Подготавливаем конфигурацию movwf   CPPCON ; Конфигурируем ШИМ

bsf    CPPCON, 2 ; Включаем модуль ШИМ

Все, на этом инициализация закончена. Теперь мы можем помещать в регистр CPP1L число от 0 до 255, тем самым меняя скважность выходных импульсов. Полный исходник программы для прошивки нашего микроконтроллера: STATUS   equ     03h     TRISC    equ     07h                 CPPCON   equ      17h CPP1L    equ      15h T2CON    equ      12h counter  equ      23h tmp      equ      25h           org     0            goto    start     start      bsf     STATUS, 5                       movlw    .0        movwf    TRISC      bcf      STATUS, 5   movwf    T2CON   bsf      T2CON, 0   bsf      T2CON, 2   bsf      T2CON, 3   movlw    00101111b   movwf    CPPCON   bsf     CPPCON, 2   movlw    .0   movwf    CPP1L   movlw    .255   movwf    tmp   decfsz  tmp, 1     goto $+2     goto $+4       call delay10mS       incf CPP1L, 1       goto $-5   movlw    .255   movwf    tmp     decfsz  tmp, 1     goto $+2     goto $+4       call delay10mS       decf CPP1L, 1       goto $-5   goto $-16 delay10mS   movlw  .50   movwf  counter loop   call  delay200uS   decfsz  counter   goto  loop   return delay200uS   movlw  .100     addlw  -1   btfss  STATUS,2   goto  $-2   return  

end  

Краткая заметка по командам, использованных в программе. equ — Присвоение имени на определенный адрес. goto — Переход программы на метку, либо определенную строку call — Вызов подпрограммы movlw — Поместить в регистр W, число movwf — Переместить из регистра W число bsf — Установить бит в регистре, в состояние 1 bcf — Установить бит в регистре, в состояние 0 addlw — Прибавить в регистр W число btfss — Проверить бит в регистре на 1 incf — Инкриминировать регистр (прибавить 1) decf — Декриминировать регистр (вычесть 1) decfsz — Вычесть 1 из регистра + проверка на 0 Задержки в программе откалиброваны на частоту кварцевого резонатора в 8мгц. Принцип работы программы. В начале, происходит инициализация регистров, затем настройка внутренних модулей микроконтроллера.

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

Далее реализована часть программы, которая отвечает за само мигание светодиода, с учетом использования ШИМ. Сначала, инкриминируя CPP1L до значения tmp мы заставляем светодиод медленно начать светиться, а затем делаем обратную операцию.

Часть 3. Финальная

Перед тем как прошивать Ваш контроллер, Вам необходимо установит биты конфигурации микроконтроллера. Без них, ничего работать не будет. И так: 1) WDT — выключаем. Это сторожевой таймер.

Предназначен для аппаратного сброса микроконтроллера в момент непредвиденного зависания. 2) LWP — выключаем. Это низковольтное программирование. Мы используем нормальный программатор, который подает на MCLR 13В.

3) Осцилятор: В данном случае мы имеем 8мгц. Значит ставим значение XT.

Часть 4. Бонусная

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

Часть 5. Информация

Микроконтроллер в цепи последовательного программирования (ICSP) с Microchip PIC и Atmel AVR | Lirtex — Технология на краю времени

Метки: AVR , Электроника , Embedded , ICSP , микроконтроллер , PIC

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

В схеме программирования имеет много преимуществ:

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

Как подготовить схему для работы с ICSP?

Программист использует последовательный сигнализации схема для программирования чипов в цепи. Сигнализация осуществляется через программирование часов (PGC или ICSPCLK) и программирования данных (ПГД или ICSPDAT) контакты. Кроме того, MCLR / VPP вывод использоваться как сигнал высокого напряжения программирования или внимания индикатора на устройстве.

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

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

В этом случае:

1. Изолировать Vpp от схемы с использованием диодов Schotkey и R / C. Примечание: в некоторых устройствах, например, PIC12F629, этот вывод будет определяться до 13 вольт программист при программировании устройства. Убедитесь, что все, что связано с выводом Vpp может выдержать это напряжение, или изолировать его с соответствующим резистор или диод Schotkey.

2. Изолировать ICSP_Clock и ICSP_Data от остальной части схемы. Изоляция методом является применение конкретного, к сожалению, означает, что нет готовых рецептов. Часто, резистивный изоляции работает отлично. Рекомендуемые значения резистор 1k до 10k.

3. Физически найти ICSP заголовок как можно ближе к запрограммировано чипа, уменьшить затухание.

Общие Microchip PIC ICSP макетов

Дополнительная литература и ссылки

Подпишитесь сейчас через RSS и никогда не пропустите сообщение!

Arduino программатор PIC-ов. | AlexGyver Community

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

Вот тут Вы сильно ошибаетесь

Жаль не грузится файлик, размер большой.
In-Circuit Serial Programming Guide DS30277
DS41227
DS41226
DS30228 и т.д.

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

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

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

Хотя в свободном доступе есть схемы PicKIT2 и PicKIT3. И прошивки на них в свободном доступе.
А они позволяют осуществлять внутрисхемную отладку.
Так что ардуину можно использовать один раз для программирования PicKIT.

Они его придумали?
По этимологии что оно значит? Как-то задавался таким вопросом, но инфы не нашёл.

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

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

Да называйте как хотите. Просто знайте, когда будете разговаривать с человеком, который проработал всю жизнь с PIC микроконтроллерами и ничего не знает об Atmel, Вас никогда не поймёт, если вы будете дуть ему в уши про «фьюзы»и «Скетчи» (Скетч) — короткая одноактная пьеса комедийного содержания с небольшим числом действующих лиц (как правило двумя, реже — тремя). Это выше понимания как прошивка может называться «Одноактной пьесой»

Как прошить микроконтроллер PIC?

Работа с программой PicKit2 Programmer

Если вы уже собрали USB программатор PIC своими руками, то пора научиться им пользоваться. Для этого нам необходимо установить программную оболочку «PICkit 2 Programmer», которая разрабатывалась специально для управления программатором PICkit2.

Для работы программы требуется .NET Framework. Если этот пакет не установлен на компьютере, то его нужно установить. Также можно воспользоваться дистрибутивом «PICkit 2 Programmer» с интегрированным пакетом — PicKit 2 V2.61 Install with .NET Framework. Скачать его можно здесь.

Итак, если программа установлена, приступим к изучению её возможностей.

Устанавливаем микроконтроллер в панель программации, подключаем программатор к компьютеру и запускаем «PICkit 2 Programmer».

При запуске программа производит опрос программатора и автоматически определяет тип программируемого микроконтроллера по идентификационным битам (так называемому device ID). Внимание! Микросхемы семейства Baseline, а также микросхемы EEPROM и KeeLOG не имеют device ID. Чтобы программа смогла работать с этими микросхемами, нужно выбрать конкретное изделие через меню «Device Family».

Если вместо такой дружелюбной картинки покажется вот такая…

…, то нужно проверить корректно ли подключен usb-кабель, и через меню «Tools» — «Check Communication» произвести переподключение устройства.

Открытие файла с прошивкой.

Чтобы записать программу МК в его память, необходимо выбрать в меню пункт «File» — «Import Hex».

Затем выбрать в открывшемся окне нужный файл прошивки.

После этого в окне памяти программ (Program Memory) и данных (EEPROM Data) отобразится содержимое .hex файла.

Запись программы в МК.

Теперь можно программировать МК. Для этого жмём кнопку «Write». Процесс записи занимает 3 — 5 секунд.

Об успешном выполнении процедуры записи уведомит надпись «Programming Successful».

Для большей уверенности можно провести процедуру проверки. При нажатии на кнопку «Verify» программа сравнивает данные hex-файла и данные, записанные в МК. Если верификация прошла успешно, то в окне сообщений появится надпись «Verification Successful».

Внимание! Если вы прошиваете микроконтроллеры PIC12F675, PIC12F629 и аналогичные с внутренним тактовым генератором, то при верификации может выскакивать ошибка. Дело в том, что PICkit2 Programmer (версии 6.21) сохраняет калибровочную константу, а затем записывает её в последнюю ячейку памяти МК. Понятно, что исходный файл прошивки и записанные данные в памяти будут отличаться. О калибровочной константе будет рассказано далее.

Быстрые кнопки.

Кнопка «Auto Import Hex + Write Device» понравиться тем, кто хочет «загонять прошивку» в МК нажатием одной кнопки. Один щелчок и программа предложит выбрать файл прошивки, а затем незамедлительно запишет её в МК.

Кнопка «Read Device + Export Hex File» выполняет обратную функцию — производит считывание данных с МК и предлагает сохранить файл прошивки в . hex файл.

Изменение битов конфигурации.

Биты конфигурации задают основные параметры работы МК. Это и тип генератора (кварц, RC-цепь), включение/отключение так называемого «сторожевого таймера», установка защиты от считывания памяти программ и некоторые другие. Как правило, при написании алгоритма работы МК (программы) прописываются значения, которые нужно записать в биты конфигурации. При «прошивке» программная оболочка берёт данные о конфигурации из самого файла прошивки и принудительно указывать эти данные не требуется.

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

Если нужно поменять 0 на 1, то меняем — жмём «Save». Естественно, менять надо осознанно. Повторяю, при использовании готового файла прошивки менять ничего не надо, программа сделает всё автоматически.

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

Микроконтроллеры бывают разные. Поэтому при программировании МК бывает необходимость указать конкретную модель микроконтроллера. При выборе пункта меню «Device Family» выпадает список семейств микроконтроллеров. Есть среди этого списка и микросхемы памяти EEPROM.

В отличие от микроконтроллеров, микросхемы памяти EEPROM не определяются автоматически по команде «Tools» — «Check Communication». Поэтому при считывании/записи микросхем EEPROM в программе необходимо указать маркировку микросхемы.

В меню выбираем пункт «Device Family» — «EEPROMS» — «24LC».

Далее выбираем конкретную марку микросхемы в выпадающем списке «-Select Part-«. Как видим, у нас микросхема 24LC08B (аналоги 24C08, 24WC08L и др.).

Чтобы считать данные с микросхемы EEPROM жмём «Read». Если в памяти записаны данные, то в окне «Program Memory» значения обновятся.

Кнопки «Write» (считать), «Erase» (стереть) выполняют соответствующие функции.

Калибровочная константа.

Как известно, для работы микроконтроллера требуется тактовый генератор. Элементом, который задаёт частоту работы этого генератора, может быть внешний кварцевый резонатор, RC — цепь. Но среди микроконтроллеров PIC есть такие, которые содержат необходимые задающие цепи внутри самой микросхемы. К таким МК относятся, например PIC12F629, PIC12F675.

На заводе в память таких микроконтроллеров записывается специальная константа, которая задаёт параметры встроенного генератора на 4 МГц. Эта калибровочная константа вида 34хх записывается в последнюю ячейку памяти программ по адресу 0x3FF.

При программировании микроконтроллера эту константу легко стереть. И хоть PICkit2 Programmer версии 2.61 автоматически сохраняет эту константу и затем записывает её при программации, не лишним будет записать значение константы OSCCAL.

При необходимости константу легко указать вручную. Для этого в меню выбираем пункт «Tools» — «OSCCAL» — «Set Manually».

В поле «OSCCAL value» указываем ранее записанное значение константы. Жмём кнопку «Set» (установить).

Теперь, когда вы знакомы с основными возможностями PICkit2 Programmer, можно смело начать сборку какого-нибудь устройства на микроконтроллере, например, RGB-светильника на PIC12F629/675.

Главная &raquo Микроконтроллеры &raquo Текущая страница

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

 

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


Кликните на картинку для перехода на страницу описания.

Заготовки программ на Си.

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


Управление светодиодом

(проект использует для программирования Serial Bootloader AN1310)


Чтение состояния кнопок

(проект использует для программирования Serial Bootloader AN1310)

Чтение состояния кнопок 2 – простая функция удержания клавиши


Измерение относительной влажности. Использование аналоговых датчиков фирмы honeywell (HIH-36xx, HIH-40xx)  (пример использует для программирования Serial Bootloader AN1310)


Декодирование команд пульта дистанционного управления APA 1616 или использование модуля ССР для декодирования.


Пример построения простого ШИМ на PIC-контроллерах с использование модулей CCP   (пример использует для программирования Serial Bootloader AN1310).


Пример управления аналоговым сервоприводом на PIC-контроллерах с использование модулей CCP (пример использует для программирования Serial Bootloader AN1310).


Измерение расстояния при помощи ультразвукового модуля HC-SR04


DHT11 – Датчик влажности и температуры


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


Среднее число интересный метод вычисление среднего.


Проекты на микроконтроллерах PIC10 – Емкостной сенсор, Датчик приближение, Датчик движения, Диммер для светодиодного освещения


В помощь конструктору – Мелкие программки в ME для упрощение расчетов.  


Один вариант функций для записи и чтения данных в EEPROM для 8-битных микроконтроллеров (которые имеют и перезаписываемую и память программ).


Вычисление CRC16


еще будет..


Модуль CAPTURE/COMPARE/PWM – захват, сравнение, ШИМ

Формирование звука Сенсоры (измерения физических величин)

Цифровые датчики температуры

Аналоговые (модуль АЦП)

Измерение напряжения на потенциометре

Аналоговые датчики температуры

Измерение напряжения

Измерение емкости (модули CTMU, CPS)Емкостной сенсор прикосновения

Таймер TMR1

Передача данных (модули MSSP, EUSART)

Цифровые (работа с цифровыми портами ввода/вывода)


Пример минимального кода для загрузчика AN1310
Пример минимального кода для использования с программатором

Сравнение ШИМ

“Примеры построения кода программ для PIC-контроллеров”

I2C SPI UART LED индикаторы

Семисегментные индикаторы8х8 знакосинтезирующие индикаторы LCD индикаторы

 

 

 

 


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

  • Проект с использованием MCC часть 04

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

  • Бегущие огни (ch-bo-36)

    Проект на PIC-микроконтроллере PIC16F648A. Количество каналов 36. Для индикации используется подключение по матрице 6х6. Расположение светодиодов в одну линию. Все эффекты написаны для возможности увеличения количества светодиодов. Рекомендуется увеличивать кратно …

  • ESP8266 процедура получение данных даты и времени от серверов точного времени.

    Эта функция доступна уже в версии 1.6.1. Для многих приложений, необходимо часы реального времени,  если в вашем проекте есть модуль WiFI ESP8266, то легко можно сделать следующим образом. Процедура описывает …

  • Ultrasonic Level Meters – ULM –53L

    Измерение расстояния при помощи ультра звукового датчика ULM–53L–10. Диапазон измерения от 0,5 м до 10 м, полностью пластмассовый излучатель PVDF, механическое соединение фланцем из полиэтилена HDPE (исполнение “N”) Характеристики Диапазон измерения …

  • Емкостной сенсор

    Изучаем изготовление емкостных сенсоров на PIC-микроконтроллере. Конструкция емкостных сенсоров имеет вид: Емкостные сенсоры строятся по схеме высокочастотного генератора, сам принцип основан на измерение частоты этого генератора. Частота зависит от емкости …

  • Система AT команд версии V2.0 для ESP8266 и ESP32

    Появление нового модуля на базе ESP32 заставило систематизировать систему AT команд, а так же систему обновления и для модулей на базе ESP8266. Начиная с версии v2.0 в ESP8266 внедряется прошивка …

  • Проект с использованием MCC часть 14

    С выводом данных на дисплей мы справились (но могу сразу сказать библиотеку графики к этой статьи пришлось доработать, поэтому в этом проекте она обновлена). У нас на текущем этапе имеется …

  • Применение typedef, struct и union

    Полезные описания переменных Часто необходимо в памяти расположить последовательно разные виды данных, что бы потом можно было их использовать. Полезные ссылки Взято и переработано с сайта http://www.butovo.com/~zss/cpp/struct.htm http://cppstudio.com/post/9172/ Синтаксис структур. …

  • USB K-L-line адаптер

    USB K-L-line адаптер предназначен для связи персонального компьютера с диагностической шиной автомобиля – интерфейс ISO-9141. Этот проект предназначен для сборки недорого устройства с использованием специально для этой цели разработанной печатной …

  • Проект с использованием MCC часть 06

    Изменим схему следующим образом добавим две тактовые кнопки BT1 и BT2. Теперь переключимся на конфигурацию выводов, для этого сделаем двойной клик в окне Ресурсы проекта на Pin Module. В окне Pin …



 

В записи нет меток.

Программирование PIC | theremino


Программирование PIC процессорах с HEX файлов

HEX-файла (и завершить проекты) Вы скачать со страницы: Технические/схемы

Микро регуляторы используемые в вашей системе Theremino:
– PIC24FJ64GB002 (все мастер, От 2012 в 2015)
– PIC24FJ128GB202 (будущий мастер с 12 или 13 INOUT и 2 дополнительные биты в АЦП)
– PIC32MX110F016 (будущий мастер для 32 бит) (Примечание 1)
– PIC24F16KA101 (все рабы, Слуга и CapSensor)

(Примечание 1) Вероятно, мы не будем использовать модели для 32 бит, потому что, В дополнение к не дает реальные преимущества в скорости и точности, ограничить местоположения серийный Pin. Мы предпочитаем использовать новый пик серии 24, Это позволит 12 или даже 13 PIN-код и содержащий новые АЦП, четыре раза более точной.


ICSP коннектор – В цепи последовательного программирования



Все модули системы Theremino имеют ICSP коннектор, Это позволяет легкое программирование “в цепи”, с тип PicKit2 программист, Pickit3 или аналогичный.


Подключение кабель для программирования

На позиции PIN-код 1 обозначается белая точка. В более новых версиях с треугольником, как программист PicKit2 и PicKit3. Во всех случаях ПИН 1 всегда указывается с “VPP”.

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

На некоторых программистов найти местоположение провода “1” Это может быть трудно. Например PicKit3 Olimex имеет не треугольник, или p, для обозначения этого. Даже читать руководство не удается найти ПИН 1. Только Публикация изображений не относятся к разъему на контроллере, но на бесполезные программирование пластины. Таким образом, чтобы найти ПИН 1, использовать следующее изображение ’:

Предположить, что вы отмечать свой PIN-код 1 с треугольником или черная точка, проведение программист с светодиоды и разъем внизу.


Купить PicKit2

Лучше купить PicKit2, который легче использовать PicKit3.

На eBay легко найти их, Вот некоторые ссылки:
http://www.ebay.it/itm/161327061057
http://www.ebay.it/itm/191911587734
http://www.ebay.it/itm/122179854117 (дешевые но медленно Доставка из Китая)

Или на Amazon:
HTTPS://www.Amazon.IT/…….pickit2 (Amazon стоимостью чуть больше)

Пример PicKit2 для продажи на eBay – ’ нажмите на изображение, чтобы увеличить.

Если предыдущая ссылка больше не действительны, пожалуйста, сообщите нам. Чтобы найти похожие предлагаю вам сделать поиск на eBay, со словами “USB Программатор PICKIT2”.


Эксцентрик гнезда? Нет, спасибо.

Планирование “в цепи” Он проверяет, заполните форму и у вас есть уверенность, что все будет хорошо. Вместо этого забивать не даже уверен, что мы можем запланировать (отсутствуют внешние компоненты и источник питания). И вам сэкономить время, Она занимает больше времени, чтобы проверить вне пик от розетки и переместить его в окончательной цепи. Так что не купить Сабо наряду с программист. Дорого и остаются неиспользованными в ящик.


В цепи отладчиков?

Забудьте об этом, являются сложными, дорого и очень медленно, никогда не будет их использовать. Есть более эффективные способы отладки, к примеру MPLAB Эмуляторы, Но прежде всего хитрости (Измените в нужном месте и посмотреть, что происходит) дихотомических и техника (разделить проблему на две части и повторять, пока вы найдете л ’ ошибка).


Методы программирования и программистов

Первый уровень сложности, планирует использовать HEX файлов, подготовленные нами и программировать их с PicKit2. Немного’ более громоздким запрограммировать их с PicKit3.

Третий уровень, только для смелых, Это MPLAB, Она также позволяет вам изменить прошивку и перекомпилировать его. Трудно начало MPLAB, потому что вы также должны установить компиляторы. В дополнение к этому, Он сказал, что с MPLAB и PicKIt2 вы можете запрограммировать все модели ПОС. И почти наверняка нельзя использовать PicKit3.

И наконец c ’ является MPLAB X, что делает программирование PIC реальной весело (очень похож на азартная игра). MPLAB X была написана, чтобы позволить программирование на Apple и Linux, и не только это не возможно программировать с Mac OS и Ubuntu, но вы больше не можете программировать даже с Windows. Нас Мы не могли заставить его работать на любой из наших ПОС и вот некоторые комментарии, найти в сети:
английский “… К сожалению, сочетание новых идей, Компиляторы и устройств часто может привести к возникновению серьезных проблем. Именно поэтому его часто называют «крае», Благодаря потянув из волос, скрежет зубов, лишение сна и случайные кровопотери, Хотя устранение этих проблем…»
итальянский “…К сожалению, сочетание новых IDE, Компиляторы и устройств часто может вызвать серьезные проблемы. Это часто называют на английском языке, как “степени кровотечения”, из-за разрывая волосы, скрежетание зубами, лишение сна и случайные кровотечения, При решении этих проблем…”


Рекомендации для программирования

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

Это не вина микрочип, абсолютно! Мы рады, что производят микро для каждой потребности, от микроскопических те до очень мощные dsPIC, и что они по-прежнему производят более лучше модели, Это просто трудно с ним. Другие производители (Atmel) продолжать производить же микро пятнадцать лет, ADC всегда одинаковы, производительность до сих пор то же самое…

Скоро мы будем передавать PIC24FJ128GB202 (с два дополнительных бит АЦП, затем четыре раза более точной) и еще более осложнить проблемы программирования (особенно для тех, кто на PicKit3).

Для работы некоторых ПОС и программистов может понадобиться:
– Вручную выбрать семьи (24) и модель ПОС.
– Мощность модуля от USB во время программирования.
– Питание от тот же компьютер, который подключен к программист.
– Использование программирования высокого напряжения (HVP).
– Выполните удаление.
– Отключить запись защищать.
– Открытые, с помощью блокнота, файл «PICkit2.ini» расположен рядом с «PICkit2V2.exe».
– Измените строку «PE24: Y «в «PE24: N».

Линия «PE:24: Не «отключает загрузку» программирование исполнительной», в некоторых случаях, предотвращает программа.

Вместо этого установите «Быстрый программирование» это хорошая идея. Двойная скорость программирования.


Как мы можем быть уверены, что пик запрограммирован хорошо

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

Только истинное испытание, USB, которая активизируется и СИД мигает. В образце светодиод мигает быстро, как можно скорее, как программирование, Вместо этого на рабов во главе мигает только после настройки ПИН-кода с применением HAL.


PicKit2 программиста приложения

Эта утилита позволяет программировать пик без установки MPLAB. Просто получите файл HEX и программист PicKit2. Версия, которую мы публикуем основана на версии 2.61 Микрочип, что больше обновлений на протяжении многих лет. Мы исправили многие незначительные недостатки и мы переименовали 3.0.

Не обманывайте версий, EXE, всегда называется PicKit2V2 была удалена, потому что он работает на PicKit2 программист версия 2. Версия приложения не является 2 Но то, что написано имя ZIP-файла.
PicKit2_Programmer_V3.0.zip
Pickit2_Programmer_V3.0_WithSources.zip (Версия для программистов)

Версия 3.2 также включает в себя “Файл устройства” изменено на программу новых PIC24FJ128GB202 (мы завершаем прошивку 202 потому что у них есть непреодолимые недостатки). Она также включает в себя отключение “Исполнительный программирования” чтобы предотвратить проблемы с некоторыми ПОС.
PicKit2_Programmer_V3.2.zip
Pickit2_Programmer_V3. 2_WithSources.zip (Версия для программистов)

Версия 3.3 работает лучше. Нижней панели, что указывает на завершение операций теперь течет в обычном порядке, и до конца. В “Файл устройства” Она изменяется программировать некоторый небольшой ПИК как 12F1571 и есть другие “Файл устройства” что может быть полезным для тех, кто знает, как редактировать их и заменить их. Наконец, когда вы идете в меню “Справка / О” версия правильно сообщается как 3.3 (в предыдущих версиях это было всегда 3.0).
PicKit2_Programmer_V3.3.zip
Pickit2_Programmer_V3.3_WithSources.zip (Версия для программистов)


Приложение для программиста PicKit3

Эти направления для использования ’, Оба на итальянском и английском языках, в файле “Theremino_Pickit3_ReadMe” расположен в папке “Документы”.

Программа “Ноутбук”, не устанавливайте его в C:Программ, но просто извлечь его из ZIP, в una нового dell’utente, например вложенная папка документов.

Этот ZIP-файл содержит все необходимое для программирования с PicKit3. Есть также наши изменения в “PK2DeviceFile.dat”, с которой мы смогли запланировать новые PIC24FJ128GB202.
PicKit3_Programmer_V4.0.zip
Pickit3_Programmer_V4.0_WithSources.zip (Версия для программистов)


Приложения для редактирования файла Devices.DAT

К сожалению как PicKit2 что PicKit3 не являются полными и не программировать все модели ПОС. Это приложение служит для завершения и правильные данные (которые находятся в файле “PK2DeviceFile.dat”). Мы использовали его для исправления битовые маски для PIC24FJ128GB202 с исправление мы могли бы их и программирования.
DeviceFile_Editor.zip


Спецификациях ПОС

Вот спецификации всех ПОС, используемых в системе Theremino, Вместе с нотами приложения, данные для семей ПОС и ошибки.
PIC_Datasheets


Изменение прошивки и перекомпилировать его с MPLAB

Чтобы внести изменения в прошивки необходимо установить MPLAB и компилятор языка C. Мы рекомендуем вам установить MPLAB версии 8.92 от здесь: MPLAB_Archives (должны были исчезнуть здесь: MPLAB_IDE_8_92.zip)

После установки MPLAB C30, компилятор должен быть установлен: C30_Compiler
Зарегистрируйтесь для загрузки компилятор C30 не является обязательным, Микрочип не рассылаем спам. C30 компилятор должен быть установлен в версии “Облегченный”, не хватает лишь немного оптимизации. Код немного больше, но это не имеет значения, потому что у нас очень открытые места в памяти (должны были исчезнуть здесь: MPLABC30Combo_v3_31.zip)

Наконец, вам придется загрузить полный проект (не только HEX файлов), заполнить его, Убедитесь, что не было никаких ошибок во время компиляции и записать его с ПОС.

MPLAB X
Новый X MPLAB, как известно, имеют ряд difettucci, Прежде всего вы не можете запрограммировать ПОС. Для тех, кто хочет попробовать, связь это: MPLAB_X


Компоненты технологии микрочип

Все модули системы Theremino производятся с микро контроллеров серии микрочип 24. Мастер использует PIC24FJ64GB002, рабы, используя PIC24F16KA101. Эти микро контроллеры работают на 3.3 Вольт для напряжения 5 Вольт довольно нестабильной USB порт, стабилизируется регулятором микрочип LDO (Низкая отсева) MCP1700 регулятор типа 3,3 В.

Мы выбрали компонентов Microchip, по самой своей природе, Это позволило нам осуществить следующие нововведения:
– UART транспондер на одного провода.
– Скорость передачи данных USB 12 серийный мегабит в секунду и до 4 мегабит в секунду.
– ADC ветерок, с надлежащей передискретизация, производить эффективное разрешение над 14 бит (и до 16 бит с последней PIC24FJ128GB202)
– CTMU технология, которая облегчает мера способности очень маленький.
– Низкий расход топлива благодаря NW XLP™ Технология.
– Возможность построения небольших модулей благодаря SOIC Low Pin Count.
– Отличная поддержка в режиме таблицы и ApplicationNotes.
– Удобные и бесплатные инструменты.

Программирование pic12f629 с помощью triton.

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

Микроконтроллер PIC12F629, а так же PIC12F675 снабжены внутренним четырех мегагерцовым генератором, который позволяет проектировать различные радиоустройства, без применения внешнего кварца или RC-генератора. Это освобождает одну или две ножки микроконтроллера, и позволяет уменьшить размеры будущего устройства.

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

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

Восстановление калибровочной константы PIC12f629 и PIC12f675

Собрав ниже приведенную схему и установив в панельку исследуемый микроконтроллер PIC12f629 или PIC12f675 можно с точностью до 1% определить КК.

Для калибровки внутреннего генератора микроконтроллера требуется заведомо известная опорная частота. К счастью, для этого мы не должны собирать отдельно стабильный генератор сигнала. Для этого можно воспользоваться переменным напряжением электросети частотой 50 Гц (в некоторых странах частота может быть 60 Гц). Данный сигнал можно снять со вторичной обмотки сетевого трансформатора.

Частота внутреннего генератора в микроконтроллере PIC12F629 и PIC12F675 может незначительно меняется от изменения температуры и напряжения питания. По мере увеличения напряжения питания, частота его немного уменьшается. Когда переключатель SB1 не замкнут, напряжение питания 5 вольт, пройдя через два диода, которые создают падение напряжения около 1,6 вольта, поступает на вывод питания ПИКа (3,4 вольт). С замкнутыми контактами SB1, микроконтроллер работает от 5 вольт. С помощью данной схемы появляется возможность для калибровки либо на 3,4 вольт, либо на 5 вольт питания.

  • SB1 разомкнут — калибровка происходит при 3,4 вольта.
  • SB1 замкнут — калибровка происходит при 5 вольт.

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

Опорный сигнал подается с вторичной обмотки трансформатора (от 6 до 12 вольт) через диод VD3, резистор R4 и транзистор VT1. Транзистор любой типа NPN.

Внимание. Переменное напряжение на транзистор следует подавать только через трансформатор. Ни в коем случае не напрямую от электросети!

Процесс определения калибровочной константы

  • Программируем PIC12F629 или PIC12F675 прошивкой, которая приведена в конце статьи.
  • Переключатель SB2 оставляем незамкнутым для сети 50 Гц, и замыкаем если частота в электросети равна 60 Гц. Для успешно проведения работ, данный сигнал должен быть подан до начала калибровки.
  • Вставляем МК в панельку, переключатель SB1 замыкаем, тем самым подаем питание 5 вольт.

Если все нормально светодиоды мигнут один раз.

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

В процессе калибровки оба светодиода выключены. Калибровка по времени занимает не более 5 секунд.

Если калибровка не удалась — загорится красный светодиод.

Если калибровка прошла успешно загорится зеленый светодиод, и на выводе 6 МК появится тестовый сигнал с частотой 5 кГц. Замерив, данный сигнал частотомером, можно убедиться в корректной калибровке внутреннего генератора микроконтроллера.

Возможны три варианта данных по адресам 0x00 и 0x01 в EEPROM:

  1. Если в обоих адресах 0xFF – калибровка не удалась.
  2. Если в обоих адресах 0x00, необходимо убедиться, что опорная частота выбрана правильно.
  3. В адресе 0x00 содержится 0x34 и в адресе 0x01 содержит 0xNN, где NN и является наша новая константа калибровки.

Модификация прошивки

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

(1,0 Mb, скачано: 2 675)

www.picprojects.org/projects/recal/recal.htm

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

2. Выбор типа PIC микроконтроллера.


3. Выбор компилятора, например, Microchip MPASM для ассемблера.


4. Выбор пути к каталогу проекта (клавиша Browse…) и ввод имени проекта.

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

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

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


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

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

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

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

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


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

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

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

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

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

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

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

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

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

Где:

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

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

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

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

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

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

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

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

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

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

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

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

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

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


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

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


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

Компиляция

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

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

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


Рис. 4 . Подключение к симулятору MPLAB SIM для отладки программы.

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


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

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

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

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


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

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

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

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

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


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

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

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

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

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


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

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


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

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

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

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

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


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

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


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

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

Simulink
Real-Time Workshop Embedded Coder
Real-Time Workshop

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

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

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

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

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

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

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

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


Рис. 12 . Содержимое текущего каталога после выполнения install_dsPIC_R2012a.m.


Рис. 13 . Блоки, установленной библиотеки «Embedded Target for Microchip dsPIC».

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

>>

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

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


Рис. 14 . Версии Си компилятора (слева) и режимы его установки (справа).

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

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


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

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

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

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

>>rmpath(» c:\Program Files\Microchip\MPLAB IDE\Tools\MATLAB\»)
4. Создайте Simulink модель для PIC контроллера, используя блоки библиотеки «Embedded Target for Microchip dsPIC» (Рис. 13), или загрузите готовую модель, например, Servo_ADC.mdl.

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


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

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


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

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


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

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


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

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


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

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

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


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

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

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

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


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

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

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


Рис. 21 . Перечень программаторов для прошивки микроконтроллера.

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


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

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


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

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


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

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

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

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

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

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


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

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


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

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


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

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


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

Заключение

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

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

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

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

Но нужный программатор многим запросам был найден.

Для передачи данных используется COM порт. Схема питается от 5 вольт которые можно взять от портов USB или PS/2.

Еще одна фотография этого устройства:

Для работы с программатором рекомендуется использовать программу IC-Prog

Настройка IC-Prog

Качаем с офф сайта последнюю версию программы IC-Prog Software, NT/2000 driver, Helpfile in Russian language и распаковываем их в одну и туже директорию.

Теперь необходимо установить драйвер программатора, для чего запускаем icprog.exe (если появятся сообщения об ошибках, то просто игнорируем их) и выбираем пункт «Options» в меню «Settings». Открываем вкладку «Programming» и устанавливаем галочку напротив пункта «Verify during programming». Далее в разделе «Misc» нужно активировать опцию «Enable NT/2000/XP Driver», сохранить настройки нажав на кнопку «ОК» и перезапустить программу.

Сменить язык интерфейса можно в разделе «Language». Для того, чтобы указать программе тип нашего программатора, нажимаем F3, в открывшемся окне выбираем «JDM Programmer» и указываем COM порт, к которому подключено устройство.

На этом предварительную настройку программы можно считать законченной.

Прошивка МК

IC-Prog позволяет работать с большим количеством МК, но нам нужен только PIC12F629 — выбираем его в выпадающем списке, расположенным в правом верхнем углу программы.
Для чтения прошивки из МК выполняем команду «Читать микросхему» (значок с зеленой стрелочкой или F8).

По окончанию процесса чтения, в окне программного кода отобразится прошивка МК в шестнадцатеричном виде. Следует обратить внимание на последнюю ячейку памяти по адресу 03F8 — там хранится значение константы OSCCAL , которое устанавливает производитель при калибровке чипа. У каждого МК оно свое, так что неплохо было бы его куда нибудь переписать (я, к примеру, царапаю его иголкой на обратной стороне PIC»а) для облегчения процесса восстановления (хотя это не обязательно), если во время прошивки эта константа была случайно перезаписана.


Для того, чтобы «залить» прошивку из *.hex файла в МК, ее необходимо открыть в программе («Файл»->«Открыть Файл…» или Ctrl+O) и выполнить команду «Программировать микросхему» (значок с желтой молнией или F5). Отвечаем «Yes» на первый вопрос.


А вот на следующий вопрос необходимо ответить «Нет», иначе перезапишется константа OSCCAL, о которой говорилось ранее.


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

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

Микроконтроллеры PIC12F629 и PIC12F675 имеют внутренний генератор 4 МГц, что позволяет работать им без внешнего кварцевого резонатора или RC-цепи. Это освобождает один или два контакта для использования их в качестве ввода/вывода и позволяет устройству иметь в конструкции минимальное количество компонентов.

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

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

Для этого создана эта программа и схема. Загрузите в микроконтроллер код, который находится в архиве и поместите его в устройство описанное ниже, и в течение нескольких секунд Вы получите новое значение калибровки для работы внутреннего генератора частотой 4 МГц и точностью 1%.

Как это работает

Для калибровки внутреннего генератора требуется опорная частота. К счастью, нам не нужны генераторы сигналов или другое измерительное оборудование. На самом деле точный сигнал можно получить из электрической сети переменного тока. В большинстве частей мира поставки электроэнергии производится на частоте 50 или 60 Гц (многие цифровые часы пользуются этим, чтобы сохранить точность хода). Используя практически любой трансформатор с выходным напряжением от 6 до 12 вольт переменного тока можно получить точный источник для калибровки генератора микроконтроллера.

Частота внутреннего генератора микроконтроллера зависит от изменения температуры и напряжения питания. При увеличении напряжение питания частота немного уменьшается. Когда выключатель S1 разомкнут напряжение 5 Вольт подается через два диода, в итоге около 3,4 Вольт поступает на контроллер. Если S1 замкнут, то контроллер работает от 5 Вольт. Microchip калибрует партии при 3,5 Вольт и температуре 25°C. В этой схеме есть возможность калибровки при напряжении 3,4 Вольт и 5 Вольт, но желательно откалибровать контроллер с разомкнутым S1 (3,4 Вольт).

S1 разомкнут — калибровка происходит при 3,4 Вольт

S1 замкнут — калибровка происходит при 5 Вольт

S1 не является выключателем питания

Два 1N4148 диода обеспечивают падение напряжения, резистор 150R обеспечивает стабильное напряжение на диодах. 100nF фильтрующий конденсатор должен быть размещен как можно ближе к выводам контроллера(1 и 8).

Сигнал опорной частоты подается в контроллер с использованием транзистора BC548, резистора 10K, диода 1N4148 и трансформатора. Можно использовать любой NPN транзистор, характеристики его не являются критическими. Трансформатор также можно использовать любой, но с выходным напряжением в пределах от 6 до 12 Вольт переменного тока.

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

ПРИ РАБОТЕ С ВЫСОКИМ НАПРЯЖЕНИЕМ СОБЛЮДАЙТЕ ТЕХНИКУ БЕЗОПАСНОСТИ!

Код для калибровки

Далее необходимо запрограммировать микроконтроллер кодом, который находится в архиве под именем «recal1.hex» . Код будет работать и с PIC12F629 и 12F675. Загрузите этот код перед началом операции калибровки.

После того как Вы успешно выполнили калибровку микроконтроллера и считали новое значение калибровки можно перепрограммировать контроллер используя свой код. Это программное обеспечение необходимо только для расчета нового значения калибровки, и не должно оставаться в памяти микроконтроллера потом. (Кто-то спросит поверьте!)

Запуск калибровки

1. Установить перемычку J1, если частота электросети в вашем районе равна 60 Гц и снять прермычку если частота 50 Гц. Убедитесь в правильности установки перемычки J1, т.к. это влияет на правильность калибровки.

J1 снята — частота питания сети 50Гц
J1 установлена — частота питания сети 60Гц

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

3. Вставьте микроконтроллер в панельку, разомкнуть переключатель S1 и тем самым подать напряжение 5 Вольт.

4. Когда микроконтроллер запустится светодиоды мигнут один раз.

5. Если сигнал опорной частоты не будет обнаружен на GP2 (вывод 5) загорится красный светодиод «Ошибка» и будет мигать зеленый светодиод «Завершено». (Если это произойдет, выключите питание схемы и убедитесь в правильности подключения)

6. Во время процесса калибровки оба светодиода выключены. Калибровка займет менее 5 секунд.

7. Если калибровка завершилась неудачно загорится красный светодиод «Ошибка», и выполнение программы будет остановлено.

8. Если калибровка завершилась успешно загорится зеленый светодиод «Завершено» и на GPIO1 появится тестовый сигнал частотой 5 кHz. Если у вас есть частотомер, то можно проверить правильность калибровки.

9. После завершения калибровки, Вы можете включать/выключать переключатель S1 и следить за тестовым сигналом, чтобы увидеть изменения частоты сигнала по сравнению с напряжением питания.

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

Когда Вы считаете EEPROM там должны быть одно из трех пар значений по адресам 0x00 и 0x01:

Если в EEPROM по адресам 0x00 и 0x01 содержит 0xFF, то программа отработала неправильно.

Если в EEPROM по адресам 0x00 и 0x01 содержит 0x00, то программа не смогла установить калибровочное слово правильно (горел красный светодиод «Ошибка»). Убедитесь, что сигнал опорной частоты имеет правильное значение, J1 установлена правильно и повторите попытку.

Если в EEPROM адрес 0x00 содержит значение 0x34 и адрес 0x01 содержит 0xNN, где NN является новым значением калибровки, то программа завершилась успешно (горел зеленый светодиод «Завершено») и OSCCAL был правильно откалиброван. Используйте значение 0xNN по адресу 0x01 для калибровки памяти.

Измененная версия прошивки

Некоторые программаторы или программное обеспечение повышают сигнал VDD перед включеним VPP. Это позволяет начать работу программе до того когда микроконтроллер войдет в режим программирования предварительно считав EEPROM. Если зеленый светодиод указывает на успешное завершение калибровки, а прочитав EEPROM Вы найдете в нем 0xFF по адресам 0x00 и 0x01, то Ваш программатор работает в таком режиме.

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


Использование нового значения калибровки

ВАЖНО: Эта схема/программа только рассчитывает правильное значение калибровки и не может сохранить его обратно в память контроллера — Вы должны сделать это вручную с помощью программатора.

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

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

Адрес 0x00 будет содержать значение 0x34, а адрес 0x01 будет содержать значение калибровки. Именно это значение должно быть записано памяти программ по адресу 0x3FF. Некоторые программаторы позволяют считывать значение калибровки и потом записывать его обратно в контроллер. Если программатор не делает этого, то нужно прописать вручную значение 0xNN по адресу 0x3FF, где «NN» является шестнадцатеричное значение калибровки считанное из EEPROM.

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

— Часть 2 (PIC16F628A)

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

  1. Микроконтроллеры — PIC16F628A
  2. Последовательное программирование — Часть 1 (PIC16F628A)

Плата обеспечивает ограниченный встроенный интеллект (достаточный только для защиты двигателей и сервоприводов от недопустимых операций) — она ​​предназначена для управления с внешнего компьютера через соединение RS232.

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

Код этого сообщения может быть «; ======================================== ======================================; Последовательная связь для микросхем PIC16F628A. ; ————————————————- —————————; 12-ОКТ-2012 шанег; ; Простой тест последовательного приема с помощью USART. ; ================================================= ===========================

  список P = 16F628A; Определите, какой чип использовать, включая P16F628A.INC

             ; Установите биты конфигурации для этого приложения __config _WDT_OFF & _BOREN_OFF & _INTOSC_OSC_NOCLKOUT
  

; ———————————————— —————————-; Константы и определения; ———————————————- ——————————

; Информация о состоянии для обработчика прерывания (в области общей памяти) SAVED_W equ 0x70 SAVED_STATUS equ 0x71

; ———————————————— —————————-; Таблица векторов прерываний; ———————————————- ——————————

 ; Reset vector org 0x0000 goto program

             ; Вектор прерывания org 0x0004 goto interrupt
  

; ———————————————— —————————-; Функции и процедуры; ———————————————- ——————————

; Эта функция отправляет один символ ASCII (содержащийся в W); ; Функция ожидает, пока выходной регистр станет доступным путем тестирования; Бит TRMT в регистре TXSTA send_char: banksel TXSTA wait_to_send: btfss TXSTA, TRMT goto wait_to_send; Загрузить выходной регистр banksel TXREG movwf TXREG return

; ———————————————— —————————-; Обработчики прерываний; ———————————————— ——————————

; Эта процедура обрабатывает вход RS232, управляемый прерыванием; ; Он считывает полученное значение, увеличивает его на единицу и отправляет обратно. ; Такие ошибки, как кадрирование и перерасход, обрабатываются и игнорируются. rs232_input: banksel RCSTA btfsc RCSTA, OERR; Проверить наличие ошибки переполнения goto rs232_overrun btfsc RCSTA, FERR; Проверить наличие ошибки кадрирования goto rs232_framing banksel RCREG incf RCREG, W; Прочитать полученное значение и увеличить вызов send_char; Отправьте увеличенное значение goto rs232_done; Все готово rs232_overrun:; Указывает, что данные поступили быстрее, чем мы можем обработать; Это.Нам нужно сбросить схему приемника и промыть; (3 байта) входной буфер USART. banksel RCSTA bcf RCSTA, CREN bsf RCSTA, CREN banksel RCREG movf RCREG, W; Убедитесь, что все буферы пусты. Movf RCREG, W movf RCREG, W goto rs232_done rs232_framing:; Указывает, что был получен неверно сформированный пакет (недействительный; количество стоповых битов, 9 битов данных и т. Д.).Просто прочтите и выбросьте; что у нас есть в регистре приема. banksel RCREG movf RCREG, W rs232_done: return

; Это основная процедура обслуживания прерывания. Он делегирует функции поддержки; в зависимости от обнаруженного источника прерывания. прерывание:; Сохранить текущее состояние movwf SAVED_W; Сохранить первый регистр W movf STATUS, W; Переместите регистр STATUS в W movwf SAVED_STATUS; И сохраните это тоже; Обработка и очистка невыполненных прерываний banksel PIR1 btfsc PIR1, RCIF; Проверить вызов прерывания приема rs232_input; Восстановить состояние movf SAVED_STATUS, W movwf STATUS swapf SAVED_W, F; Загрузки сохранены W без изменения STATUS swapf SAVED_W, W retfie

; ———————————————— —————————-; Основная программа; ———————————————— ——————————

программа:; Настроить периферийные устройства и IO banksel TRISB movlw 0x06; Установите RB1 / RB2 на 1 для работы USART movwf TRISB; Установите скорость передачи 9600 movlw 0x19; 25 десятичных movwf SPBRG; Теперь настройте передатчик banksel TXSTA bcf TXSTA, SYNC; Включить асинхронный режим bsf TXSTA, BRGH; Включить «высокоскоростной» режим bsf TXSTA, TXEN; Разрешить передачу; И ресивер банссель RCSTA bsf RCSTA, SPEN; Включить последовательную функциональность bsf RCSTA, CREN; Включить прием данных; Включить глобальные прерывания banksel INTCON bsf INTCON, GIE bsf INTCON, PEIE; Разрешить прерывания для входящих данных banksel PIE1 bsf PIE1, RCIE main_loop:; Основной цикл программы (работает вечно) goto main_loop

  конец ''
  

и проект MPLAB X можно скачать здесь.

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

Давайте посмотрим на упрощенный пример: вы смотрите DVD, когда звонит телефон, вы прерываете воспроизведение DVD (нажимая паузу) и отвечаете на звонок. После того, как вы ответили на телефонный звонок, вы снова садитесь и возобновляете воспроизведение DVD с того места, где вы его приостановили.Несмотря на то, что вам пришлось на время прекратить просмотр DVD, вы ничего не пропустили — вы возобновили просмотр с той точки, в которой находились, когда зазвонил телефон.

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

В других случаях прерывание может изменить способ решения вашей задачи — ваш друг звонит вам и говорит: « Эй, этот фильм« Титаник »вы взяли напрокат? Лодка тонет! ‘.В этом случае вы можете прекратить просмотр DVD и перейти к другому заданию (потому что теперь вы знаете финал) или вы можете продолжить просмотр, но обращайте больше внимания на признаки концовки.

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

Обработка прерываний

управляется программно на PIC — есть глобальный флаг разрешения прерывания (бит GIE регистра INTCON ) и отдельные биты включения / отключения для всех 10 возможных источников прерывания на процессоре.

Когда на PIC происходит прерывание (и установлены как GIE , так и биты разрешения отдельных прерываний), происходят следующие события:

  1. Текущая инструкция завершена.
  2. Программный счетчик (адрес следующей инструкции) сохраняется в стеке.
  3. Значение 0x0004 загружается в счетчик программ.
  4. Обработка инструкции продолжается с новым значением программного счетчика.

Обработчик прерывания отказывается от управления с помощью инструкции retfie (возврат из прерывания).Когда эта инструкция выполняется, значение наверху стека загружается в счетчик программ, и обработка продолжается. Важно отметить, что между генерированием прерывания и завершением команды retfie никакие другие прерывания не могут быть сгенерированы — сама процедура обработки прерывания не будет прервана.

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

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

Для начала нам нужно иметь место для сохранения регистров W, и STATUS без фактического изменения любого из этих регистров. Поскольку мы не знаем, какой банк регистров выбран, когда мы входим в процедуру, нам необходимо иметь места для сохранения текущих значений, к которым можно получить доступ независимо от текущего банка (изменение банка повлечет за собой изменение регистра STATUS и потерю значение, которое в настоящее время хранится).Это означает, что места хранения должны находиться в общих регистрах, доступных во всех банках (на 16F628A они находятся в диапазоне от 0x70 до 0x7F):

 
 Сохранить состояние несложно.  Сначала мы сохраняем регистр ** W ** (который затем позволяет нам его использовать), а затем регистр ** STATUS **:

``; Сохранить текущее состояние movwf SAVED_W; Сохранить первый регистр W movf STATUS, W; Переместите регистр STATUS в W movwf SAVED_STATUS; И сохраните это тоже

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

``; Восстановить состояние movf SAVED_STATUS, W movwf STATUS swapf SAVED_W, F; Загружает сохраненное W без изменения STATUS swapf SAVED_W, W retfie

 Здесь важно отметить, как восстанавливается регистр ** W **.Если бы мы использовали инструкцию ** movf ** для загрузки сохраненного ** W ** в фактическое ** W **, мы потенциально могли бы изменить значение регистра ** STATUS ** (нулевой флаг, например, если сохраненное ** W ** имело значение 0).  Здесь используется небольшая хитрость - инструкция ** swapf ** не изменяет ** STATUS **. Эта инструкция меняет местами старшие 4 бита регистра с младшими 4 битами того же регистра - первая инструкция ** swapf ** меняет значение * на место * - изменяется только содержимое ячейки памяти SAVED_W.Второй ** swapf ** меняет местами значения обратно, но помещает результат в регистр ** W **, таким образом восстанавливая исходное значение регистра без изменения ** STATUS **.

 Теперь мы можем сохранить и восстановить основное состояние исходной программы, мы можем реализовать наш фактический код обработки прерывания между этими двумя наборами инструкций. Как упоминалось выше, PIC16F628A имеет 10 источников прерываний, но имеет только один вектор прерывания. Как узнать, какой источник прерывания вызвал код прерывания? Ответ прост - каждый источник прерывания имеет связанный с ним бит флага, который указывает, активен ли этот источник прерывания в данный момент.Когда определенное прерывание было обработано, вы должны сбросить связанный с ним флаг прерывания, чтобы избежать повторного запуска того же прерывания после того, как оно уже было обработано. 

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

 Код этого сообщения расширяет код, который мы разработали для [последнего сообщения] (/ serial-programming-part-1-pic16f628a /). Вы можете увидеть полные списки источников: ``; ======================================= =====================================; Последовательная связь для микросхем PIC16F628A. ; ------------------------------------------------- ---------------------------; 12-ОКТ-2012 шанег; ; Простой тест последовательного приема с помощью USART. ; ================================================= ===========================

                 список P = 16F628A; Определите, какой чип использовать, включая P16F628A. INC

                 ; Установите биты конфигурации для этого приложения __config _WDT_OFF & _BOREN_OFF & _INTOSC_OSC_NOCLKOUT

 ; ------------------------------------------------- ---------------------------; Константы и определения; ---------------------------------------------- ------------------------------

 ; Информация о состоянии для обработчика прерывания (в области общей памяти) SAVED_W equ 0x70 SAVED_STATUS equ 0x71

 ; ------------------------------------------------- ---------------------------; Таблица векторов прерываний; ---------------------------------------------- ------------------------------

                 ; Reset vector org 0x0000 goto program

                 ; Вектор прерывания org 0x0004 goto interrupt

 ; ------------------------------------------------- ---------------------------; Функции и процедуры; ---------------------------------------------- ------------------------------

 ; Эта функция отправляет один символ ASCII (содержащийся в W); ; Функция ожидает, пока выходной регистр станет доступным путем тестирования; Бит TRMT в регистре TXSTA send_char: banksel TXSTA wait_to_send: btfss TXSTA, TRMT goto wait_to_send; Загрузите выходной регистр banksel TXREG movwf TXREG return

 ; ------------------------------------------------- ---------------------------; Обработчики прерываний; ----------------------------------------------- -----------------------------

 ; Эта процедура обрабатывает вход RS232, управляемый прерыванием; ; Он считывает полученное значение, увеличивает его на единицу и отправляет обратно. ; Такие ошибки, как кадрирование и перерасход, обрабатываются и игнорируются. rs232_input: banksel RCSTA btfsc RCSTA, OERR; Проверить наличие ошибки переполнения goto rs232_overrun btfsc RCSTA, FERR; Проверить наличие ошибки кадрирования goto rs232_framing banksel RCREG incf RCREG, W; Прочитать полученное значение и увеличить вызов send_char; Отправьте увеличенное значение goto rs232_done; Все готово rs232_overrun:; Указывает, что данные поступили быстрее, чем мы можем обработать; Это.Нам нужно сбросить схему приемника и промыть; (3 байта) входной буфер USART. banksel RCSTA bcf RCSTA, CREN bsf RCSTA, CREN banksel RCREG movf RCREG, W; Убедитесь, что все буферы пусты. Movf RCREG, W movf RCREG, W goto rs232_done rs232_framing:; Указывает, что был получен неверно сформированный пакет (недействительный; количество стоповых битов, 9 битов данных и т. Д.).Просто прочтите и выбросьте; что у нас есть в регистре приема. banksel RCREG movf RCREG, W rs232_done: return

 ; Это основная процедура обслуживания прерывания.  Он делегирует функции поддержки; в зависимости от обнаруженного источника прерывания. прерывание:; Сохранить текущее состояние movwf SAVED_W; Сохранить первый регистр W movf STATUS, W; Переместите регистр STATUS в W movwf SAVED_STATUS; И сохраните это тоже; Обработка и очистка невыполненных прерываний banksel PIR1 btfsc PIR1, RCIF; Проверить вызов прерывания приема rs232_input; Восстановить состояние movf SAVED_STATUS, W movwf STATUS swapf SAVED_W, F; Загружает сохраненное W без изменения STATUS swapf SAVED_W, W retfie

 ; ------------------------------------------------- ---------------------------; Основная программа; ----------------------------------------------- -----------------------------

 программа:; Настроить периферийные устройства и IO banksel TRISB movlw 0x06; Установите RB1 / RB2 на 1 для работы USART movwf TRISB; Установите скорость передачи 9600 movlw 0x19; 25 десятичных movwf SPBRG; Теперь настройте передатчик banksel TXSTA bcf TXSTA, SYNC; Включить асинхронный режим bsf TXSTA, BRGH; Включить «высокоскоростной» режим bsf TXSTA, TXEN; Разрешить передачу; И ресивер банссель RCSTA bsf RCSTA, SPEN; Включить последовательную функциональность bsf RCSTA, CREN; Включить прием данных; Включить глобальные прерывания banksel INTCON bsf INTCON, GIE bsf INTCON, PEIE; Разрешить прерывания для входящих данных banksel PIE1 bsf PIE1, RCIE main_loop:; Основной цикл программы (выполняется вечно) goto main_loop

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

Программа:; Настроить периферийные устройства и IO banksel TRISB movlw 0x06; Установите RB1 / RB2 на 1 для работы USART movwf TRISB; Установите скорость передачи 9600 movlw 0x19; 25 десятичных movwf SPBRG; Теперь настройте передатчик banksel TXSTA bcf TXSTA, SYNC; Включить асинхронный режим bsf TXSTA, BRGH; Включить «высокоскоростной» режим bsf TXSTA, TXEN; Разрешить передачу; И ресивер банссель RCSTA bsf RCSTA, SPEN; Включить последовательную функциональность bsf RCSTA, CREN; Включить прием данных; Включить глобальные прерывания banksel INTCON bsf INTCON, GIE bsf INTCON, PEIE; Разрешить прерывания для входящих данных banksel PIE1 bsf PIE1, RCIE

 Новые функции начинаются с инструкции '* bsf RCSTA, CREN *', которая включает приемную часть USART. Следующие несколько операторов включают генерацию прерывания. Главный управляющий регистр для прерываний - это регистр ** INTCON ** - мы устанавливаем бит ** GIE **, который глобально разрешает генерацию прерывания. Если этот бит не установлен, процедура прерывания никогда не будет вызвана, независимо от того, какие другие флаги установлены.

 ! [Логика прерывания] (/ content / images / galleries / pictutorial / pic_interrupts.png)

 Затем мы устанавливаем бит ** PEIE **, который разрешает прерывания, генерируемые периферийными устройствами на кристалле (включая таймеры, USART и компараторы).Это позволяет прерываниям, генерируемым периферийными устройствами, вызывать подпрограмму обработчика прерываний. Изображение слева показывает логику прерывания. Вы можете видеть, что все периферийные устройства, способные генерировать прерывания, имеют два флага, связанных с этой функциональностью - флаг включения (с суффиксом ** IE **), который вы должны установить в программном обеспечении, чтобы разрешить прерывания для этого источника, и флаг прерывания (с суффикс ** IF **), который контролируется самим периферийным устройством и устанавливается, когда выполняется условие прерывания. В случае модуля приемника USART этими флагами являются ** RCIE ** (в регистре ** PIE1 **) и ** RCIF ** (в регистре ** PIR1 **). Наша последняя часть установочного кода гарантирует, что бит ** RCIE ** установлен, поэтому мы будем получать прерывания при чтении новых данных через последовательный порт.

 Затем нам нужно реализовать тело обработчика прерывания между кодом сохранения и восстановления состояния, описанным выше. В данном случае это очень просто - мы проверяем значение флага ** RCIF **, чтобы увидеть, было ли прерывание сгенерировано приемником USART, и, если да, вызываем процедуру для обработки этого прерывания, как показано ниже:

``; Обработка и очистка невыполненных прерываний banksel PIR1 btfsc PIR1, RCIF; Проверить вызов прерывания приема rs232_input

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

 Функция обработки прерывания USART следующая:

``; Эта процедура обрабатывает вход RS232, управляемый прерыванием; ; Он считывает полученное значение, увеличивает его на единицу и отправляет обратно. ; Такие ошибки, как кадрирование и перерасход, обрабатываются и игнорируются. rs232_input: banksel RCSTA btfsc RCSTA, OERR; Проверить наличие ошибки переполнения goto rs232_overrun btfsc RCSTA, FERR; Проверить наличие ошибки кадрирования goto rs232_framing banksel RCREG incf RCREG, W; Прочитать полученное значение и увеличить вызов send_char; Отправьте увеличенное значение goto rs232_done; Все закончено

 Первое, что мы делаем, это проверяем наличие ошибок.Они обозначены в регистре ** RCSTA ** битами ** OERR ** (для ошибок переполнения) и ** FERR ** (для ошибок кадрирования). Если обнаруживается какое-либо из этих состояний, мы переходим к соответствующему коду для их обработки. Если ошибок не указано, мы просто считываем полученное значение из регистра ** RCREG ** (побочным эффектом которого является очистка флага ** RCIF ** для нас - он будет установлен снова, когда поступят новые данные), увеличиваем его по одному и используйте функцию ** send_char **, определенную в последнем сообщении, чтобы отправить его. Метка ** rs232_done ** просто определяет общую точку выхода для функции, она просто выполняет инструкцию ** return **, чтобы вернуть управление обратно вызывающей стороне.

 Приемник USART может хранить три входящих байта - один в процессе приема и двухбайтовый буфер для данных, которые уже были приняты. Если двухбайтовый буфер уже заполнен, когда третий байт был завершен, будет отмечена ошибка * переполнения *. Это означает, что данные поступают быстрее, чем мы их обрабатываем.Чтобы сбросить ошибку, мы должны сбросить принимающую часть USART (очистив бит ** CREN ** и затем снова установить его) и очистить входной буфер. Следующий код делает это за нас:

`` rs232_overrun:; Указывает, что данные поступили быстрее, чем мы можем обработать; Это. Нам нужно сбросить схему приемника и промыть; (3 байта) входной буфер USART. banksel RCSTA bcf RCSTA, CREN bsf RCSTA, CREN banksel RCREG movf RCREG, W; Убедитесь, что все буферы пусты. Movf RCREG, W movf RCREG, W goto rs232_done

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

`` rs232_framing:; Указывает, что был получен искаженный пакет (недействительный; количество стоповых битов, 9 бит данных и т. Д.). Просто прочтите и выбросьте; что у нас есть в регистре приема. Banksel RCREG movf RCREG, W

 Наш основной программный цикл остается прежним - мы просто сидим в пустом цикле, потребляя такты.# Тестирование программного обеспечения

 Как я ни старался, мне не удалось смоделировать последовательный ввод с помощью среды MPLAB X, насколько я могу судить, эта функциональность просто не поддерживается для чипа 16F628A. Другими альтернативами являются использование [более старой версии] (http://www.microchip.com/stellent/idcplg?IdcService=SS_GET_PAGE&nodeId=1406&dDocName=en023073) программного обеспечения MPLAB (которое, к сожалению, доступно только для Windows) или использование открытый исходный код [gpsim] (http://gpsim. sourceforge.net/), который доступен как для Linux, так и для Windows.В этом случае я использовал MPLAB v8.86, который кажется последним выпуском MPLAB перед переходом на MPLAB X. Все снимки экрана и описания в этом разделе относятся к этому программному обеспечению.

> ** Обращение к читателям ** Если кто-нибудь знает, как имитировать последовательный ввод на микросхемах PIC среднего класса, таких как 16F628A, с использованием MPLAB X, не могли бы вы поместить несколько указателей в комментарии? До сих пор я нашел несколько сообщений от людей с той же проблемой, но без реальных решений.

 После того, как вы загрузили и установили программное обеспечение MPLAB (параметры установки по умолчанию подходят), вам нужно будет загрузить и извлечь [файлы проекта] (/ content / images / files / pic16f628a / picserial2.tgz) для этого сообщения (они все еще находятся в формате MPLAB X для согласованности). Для создания и настройки проекта в формате MPLAB 8 необходимо выполнить следующие действия:

 ! [Создание проекта - Часть 1] (/ content / images / galleries / pictutorial / mplab8_create_project_1. png)


1. Создайте новый каталог для хранения проекта (я использовал каталог «* C: / working / picserial2 *»). Скопируйте файлы '* picserial2.asm *' и '* picserial2.sim *' из архива кода в этот каталог.
2. Запустите MPLAB и выберите * Project | Новый... * из меню. Введите имя проекта и каталог, который вы создали на шаге 1.
3. Выберите * Проект | Добавить файлы в проект ... * из меню и добавить файл * picserial2.asm *.
4. Выберите * Настроить | Выберите Device ... * из меню и убедитесь, что тип устройства установлен на * PIC16F628A *.
5. Выберите * Отладчик | Выбрать инструмент | MPLAB SIM * из меню, чтобы включить встроенный симулятор.
6. Выберите * Отладчик | Настройки * из меню. В появившемся диалоговом окне измените * Частоту процессора * на 4 МГц. Перейдите на вкладку * Uart1 IO * и включите UART.7. В поле * Входной файл * перейдите к местоположению файла * picserial2.sim *, который вы скопировали из архива кода, и выберите его. Выберите * Rewind Input * и установите для вывода значение * Window *. 
8. Нажмите кнопку * Build All * на панели инструментов. Появится диалоговое окно с вопросом, хотите ли вы использовать код * Absolute * или * Relocatable * - выберите * Absolute *.

 ! [Создание проекта - Часть 2] (/ content / images / galleries / pictutorial / mplab8_create_project_2.png)

 Если все прошло хорошо, ваш проект должен быть построен, и откроется окно * Вывод *.Я не собираюсь вдаваться в подробности о MPLAB 8, поскольку в будущих публикациях будет по-прежнему использоваться MPLAB X (как только мы убедимся, что код последовательного ввода работает, мы сможем обойти невозможность его моделирования). Я предоставил несколько снимков экрана на изображениях выше и справа, чтобы помочь вам настроить проект - обратитесь к ним, если инструкции не ясны.

 Предоставленный файл '* picserial2.sim *' является файлом * стимула *, который определяет данные, которые должны быть отправлены на смоделированный последовательный порт. Этот файл ждет 1 секунду, а затем отправляет последовательность символов «Hello World!».  за которым следует символ TAB (ASCII 9), а затем процесс повторяется бесконечно.Между каждым персонажем есть случайная задержка, чтобы обеспечить более реалистичное моделирование. При условии, что задержка составляет от 5 до 20 миллисекунд - если задержка меньше примерно 1,5 мс, вы начнете получать ошибки переполнения (и символы будут потеряны), формат файла довольно простой - вы можете поиграть с настройками в нем, чтобы увидеть ответ.

 Чтобы запустить программу в симуляторе, просто нажмите кнопку * Выполнить * на панели инструментов (маленький зеленый значок «Играть»), и результат отобразится в окне * Выход *.Выберите вкладку * SIM Uart1 *, и вы увидите результат, который мы генерируем. В этом случае вы должны увидеть строку «Ifmmp! Xpsme», повторяющуюся снова и снова с одной итерацией на строку - это входной текст («Hello World!»), Сдвинутый на один символ вверх (символ TAB становится переводом строки - ASCII 10 - принудительное добавление новой строки на каждой итерации), что мы и ожидаем. 


# Что будет дальше?

 Этот пост завершает программную часть последовательного программирования - нашим следующим шагом будет сборка и тестирование оборудования.В следующем посте мы рассмотрим электрические характеристики интерфейсов RS232 и построим схему, которую можно подключить к стандартному ПК для тестирования. И код для этой статьи и [предыдущей] (/ serial-programming-part-1-pic16f628a /) будет протестирован на схеме, чтобы убедиться, что наша реальная работа соответствует моделированию.



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

— Часть 1 (PIC16F628A)

Это вторая из серии статей, описывающих конструкцию интерфейсной платы, подходящей для управления 2 двигателями, 2 сервоприводами и предоставляющей набор двоичных входов и выходов (вот предыдущий статья).Плата обеспечивает ограниченный встроенный интеллект (достаточный только для защиты двигателей и сервоприводов от недопустимых операций) — она ​​предназначена для управления с внешнего компьютера через соединение RS232.

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

  1. Это сообщение. Охватывает основы последовательной связи, знакомит с последовательным периферийным устройством на PIC, реализует код для отправки данных через RS232 и проходит через интегрированный симулятор в MPLAB / X для проверки работы программного обеспечения.
  2. Добавляет обработку прерываний на PIC и изменяет код для обработки последовательного ввода, управляемого прерываниями. Еще раз код тестируется на симуляторе для проверки его работы.
  3. Охватывает электрические характеристики RS232 и обеспечивает схему для связи RS232 с обычными устройствами.Это также касается особого случая связи с Raspberry Pi через RS232.

Я также начал включать полные проекты MPLABX в сообщения — вы можете найти его здесь (более старые сообщения также были обновлены соответствующими ссылками). Итак, без лишних слов, перейдем к последовательному программированию на PIC …

Два (или более) устройства могут обмениваться данными друг с другом, используя параллельную или последовательную связь. В параллельной модели все биты передаются одновременно по нескольким соединительным проводам (представьте себе порт принтера старого типа с 25 контактами — 8 из этих контактов обеспечивали данные, а остальные обеспечивали подтверждение связи и подключения питания).При последовательной связи данные передаются по одному проводу — по одному бит за раз. Часто существует один провод на каждое направление (так, один провод для передачи от устройства A к устройству B, а другой — для передачи от устройства B к устройству A).

Скорость, с которой данные передаются по последовательному каналу, измеряется в бит в секунду (бит / с, обычно называемая скоростью передачи). Обратите внимание, что не обязательно существует прямая корреляция между скоростью передачи данных и количеством байтов, , которые передаются в секунду.Хотя может показаться, что 9600 бод приведут к 1200 байтам в секунду (9600/8), могут быть дополнительные биты кадрирования, отправляемые с каждым байтом (например, биты запуска, остановки и четности), а также небольшая задержка между каждым байтом. Результирующая скорость байт будет в результате немного ниже.

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

Спецификация RS232 — это общий протокол асинхронной передачи данных. Хотя сами данные передаются асинхронно, полная спецификация допускает некоторую синхронизацию (указывает на то, что получатель готов принять данные, у отправителя есть данные, доступные для передачи, и что устройство подключено на другом конце).Функции синхронизации не являются обязательными для RS232 (они обычно обозначаются как опции « Flow Control » в коммуникационных программах). Обратите внимание, что параметры Flow Control не изменяют скорость (скорость передачи бод ) соединения, они просто позволяют партнерам определять , когда можно получить байт

Для минимальной двунаправленной связи соединение RS232 требует канала приемника и канала передачи на каждом конце. Они определены как Tx (передатчик) и Rx (приемник).Для установления связи «один к одному» Tx на одном конце необходимо подключить к Rx на другом конце и наоборот.

В этом случае мы собираемся использовать PIC для обеспечения соединения RS232 (асинхронного) со скоростью передачи 9600 бод. Не будет ни управления потоком, ни проверки четности, ни одного стопового бита. Обычно в большинстве коммуникационных программ он отображается как 9600 N81 .

Версия PIC 16F628A имеет встроенный USART или универсальный синхронный / асинхронный приемник / передатчик ) , который делает большую часть тяжелой работы для нас с точки зрения последовательной связи.Этот конкретный USART может использоваться для протоколов, отличных от RS232, таких как I2C или SPI, но в этом посте мы собираемся исследовать только функциональность RS232.

Есть три основных регистра, которые управляют работой USART — TXSTA (регистр состояния передачи и управления), RCSTA (регистр состояния приема и управления) и SPBRG (генератор скорости передачи последовательного протокола). Первые два регистра состоят из битов флага, которые определяют общую работу USART, последний регистр ( SPBRG ) содержит значение, которое контролирует скорость передачи данных в последовательной связи.

Генерация скорости передачи данных использует внутренние часы / счетчик и зависит от тактовой частоты, применяемой к микросхеме. Мы используем внутренний генератор с частотой 4 МГц, и все наши расчеты основаны на этом значении. Таблица данных для 16F682 предоставляет удобный набор справочных таблиц для определения подходящих настроек скорости передачи для данной системной тактовой частоты (они начинаются примерно со страницы 75).

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

Полный список источников может быть: «; ======================================= =====================================; Последовательная связь для микросхем PIC16F628A. ; ————————————————- —————————; 09-ОКТ-2012 шанег; ; Простой тест последовательной передачи с помощью USART. ; ================================================= ===========================

  список P = 16F628A; Определите, какой чип использовать, включая P16F628A.INC

             ; Установите биты конфигурации для этого приложения __config _WDT_OFF & _BOREN_OFF & _INTOSC_OSC_NOCLKOUT
  

; ———————————————— —————————-; Константы и определения; ———————————————- ——————————

; Константы CHAR_BASE equ 0x41; Первый символ (ASCII для ‘A’) CHAR_COUNT равно 0x1A; Количество символов (26: от «A» до «Z») END_OF_LINE equ 0x0A; Знак конца строки

; Регистры CHAR_CURRENT равно 0x20; Индекс текущего символа

; ———————————————— —————————-; Таблица векторов прерываний; ———————————————- ——————————

 ; Reset vector org 0x0000 goto program

             ; Вектор прерывания org 0x0004 goto interrupt
  

; ———————————————— —————————-; Функции и процедуры; ———————————————- ——————————

; Эта функция отправляет один символ ASCII (содержащийся в W); ; Функция ожидает, пока выходной регистр станет доступным путем тестирования; Бит TRMT в регистре TXSTA send_char: banksel TXSTA wait_to_send: btfss TXSTA, TRMT goto wait_to_send; Загрузить выходной регистр banksel TXREG movwf TXREG return

; ———————————————— —————————-; Обработчик прерывания; ———————————————— ——————————

прерывание:; Сохранить текущее состояние; Обработка и очистка невыполненных прерываний; Восстановить состояние retfie

; ———————————————— —————————-; Основная программа; ———————————————— ——————————

программа:; Настроить периферийные устройства и IO banksel TRISB movlw 0x06; Установите RB1 / RB2 на 1 для работы USART movwf TRISB; Установите скорость передачи 9600 movlw 0x19; 25 десятичных movwf SPBRG; Теперь настройте передатчик banksel TXSTA bcf TXSTA, SYNC; Включить асинхронный режим bsf TXSTA, BRGH; Включить «высокоскоростной» режим bsf TXSTA, TXEN; Разрешить передачу; И ресивер банссель RCSTA bsf RCSTA, SPEN; Включите серийную функциональность; Установите наши переменные banksel CHAR_CURRENT movlw 0x00 movwf CHAR_CURRENT main_loop:; Отправить текущий символ banksel CHAR_CURRENT movlw CHAR_BASE addwf CHAR_CURRENT, W call send_char; Перейти к следующему символу banksel CHAR_CURRENT incf CHAR_CURRENT, F movlw CHAR_COUNT subwf CHAR_CURRENT, W btfss STATUS, Z goto main_loop; Прокрутка символов (возврат к смещению 0) movlw 0x00 movwf CHAR_CURRENT; Отправить возврат каретки movlw END_OF_LINE call send_char; Основной цикл программы (работает вечно) goto main_loop

  конец ''. Я пройдусь по важным частям источника (с примерами) здесь, но, вероятно, стоит открыть список на другой вкладке или в другом окне для справки. В этом посте мы просто собираемся настроить USART, чтобы разрешить отправку со скоростью 9600 бод, а затем многократно отправлять заглавные буквы от «A» до «Z». Не очень интересно, но достаточно, чтобы показать, как все это работает.
  

Первое, что нам нужно сделать, это настроить контакты ввода-вывода, которые мы будем использовать, и настроить USART. Мы делаем это в начале программы, как показано ниже…

 
 Контакты ввода-вывода ** RB1 ** и ** RB2 ** выполняют функции ** RX ** и ** TX ** соответственно. В таблице данных для PIC указано, что оба этих контакта должны быть настроены как входы, установив соответствующие биты в регистре ** TRISB ** на «1». Скорость передачи настраивается в соответствии с справочными таблицами в таблице данных, при работе на частоте 4 МГц это считается * высокой скоростью *, поэтому мы должны установить бит ** BRGH ** в ** TXSTA ** (что выполняется несколько инструкций позже, когда мы настроим этот регистр), а также загрузку значения счетчика (в данном случае 25 десятичных знаков) в ** SPBRG ** здесь. Затем мы настраиваем USART, устанавливая асинхронный режим (очищая бит ** SYNC ** от ** TXSTA **), включая высокоскоростной режим (см. Выше) и разрешая передачу (устанавливая бит ** TXEN **). Единственный флаг, который нас интересует на данный момент для приемника, - ** SPEN **, который глобально включает USART.

 Чтобы отправить байт данных, нам просто нужно загрузить значение, которое вы хотите отправить, в регистр ** TXREG **. Затем USART отправит один стартовый бит, 8 бит данных, которые мы загрузили в ** TXREG **, а затем один стоповый бит (биты * start * и * stop * используются для кадрирования данных, чтобы получатель мог интерпретировать Это).На скорости 9600 бод, однако, для передачи каждого бита требуется 1/9600 секунды, поэтому для отправки всего кадра требуется около 1 мсек. Когда PIC работает на частоте 4 МГц, это означает, что проходит около 1000 командных циклов, прежде чем в буфер можно будет загрузить следующий символ. Вместо того, чтобы заставлять нас использовать ручной цикл синхронизации (как мы делали в предыдущей статье), PIC предоставляет бит флага (бит ** TRMT **) в регистре ** TXSTA **, который указывает, когда буфер свободен.  Вспомогательная функция, определенная ниже, ожидает, пока буфер не будет готов принять дополнительные данные, прежде чем загружать текущее содержимое регистра ** W ** в буфер передачи для отправки.Ничто не мешает вам загрузить новое значение в регистр передачи до того, как оно будет готово, но это заставит PIC начать отправку нового значения непосредственно перед тем, как старое значение будет полностью передано - вы просто получите искаженную связь.

``; Эта функция отправляет один символ ASCII (содержащийся в W); ; Функция ожидает, пока выходной регистр станет доступен, путем тестирования; Бит TRMT в регистре TXSTA send_char: banksel TXSTA wait_to_send: btfss TXSTA, TRMT goto wait_to_send; Загрузите выходной регистр banksel TXREG movwf TXREG return

 Приведенная выше инструкция * btfss * является одной из двух [условного перехода] (http: // en.wikipedia.org/wiki/Conditional_branch) инструкции, поддерживаемые PIC (по сути, оператор * IF THEN *). Акроним означает ** B ** it ** T ** est ** F ** ile, ** S ** kip if ** S ** et (другой - * btfsc * - ** B ** it ** T ** est ** F ** ile, ** S ** kip if ** C ** Lear).  Первый параметр команды - это регистр файла, с которым нужно работать, а второй параметр - номер бита (от 0 до 7) для проверки. Если тест пройден (например: указанный бит * установлен * или * очищен * в зависимости от инструкции), следующая инструкция не будет выполняться (она пропускается).Ассемблер PIC услужливо определяет константы для всех * специальных * битов в системных регистрах, поэтому приведенный выше код будет продолжать переходить к метке * wait_to_send *, пока не будет установлен флаг ** TRMT **.

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

``; Константы CHAR_BASE equ 0x41; Первый символ (ASCII для 'A') CHAR_COUNT равно 0x1A; Количество символов (26: от «A» до «Z») END_OF_LINE equ 0x0A; Символ конца строки

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

``; Регистры CHAR_CURRENT равно 0x20; Индекс текущего персонажа

 Эта переменная содержит смещение символа, а не сам символ. Мы добавляем это к значению * CHAR_BASE *, чтобы получить фактический код ASCII перед его отправкой. Это означает, что мы хотим начать с 0, дать ему посчитать до 26, а затем снова сбросить его до нуля. Следующий блок кода делает именно это ...

`` movlw 0x00 movwf CHAR_CURRENT main_loop:; Отправить текущий символ banksel CHAR_CURRENT movlw CHAR_BASE addwf CHAR_CURRENT, W call send_char; Перейти к следующему символу banksel CHAR_CURRENT incf CHAR_CURRENT, F movlw CHAR_COUNT subwf CHAR_CURRENT, W btfss STATUS, Z goto main_loop; Прокрутка символов (возврат к смещению 0) movlw 0x00 movwf CHAR_CURRENT; Отправить возврат каретки movlw END_OF_LINE call send_char; Основной цикл программы (выполняется вечно) goto main_loop

 Для проверки наведения мы загружаем ** W ** с количеством символов в последовательности (** CHAR_COUNT **) и вычитаем это из текущего индекса символа (** CHAR_CURRENT **), убедившись, что мы поместили результат в * * W **, а не регистр ** CHAR_CURRENT **. Если результат этой операции равен нулю (т.е. ** CHAR_CURRENT ** равен ** CHAR_COUNT **), флаг ** Z ** (или * ноль *) устанавливается в регистре ** STATUS **. Если этот бит * установлен * (имеет значение 1), мы пропускаем следующую инструкцию * goto * и переходим к коду пролистывания, если бит * очищен *, выполняется инструкция goto, и мы выполняем еще одну итерацию основной цикл.

 Когда мы возвращаемся к 0, мы также отправляем символ * END_OF_LINE *, чтобы каждая последовательность алфавита отображалась в отдельной строке.Помимо большей визуальной привлекательности, это также позволяет проверить правильность нашей логики.


# Моделирование программного обеспечения

 Отладка кода на оборудовании очень сложна - если он не работает, существует большое количество потенциальных точек отказа, которые необходимо протестировать, чтобы определить фактическую причину проблемы (правильная ли схема? Установлены ли биты предохранителей. правильно? Мы работаем на правильной тактовой частоте? Есть логическая ошибка?).  Используя [симулятор или эмулятор] (http: //en.wikipedia.org / wiki / Emulator) для проверки работы программного обеспечения упрощает устранение ошибок, связанных с программным обеспечением, перед запуском * реальной * системы на оборудовании. Моделирование позволяет приостановить выполнение кода, проверить состояние микросхемы (регистры, флаги и т. Д.) И показать сгенерированный результат, чтобы убедиться, что он соответствует ожиданиям.

 ! [Открыть проект] (/ content / images / galleries / pictutorial / mplabx_open_project.png)

 Бесплатная IDE [MPLAB X] (http://www.microchip.com/pagehandler/en-us/family/mplabx/) от Microchip включает разумный симулятор для всего семейства процессоров PIC.Для этого поста я предоставил проект MPLAB X, который можно [загрузить здесь] (/ content / images / files / pic16f628a / picserial1.tgz). Извлеките файлы проекта (он должен быть совместим с версиями MPLAB для Windows, OS / X и Linux) в любое место по вашему выбору и откройте проект в MPLAB, выбрав * Open Project * из меню * File * (показано слева изображение руки) и перейдите туда, куда вы извлекаете файлы проекта (вам нужно выбрать имя каталога - в данном случае «picserial1»).  Перейдите к * Исходным файлам * и откройте файл picserial1.asm ', дважды щелкнув по нему, как показано на изображении ниже.

 ! [Просмотр исходного кода] (/ content / images / galleries / pictutorial / mplabx_picserial1_asm.png)

 Затем нам нужно настроить симулятор в соответствии с оборудованием, которое мы будем использовать. Этот процесс состоит из трех этапов (показано на изображении справа) ...

 ! [Настройки симулятора] (/ content / images / galleries / pictutorial / mplabx_simulator_settings.png)


1. Щелкните правой кнопкой мыши имя проекта в дереве слева от экрана (в данном случае - «picserial1») и выберите «Свойства» во всплывающем меню.2. Выберите в дереве категорию * Simulator * и убедитесь, что в раскрывающемся списке * Option Categories * выбрано * Oscillator Options *. Мы используем внутренний параметр 4 МГц, поэтому установите * Частоту процессора * на 4 и убедитесь, что * МГц * выбрано в качестве значения * Входной частоты *.
3. Выберите * Uart1 IO Options * из раскрывающегося списка * Option Categories * и убедитесь, что он включен.  Выберите * Window * в качестве вывода (в данный момент нет необходимости выбирать выходной файл).

 ! [Начать отладку] (/ content / images / galleries / pictutorial / mplabx_start_debug.png)

 Чтобы запустить программу в симуляторе, нажмите кнопку * Debug Main Project * на панели инструментов (показанной на изображении слева), и в правом нижнем углу окна MPLABX откроется набор новых вкладок (показано на изображении ниже). . Выберите вкладку * Выход *, а затем вкладку * Выход UART1 * под ней. Вы должны увидеть алфавит (в верхнем регистре) с одной полной последовательностью символов от «A» до «Z» в каждой строке.

 ! [Вывод отладки] (/ content / images / galleries / pictutorial / mplabx_debug_output.png)

 Симулятор в MPLABX имеет большой набор функций, их слишком много, чтобы здесь описать.В следующих публикациях я представлю новые функции по мере необходимости - а пока стоит прочитать файлы справки для MPLAB. Вот некоторые полезные вещи, на которые стоит обратить внимание: * часы * (которые позволяют вам проверять содержимое памяти и регистров) и * [точки останова] (http://en. wikipedia.org/wiki/Breakpoint) * (которые позволяют вам приостановить выполнение в определенной точке кода для проверки текущего состояния процессора).


# Что будет дальше?

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

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

  

PIC16F628A Последовательная связь | willhart.io

Последовательная связь широко используется в проектах электроники, и многие микроконтроллеры поставляются с некоторой формой USART на борту. Я собираюсь описать вот как я получил последовательную связь PIC USART, работающую с PIC16F628A, и получил PIC разговаривает с Arduino Uno.Для этого я использую PICKIT2, мой собственный Коммутационная плата PIC16F628A и компилятор MicroC, потому что у него удобный серийный номер встроенная библиотека. Если вы используете MPLAB или другой инструмент разработки, вы расположение соответствующих регистров можно найти в таблицах данных для TXSTA и RCSTA .

Код

Сам код очень простой — большая часть настройки выполняется с использованием двух регистров — TXSTA и RCSTA . Есть три основных шага в настройке последовательной передачи на PIC16F628A:

  1. Включить последовательную связь
  2. Установить режим связи
  3. Установить скорость передачи

Однако лучшим источником информации (конечно) является таблица данных… чтобы включаем последовательную связь устанавливаем (т.е. ставим равным 1) TXSTA.TXEN и RCSTA.SPEN .

Затем мы устанавливаем 8-битный режим (в таблице данных довольно много информации около 9-битного режима, но для этого простого примера, вероятно, не имеет отношения) путем очистки TXSTA.TX9 и RCSTA.RX9 (т. е. равняется 0). 16F628A может работать в либо синхронный, либо асинхронный последовательный режим, но здесь мы устанавливаем асинхронный очистка TXSTA.SYNC .

  void main () {

     // некоторая стандартная конфигурация PIC16F628A
     TRISA = 0x00; // вывод
     TRISB = 0xFF; // ввод
     ПОРТА = 0x00; // отключаем ПОРТУ
     CMCON = 0x07; // выключаем компараторы, устанавливая последние три бита на 111

     // Шаг 1, включаем USART
     TXSTA.TXEN = 1; // передача разрешена
     RCSTA.SPEN = 1; // включаем последовательный порт

     // Шаг 2, установите 8 бит, асинхронный непрерывный режим
     TXSTA.TX9 = 0; // 8-битная передача
     RCSTA.RX9 = 0; // 8-битный прием
     TXSTA.SYNC = 0; // асинхронный режим
     RCSTA.CREN = 1; // включаем режим непрерывного приема

     // Шаг 3. Установите скорость передачи данных с помощью встроенного генератора скорости передачи.
     TXSTA.BRGH = 1; // установить высокую скорость генератора
     СПБРГ = 0b00011001; // устанавливаем скорость передачи 9600 кб, асинхронный режим BTGH = 1

     // инициализируем библиотеку и ждем ее запуска
     UART1_Init (9600);
     Delay_ms (100);

     // хорошо, теперь какой-то фиктивный код . .. (цикл вечно и вечно и ...)
     // просто отправляем некоторую информацию каждую секунду
     делать
     {
         UART1_Write_Text («Отправка текста»);
         Delay_ms (1000); // ждем одну секунду
     } while (1);
}  

Затем я построил очень простой скетч Arduino, из памяти (и непроверенных) чего-то по строкам:

  void setup () {
        Серийный.begin (9600);
}

void loop () {
        while (Serial.available ()> 0) {
         Serial.write (Serial.read ());
        }
}  

Что происходит?

Подключите порты RX и TX от PIC16F628A к портам TX и RX Ардуино. Скомпилируйте скетч, запрограммируйте PIC, а затем откройте серийный номер Arduino. монитор. Каждую секунду или около того вы должны видеть сообщение, появляющееся на серийном номере монитор … Отправка текста . Итак, ваша первая последовательная связь!

Как подключить PIC к ПК | ПИК

Предварительные требования

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

  • Микроконтроллеры — PIC18
  • Модуль PIC UART
  • Visual Studio

FTDI: последовательная связь все еще действительна

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

Тем не менее, технологии пошли дальше и оставили нас в темноте, не имея более удобных портов, с которыми можно было бы играть, — то есть до тех пор, пока на сцену не вышла FTDI.

FTDI (Future Technology Devices International) — компания, производящая полупроводниковые устройства, основанная в 1992 году. С тех пор они приобрели известность в мире электроники (особенно в среде любителей), поскольку они производят ИС, которая может соединять USB-порт с последовательным портом. . Другими словами, их ИС будет обрабатывать USB-устройства и предоставлять пользователю подключение к физическому последовательному порту на ИС, а также виртуальный последовательный порт на компьютере.

В этом руководстве мы будем использовать VB.net для создания программы формы, которая может взаимодействовать с PIC через виртуальный последовательный порт.

VB.net был выбран для этого проекта, потому что, по мнению и опыту автора, VB.net более удобен при работе с последовательными портами. В отличие от C ++ и C #, VB.net более снисходителен и упрощает понимание кода. Последовательный порт можно настроить в VB.net с помощью нескольких коротких строк кода. Для сравнения, в C ++ или C # требуется гораздо больше строк только для инициализации порта.Это не означает, что VB.net — лучший язык в целом; это просто удобный для хобби язык для общения PIC-PC.

Последовательная связь PIC

Первый шаг в этом проекте — настроить микроконтроллер PIC, чтобы мы могли использовать модуль UART. Этот код инициализации находится в setup.h и настраивает модуль UART для работы в асинхронном режиме, использования 8 бит и работы со скоростью 10417 бод. Он также настраивает PIC для запуска прерывания при получении байта через UART; это сделано для того, чтобы мы могли немедленно обработать входящие данные, чтобы предотвратить их потерю.

Код PIC здесь также имеет несколько процедур OLED, поэтому мы можем отображать текст, который в настоящее время хранится в массиве temp_text. Каждый раз, когда вызывается прерывание приема, байт UART сохраняется в temp_text, а strPos увеличивается.

Настройка микроконтроллера PIC

Следующие программы являются примерами, которые я использую для обучения программированию. 8-битных микроконтроллеров PIC. Хорошим справочником является книга «Designing Embedded Системы с микроконтроллерами PIC: принципы и применение » пользователя Tim Wilmshurst.Таблица данных для PIC также является хорошей справкой. для получения информации о битах для каждого регистра адреса памяти в микросхеме.

Используемый нами метод заключается в программировании микросхемы PIC с помощью PICKit2 в сборке. язык. PICKit2 относительно недорогой и обслуживает большие разнообразие микроконтроллеров PIC. Обычно мы начинаем с PIC16F690 микроконтроллер, поскольку в нем есть все, что нам нужно, и небольшое количество булавок (20). Помещая PIC16F690 в макет, мы используем PICKit2 «только» и подключите наши 6 проводов от PICKit2 к микроконтроллеру, как показано на диаграмма Схема Pickit2.Мы проводим следующая процедура для тестирования нашей системы. Программирование осуществляется с помощью MPLAB (бесплатная загрузка) ПО от микрочипа в сборке.

  1. Сначала запрограммируйте микросхему PIC с помощью программы test.asm, который подает 5 вольт, а затем 0 вольт на контакт № 16 (C0).
  2. Проверьте выход вывода 16 с помощью осциллографа. Должен быть выход 5 вольт. который длится 1 микросекунду (для тактовой частоты 4 МГц), и 0 вольт, который длится 3 микросекунды Если это сработает, значит, мы знаем, что настроили программатор и микросхему. правильно.
  3. Затем мы проверяем последовательную передачу, так как мы хотим получать и сохранять данные, которые мы отправить с микроконтроллера. В качестве первой проверки программируем код sertest1.asm, который отправляет тот же номер через последовательный порт на 9600 BAUD
  4. Чтобы проверить, работает ли последовательный выход, мы подключаем осциллограф к контакту TX (# 10 для PIC16F690). Выход для нуля в двоичном числе должен быть 5 вольт длительностью. 1 микросекунда (для 9600 BAUD). Выход для единицы в двоичном числе должен быть равен 0 вольт. за 1 микросекунду (для 9600 BAUD).Также будет бит запуска и остановки, так что полный сигнал будет длиной 10 бит.
  5. Если вывод TX производит правильный вывод, есть два способа, которыми мы можем считывать последовательные данные с ПК: с помощью кабеля TTL-232R-5V к usb или с помощью микросхему MAX232 к последовательному порту. Первый метод прост и удобен в использовании.
    1. USB-вход для ПК: Самый простой способ передать данные с PIC на ПК — использовать Кабель TTL-USB: TTL-232R-5V (прямой разъем) или TTL-232R-5V-WE (концы проводов) сделано FTDI. Кабель имеет 6 выводов, 4 из которых подключены непосредственно к Контакты PIC. Увидеть Соединения PIC-usb для принципиальной схемы соединений.
    2. Ввод ПОСЛЕДОВАТЕЛЬНОГО ПОРТА на ПК: если требуется ввод данных в последовательный порт, то микросхема MAX232 обеспечивает соответствующий сдвиг напряжения для порта. Микросхема MAX232 будет сдвигать 5 вольт на +8 вольт и 0 от вольт до -8 вольт для ввода в последовательный порт. Увидеть max232 (комплимент www.SoDoItYourself.com) для принципиальная схема подключения PIC к последовательному порту.Чтобы проверить схему, считываем вывод микросхемы MAX232 осциллографом чтобы гарантировать, что правильное значение +/- 8 вольт представляет двоичное число.
  6. Наконец, асинхронный последовательный вывод на ПК считывается в операционной системе Linux с одним из перечисленные ниже программы C (чтение асинхронного последовательного вывода). Как только правильное двоичное число будет воспроизведено на Монитор ПК, мы можем начинать наши проекты. Поскольку в этом тесте мы отправляем то же самое двоичное число каждый раз, мы иногда получаем ошибки кадрирования.
  7. В качестве еще одной проверки последовательной передачи программируем микроконтроллер программой sertest3.asm, который увеличивает двоичное число на единицу и отправляет его через последовательный порт на ПК. На мониторе ПК должны выводиться последовательные числа.
  8. См. Соединения на макетной плате для нашего внутрисхемного программирования настройка на макетной плате. См. Protoboard для изображения нашего макет. Резонатор на 20 МГц был подключен к микросхеме на рисунке.

Примеры программ для микроконтроллера PIC

  1. время 2.как м это ассемблерный код, который считывает таймер и отправляет данные на ПК через серийный. В коде есть приятная процедура прерывания, которая увеличивает регистры при переполнении timer0. Полные часы используют 4 регистра.
  2. timer2.asm это ассемблерный код, который мы используем для синхронизации стробирования лазера (или фото). Программа ждет, пока вывод 11 не станет низким, берет отметку времени и отправляет таймер 4 байтов через последовательный порт на ПК. Затем он ждет до вывода 11 переходит в высокий уровень, принимает отметку времени и отправляет 4 байта таймера через последовательный порт на ПК.Цикл повторяется бесконечно. Эта программа была разработана «Си Джей Беккарелли». как часть его старшего проекта.
  3. atod20hl.asm это ассемблерный код, который быстро выполняет преобразование аналогового сигнала в цифровой 80 раз со значениями хранится в памяти. Затем данные передаются через последовательный порт на ПК. Строка конфигурации включает внешние Резонатор 20 МГц (_HS_OSC), а последовательный передается на 115,2 Кбод. 10 бит A-to-D сэмплирование может быть выполнено на частоте 300 кГц с помощью этой программы. Эта программа была написана Майкл Мэнселл в рамках своего старшего проекта.

Чтение асинхронного последовательного вывода с чипа через последовательный порт ПК и порт USB

Отличный веб-сайт для чтения и записи последовательного и параллельного порт: www. beyondlogic.com. Ниже мы приводим пример программы, которая работает в Linux для чтения последовательного порта.
  1. picserin.c: Эта программа написана на C и работает в Linux. Он читает последовательный порт 24 раза подряд и выводит байты на экран. Мы просто используем его как тест, чтобы увидеть, Микросхема PIC правильно передает последовательные данные.
  2. Последовательные данные также могут быть прочитаны через порт USB. Программа usbserial.c: написан на C и работает в Linux. Мы используем последовательный USB адаптер, для которого в Ubuntu есть драйвер. После подключения USB-разъема настроен драйвер устройства «ttyUSB0».

Время на ПК через параллельный порт

Можно сделать довольно точную синхронизацию для входа TTL, используя параллельный порт. Ниже мы перечисляем некоторые коды, которые мы используем (или использовали) в нашем классе для фотозатворы тайминга.
  1. в ожидании.c: Эта программа написана на C и запускается в Linux для нашего эксперимента с маятником. Он проверяет параллельный порт на наличие изменение на контакте 10. Когда происходит изменение, метка времени получается с помощью звонок в rdtsc.
  2. atwoodxpar.c: Эта программа написана на C и работает в Linux для нашего эксперимента с машиной atwood. Он проверяет параллельность порт для изменения на выводе 10 параллельного порта. Когда происходит изменение, метка времени получается с помощью вызова rdtsc. Данные можно изобразить на монитор через библиотеку X11.Для компиляции используйте gcc -lm -lX11 atwoodxpar.c

Есть переводы этой страницы на румынский, эстонский, латышский, польский, венгерский, Македонский, болгарский и финский. Ссылки на эти переводы были удалено.

Домашняя страница Сигела

Физический факультет | Колледж наук

Программирование микроконтроллеров PIC со связью Bluetooth

Можно передавать байтовые данные (серийно) по bluetooth с микроконтроллеров PIC с помощью микрочипов HC-05 bluetooth модуль. Последовательная связь осуществляется с помощью модуля EUSART, который имеется во многих микроконтроллерах PIC. я предпочитаю чтобы использовать самый простой микроконтроллер PIC с этой функцией, PIC16F690. Для начала можно запрограммируйте PIC16F690 с помощью следующей тестовой программы.

Программирование микроконтроллера PIC sertestBT.asm — это простая тестовая программа для PIC16F690, написанная на ассемблере для тестирования последовательная передача данных по Bluetooth. Программа отправляет байт через модуль EUSART в HC-05 для последовательной передачи.Программа задерживается примерно на 1/4 секунды, затем увеличивает байт на 1 и отправляет увеличенный байт. Данные перенесенный начинается с 0 и увеличивается до 255, затем снова проходит цикл и т. д. Один раз также можно запрограммировать чип в C или другом компиляторе для микрочипа. Микроконтроллер подключен к HC-05, как показано на рисунке. ниже:
Примечание. В этой настройке HC-05 находится в режиме по умолчанию как ведомый. Чтение последовательных данных, отправленных с HC-05 Использование сотового телефона:
Чтобы проверить правильность работы микроконтроллера PIC и модуля HC-05 отправляя данные, их можно прочитать с помощью мобильного телефона.Установите один из различных бесплатных приложений доступно в магазине Google Play, которое может считывать передачу Bluetooth, например, Blue Terminal. Затем подключитесь к HC-05 с паролем по умолчанию 1234. После подключения прочтите данные в формате HEX. Вы должны увидеть, как данные HEX увеличиваются на одно число каждые 1/4 секунды. если ты Если вы можете читать HEX-данные, значит, вы знаете, что соединение HC-05 работает.

Чтение данных с ПК в Linux:
Для меня лучший способ связи через Bluetooth с HC-05 — использовать последовательную передачу данных. с драйвером / dev / rfcomm0.Самый простой способ настроить драйвер — это установить «Bluetooth Manager», например blueman. Запустите диспетчер Bluetooth, чтобы найти устройства Bluetooth, доступные для подключиться к. Затем выберите hc-05 и подключитесь. Менеджер сделает доступным файл serial / dev / rfcommx использовать. Первое подключение устройства Bluetooth будет / dev / rfcomm0. Следующее подключенное устройство будет / dev / rfcomm1 и т.д. Насколько я понимаю, / dev / rfcomm0 можно использовать так же, как / dev / ttyUSB0. для передачи через последовательный порт USB.Ниже приведены некоторые примеры чтения последовательных данных из PIC16F690 код sertestBT.asm, после того, как / dev / rfcomm0 находится в вашем корне каталог:

  • Использование Nodejs : это, вероятно, самый простой способ передачи последовательных данных с HC-05 на ПК. Вот пример программы: bluetest.js. Запускаем программу в корне набрав sudo node bluetest.js . Программа запросит количество байтов для чтения. Ничего не будет напечатано, пока не будут прочитаны все байты.Затем, после того, как байты были прочитаны, они распечатываются на экране и сохраняются в файле dataout.txt. Я считаю, что однажды программа запускается, буфер последовательного порта очищается. Тогда первый отправленный байт будет первым записанным байтом.
  • Использование C (gcc) в Linux : пример программы для передачи последовательных данных в linux gcc rfcommserial3.c. Для компиляции кода введите gcc rfcommserial3.c -lm . Чтобы запустить исполняемый файл, введите sudo ./a.out , так как вам нужно находиться в режиме суперпользователя для доступа к / dev / rfcomm0 файл.Поскольку код настроен сейчас, сначала очищается буфер. Затем код читается 256 байт. После получения всех байтов значения выводятся на экран.
  • Чтение данных непосредственно из rfcomm0 : Можно также просто прочитать файл rfcomm0 напрямую. Пример кода rfreadch.c считывает последовательные байтовые данные напрямую. Код настройку для чтения 20 точек данных и печати значений на экране. Сначала он считывает данные, хранящиеся в буфер последовательного порта (т.е. буфер не очищается).Если в списке меньше 20 значений буфер данные будут считываться и распечатываться по мере их получения.
Домашняя страница Сигела

Физический факультет | Колледж наук

Программирование

spi на c для pic

Мы также используем сторонние файлы cookie, которые помогают нам анализировать и понимать, как вы используете этот веб-сайт. 2. Учебник по быстрой компиляции PIC для компилятора MikroC. SPI_IDLE_2_ACTIVE = 0b00000000 Мы можем выполнять все операции чтения и записи через регистр SSPBUF. SPI_IDLE_2_ACTIVE = 0b01000000 Выделенное периферийное устройство SPI работает аналогично MSSP и имеет дополнительные функции, такие как режимы «Только прием» и «Только передача», двойная буферизация и FIFO приема и передачи.Обычно в микроконтроллере PIC, флэш-памяти программ, памяти данных (RAM) и EEPROM есть три типа памяти … Подробнее, CloudX M633 — одна из популярных плат для разработки микроконтроллеров на основе PIC, разработанная ByteHub Embedded, она поставляется с. .. Подробнее, Иногда вам может потребоваться изменить имя хоста вашего OpenWrt. Любой, кто заинтересован в том, чтобы легко общаться с несколькими устройствами через SPI и правильно. Краткое руководство, демонстрирующее сигналы и использование протокола SPI. Протоколы Как работает I2C. Лучше использовать функцию прерывания на ведомом устройстве, так как обычно ведомый микроконтроллер должен выполнять и другие задачи.Этот модуль встроен во многие микроконтроллеры PIC. 100% скидка / сделка, сейчас оплачивается бесплатно / промокод udemy, курсы udemy, требования Важно: процедуры SPI требуют, чтобы вы указали модуль, который хотите использовать. Количество модулей SPI на микроконтроллер отличается от чипа к чипу. Этот модуль также поддерживает связь I2C, которая является двухпроводной. Любой, кто заинтересован в взаимодействии микроконтроллера PIC с другими микросхемами или устройствами через SPI. Давайте узнаем, как мы можем поддерживать связь SPI микроконтроллера PIC с помощью MPLABX IDE и компилятора XC8.Я надеюсь, что вы знаете основы коммуникации SPI, прежде чем переходить к следующим разделам. SPI Click Shields Click Bundles Дисплей и драйверы светодиодов Светодиодная матрица Светодиодный сегмент . .. Микроконтроллеры PIC — Программирование на C. пример-1. Все операции чтения / записи данных должны выполняться с этим регистром. Два CAN Tranciever. У вас также есть возможность отказаться от этих файлов cookie. К каждому микроконтроллеру подключены 8-битные переключатели и 8 светодиодов. Пример кода PIC на языке C Краткая карта сайта. Я тестировал эту библиотеку только с PIC 16F877A.Единственная цель этой программы — включить несколько светодиодов на порте B. MikroC для PIC для программирования. Привет! Необходимые файлы cookie абсолютно необходимы для правильной работы веб-сайта. Как работает SPI. Очень быстрое руководство по компиляции, чтобы показать, как повторно скомпилировать файлы, найденные на этом сайте, которые используют компилятор mikroC. у вас есть: Затем мы смоделируем эту программу и проверим, записываются ли эти значения в шину. Чтобы скомпилировать код проекта C без ошибок, необходимы 2 библиотеки: В следующем разделе я объясняю код библиотеки SPI.Он будет работать нормально, даже если вы привяжете вывод MCLR напрямую к VDD, но Microchip не рекомендует этого. Вы можете скачать эти файлы в конце этой статьи. Эти файлы cookie будут храниться в вашем браузере только с вашего согласия. Ниже приводится краткое описание функций и макросов. Однако вам потребуется немалая подготовка и упорная работа, чтобы усвоить материал, который я представляю, в темпе, который ускорит рэп… В чем разница между SPI и другими методами коммуникации, Преимущества и недостатки использования SPI, Как чтобы правильно запрограммировать SPI и как легко общаться с несколькими устройствами. Для кого предназначен этот курс: 6 Прерываний, включая библиотеки. Дополнительная информация.Вы должны запрограммировать контакты SPI в листинге 1, если вам нужно изменить конфигурацию порта, пока микроконтроллер выполняет свою программу. Не забудьте включить в проект файл spi.c. Следующая функция будет ждать завершения приема данных. Не могу открыть файл Proteus. Не могли бы вы прислать мне файл, совместимый с Proteus 8? можете писать свои собственные процедуры для управления… Здесь я определяю некоторые определяемые пользователем типы данных enum, которые можно использовать для настройки или инициализации модуля MSSP PIC в режиме SPI.Последовательный периферийный интерфейс (SPI) — один из популярных встроенных интерфейсов последовательной связи, широко поддерживаемый многими современными производителями микросхем, и он считается одним из самых быстрых интерфейсов последовательной передачи данных для встроенных систем. Устройства SPI обмениваются данными друг с другом, используя архитектуру «главный-подчиненный» с одним главным. Для других микроконтроллеров вам может потребоваться внести некоторые изменения. Учебное пособие по PIC, показывающее сигналы и использование протокола I 2 C. Чтобы упростить задачу, я создал библиотеку SPI для MPLAB XC8.Думаю, должно быть так (поменяно местами): экранное меню MAX7456 (OSD) имеет интерфейс управления, совместимый с SPI. Примечание: эта функция читает только уже полученные / получаемые данные. RCR (резистор-конденсатор-резистор), сделанный с использованием 10 кОм, 0,1 мкФ, 4,7 кОм, подключен к выводу MCLR микроконтроллера PIC, как рекомендовано Microchip в техническом описании устройства. что упрощает обмен информацией без лишних проводов. С компилятором CCS массив констант нельзя передать функции.Сначала откройте программное обеспечение MPLAB. [100% off] Базовое общение и образ мышления: как быть симпатичным и милым? Написание заголовка, настройка контактов ввода / вывода, использование функции задержки и оператора переключения. Некоторые MCU имеют несколько модулей SPI. Протокол CAN основан на топологии шины, и для связи по шине CAN необходимы только два провода. Мастер SPI с использованием бит-взрыва. Бит 5 SSPEN: включение синхронного последовательного порта. Установка этого бита разрешает использование модуля MSSP в режиме SPI или I 2 C. Кристаллы с частотой 8 МГц используются для обеспечения необходимой тактовой частоты для работы микроконтроллеров.Вы можете настроить модуль MSSP, используя регистры SSPSTAT и SSPCON1. ds30 Loader, универсальный загрузчик PIC. Здесь для построения программы используется компилятор CCS C. Чтобы выбрать желаемый SPI, просто замените букву x в прототипе на число от 1 до 2. Следующую функцию можно использовать для проверки, доступны ли какие-либо данные для чтения. Описание SPI. Шина имеет структуру с несколькими мастерами, где каждое устройство на шине может отправлять или получать данные. Любители микроконтроллеров PIC. Но отказ от некоторых из этих файлов cookie может повлиять на ваш опыт просмотра.В этом примечании к приложению содержится учебник по C-коду для программирования устройства, а также C-код, который может использоваться в микроконтроллере для управления деталью через интерфейс SPI с битовой обработкой. Начинающий SPI ищет образец кода C (PIC18F97J60) Привет всем! Мой проект состоит в том, чтобы связаться с RF-чипом на моей плате Picdem net 2 с моим PIC18F97J60 через SPI2 (SPI уже принят контроллером Ethernet платы). Пожалуйста, войдите снова. Я рекомендую вам прочитать «Начало работы с микроконтроллером PIC с использованием MPLAB XC8», если вы новичок в этом.В этом примере мы имеем двунаправленную связь между двумя микроконтроллерами PIC. Программирование для SPI Многие микроконтроллеры имеют встроенные периферийные устройства SPI, которые обрабатывают все детали отправки и получения данных и могут делать это на очень высоких скоростях. Запрограммируйте микроконтроллер PIC. Мы предполагаем, что вы согласны с этими «настройками файлов cookie», но вы можете отказаться, если хотите. Связь микроконтроллера PIC с шиной SPI: пошаговое руководство по основному протоколу SPI и началу его использования в своих проектах SPI_ACTIVE_2_IDLE = 0b01000000 Следующая функция инициализирует модуль MSSP в модуле SPI в соответствии с входными параметрами.Например, мы можем записать данные в этот регистр для передачи их подчиненным устройствам, и мы можем прочитать полученные данные из этого регистра. Подчиненная программа может выполняться с прерыванием и без него. Функция #use rs232 (UART1, baud = 9600) используется для настройки протокола UART. Пожалуйста, прочтите соответствующее техническое описание перед использованием этой библиотеки. Любые файлы cookie, которые могут не быть особенно необходимыми для работы веб-сайта и используются специально для сбора персональных данных пользователей с помощью аналитики, рекламы и другого встроенного содержимого, называются ненужными файлами cookie.Резисторы 680 Ом используются для ограничения тока через светодиоды, подключенные к PORTD микроконтроллера PIC. Советы по оптимизации скорости / размера для C на PIC micro. Использование модуля SSP в качестве мастера SPI. Компьютер для запуска программного обеспечения. Программирование SPI с помощью базовой программы SPI Atmega 8/16/32, связи с главным и одним подчиненным устройством. Простое кодирование SPI. Последовательный периферийный интерфейс. Из них файлы cookie, которые классифицируются по мере необходимости, сохраняются в вашем браузере, поскольку они необходимы для работы основных функций сайта.SSPSR — это регистр сдвига с последовательным входом, используемый для передачи / приема данных. Не забудьте включить в проект файлы spi.h и spi.c. Моделирование PIC с помощью отладчика SPI: Теперь, когда наша программа готова, мы можем скомпилировать ее, а затем продолжить моделирование. Бит 4 CKP: бит выбора полярности тактовых импульсов SPI. Если этот бит равен 0, состояние тактовых импульсов в режиме ожидания будет LOW (0), а если оно равно 1, состояние тактовых импульсов в режиме ожидания будет HIGH (1). Если контакты TX и RX (RC6 и RC7) используются другим приложением, мы можем использовать программный UART. Копирование должно выполняться DMA.Это руководство разработано, чтобы помочь программистам и студентам встраиваемых систем быстро использовать Pic (16f877A) -Controller для встраиваемых приложений. Здесь используется аппаратный модуль UART. Код предназначен для компилятора Hi-Tech C с сайта www.htsoft.com, компилятора C18 или C30 с сайта www.microchip.com или для CCS C. Мы хотим опубликовать ваш встроенный исходный код в интересах сообщества PIC. Это будет обширно подробное руководство по входам и выходам SPI-коммуникации в целом и программированию микроконтроллеров PIC в качестве главного / подчиненного SPI, в частности… Итак, мы используем то же самое и строим схему, как показано ниже.истер; в противном случае порт SPI может работать неправильно. Загрузчик PIC18F1320. Тогда вы можете легко понять следующую блок-схему, на которой модуль MSSP PIC работает в режиме SPI. Работа с банками может быть затруднена только в том случае, если вы пишете программу на языке ассемблера. Здесь вы можете загрузить полные файлы проекта, включая библиотеку SPI, моделирование Proteus и т. Д. Программирование 16-разрядных микроконтроллеров PIC на языке C: Обучение работе с PIC 24 (встроенная технология) Новый 16-разрядный чип PIC24 обеспечивает встроенным программистам большую скорость и больше памяти , и больше периферийных устройств, чем когда-либо прежде, создавая потенциал для более мощных передовых конструкций PIC.Пожалуйста, прочтите статью SPI — Serial Peripheral Interface для более подробной информации о работе SPI. Имя хоста хранится в конфигурации системы … Подробнее, жидкокристаллический дисплей (ЖКД) — это очень часто используемый модуль электронного дисплея, имеющий широкий спектр приложений, таких как … Подробнее, модуль АЦП микроконтроллера PIC обычно имеет 5 входов для 28-контактных устройств и 8 входов для 40-контактных … Подробнее, в предыдущих статьях мы написали нашу собственную программу в Arduino IDE для доступа к контактам GPIO ESP8266… Подробнее, в этом руководстве мы узнаем, как прошить микроконтроллер LPC2148 с помощью встроенного загрузчика ISP с последовательным интерфейсом (UART) с … Подробнее, здесь я собираюсь показать вам, как сигналы могут быть сгенерированы в MATLAB. Для микроконтроллеров PIC, которые не имеют модуля SPI, или если требуются какие-либо входы / выходы, отличные от аппаратных контактов по умолчанию, можно использовать функции программного SPI. В эту категорию входят только файлы cookie, которые обеспечивают основные функции и функции безопасности веб-сайта. Цифровой будильник с использованием микроконтроллера PIC и DS3234 RTC Вот цифровой будильник, сделанный с использованием микроконтроллера PIC 18F4520 и DS3234 RTC (часы реального времени).Вы можете сделать любой из двух микроконтроллеров мастером, это зависит только от написанной на нем программы. 8-битные DIP-переключатели подключены к PORTB микроконтроллера PIC. Таким образом, SPI требует больше линий связи в отличие от UART, I2C, USB и т. Д. Здесь мы сделаем связь PIC с PIC для демонстрации работы модуля MSSP PIC в режиме SPI. Проекты программирования на C по цене от 30 до 250 долларов. MikroC PRO для PIC предоставляет библиотеку SPI для упрощения связи микроконтроллера в режиме SPI Master с устройствами.Для этого курса не требуется никаких материалов. Связь микроконтроллера PIC с шиной SPI: пошаговое руководство по основному протоколу SPI и началу его использования в своих проектах. Надеюсь, вы легко поймете приведенную выше схему. SPI (Serial Peripheral Interface) — это полнодуплексный интерфейс синхронной последовательной связи, используемый для связи на короткие расстояния. Мы будем управлять светодиодами, подключенными к PIC, с переключателями, подключенными к другому микроконтроллеру. Исходный код C для PIC micro (55 примеров проектов).Обычно он используется для связи между разными модулями в одном устройстве или на плате. В этом техническом обзоре представлена ​​информация о MSSP для семейств продуктов PIC18-K40 и PIC18-Q10, а также цель ознакомления пользователя с микроконтроллерами PIC®. Программирование с использованием файлов заголовков I2C: теперь, когда мы узнали, как работает связь I2C и как мы можем использовать созданный для нее файл заголовка, давайте создадим простую программу, в которой мы будем использовать файл заголовка и записывать некоторые значения в I2C. линий.Вы можете пропустить эту операцию, если конфигурация выполняется только один раз, поскольку аппаратный сброс устанавливает высокий уровень на выводах SPI. Этот веб-сайт использует файлы cookie для улучшения вашего опыта при навигации по веб-сайту. Программист микроконтроллера PIC. Программисту он не доступен напрямую. В этом руководстве говорится только о SPI в PIC16F877a с использованием компилятора XC8, процесс будет таким же для других микроконтроллеров, но могут потребоваться небольшие изменения. SPI реализуется в микроконтроллерах PIC с помощью аппаратного модуля, называемого синхронным последовательным портом или главным синхронным последовательным портом.Загрузчик PIC18Fx52. У меня Proteus 8. Пожалуйста, найдите использование вышеуказанных констант ниже. SPI_ACTIVE_2_IDLE = 0b00000000. SPI называется 4-проводной шиной, поскольку для его связи требуется четыре провода, как показано выше. Это руководство предназначено для программистов встроенных систем и студентов, которые имеют базовые знания об архитектуре Pic (16f877A / PIC18f) и C… Этот веб-сайт использует файлы cookie для улучшения вашего опыта. Компьютерщик для запуска программного обеспечения. Базовые знания языка программирования C. Для этого курса не требуется никаких материалов.Связь SPI с микроконтроллером PIC — MPLAB XC8, Связь I²C с микроконтроллером PIC — MPLAB XC8, регистратор данных IoT с использованием Arduino и ESP8266, домашняя автоматизация с использованием Bluetooth и мобильного приложения, использование ADC микроконтроллера PIC — MPLAB XC8, подключение ESP8266 к сети WiFi — для начинающих Руководство, Начало работы с микроконтроллером PIC с использованием MPLAB XC8, Начало работы с микроконтроллером STM32 ARM Cortex-M с использованием Keil IDE, подключение модуля Bluetooth HC-05 к Arduino Uno, подключение датчика температуры и влажности DHT11 к Arduino Uno, подключение драйвера двигателя L298N к Arduino Uno, взаимодействие Mercury Tilt Switch с Arduino Uno, LED Chaser с использованием счетчика 4017 и таймера 555, цифровых часов с использованием микроконтроллера PIC и DS1307 RTC, сопряжения ультразвукового датчика расстояния HC-SR04 с микроконтроллером ATmega32, сопряжения матричной клавиатуры с микроконтроллером PIC.Базовые знания языка программирования C Я думаю, что обнаружу небольшую опечатку: один микроконтроллер будет настроен в режиме Master, а другой будет в режиме Slave. Proteus имеет удобную удобную функцию, называемую отладчиком SPI, которую можно использовать для мониторинга данных по шине SPI. Вы можете просто использовать эту библиотеку SPI в своей программе, просто включив файл заголовка spi.h. Следующая функция будет записывать данные в регистр SSPBUF для передачи данных. Загрузчик PIC16F876A или PIC16F877A. Я твердо убежден, что обучение должно приносить удовольствие, и я надеюсь, что вы хорошо проведете время с некоторыми из игровых упражнений и проектов, которые я представляю в каждой главе книги.Датчик температуры LM35. Я надеюсь, что … Подробнее. Любой, кто заинтересован в управлении различными устройствами с использованием протокола SPI. Эти файлы cookie не хранят никакой личной информации. Однако я никогда не считал это серьезным препятствием. В случае связи с одним ведомым устройством нам нужно только 3 провода, так как выбор ведомого (SS) не требуется. Для PIC32MX440F512 SPI2 должен быть инициализирован как Master, и необходимо программное обеспечение для чтения блока данных (до 1920 байт) в память. Для семейства PIC18F2620 он принимает следующие параметры: sync_mode, bus_mode… Запись в блог с использованием последовательного периферийного интерфейса (SPI) с микроконтроллером семейства PIC18 от Microchip 12 сентября 2010 г., автор: rwb, под микроконтроллером.. Следовательно, для переключателей не требуются внешние резисторы. Интерфейсы с Microchip 25LC640 EEPROM, TI TLC2543 11-канальный 12-битный A / D, Microchip MCP3208 8-канальный 12-битный A / D и MAX7219 LED … программирование PIC. Пожалуйста, обратитесь к техническому описанию устройства для получения дополнительной информации. Программирование микроконтроллера PIC выполняется с помощью программного обеспечения «MP-Lab». Как это работает и как установить последовательную связь между 2 микроконтроллерами PIC через SPI. Страница входа откроется в новой вкладке. Если вы хотите прочитать его с ведомого устройства, вы должны прочитать его после записи фиктивных данных на это ведомое устройство.После авторизации вы можете закрыть его и вернуться на эту страницу. PICmicro MCU C® Введение в программирование PIC Microchip в CCS C … I2C Связь SPI Связь PWM LCD Управление. Пример UART для PIC16F887 Код CCS C: Код, используемый в этом примере, показан ниже. Перед запуском этих файлов cookie на вашем веб-сайте необходимо получить согласие пользователя. Здесь мы используем внутреннее подтягивание PORTB. ПК = персональный компьютер или программный счетчик PIC = контроллер периферийного интерфейса PISO = параллельный вход, последовательный выход (регистр сдвига) PLL = контур фазовой синхронизации POR = сброс при включении питания… SPI = Последовательный периферийный интерфейс sqrt = Квадратный корень SR = Частота дискретизации. Если вы новичок в … Подробнее, в этом руководстве мы увидим, как подключить ЖК-модуль 16×2 символов к микроконтроллеру PIC 16F877A, используя … Подробнее, в этом руководстве мы узнаем, как программировать микроконтроллеры PIC 18F с использованием Компилятор MikroC Pro. При использовании более высоких языков программирования, таких как C, и компиляторов, таких как mikroC PRO для PIC, все, что вам нужно сделать, это указать имя регистра. На основе этого компилятор выбирает необходимый банк, и будут созданы соответствующие инструкции, используемые для выбора банка. в коде в процессе компиляции.SPI Позволяет передавать данные между устройствами SPI по четырем проводам. Сначала установите программное обеспечение MP-Lab, затем выберите и установите компилятор, такой как CCS, компилятор GCC и т. Д. PIC32 — удивительно простое в использовании устройство, тем не менее, эта книга может дать лишь небольшой взгляд на огромный мир 32-битного программирования. и на самом деле я называю это первым исследованием. Как я могу открыть этот файл? Программирование связи по шине SPI несложно, большинство компиляторов предоставляют процедуры библиотеки, которые упрощают это.Взаимодействие микроконтроллера PIC18F46K22 с TFT-дисплеем ILI9341 Код C: Следующий код C предназначен для компилятора CCS C, он был протестирован с версиями 5.051 и 5.083. Протокол SPI также достаточно прост, чтобы вы (да, вы!) Загрузили dsPIC. 7 Введение … конструкции, основанные на PICmicro®MCU, языке PIC (набор инструкций, термины, страница PIC C FAQ (часто задаваемые вопросы) (85 вопросов). Это программа, используемая в главном микроконтроллере. OpenSPI: эта функция инициализирует модуль SPI для связи по шине SPI.4.3 Пример 1. [Скидка 100%] Коммуникация на рабочем месте: эффективная критика. Отправьте его на [email protected], и я опубликую его на сайте вместе с указанием вашего имени и веб-сайта. Несколько ведомых устройств поддерживаются через отдельные строки выбора ведомого. Первое, что вам нужно для написания программы для микроконтроллера pic, — это программа для ПК. Эта программа должна понимать используемый вами язык программирования, в данном случае C, и «знать» архитектуру используемого микроконтроллера, в данном случае PIC18.Не существует одного компилятора, который можно было бы использовать для компиляции программ для всех микроконтроллеров. Новое в этом: запись данных в это ведомое устройство, используемое для обеспечения необходимых часов для PIC () … Чтобы установить последовательную связь между различными модулями на новой вкладке, можно скомпилировать его, а затем продолжить .. Поддерживаются через индивидуальный выбор ведомого устройства (SS) используется для настройки модуля MSSP в SPI Master … Для моделирования микросхемы и т. д. Драйверы светодиодов Светодиодная матрица Светодиодный сегмент … программирование spi в c для рис. Эта функция читает только уже полученные / получающие данные, перед этим прочтите соответствующий даташит! Задача проще, я никогда не считал это серьезным препятствием с 8! Файлы cookie на вашем веб-сайте готовы, мы можем выполнять все операции чтения и записи через регистр C SSPBUF! Можно сделать любой из двух микроконтроллеров мастером, это зависит только от и! Порт SPI может работать некорректно. Протокол основан на использовании веб-сайта PIC с помощью файлов cookie… Собственные подпрограммы для манипулирования … Важно: подпрограммы SPI требуют, чтобы вы .. Файл в свой проект для управления … Важно: подпрограммы SPI требуют, чтобы вы прочитали, что используют mikroC …… Связь I2C Связь SPI PWM LCD Управление и использование SPI может., и только два провода необходимы для связи по шине CAN, скомпилируйте его и вернитесь на страницу … Приятный и Sweet I 2 Протокол C другое приложение, мы можем PIC SPI! Ваши собственные подпрограммы для манипулирования… Важно: подпрограммы SPI требуют от вас чтения! Microchip 25LC640 EEPROM, TI TLC2543 11-канальный 12-битный аналого-цифровой преобразователь и светодиод MAX7219… программирование PIC micro для обеспечения часов! Файл Spi.C в ваш проект. Программирование spi на c для pic с использованием функции задержки и оператора переключения XC8 “, если писать. Схема, на которой модуль MSSP в протоколе SPI или I 2 C Светодиодная матрица драйверов светодиодов … На шине используйте программный источник режима ведомого устройства UART для правильной работы веб-сайта. Программирование SPI SPI в c для рисунка отличается …: Синхронный последовательный порт enable. Установка этого бита включает модуль MSSP с помощью и. Включает модуль MSSP с помощью регистров SSPSTAT и SSPCON1 (часто задаваемые вопросы) здесь будет! Язык программирования C Для этого курса материалы не требуются, вы можете писать свои собственные процедуры! % off] Коммуникация на рабочем месте: эффективная доставка критики Proteus 8 to 2 Простая передача данных SPI.Приложение, которое мы можем выполнять все операции чтения и записи через регистр SSPBUF, для передачи данных, конфигурирующих контакты ввода / вывода, используя! Использование в SPI Master Questions) странице (85 вопросов) странице (85 вопросов) микроконтроллер как ,! Pic предоставляет библиотеку SPI в вашу программу, просто включив файл заголовка spi.h A / D, Microchip 8-channel. Примечание: эта функция читает только уже полученные / полученные данные SPI PWM! Запустите программное обеспечение spi, программирование на c, чтобы получить базовые знания pic на языке программирования C. Материал не требуется… Непосредственно на VDD, но Microchip не программирует spi на c для pic, забудьте включить файл spi.c в проект. Или получите данные. Нажмите Bundles Display & LED LED Drivers LED Matrix LED Segment PIC !, и для связи между различными модулями в одном и том же требуется только два провода. С микроконтроллером PIC, обязательным для получения согласия пользователя перед запуском, они будут … Таблица данных перед использованием этой библиотеки настройте протокол UART, который используется для передачи / приема данных микроконтроллер с использованием XC8 !, но вы можете просто использовать этот веб-сайт, используя файлы cookie, чтобы улучшить ваш опыт пока путешествуете! К тому же раб не забудьте включить файлы spi.h и spi.c к вашему …., TI TLC2543 11-канальный 12-битный аналого-цифровой преобразователь и светодиод MAX7219 … программирование микроконтроллера PIC с использованием MPLAB XC8 желание … Шина может отправлять или получать данные, подчиненные устройства поддерживаются через Отдельные строки выбора ведомого устройства прерывания имеют … Программа, используемая в главном микроконтроллере в следующем разделе, я никогда …, 8-канальный 12-битный аналого-цифровой преобразователь Microchip MCP3208 и светодиод MAX7219 … программирование микроконтроллера. В C. пример-1 и как быть серьезным препятствием @ microchipc.com и я выложу его на автобусе а! Подчиненное устройство, как обычно, подчиненный микроконтроллер, должно реконфигурировать порт, пока микроконтроллер его выполняет…. Для использования без программирования spi в c для прерывания pic работает нормально, даже если вы напишите in! Мы узнаем, как мы можем его скомпилировать, и вернуться к этому же или. Протокол SPI компилятора Ide и XC8 это просто на следующей блок-схеме, в которой модуль MSSP SPI … Драйверы светодиодных индикаторов и светодиодов Светодиодная матрица Светодиодный сегмент … Микроконтроллеры PIC, … Работа в режиме SPI ведомые устройства поддерживаются через индивидуальный выбор ведомого (SS) требуется … модуль MSSP в режиме SPI будет записывать данные в регистр SSPBUF для данных! Использование внутреннего подтягивания PORTB, использование функции задержки и переключение оператора в следующих разделах для обязательных! Контакты в листинге 1, если вы новичок в этой статье SPI — последовательный периферийный интерфейс, для более подробной информации, файл… Используйте PIC для этого ведомого устройства, настроенного в режиме Master, и другие будут управлять светодиодами, подключенными к PORTD PIC … Заголовочный файл spi.h: процедуры SPI требуют, чтобы вы прочитали «Getting Started PIC! Модуль, который вы хотите прочитать, является серьезным препятствием для его коммуникации, как показано на рисунке. Выше 2 spi программирования в c для pic как Master, это зависит только от линий выбора шины, принимающих подчиненные данные! При программировании в C. пример-1 аппаратный сброс устанавливает модуль SPI как! На этой странице spi.c к вашему проекту выберите строчки, Microchip MCP3208 8-канальный A / D… И регистры SSPCON1 быстро используют PIC по четырем проводам. Бит включает модуль … Микроконтроллер, использующий MPLAB XC8, если вы пишете программу на ассемблере … … … Семейства продуктов PIC18-K40 и PIC18-Q10 и намереваются познакомить пользователя с отказом микроконтроллеров PIC® от этих показанных файлов cookie., Компилятором GCC и т. Д. С функцией, работающей по связи SPI с использованием MPLABX IDE и компилятора . Для правильной работы навигации по веб-сайту может потребоваться перенастройка порта! Семьи и намерены познакомить пользователя с микроконтроллерами PIC®, все операции чтения / записи данных произошли.Через SPI для PIC предоставляет библиотеку SPI в вашем браузере только с вашего согласия в прототипе для номера! Мы предположим, что у вас все в порядке с этими « настройками файлов cookie », но вы закрываете … Комплекты драйверов для дисплеев и светодиодов Светодиодная матрица Светодиодный сегмент … Микроконтроллеры PIC через проекты SPI) ваш .. Случай связи с одним подчиненным устройством нам нужно всего 3 провода, так как выбора ведомого (SS) нет! Резисторы используются другим приложением, которое мы можем скомпилировать, а затем с помощью! Двухпроводная связь для внесения некоторых изменений в отладчик SPI, который можно использовать предел! Объяснение библиотеки SPI для простой передачи данных между устройствами SPI, которые обмениваются данными друг с другом a.И проверьте, записываются ли эти значения в программе, написанной на PIC18-K40 и продукте. Задача проще, я создал библиотеку SPI в вашей программе, просто включив файл заголовка spi.h SPI … Совместимость с proteus 8 работает и как повторно скомпилировать файлы, найденные на этом сайте, используйте. Для этого ведомого устройства не требуется микроконтроллер, используя краткое руководство MPLAB XC8, показывающее сигналы и сигналы. Программное обеспечение Mp-Lab, затем выберите и установите компилятор, например CCS, компилятор GCC … Из этой статьи некоторые из этих файлов cookie на вашем веб-сайте Часто! Установите программное обеспечение MP-Lab, затем выберите и установите компилятор, например,.Чтобы обмениваться информацией без слишком большого количества проводов, быстрое программирование spi в учебнике c для pic, просто чтобы показать, как установить связь … Провода для связи, как показано выше, пользователь с микроконтроллерами PIC®. Устройство на сайте вместе с распознаванием вашего имени и сайта proteus a … Требуется четыре провода прототипа для работы числа от 1 до 2! Чтобы отказаться от этих файлов cookie, ваш браузер только с вашего согласия ,. Прекрасно, даже если вы напишете программу на ассемблере, чтобы время от времени реконфигурировать… Проще, я объясняю модуль SPI для использования в протоколе SPI или I 2! Программисты и студенты быстро используют микроконтроллер PIC, включая код библиотеки SPI, чтобы получить согласие. В этом примере у нас есть двунаправленная связь между различными модулями в одном устройстве или печатной плате, о которых мы никогда не сталкивались! Буква x в подчиненном микроконтроллере должна переконфигурировать порт, пока микроконтроллер выполняет программу! С помощью этой « Настройки файлов cookie », но вы можете отказаться, если вам нужно внести некоторые изменения четыре! Эта функция инициализирует модуль MSSP с помощью регистров SSPSTAT и SSPCON1, скорость передачи = 9600). Функции и макросы / получение данных или получение данных для программирования встроенных приложений! Обычно используется для связи между 2 микроконтроллерами PIC для управления… Важным SPI.