16F628a_datasheet_на_русском

16F628a_datasheet_на_русском

Раздел: Зарубежные Микросхемы Микроконтроллеры 8-бит PIC

  • Наименование: PIC16F628A
  • Тактовая частота: 20 МГц

Self-write: Нет

  • Напряжение питания (min) (Uпит (min)): 3 В
  • Напряжение питания (max) (Uпит (max)): 5.5 В
  • Минимальная рабочая температура (tmin): -40 °C
  • Максимальная рабочая температура (tmax): 125 °C
  • Корпус:18/SOIC 300mil, 20/SSOP 208mil, 28/QFN, 18/PDIP
  • Даташит:Даташит
  • Распиновка:
  • Производитель:Microchip
  • Выбор микроконтроллера обычно осуществляется под необходимые задачи. Для изучения хорошо подойдет популярный МК с минимальным набором периферии: 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

    enable_digital_io() — переключение всех входоввыходов на цифровой режим

    forever loop
    led = on
    _usec_delay( 250000 )
    led = off
    _usec_delay( 250000 )
    end loop

    Code :58/2048 Data:4/208 Hardware Stack: 0/8 Software Stack :80

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

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

    — 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)
      5. WDT — сторожевой таймер.
        Основная работа этого таймера в том, что бы перезагрузить микроконтроллер когда он дотикает до конца.
        Что бы перезагрузки не происходило, его нужно своевременно обнулять.
        Таким образом при сбое счетчик таймера перестанет обнуляться, что приведет к сбросу МК. Иногда бывает удобно, но в данный момент нам это не потребуется.
      6. PWRTE — очередной таймер.
        При активации он будет сбрасывать МК до тех пор, пока питание не поднимется до нужного уровня.
      7. BROWNOUT — сброс МК при падении питания ниже нормы.
      8. MCLR — активация возможности внешнего сброса МК.
        При включении функции МК будет в постоянном резете до тех пор, пока на ноге MCLR (pin 4) не будет положительного напряжения.
        Для сброса МК достаточно установить кнопку, замыкающую pin 4 на землю.
      9. LVP — активация возможности программирования при низком напряжении.
        При активации один цифровой вход переключится в режим LVP (pin 10). Если подать 5В на эту ногу, то МК перейдет в режим программирования. Для нормальной работы МК требуется держать на этой ноге 0В (подсоединить к земле).
        Мы будем использовать программатор, использующий повышенное напряжение, потому LVP активировать не требуется.
      10. CPD — защита EEPROM от считывания программатором.
      11. 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в к питанию.


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

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

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

      Newer Device Available PIC16F18444

      Status: In Production

      View Datasheet View Comparisons

      Features:

      • Low voltage programming
      • Low speed Clock mode
      • Programmable BOR
      • 4MHz internal oscillator
      • Programmable VREF
      • 128 bytes of EEPROM
      • Data Memory
      • ICD

      View More

      • Programming
        Services Available
      • Sampling
        Options
      • Buy
        Now

      This powerful (200 nanosecond instruction execution) yet easy-to-program (only 35 single word instructions) CMOS FLASH-based 8-bit microcontroller packs Microchip’s powerful PIC® architecture into an 18-pin package and is upwards compatible with the PIC16F628, PIC16C62XA, PIC16C5X and PIC12CXXX devices. The PIC16F628A features 4MHz internal oscillator, 128 bytes of EEPROM data memory, a capture/compare/PWM, a USART, 2 Comparators and a programmable voltage reference that make it ideal for analog/integrated level applications in automotive, industrial, appliances and consumer applications.

      For product comparison, please consider: PIC16F18444

        • Low voltage programming
        • Low speed Clock mode
        • Programmable BOR
        • 4MHz internal oscillator
        • Programmable VREF
        • 128 bytes of EEPROM
        • Data Memory
        • ICD

        Data Sheets

        Errata

        Supporting Collateral

        Programming Specifications

        Application Notes

        Brochures

        Code Examples

        Reference Manuals

        User Guides

        • Integrated Development Environments
        • Compilers
        • Programmers
        • Demo & Evaluation Boards
        • Code Examples

        MPLAB® X Integrated Development Environment (IDE) is an expandable, highly configurable software program that incorporates powerful tools to help you discover, configure, develop, debug and qualify embedded designs for most of Microchip’s microcontrollers, microprocessors and digital signal controllers.
        MPLAB X IDE works seamlessly with the MPLAB development ecosystem of

        Available as free, unrestricted-use downloads, our award-winning MPLAB® XC C Compilers are comprehensive solutions for your project’s software development. Finding the right compiler to support your device is simple:

        • MPLAB XC8 supports all 8-bit PIC® and AVR® microcontrollers (MCUs)
        • MPLAB XC16 supports all 16-bit PIC MCUs and dsPIC® Digital

        .

        Fast programming, increased functionality, at the same price as its predecessor, the PICkit™ 3.

        The MPLAB PICkit 4 now has Programmer-to-Go functionality for 8-bit, 16-bit and 32-bit PIC MCUs and dsPICs and also SAM MCU devices . The firmware update comes with MPLAB X IDE v5.30. AVR is expected soon!

        The MPLAB® PICkit™ 4 In-Circuit

        The MPLAB ® ICD 4 In-Circuit Debugger/Programmer is Microchip’s fastest, cost-effective debugging and programming tool for PIC ® and SAM Microcontrollers (MCUs), dsPIC ® Digital Signal Controllers (DSCs), and CEC flash microcontrollers. This speed is provided by a SAME70 MCU with 300 MHz, 32-bit MCU with 2MB of RAM and a high-speed FPGA to yield

        The MPLAB® PM3 Universal Device Programmer is easy to use and operates with a PC or as a stand-alone unit, and programs Microchip’s entire line of PIC® devices as well as the latest dsPIC® DSC devices. When used standalone, data can be loaded and saved with the SD/MMC card (not included).

        Ссылка на основную публикацию
        Adblock detector