Выбор микроконтроллера обычно осуществляется под необходимые задачи. Для изучения хорошо подойдет популярный МК с минимальным набором периферии: PIC16F628A.
Первым делом необходимо скачать документацию по выбранному микроконтроллеру. Достаточно зайти на сайт производителя и скачать Datasheet.
На первых страницах перечислены основные характеристики МК (русское описание).
Основные моменты, которые нам понадобятся:
Схема расположения выводов:
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
}
Изменим конфигурацию под себя:
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
Теперь нам необходимо записать эту прошивку в МК, собрать устройство согласно схеме и проверить, что у нас все получилось как надо.
Все таже схема:
Смотрим на распиновку:
Паяем…
Некачественная пайка — одна из основных проблем неработоспособности устройства.
Не повторяйте мои плохие привычки: не используйте навесной монтаж.
В качестве питания 5В в данном случае использовался хвост от старой PS/2 мыши, вставленный в разъем для мыши.
Подключаем к компьютеру.
Качаем и запускаем WinPic800.
Идем в Settings->Hardware, выбираем JDM и номер порта, на котором висит программатор
Нажимаем Hardware Test, затем Detect Device
Открываем нашу прошивку pic628a_test. hex
На вкладке Setting можно проверить, что конфигурационные биты выставлены верно, при желании тут же их можно изменить
Program All, затем Verify All
Если ошибок не возникло, продолжаем паять.
Финальная схема:
От программатора нам мешает только высокое напряжение (12в) на MCLR. Дабы не отпаивать весь программатор, можно отпаять только один провод… Или просто не подключать программатор к COM порту. Остальные провода нам мешать не будут (а подключенные питание и земля только упростят пайку).
Кнопку на MCLR паять можно по желанию, но подтяжка обязательна.
При повторном подключении программатора резистор необходимо будет убрать, иначе он подтянет 12в к питанию.
Результат работы можно увидеть на видео.
Итак, у нас получилось самое простое устройство на микроконтроллере: мигалка светодиодом.
Теперь нам необходимо научиться пользоваться всей оставшейся периферией, но об этом в следущей статье.
*Изображения служат только для ознакомления. См. DataSheet продукта
PIC 512 x 12 — PROM/25-RAM 6I/O Timer + Watchdog 4MHz
Микроконтроллер PIC 512 x 12 — ППЗУ/25-ОЗУ 6порт(-ов) ввода-вывода таймер + сторожевой таймер 4МГц
Код товара: 97384
Дата обновления: 25.03.2023 21:15
Доставка PIC12F508-I/SN , Микроконтроллер PIC 512 x 12 — ППЗУ/25-ОЗУ 6порт(-ов) ввода-вывода таймер + сторожевой таймер 4МГц в город Екатеринбург
Самовывоз из Екатеринбурга
завтра
Бесплатно
Boxberry
от 2 раб. дней
от 166 ₽
DPD РФ
от 1 раб. дня
от 695 ₽
Деловые линии
от 2 раб. дней
от 1872 ₽
Почта РФ
от 15 раб. дней
от 290 ₽
EMS
от 1 раб. дня
от 300 ₽
СДЭК
от 1 раб. дня
от 345 ₽
* Стоимость и сроки доставки являются ориентировочными. Итоговая стоимость и срок будут рассчитаны на странице оформления заказа.
Корпус
SO-8
Тип упаковки
Tube (туба)
Нормоупаковка
100 шт
Вес брутто
0. 2 г.
Аналоги
Наименование
Наличие
Цена от
Производитель
Корпус
PIC12F508T-I/SN PIC 512 x 12 — PROM/25-RAM 6I/O Timer + Watchdog 4MHz
Сообщить о поступлении
MCHP
SOIC8
Хотите получить образцы?
Заказать образец
← PIC12F509-I/SN PIC16F72-I/SO →
Наш портфель масштабируемых 8-битных, 16-битных и 32-битных микроконтроллеров (MCU), цифровых сигнальных контроллеров (DSC) и микропроцессоров (MPU) позволяет легко удовлетворять постоянно меняющиеся требования современной электроники. Наши гибкие периферийные устройства и функции упрощают создание дифференцированных приложений, которые отличают вас от конкурентов. Вы обнаружите, что с помощью наших интуитивно понятных сред проектирования и средств визуальной настройки легко начать работу, а наши проверенные эталонные проекты и профессионально протестированные программные библиотеки снижают риски при проектировании.
Вас просят быстро сделать прототип? Наша разработка Экосистема предоставляет вам интуитивно понятные среды проектирования для быстрого прототипирование. Используйте один из наших эталонных дизайнов или досок для быстрого старта ваш дизайн, чтобы вы могли сосредоточиться на дифференциации вашего продукта. Воспользуйтесь нашим профессионально протестированные программные среды, библиотеки и примеры кода чтобы уверенно писать свою прошивку. Наши инструменты работают вместе, чтобы обеспечить современную отладку с помощью простого в использовании графического интерфейса пользователя интерфейсы. Нужны ли вам образцы, пример программного обеспечения или продукция программирования, мы обеспечиваем полную поддержку проектирования на каждом этапе вашего проект.
Не позволяйте меняющимся требованиям к приложениям заставлять полностью переделывать дизайн. Microchip является единственным поставщиком полупроводников, внедряющим инновации в 8-, 16- и 32-разрядные микроконтроллеры, ЦПС и микропроцессоры, обеспечивая максимальный выбор масштабируемой производительности. Также нет необходимости изучать новую среду разработки или начинать свой код с нуля в экосистеме разработки Microchip, потому что вы можете использовать общие инструменты для разных проектов. Это позволяет вам сохранить инвестиции в разработку кода за счет повторного использования встроенного программного обеспечения вашего приложения, даже если ваши требования к дизайну изменятся.
Результатов не найдено
Наши 8-битные микроконтроллеры PIC ® и AVR ® помогают разработчикам любого уровня мастерства легко воплощать свои идеи в жизнь. Используйте комбинацию легко настраиваемых периферийных устройств и самых эффективных в отрасли архитектур, чтобы реализовать несколько функций на одном чипе с минимальным программированием.
Микроконтроллеры PIC24 хорошо подходят для приложений, которым требуется производительность с экстремально низким энергопотреблением (XLP) или которые превзошли производительность или возможности памяти 8-разрядных микроконтроллеров и могут извлечь выгоду из общей экосистемы.
Предлагая производительность до 100 МГц на ядро, семейство цифровых контроллеров dsPIC33 обеспечивает быстрый детерминированный отклик и возможности управления в реальном времени для расширенного восприятия и управления, высокопроизводительные общие встроенные, сенсорные функции и управление двигателем. и цифровые силовые приложения.
Результатов не найдено
Наши 32-разрядные микроконтроллеры обеспечивают производительность и функциональные возможности для удовлетворения потребностей проектирования в самых разных приложениях.
— это естественный следующий шаг для тех, кто перерос производительность MCU, нуждается в дополнительной памяти или хотел бы использовать операционную систему Linux ® в своих приложениях.
Платы разработки Curiosity — это экономически эффективные, полностью интегрированные платформы разработки MCU. Эта плата поддерживает широкий спектр 8-разрядных микроконтроллеров, включает в себя встроенный программатор/отладчик и не требует дополнительного оборудования для начала работы.
Эти платы облегчают оценку семейств dsPIC33CH и dsPIC33CK. Они оснащены двумя разъемами mikroBUS™, которые позволяют добавлять платы Click board™, чтобы настроить плату для вашего приложения.
Готовая к запуску платформа для разработки, демонстрации и тестирования, поддерживающая различные микроконтроллеры PIC и DSC dsPIC33 через подключаемые модули (PIM).
Эта аппаратная платформа обеспечивает легкий доступ к функциям микроконтроллера ATSAME54P20A и объясняет, как интегрировать устройство в индивидуальный дизайн. Он поддерживается интегрированной платформой разработки Microchip Studio.
Легко внедряйте средства безопасности в проекты с CEC1702 IoT Development Kit, сертифицированным Microsoft стартовым комплектом Azure IoT с поддержкой DICE для быстрой разработки. В комплект входит макетная плата CEC1x02, включая CEC1702PIM.
Pickit 4003, Debugger/Programmer, и прощепрограммные и программирование PICE 9003. dsPIC ® , AVR, SAM и CEC Flash MCU и MPU, использующие мощный графический пользовательский интерфейс MPLAB X Integrated Development Environment (IDE), начиная с версии 4.15.
Система внутрисхемного эмулятора MPLAB ICE 4 повышает производительность благодаря многофункциональным возможностям программирования и отладки для устройств PIC ® , AVR ® и SAM, а также dsPIC.