категории: Микроконтролер вериги
Брой преглеждания: 23111
Коментари към статията: 0

PIC микроконтролери за начинаещи

 

На съвременния пазар има редица семейства и серия от микроконтролери от различни производители, сред тях могат да се разграничат AVR, STM32 и PIC. Всяко от семействата е намерило свой собствен обхват. В тази статия ще разкажа на начинаещите за PIC микроконтролерите, а именно какво е и какво трябва да знаете, за да започнете с тях.

PIC микроконтролери за начинаещи

Какво е PIC

PIC е името на серия микроконтролери, произведени от Microchip Technology Inc (САЩ). Името PIC идва от периферния интерфейсен контролер.

PIC микроконтролерите имат RISC архитектура. RISC - съкратен набор от инструкции, се използва и в процесори за мобилни устройства. Има няколко примера за неговото използване: ARM, Atmel AVR и други.

През 2016 г. Microchip купи Atmel, производител на AVR контролери. Следователно официалният уебсайт представя микроконтролери на семейството и PIC и AVR.

Микроконтролер PIC16F1xxx

семейство

Сред 8-битовите PIC микроконтролери се състои от 3 фамилии, които се различават по архитектура (битова дълбочина и набор инструкции).

  • Базова линия (PIC10F2xx, PIC12F5xx, PIC16F5x, PIC16F5xx);

  • Среден обхват (PIC10F3xx, PIC12F6xx, PIC12F7xx, PIC16F6xx, PIC16F7xx, PIC16F8xx, PIC16F9xx);

  • Подобрен среден обхват (PIC12F1xxx, PIC16F1xxx);

  • High-end или PIC18 (18Fxxxx, 18FxxJxx и 18FxxKxx).

Сравнение на семейства на микроконтролери

Характеристиките са дадени в таблицата по-долу.

Функции на PIC микроконтролер

В допълнение към 8-битовите микроконтролери, Microchip произвежда 16-битови:

  • PIC24F;

  • DsPIC30 / 33F за обработка на сигнали.

Представителите на 16-битовото семейство работят със скорост от 16 до 100 MIPS (изпълнени милиони инструкции в секунда). Заслужава да се отбележи и характеристики:

  • машинен цикъл - 2 цикъла;

  • Разделителна способност на ADC - 16 бита;

  • поддържат редица комуникационни протоколи (UART, IrDA, SPI, I2S ™, I2C, USB, CAN, LIN и SENT), PWM и др.

Съществува и фамилия от 32-битови микроконтролери - PIC32MX, основните характеристики:

  • работят с честота до 120 MHz;

  • Изпълнете до 150 MIPS

  • ADC: 10-битов, 1 Msps (скорост на квантоване), до 48 канала.



С какъв PIC да започнете?

Начинаещите трябва да започнат овладяването на PIC микроконтролери от 8-битова линия. Като цяло производителят твърди, че характеристика на цялото семейство е лесната преносимост на програмите от едно семейство в друго и изрязването на редица модели.

Един от най-популярните микроконтролери в любителската радио среда е PIC16f628A. Техническите му характеристики са както следва:

  • Има вграден генератор на часовник. Можете да настроите да работите с честота от 4 или 8 MHz;

  • 18 пина, от които 16 - вход / изход и 2 - мощност;

  • За да работите на честоти до 20 MHz, можете да свържете кварцов резонатор, но в този случай не са останали 16, а 14 крака за вход / изход;

  • В маркировката има буква F, което означава, че се използва FLASH-памет с капацитет от 2048 думи;

  • 14-битови инструкции, 35 броя;

  • 2 сравнителни;

  • 4 аналогови входа;

  • PORTB входовете имат издърпващи се резистори;

  • Два 8-битови таймера и един 16-битов;

  • Машинен цикъл - 4 цикъла на кварцов резонатор или вътрешен осцилатор);

  • 224 байта RAM;

  • 128 байта EEPROM;

  • USART - сериен порт;

  • вътрешно референтно напрежение

  • захранва се от 3.3 до 5 V.

Причините за неговата популярност са ниската цена и възможността за часовник от вътрешен генератор.

Коя фигура 16f628 е показана по-долу:

Pinout на 16f628

Блокът вътрешна схема на този микроконтролер е показан по-долу.

Структура на микроконтролера 16f628

На какво на първо място трябва да обърна внимание в схемата?

Този микроконтролер има два порта PORTA и PORTB. Всеки щифт, всеки от тях може да се използва като вход и изход, както и за свързване на периферни устройства или активиране на други модули на микроконтролера.

Обмислете подробно тази част от схемата.

MK портове

Например, портовете RB0-RB3 - могат да действат като аналог. Ако е необходимо, източник на часовник е свързан към RA6, RA7 (кварцов резонатор). Изходите на самия микроконтролер се конфигурират в режим на вход / изход, като се използва регистърът TRIS.

Има команди за този тип:

TRISA = 0; // Всички пинове на порт А са зададени като изходи
TRISB = 0xff; // Всички пинове на порт B се задават като входове
TRISA0 = 1; // Значи отделен пин е зададен като вход (1) или изход (0)
TRISA5 = 1// тук петият изход на порт А е зададен като вход

Като цяло режимите на работа, включването на WDT (часовник за наблюдение), изборът на тактовия източник на микроконтролера и т.н. се конфигурират с помощта на регистри със специално предназначение - SFR, а паметта и данните се съхраняват в GFR - с прости думи, това е статична RAM памет.

В официалния лист с данни на страници 18-21 ще намерите 4 банки с памет за регистър със специално предназначение SFR и регистри с общо предназначение GFR. Познаването на регистрите е важно, затова отпечатайте и научете посочените страници от Технически данни.

