Микроконтроллеры PIC для начинающих
На современном рынке есть ряд семейств и серий микроконтроллеров от разных производителей, среди них можно выделить AVR, STM32 и PIC. Каждое из семейств нашло свою сферу применения. В этой статье я расскажу начинающим о микроконтроллерах PIC, а именно, что это такое и что нужно знать для начала работы с ними.
Что такое PIC
PIC – это название серии микроконтроллеров, которые производятся компанией Microchip Technology Inc (США). Название PIC происходит от Peripheral Interface Controller.
Микроконтроллеры PIC имеют RISC-архитектуру. RISC – сокращённый набор команд, используется также в процессорах для мобильных устройств. Есть целый ряд примеров её использования: ARM, Atmel AVR и другие.
Компания Microchip в 2016 году купила Atmel – производителя контроллеров AVR. Поэтому на официальном сайте представлены микроконтроллеры семейства и PIC и AVR.
Семейства
Среди 8-битных микроконтроллеров PIC она состоит из 3-х семейств, которые отличаются архитектурой (разрядностью и набором команд).
Baseline (PIC10F2xx, PIC12F5xx, PIC16F5x, PIC16F5xx) ;
Mid-range (PIC10F3xx, PIC12F6xx, PIC12F7xx, PIC16F6xx, PIC16F7xx, PIC16F8xx, PIC16F9xx) ;
Enhanced Mid-range (PIC12F1xxx, PIC16F1xxx) ;
High-end или PIC18 (18Fxxxx, 18FxxJxx and 18FxxKxx).
Характеристики, которых приведены в таблице ниже.
Кроме 8 битных микроконтроллеров компания Microchip производит 16-битные:
DsPIC30/33F для обработки сигналов.
Представители 16-битного семейства работают со скоростью от 16 до 100 MIPS (выполнено миллионов инструкций в секунду). Стоит отметить и особенности:
машинный цикл – 2 такта;
разрядность АЦП – 16 бит;
поддерживают ряд протоколов связи (UART, IrDA, SPI, I2S™, I2C, USB, CAN, LIN and SENT), ШИМ и прочее.
Также есть семейство 32 битных микроконтроллеров – PIC32MX, основные особенности:
работают на частоте до 120 мГц;
выполняют до 150 MIPS;
АЦП: 10-бит, 1 Msps (скорость квантования), до 48 каналов.
С какого PIC начать?
Новичкам стоит начать осваивать микроконтроллеры PIC с 8-битной линейки. Вообще, производитель заявляет о том, что особенностью всего семейства является лёгкая переносимость программ с одного семейства на другое и совпадения цоколевки ряда моделей.
Одним из популярнейших в среде радиолюбителей микроконтроллеров является PIC16f628A. Его технические характеристики такие:
Есть встроенный тактовый генератор. Вы можете настроить для работы с частотой 4 или 8 МГц;
18 пинов, из них 16 – ввод/вывод, а 2 – питание;
Для работы на частотах до 20 МГц можно подключить кварцевый резонатор, но в этом случае на ввод/вывод останется не 16, а 14 ног;
В маркировке есть буква F, это значит, что используется FLASH-память, объёмом в 2048 слов;
14-битные инструкции, 35 штук;
4 аналоговых входа;
На входах PORTB есть подтягивающие резисторы;
Два 8-битных таймера и один 16-битный;
Машинный цикл – 4 такта кварцевого резонатора или внутреннего генератора);
128 байт EEPROM;
USART – последовательный порт;
внутренний источник опорного напряжения;
питается от 3.3 до 5 В.
Причинами популярности является низкая цена и возможность тактирования от внутреннего генератора.
Какая цоколевка у 16f628 изображено ниже:
Блочная внутренняя схема этого микроконтроллера изображена ниже.
Научитесь разрабатывать устройства на базе микроконтроллеров и станьте инженером умных устройств с нуля: Инженер умных устройств
На что следует обратить внимание на схеме в первую очередь?
У этого микроконтроллера есть два порта PORTA и PORTB. Каждый пин, каждого из них может использоваться как вход и выход, а также для подключения периферии или задействования других модулей микроконтроллера.
Рассмотрим эту часть схемы крупно.
Например, порты RB0-RB3 – могут выступать в роли аналоговых. К RA6, RA7 в случае необходимости подключается источник тактирования (кварцевый резонатор). Сами же выводы микроконтроллера настраиваются в режим входа/выхода с помощью регистра TRIS.
Для этого есть команды типа:
TRISA = 0; // Все выводы порта А устанавливаются как выходы
TRISB = 0xff; // Все выводы порта B назначаются как входы
TRISA0 = 1; // Так назначается отдельный пин как вход (1) или выход (0)
TRISA5 = 1 ; // здесь 5 вывод порта А – назначен входом
Вообще режимы работы, включение WDT (сторожевого таймера) выбор источника тактирования микроконтроллера и прочее настраивается с помощью регистров специального назначения — SFR, а память и данные хранятся в GFR – простыми словами это статическое ОЗУ.
В официальном Datasheet, на страницах 18-21 вы найдете 4 банка памяти регистров специального назначения SFR и регистров общего назначения GFR. Знание регистров важно, поэтому распечатайте и выучите указанные страницы из Datasheet .
Для удобства ниже приведены эти таблицы в виде картинок (нумерация регистров, как и всё в цифровой электронике начинается с 0, поэтому номер четвертого – 3).
Как подключить и на каком языке программировать?
Чтобы запустить этот микроконтроллер достаточно подать плюс на Vdd и минус на Vss. Если нужен кварцевый резонатор, то он подключается к выводам 16 и 15 (OSC1 и OSC2) микроконтроллера PIC16f628, для других контроллеров с большим или меньшим числом выводов – смотрите в datasheet. Но этот момент нужно указывать при программировании и прошивке.
Кстати о переносимости и совпадении цоколевки – на 16f84A – она аналогична, и на многих других.
Фрагмент схемы с подключенным к pic16f628a внешним резонатором:
Есть два основных языка для программирования микроконтроллеров PIC – это assembler и C, есть и другие, например PICBasic и т.д. Еще можно выделить упрощенный язык программирования JAL (just another language).
Для примера ниже приведена программа для «мигания светодиодом» — своего рода «Hello World» для микроконтроллера PIC на языке C.
В 1 строке подключается библиотека микроконтроллеров PIC, далее подключается библиотека программы задержки.
В функции main(void) в начале устанавливаются начальные параметры, подобно тому как мы это делали в функции Void setup () – в статьях об ардуино. Далее в строках 11-16 объявляется бесконечный цикл while(1), в ходе которого и выполняется программа «мигания светодиодом».
В примере состояние порта постоянно инвертируется, т.е. если он был в «0», то перейдет в «1» и наоборот. На C для PIC есть следующие команды управления команды:
PORTA = 0; // переводит все пины порта А в низкий уровень (лог. 0)
PORTB = 0xff; // переводит все пины порта B в высокий уровень (лог. 1)
RB5 = 1; // На пятом выводе порта B высокий уровень
А так выглядит та же программа, но уже на языке JAL, я перевел на русский язык комментарии от разработчиков встроенных примеров в JALedit (среда разработки).
Возникает соблазн выбрать JAL, и вам он может показаться проще. Безусловно на нём можно реализовать любые проекты, но с точки зрения пользы для вас как для специалиста – это бесполезный язык. Значительно больших результатов вы добьетесь, изучая синтаксис и принципы программирования на языке C (большая часть популярных сейчас языков C-подобны) или на Assembler – это низкоуровневый язык, который заставит вас понимать принцип работы устройства и что происходит в программе в каждый конкретный момент времени.
В чем работать
Если сказать совсем обобщенно для работы с любыми микроконтроллерами нужно:
1. Текстовый редактор.
3. Программа для загрузки прошивки в микроконтроллер.
И я даже читал старые учебники, где автор, работая из-под DOS писал код, компилировал и прошивал его разными средствами. Сейчас же под все популярные операционные системы есть среды для разработки, как узкоспециализированные (для конкретного семейства микроконтроллеров или семейств от одного производителя) так и универсальные (либо содержат все необходимые инструменты, либо они подключаются в виде плагинов).
Например, в цикле статей об Arduino мы рассматривали среду Arduino IDE в ней же мы и код писали и с её помощью «заливали» прошивку в «камень». Для микроконтроллеров PIC есть такие программы, как:
MPASM — используется для разработки на языке Assembler от фирмы Microchip ;
MPLAB — также IDE от Microchip для PIC-контроллеров. Состоит из множества блоков для тестирования, проверки, работы с кодом и компиляции программ и загрузки в микроконтроллер. Также есть версия MPLAB X IDE – отличается большим функционалом и построена на базе платформы NetBeans ;
MikroC — универсальная среда (не только для ПИКов) для разработки. Как видно из названия «заточена» под программирование на C, а также есть такие программы как MikroBasic и MikroPascal, для соответствующих языков ;
JALedit — подходит для языка JAL, о котором мы упоминали выше ;
И ряд других менее известных.
Как прошивать микроконтроллер?
Для PIC-микронотроллеров есть ряд программаторов. Официальным считается PICkit. Их 4 версии. Но можно прошивать и универсальными, например, TL866 (он поддерживает почти всё, что может понадобится начинающему радиолюбителю, при этом очень дешевый).
Также в сети есть ряд различных схем программаторов для ПИКов, как для работы через COM-порт:
Так и через USB (на самом деле тоже com, только через преобразователь на ИМС MAX232).
Заключение
Микроконтроллеры PIC16 подходят для простых проектов, типа простой автоматики, вольтметров, термометров и прочих мелочей. Но это не значит, что нельзя делать на этом семействе сложные и большие проекты, я привел пример того для чего чаще всего их используют. Для общего представления рекомендую посмотреть несколько видео:
В одной статье рассматривать темы о том, как программировать микроконтроллеры, неважно какого семейства, безсмысленно. Поскольку это очень большой объём информации. Для начинающих советую к прочтению:
Катцен С. — PIC-микроконтроллеры. Все что вам необходимо знать;
Кёниг А. — Полное руководство по PIC микроконтроллерам;
Шпак Ю.А. — Программирование на языке С для AVR и PIC микроконтроллеров;
Магда Ю.С. — Микроконтроллеры PIC: архитектура и программирование;
Яценков В.С. — Микроконтроллеры Microchip. Практическое руководство.
Нужно дизассемблировать прошивку PIC16C505. Вопрос к PICоведам
Коллеги,
помощь нужна.
Есть прошивка, нужно понять что и как она делает.
а от PIC я далек.
1. PIC16C505
2. Есть PicKIT2, им и слита прошивка (как для 16F505),
а вот сможет ли PicKIT2 ее залить в аналогичный чип (именно OTP)? — уже разобрался — нет
а если залить её-же но в 16F505 — нужно ли что-то менять?
3. Включение портов:
RB0 — Выход (акт. низкий)
RB1- LED (bidirectional)
RB2- in (кнопка на землю)
RB3- in (switch — на землю)
RB4 — LED (bidirectional)
RB5 — out
RC0- Выход (акт. низкий)
RC1- вход или выход, сложно сказать, как-то связано с потенциометромRC3
RC2- Выход (акт. низкий)- буззер
RC3- вход или выход, сложно сказать, как-то связано с потенциометром на RC1
RC4- .
RC5- .
работает с внутр. генератора.
RC1,3-5 — работают с датчиком температуры
По моему стоит бит защиты. Смысл имеют первые 64 байта.
у них защита легко снимается, а первые 64слова не имеют защиты.
Sun525: По моему стоит бит защиты.
и мне так кажется, судя по функционалу -как они вместили все в 64 байта? — не понимаю.
если и стоит бит защиты — то чип будет отдавать калибровочную константу осциллятора.
AnSi: у них защита легко снимается
а можно чуток по-подробнее?
вот скрин с пиккита
AnSi: у них защита легко снимается
И мне интересно.
IC-Prog имеет встроеный дизассемблер, главное прочитать, а потом потихоньку разбираться. если действительно это вся программа, значит писали на ассемблере Программу загрузить в IC-prog, переключить в режим ассемберных кодов, распечатать-записать, далее можно разбираться с карандашиком, а можно попытаться загрузить асемблерный текст в MPLAB и эмулировать работу программы.
Lastic: IC-Prog имеет встроеный дизассемблер
Спасибо. до пункта — получть листинг — все просто. а дальше
я сейчас ушел с пиков на AVR-ки. они мне показались «слаще». Да и их фирменная AVR Studio мне больше понравилась, чем ПИКовская MPLab. я не профессиональный программист мк. С каким датчиком температуры работает? У меня такое впечатление, что это не вся прошивка, потому как только процесс обмена с датчиком, (даже на ассемблере) не уместится в таком объеме.
а еще похоже что pic16c505 имеет отличие в системе команд c pic16F84. а код для pic16c505 мне не удалось дизассемлировать в IC-Prog. и окончание листинга не похоже на окончание программы. Похоже на бред.
LIST P=16F84, F=INHX8M
include «P16FXX.inc»
ORG 0x0000
; .
INCF 0x4A , W
SWAPF STATUS , W
CLRF 0x62
MOVF 0x6E , f
MOVF 0x7C , f
MOVF 0x5E , f
SWAPF STATUS , W
CLRF 0x62
MOVF 0x50 , f
MOVF 0x42 , f
MOVF 0x60 , f
SWAPF STATUS , W
CLRF 0x62
MOVF 0x36 , W
MOVF 0x3A , W
MOVF 0x38 , W
XORWF 0x67 , W
MOVF INDF , W
DECF 0x70 , f
INCF 0x11 , W
SUBWF 0x31 , f
; .
ADDWF 0x71 , W
INCF 0x11 , W
MOVF INDF , W
CLRWDT
ANDWF 0x24 , f
; .
; .
SUBWF 0x12 , W
COMF PCL , W
; .
SUBWF 0x12 , W
COMF 0x07 , W
CLRW
COMF 0x11 , W
RRF TMR0 , W
CLRW
RRF 0x44 , f
; .
SUBWF 0x10 , W
CLRF 0x74
XORWF STATUS , W
SUBWF 0x35 , f
SUBWF 0x11 , W
CLRF 0x75
SUBWF 0x73 , f
MOVF INDF , W
RRF FSR , W
; .
IORWF STATUS , W
DECF 0x35 , W
DECF 0x34 , W
SUBWF 0x73 , f
INCF 0x33 , W
SUBWF 0x12 , W
COMF 0x0C , W
; .
SUBWF 0x15 , W
NOP
SUBWF 0x24 , f
SUBWF 0x14 , W
NOP
Полученно с помощью MPlab
Line Address Opcode Disassembly
1 000 025 MOVWF 0x5
2 001 A4A GOTO 0x4a
3 002 E03 ANDLW 0x3
4 003 1E2 ADDWF 0x2, F
5 004 8EE RETLW 0xee
6 005 8FC RETLW 0xfc
7 006 8DE RETLW 0xde
8 007 E03 ANDLW 0x3
9 008 1E2 ADDWF 0x2, F
10 009 8D0 RETLW 0xd0
11 00A 8C2 RETLW 0xc2
12 00B 8E0 RETLW 0xe0
13 00C E03 ANDLW 0x3
14 00D 1E2 ADDWF 0x2, F
15 00E 836 RETLW 0x36
16 00F 83A RETLW 0x3a
17 010 838 RETLW 0x38
18 011 667 BTFSC 0x7, 0x3
19 012 800 RETLW 0
20 013 3F0 INCFSZ 0x10, F
21 014 A11 GOTO 0x11
22 015 2B1 INCF 0x11, F
23 016 004 CLRWDT
24 017 771 BTFSS 0x11, 0x3
25 018 A11 GOTO 0x11
26 019 800 RETLW 0
27 01A 064 CLRF 0x4
28 01B 5A4 BSF 0x4, 0x5
29 01C 071 CLRF 0x11
30 01D 070 CLRF 0x10
31 01E 212 MOVF 0x12, W
32 01F 902 CALL 0x2
33 020 007 TRIS 0x7
34 021 212 MOVF 0x12, W
35 022 907 CALL 0x7
36 023 127 IORWF 0x7, F
37 024 911 CALL 0x11
38 025 C01 MOVLW 0x1
39 026 167 ANDWF 0x7, F
40 027 CC4 MOVLW 0xc4
41 028 007 TRIS 0x7
42 029 210 MOVF 0x10, W
43 02A 1F4 ADDWF 0x14, F
44 02B 603 BTFSC 0x3, 0
45 02C 2B5 INCF 0x15, F
46 02D 211 MOVF 0x11, W
47 02E 1F5 ADDWF 0x15, F
48 02F 2F3 DECFSZ 0x13, F
49 030 800 RETLW 0
50 031 C04 MOVLW 0x4
51 032 033 MOVWF 0x13
52 033 403 BCF 0x3, 0
53 034 335 RRF 0x15, F
54 035 334 RRF 0x14, F
55 036 2F3 DECFSZ 0x13, F
56 037 A33 GOTO 0x33
57 038 212 MOVF 0x12, W
58 039 90C CALL 0xc
59 03A 024 MOVWF 0x4
60 03B 215 MOVF 0x15, W
61 03C 020 MOVWF 0
62 03D 2A4 INCF 0x4, F
63 03E 214 MOVF 0x14, W
64 03F 020 MOVWF 0
65 040 000 NOP
.
.
1023 3FE 000 NOP
1024 3FF C9C MOVLW 0x9c ; калиб. конст.
Cheeeper: а можно чуток по-подробнее?
для начала нужно вскрыть чип, примерно так — http://pro-radio.ru/user/uploads/239096.jpg
для этого нужна концентрированная азотная кислота(>93%) — если меньше, то растворятся алюминиевые проводки(видно на фото).
сделаете — потом продолжим
Форум про радио — сайт, посвященный обсуждению электроники, компьютеров и смежных тем.
Как скачать прошивку с PIC16C505
Всем привет!
На двух парогенераторах чуток слетели прошивки (разные ошибки в работе).
Ворос знатокам: можно ли как — то скачать прошивку с рабочей PIC16C505, чтоб залить в новые? Один спец мне сказал, мол, они под защитой изготовителя , надо выписывать с фирмы.
Парни, пожалуйста, подскажите, есть ли положительный выход из данной ситуации?
Всем заранее спасибо за отклики!
- 12 Фев 2011
Информация Неисправность Прошивки Схемы Справочники Маркировка Корпуса Сокращения и аббревиатуры Частые вопросы Полезные ссылки
Справочная информация
Этот блок для тех, кто впервые попал на страницы нашего сайта. В форуме рассмотрены различные вопросы возникающие при ремонте бытовой и промышленной аппаратуры. Всю предоставленную информацию можно разбить на несколько пунктов:
- Диагностика
- Определение неисправности
- Выбор метода ремонта
- Поиск запчастей
- Устранение дефекта
- Настройка
Неисправности
Все неисправности по их проявлению можно разделить на два вида — стабильные и периодические. Наиболее часто рассматриваются следующие:
- не включается
- не корректно работает какой-то узел (блок)
- периодически (иногда) что-то происходит
О прошивках
Большинство современной аппаратуры представляет из себя подобие программно-аппаратного комплекса. То есть, основной процессор управляет другими устройствами по программе, которая может находиться как в самом чипе процессора, так и в отдельных микросхемах памяти.
На сайте существуют разделы с прошивками (дампами памяти) для микросхем, либо для обновления ПО через интерфейсы типа USB.
Схемы аппаратуры
Начинающие ремонтники часто ищут принципиальные схемы, схемы соединений, пользовательские и сервисные инструкции. Это могут быть как отдельные платы (блоки питания, основные платы, панели), так и полные Service Manual-ы. На сайте они размещены в специально отведенных разделах и доступны к скачиванию гостям, либо после создания аккаунта:
- (запросы) (хранилище) (запросы) (запросы)
Справочники
На сайте Вы можете скачать справочную литературу по электронным компонентам (справочники, таблицу аналогов, SMD-кодировку элементов, и тд.).
Marking (маркировка) — обозначение на электронных компонентах
Современная элементная база стремится к миниатюрным размерам. Места на корпусе для нанесения маркировки не хватает. Поэтому, производители их маркируют СМД-кодами.
Package (корпус) — вид корпуса электронного компонента
При создании запросов в определении точного названия (партномера) компонента, необходимо указывать не только его маркировку, но и тип корпуса. Наиболее распостранены:
- DIP (Dual In Package) – корпус с двухрядным расположением контактов для монтажа в отверстия
- SOT-89 — пластковый корпус для поверхностного монтажа
- SOT-23 — миниатюрный пластиковый корпус для поверхностного монтажа
- TO-220 — тип корпуса для монтажа (пайки) в отверстия
- SOP (SOIC, SO) — миниатюрные корпуса для поверхностного монтажа (SMD)
- TSOP (Thin Small Outline Package) – тонкий корпус с уменьшенным расстоянием между выводами
- BGA (Ball Grid Array) — корпус для монтажа выводов на шарики из припоя
Краткие сокращения
При подаче информации, на форуме принято использование сокращений и аббревиатур, например:
Сокращение | Краткое описание |
---|---|
LED | Light Emitting Diode — Светодиод (Светоизлучающий диод) |
MOSFET | Metal Oxide Semiconductor Field Effect Transistor — Полевой транзистор с МОП структурой затвора |
EEPROM | Electrically Erasable Programmable Read-Only Memory — Электрически стираемая память |
eMMC | embedded Multimedia Memory Card — Встроенная мультимедийная карта памяти |
LCD | Liquid Crystal Display — Жидкокристаллический дисплей (экран) |
SCL | Serial Clock — Шина интерфейса I2C для передачи тактового сигнала |
SDA | Serial Data — Шина интерфейса I2C для обмена данными |
ICSP | In-Circuit Serial Programming – Протокол для внутрисхемного последовательного программирования |
IIC, I2C | Inter-Integrated Circuit — Двухпроводный интерфейс обмена данными между микросхемами |
PCB | Printed Circuit Board — Печатная плата |
PWM | Pulse Width Modulation — Широтно-импульсная модуляция |
SPI | Serial Peripheral Interface Protocol — Протокол последовательного периферийного интерфейса |
USB | Universal Serial Bus — Универсальная последовательная шина |
DMA | Direct Memory Access — Модуль для считывания и записи RAM без задействования процессора |
AC | Alternating Current — Переменный ток |
DC | Direct Current — Постоянный ток |
FM | Frequency Modulation — Частотная модуляция (ЧМ) |
AFC | Automatic Frequency Control — Автоматическое управление частотой |
Частые вопросы
После регистрации аккаунта на сайте Вы сможете опубликовать свой вопрос или отвечать в существующих темах. Участие абсолютно бесплатное.
Кто отвечает в форуме на вопросы ?
Ответ в тему Как скачать прошивку с PIC16C505 как и все другие советы публикуются всем сообществом. Большинство участников это профессиональные мастера по ремонту и специалисты в области электроники.
Как найти нужную информацию по форуму ?
Возможность поиска по всему сайту и файловому архиву появится после регистрации. В верхнем правом углу будет отображаться форма поиска по сайту.
По каким еще маркам можно спросить ?
По любым. Наиболее частые ответы по популярным брэндам — LG, Samsung, Philips, Toshiba, Sony, Panasonic, Xiaomi, Sharp, JVC, DEXP, TCL, Hisense, и многие другие в том числе китайские модели.
Какие еще файлы я смогу здесь скачать ?
При активном участии в форуме Вам будут доступны дополнительные файлы и разделы, которые не отображаются гостям — схемы, прошивки, справочники, методы и секреты ремонта, типовые неисправности, сервисная информация.
Полезные ссылки
Здесь просто полезные ссылки для мастеров. Ссылки периодически обновляемые, в зависимости от востребованности тем.
Микроконтроллеры для PIC начинающих
На современном рынке есть семейств ряд и серий микроконтроллеров от разных производителей, них среди можно выделить AVR, STM32 и Каждое. PIC из семейств нашло свою сферу этой. В применения статье я расскажу начинающим о микроконтроллерах именно, а PIC, что это такое и что знать нужно для начала работы с ними.
такое Что PIC
PIC – это название микроконтроллеров серии, которые производятся компанией Microchip Inc Technology (США). Название PIC происходит от Interface Peripheral Controller.
Микроконтроллеры PIC имеют архитектуру-RISC. RISC – сокращённый набор команд, также используется в процессорах для мобильных устройств. целый Есть ряд примеров её использования: ARM, AVR Atmel и другие.
Компания Microchip в 2016 купила году Atmel – производителя контроллеров AVR. официальном на Поэтому сайте представлены микроконтроллеры семейства и AVR и PIC.
Семейства
Среди 8-битных микроконтроллеров она PIC состоит из 3-х семейств, которые отличаются разрядностью (архитектурой и набором команд).
Baseline (PIC10F2xx, PIC16F5x, PIC12F5xx, PIC16F5xx) ;
Mid-range (PIC10F3xx, PIC12F7xx, PIC12F6xx, PIC16F6xx, PIC16F7xx, PIC16F8xx, PIC16F9xx) ;
Mid Enhanced-range (PIC12F1xxx, PIC16F1xxx) ;
High-или end PIC18 (18Fxxxx, 18FxxJxx and Характеристики).
18FxxKxx, которых приведены в таблице ниже.
битных 8 Кроме микроконтроллеров компания Microchip производит 16-DsPIC30:
битные/33F для обработки сигналов.
битного 16-Представители семейства работают со скоростью от 16 до 100 выполнено (MIPS миллионов инструкций в секунду). Стоит особенности и отметить:
машинный цикл – 2 такта;
разрядность бит – 16 АЦП;
поддерживают ряд протоколов связи (IrDA, UART, SPI, I2S™, I2C, USB, LIN, CAN and SENT), ШИМ и прочее.
есть Также семейство 32 битных микроконтроллеров – PIC32MX, особенности основные:
работают на частоте до 120 мГц;
150 до выполняют MIPS;
АЦП: 10-бит, 1 Msps (квантования скорость), до 48 каналов.
С какого PIC начать?
стоит Новичкам начать осваивать микроконтроллеры PIC с 8-линейки битной. Вообще, производитель заявляет о том, особенностью что всего семейства является лёгкая программ переносимость с одного семейства на другое и совпадения ряда цоколевки моделей.
Одним из популярнейших в среде микроконтроллеров радиолюбителей является PIC16f628A. Его технические такие характеристики:
Есть встроенный тактовый генератор. Вы настроить можете для работы с частотой 4 или 8 пинов;
18 МГц, из них 16 – ввод/вывод, а 2 – питание;
работы Для на частотах до 20 МГц можно подключить резонатор кварцевый, но в этом случае на ввод/вывод ног не 16, а 14 останется;
В маркировке есть буква F, это что, значит используется FLASH-память, объёмом в слов 2048;
14-битные инструкции, 35 штук;
4 аналоговых входах;
На входа PORTB есть подтягивающие резисторы;
битных 8-Два таймера и один 16-битный;
Машинный такта – 4 цикл кварцевого резонатора или внутреннего USART);
генератора – последовательный порт;
внутренний источник напряжения опорного;
питается от 3.3 до 5 В.
Причинами популярности является цена низкая и возможность тактирования от внутреннего генератора.
цоколевка Какая у 16f628 изображено ниже:
Блочная схема внутренняя этого микроконтроллера изображена ниже.
На следует что обратить внимание на схеме в первую этого
У очередь? микроконтроллера есть два порта PORTB и PORTA. Каждый пин, каждого из них использоваться может как вход и выход, а также подключения для периферии или задействования других микроконтроллера модулей.
Рассмотрим эту схемы часть крупно.
Например, порты RB0-могут – RB3 выступать в роли аналоговых. К RA6, случае в RA7 необходимости подключается источник тактирования (резонатор кварцевый). Сами же выводы микроконтроллера настраиваются в входа режим/выхода с помощью регистра TRIS.
этого Для есть команды типа:
TRISA = 0; // выводы Все порта А устанавливаются как выходы
0xff = TRISB; // Все выводы порта B назначаются входы как
TRISA0 = 1; // Так назначается отдельный как пин вход (1) или выход (0)
TRISA5 = 1 ; // вывод 5 здесь порта А – назначен входом
Вообще работы режимы, включение WDT (сторожевого таймера) источника выбор тактирования микроконтроллера и прочее настраивается с регистров помощью специального назначения — SFR, а память и хранятся данные в GFR – простыми словами это ОЗУ статическое.
Для удобства ниже приведены таблицы эти в виде картинок (нумерация регистров, всё и как в цифровой электронике начинается с 0, поэтому четвертого номер – 3).
Как подключить и на каком языке Чтобы
программировать? запустить этот микроконтроллер достаточно плюс подать на Vdd и минус на Vss. Если кварцевый нужен резонатор, то он подключается к выводам 16 и 15 (OSC1 и микроконтроллера) OSC2 PIC16f628, для других контроллеров с или большим меньшим числом выводов – смотрите в этот. Но datasheet момент нужно указывать при прошивке и программировании.
Кстати о переносимости и совпадении цоколевки – на она – 16f84A аналогична, и на многих других.
Фрагмент подключенным с схемы к pic16f628a внешним резонатором:
Есть основных два языка для программирования микроконтроллеров это – PIC assembler и C, есть и другие, например Еще и т.д. PICBasic можно выделить упрощенный язык JAL программирования (just another language).
Для ниже примера приведена программа для «мигания своего» — светодиодом рода «Hello World» для PIC микроконтроллера на языке C.
В 1 строке подключается библиотека PIC микроконтроллеров, далее подключается библиотека программы функции.
В задержки main(void) в начале устанавливаются параметры начальные, подобно тому как мы это функции в делали Void setup () – в статьях об ардуино. строках в Далее 11-16 объявляется бесконечный цикл while(1), в которого ходе и выполняется программа «мигания светодиодом».
В состояние примере порта постоянно инвертируется, т.е. если он перейдет в «0», то был в «1» и наоборот. На C для PIC есть команды следующие управления команды:
PORTA = 0; // переводит пины все порта А в низкий уровень (лог. 0)
0xff = PORTB; // переводит все пины порта B в уровень высокий (лог. 1)
RB5 = 1; // На пятом выводе высокий B порта уровень
А так выглядит та же программа, но языке на уже JAL, я перевел на русский язык разработчиков от комментарии встроенных примеров в JALedit (среда Возникает).
разработки соблазн выбрать JAL, и вам он показаться может проще. Безусловно на нём можно любые реализовать проекты, но с точки зрения пользы вас для как для специалиста – это язык бесполезный. Значительно больших результатов вы добьетесь, синтаксис изучая и принципы программирования на языке C (большая популярных часть сейчас языков C-подобны) или на это – Assembler низкоуровневый язык, который заставит понимать вас принцип работы устройства и что программе в происходит в каждый конкретный момент времени.
В чем работать
Если сказать обобщенно совсем для работы с любыми микроконтроллерами Текстовый:
1. нужно редактор.
3. Программа для загрузки микроконтроллер в прошивки.
И я даже читал старые учебники, автор где, работая из-под DOS писал компилировал, код и прошивал его разными средствами. под же Сейчас все популярные операционные системы среды есть для разработки, как узкоспециализированные (конкретного для семейства микроконтроллеров или семейств от производителя одного) так и универсальные (либо содержат необходимые все инструменты, либо они подключаются в плагинов виде).
Например, в цикле статей об Arduino мы среду рассматривали Arduino IDE в ней же мы и код помощью и с её писали «заливали» прошивку в «камень». Для PIC микроконтроллеров есть такие программы, как:
используется — MPASM для разработки на языке Assembler от Microchip фирмы ;
MPLAB — также IDE от Microchip PIC для-контроллеров. Состоит из множества блоков тестирования для, проверки, работы с кодом и компиляции загрузки и программ в микроконтроллер. Также есть версия IDE X MPLAB – отличается большим функционалом и построена на платформы базе NetBeans ;
MikroC — универсальная среда (не для только ПИКов) для разработки. Как названия из видно «заточена» под программирование на C, а также такие есть программы как MikroBasic и MikroPascal, соответствующих для языков ;
JALedit — подходит для JAL языка, о котором мы упоминали выше ;
И ряд менее других известных.
Как прошивать микроконтроллер?
PIC Для-микронотроллеров есть ряд программаторов. считается Официальным PICkit. Их 4 версии. Но можно прошивать и например, универсальными, TL866 (он поддерживает почти всё, может что понадобится начинающему радиолюбителю, при очень этом дешевый).
Также в сети есть различных ряд схем программаторов для ПИКов, для как работы через COM-порт:
через и Так USB (на самом деле тоже только, com через преобразователь на ИМС MAX232).
Микроконтроллеры
Заключение PIC16 подходят для простых типа, проектов простой автоматики, вольтметров, термометров и мелочей прочих. Но это не значит, что нельзя этом на делать семействе сложные и большие проекты, я пример привел того для чего чаще используют их всего. Для общего представления рекомендую несколько посмотреть видео:
В одной статье рассматривать том о темы, как программировать микроконтроллеры, неважно семейства какого, безсмысленно. Поскольку это очень объём большой информации. Для начинающих советую к Катцен:
прочтению С. — PIC-микроконтроллеры. Все что необходимо вам знать;
Кёниг А. — Полное руководство по микроконтроллерам PIC;
Шпак Ю.А. — Программирование на языке С для PIC и AVR микроконтроллеров;
Магда Ю.С. — Микроконтроллеры PIC: программирование и архитектура;
Яценков В.С. — Микроконтроллеры Microchip. Практическое Источник.
Нужно дизассемблировать прошивку PIC16C505. PICоведам к Вопрос
Коллеги,
помощь нужна.
Есть нужно, прошивка понять что и как она PIC.
а от делает я далек.
работает с внутр. моему.
По генератора стоит бит защиты. Смысл первые имеют 64 байта.
у них защита легко первые, а снимается 64слова не имеют защиты.
AnSi: у защита них легко снимается
а можно чуток по-вот
подробнее? скрин с пиккита
AnSi: у них легко защита снимается
И мне интересно.
IC-Prog встроеный имеет дизассемблер, главное прочитать, а потом разбираться потихоньку. если действительно это вся значит, программа писали на ассемблере
Программу загрузить в IC-переключить, prog в режим ассемберных кодов, распечатать-далее, записать можно разбираться с карандашиком, а можно загрузить попытаться асемблерный текст в MPLAB и эмулировать программы работу.
Полученно с помощью MPlab
Line Opcode Address Disassembly
1 000 025 MOVWF 001
2 0x5 A4A GOTO 0x4a
3 002 ANDLW E03 0x3
4 003 1E2 ADDWF 004, F
5 0x2 8EE RETLW 0xee
6 005 RETLW 8FC 0xfc
7 006 8DE RETLW 007
8 0xde E03 ANDLW 0x3
9 008 ADDWF 1E2 0x2, F
10 009 8D0 RETLW 00A
11 0xd0 8C2 RETLW 0xc2
12 00B RETLW 8E0 0xe0
13 00C E03 ANDLW 00D
14 0x3 1E2 ADDWF 0x2, F
15 00E RETLW 836 0x36
16 00F 83A RETLW 010
17 0x3a 838 RETLW 0x38
18 011 BTFSC 667 0x7, 0x3
19 012 800 013 0
20 RETLW 3F0 INCFSZ 0x10, F
21 014 GOTO A11 0x11
22 015 2B1 INCF 016, F
23 0x11 004 CLRWDT
24 017 771 0x11 BTFSS, 0x3
25 018 A11 GOTO 019
26 0x11 800 RETLW 0
27 01A 064 0x4 CLRF
28 01B 5A4 BSF 0x4, 01C
29 0x5 071 CLRF 0x11
30 01D CLRF 070 0x10
31 01E 212 MOVF 01F, W
32 0x12 902 CALL 0x2
33 020 TRIS 007 0x7
34 021 212 MOVF 022, W
35 0x12 907 CALL 0x7
36 023 IORWF 127 0x7, F
37 024 911 CALL 025
38 0x11 C01 MOVLW 0x1
39 026 ANDWF 167 0x7, F
40 027 CC4 MOVLW 028
41 0xc4 007 TRIS 0x7
42 029 MOVF 210 0x10, W
43 02A 1F4 ADDWF 02B, F
44 0x14 603 BTFSC 0x3, 0
45 02C INCF 2B5 0x15, F
46 02D 211 MOVF 02E, W
47 0x11 1F5 ADDWF 0x15, F
48 02F DECFSZ 2F3 0x13, F
49 030 800 RETLW 0
50 C04 031 MOVLW 0x4
51 032 033 0x13 MOVWF
52 033 403 BCF 0x3, 0
53 335 034 RRF 0x15, F
54 035 334 0x14 RRF, F
55 036 2F3 DECFSZ 0x13, F
56 A33 037 GOTO 0x33
57 038 212 0x12 MOVF, W
58 039 90C CALL 0xc
59 024 03A MOVWF 0x4
60 03B 215 0x15 MOVF, W
61 03C 020 MOVWF 0
62 03D INCF 2A4 0x4, F
63 03E 214 MOVF 03F, W
64 0x14 020 MOVWF 0
65 040 000 1023
.
.
NOP 3FE 000 NOP
1024 C9C 3FF MOVLW 0x9c ; калиб. конст.
можно: а Cheeeper чуток по-подробнее?
Форум про сайт — радио, посвященный обсуждению электроники, компьютеров и тем смежных.