За удобство тези таблици са представени под формата на снимки по-долу (номерирането на регистрите, като всичко в цифровата електроника, започва от 0, така че четвъртото число е 3).

Регистри със специално предназначение
Регистри със специално предназначение
Регистри със специално предназначение
Регистри със специално предназначение

Как да се свържете и на какъв език да програмирате?

За да стартирате този микроконтролер, достатъчно е да приложите плюс към Vdd и минус към Vss. Ако имате нужда от кварцов резонатор, тогава той е свързан към пинове 16 и 15 (OSC1 и OSC2) на микроконтролера PIC16f628, за други контролери с по-голям или по-малък брой пинове - погледнете в информационния лист, Но тази точка трябва да бъде посочена по време на програмиране и фърмуер.

Говорейки за преносимост и съвпадение на pinout - на 16f84A - тя е подобна, както и на много други.

Свързване на кварцов резонатор

Фрагмент от схема с външен резонатор, свързан към pic16f628a:

Фрагмент на верига с външен резонатор, свързан към pic16f628a

Има два основни езика за програмиране на PIC микроконтролери - асемблер и C, има и други, например PICBasic и т.н. Все още можете да подчертаете опростения език за програмиране JAL (просто друг език).

Например, по-долу е програма за „LED мига“ - един вид „Hello World“ за PIC микроконтролера в C.

Пример за PIC микроконтролер програма в C

В ред 1 е свързана библиотеката на PIC микроконтролери, след това е свързана библиотеката на програмата за забавяне.

В основната (void) функция първоначалните параметри се задават в началото, точно както направихме във функцията Void setup () - в статии за ардуино, След това в редове 11-16 се декларира безкраен цикъл, докато (1), по време на който се изпълнява програмата „LED мигаща“.

В примера състоянието на пристанището непрекъснато се обръща, т.е. ако беше на "0", тогава ще премине на "1" и обратно. В C за PIC има следните команди за управление на команди:

ПОРТА = 0; // превежда всички пинове на порт A на ниско ниво (log 0)
PORTB = 0xff; // превежда всички пинове на порт B на високо ниво (log 1)
RB5 = 1; // Петият щифт на порт B е висок

И изглежда като същата програма, но вече на езика JAL, преведох на руски коментари от разработчиците на вградени примери в JALedit (среда за разработка).

Примерна програма JAL

Има изкушение да изберете JAL и може да ви се стори по-лесно. Разбира се, можете да реализирате всякакви проекти по него, но от гледна точка на полза за вас като специалист, това е безполезен език. Ще постигнете значително по-големи резултати, като изучавате синтаксиса и принципите на програмиране в C (повечето популярни в момента езици са като C) или в Assembler - това е език на ниско ниво, който ще ви накара да разберете принципа на устройството и какво се случва в програмата във всеки даден момент.


Как се работи

Ако кажете доста обобщена за работа с всички микроконтролери, от които се нуждаете:

1. Текстов редактор.

2. Компилаторът.

3. Програмата за изтегляне на фърмуер на микроконтролера.

И дори прочетох стари учебници, където авторът, работещ от под DOS, пише код, компилира и го променя с различни средства. Сега за всички популярни операционни системи има среда за разработка, както високоспециализирана (за конкретно семейство от микроконтролери или фамилии от един производител), така и универсална (или съдържа всички необходими инструменти, или са свързани като приставки).

Например в поредица от статии за Arduino разгледахме средата на Arduino IDE, в нея написахме код и с негова помощ „изляхме“ фърмуера в „камък“. За микроконтролерите PIC има такива програми като:

  • MPASM - използва се за разработка на езика на Assembler от Microchip;

  • MPLAB е и Microchip IDE за PIC контролери. Състои се от много блокове за тестване, проверка, работа с код и компилиране на програми и изтегляне в микроконтролера. Има и версия на MPLAB X IDE - тя се отличава с голяма функционалност и е изградена на базата на платформата NetBeans;

  • MikroC е универсална среда (не само за PIKs) за развитие. Както подсказва името, той е „заточен“ за програмиране на C, а има и програми като MikroBasic и MikroPascal за съответните езици;

  • JALedit - подходящ за езика JAL, който споменахме по-горе;

  • И редица други по-малко известни.

MPLAB IDE

Как да мига микроконтролер?

Има редица програмисти за PIC микронотролери. Официално се счита PICkit. Техните 4 версии. Но можете да използвате флаш и универсален например TL866 (той поддържа почти всичко, от което може да се нуждае начинаещ радиолюбител, докато е много евтин).

Програмисти за PIC Micronotrollers

Също така в мрежата има редица различни програмни схеми за PIC, както за работа през COM порта:

Програмна верига

Така че е през USB (всъщност също com, само през конвертора на IC MAX232).

Програмна верига

заключение

Микроконтролерите PIC16 са подходящи за прости проекти, като обикновена автоматизация, волтметри, термометри и други малки неща. Но това не означава, че не можете да правите сложни и големи проекти на това семейство, дадох пример защо те се използват най-често. За обща идея препоръчвам да гледате няколко видеоклипа:

В една статия е безсмислено да се разглеждат теми за това как да се програмират микроконтролери, независимо от кое семейство. Тъй като това е много голям обем информация.

Вижте също на i.electricianexp.com:

  • Видове и разположение на AVR микроконтролери
  • Програмиране на микроконтролери за начинаещи
  • Какво представляват микроконтролерите - предназначение, устройство, софтуер
  • Програмируеми микроконтролери в JavaScript: кой да изберем, характеристики ...
  • Методи за четене и управление на Arduino I / O портове

  •