Практикуваме овладяване на микроконтролери, като изучаваме PIC от Microchip, Studio ProtoLAB

микроконтролери

Изборът на микроконтролер обикновено се извършва за необходимите задачи. Популярният микроконтролер с минимален набор от периферни устройства е много подходящ за проучване: PIC16F628A.

Първата стъпка е да изтеглите документацията за избрания микроконтролер. Достатъчно е да отидете на уебсайта на производителя и да изтеглите листа с данни.

Първите страници изброяват основните характеристики на микроконтролера (руско описание). Основните моменти, от които се нуждаем:

- микроконтролерът съдържа вътрешен генератор на 4 MHz, можете да свържете и външен кристал с честота до 20 MHz;
- 16 фута микроконтролер може да се използва като цифров вход/изход;
- има 2 аналогови компаратора;
- 3 таймера;
- CCP модул;
- USART модул;
- 128 байта енергонезависима EEPROM памет.

изучаваме
Диаграма на пиноут. Източник: habrahabr.ru Vdd - храна.
Vss - земя.

Това е минимумът, необходим за работа на микроконтролера.

изучаваме
Източник: habrahabr.ru 16 крака на микроконтролера остават на разположение. Не е трудно да се изчисли, че използването на всеки крак от даден модул намалява максималния брой използвани цифрови портове.

Изтеглете JALPack, инсталирайте.
Този пакет съдържа всички необходими библиотеки, както и примери за тяхното използване.

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

Целият код може да бъде разделен на 4 блока:

Различните микроконтролери имат различни набори от конфигурационни битове. Можете да научите за целта на всеки бит в листа с данни (стр. 97).
В свързаната библиотека на всеки бит и всяка от неговите стойности е присвоена четлива променлива, остава само да изберете параметрите, от които се нуждаем. - Символични дефиниции на предпазители
-- -------------------------
--
-- addr 0x2007
--
pragma fuse_def OSC 0x13 < -- oscillator
RC_CLKOUT = 0x13 - rc: clkout на ra6/osc2/clkout, rc на ra7/osc1/clkin
RC_NOCLKOUT = 0x12 - rc: i/o на ra6/osc2/clkout, rc на ra7/osc1/clkin
INTOSC_CLKOUT = 0x11 - intosc: clkout на ra6/osc2/clkout, i/o на ra7/osc1/clkin
INTOSC_NOCLKOUT = 0x10 - intosc: i/o на ra6/osc2/clkout, i/o на ra7/osc1/clkin
EC_NOCLKOUT = 0x3 - ек
HS = 0x2 - hs
XT = 0x1 - xxt
LP = 0x0 - lp
>
pragma fuse_def WDT 0x4 < -- watchdog timer
АКТИВИРАНО = 0x4 - включено
ИЗКЛЮЧЕНО = 0x0 - изключено
>
pragma fuse_def PWRTE 0x8 < -- power up timer
ИЗКЛЮЧЕНО = 0x8 - забранено
ENABLED = 0x0 - активиран
>
pragma fuse_def MCLR 0x20 < -- master clear enable
ВЪНШЕН = 0x20 - активиран
ВЪТРЕШНО = 0x0 - забранено
>
pragma fuse_def BROWNOUT 0x40 < -- brown out detect
АНАЛИЗИРАН = 0x40 - активиран
ИЗКЛЮЧЕНО = 0x0 - забранено
>
pragma fuse_def LVP 0x80 < -- low voltage program
АНАЛИЗИРАН = 0x80 - активиран
ИЗКЛЮЧЕНО = 0x0 - забранено
>
pragma fuse_def CPD 0x100 < -- data ee read protect
ИЗКЛЮЧЕНО = 0x100 - забранено
АНАЛИЗИРАН = 0x0 - активиран
>
pragma fuse_def CP 0x2000 < -- code protect
ИЗКЛЮЧЕНО = 0x2000 - изключено
АКТИВИРАНО = 0x0 - включено
> OSC - конфигурация на източника на часовника: може да отнеме 8 различни стойности, от които 4 може да ни трябват:
един. INTOSC_NOCLKOUT - вътрешен генератор (4 MHz);
2. HS - външен високочестотен кварц (8-20 MHz);
3. XT = външен кварц (200 kHz - 4 MHz);
4. LP - външен нискочестотен кварц (до 200 kHz);

WDT таймер за пазач -. Основната работа на този таймер е да рестартира микроконтролера, когато стигне до края. За да се предотврати рестартиране, то трябва да бъде нулирано навреме. По този начин, в случай на повреда, броячът на таймера ще спре да се нулира, което ще доведе до нулиране на микроконтролера. Понякога е удобно, но в момента нямаме нужда от него.

PWRTE - друг таймер. Когато се активира, той ще нулира микроконтролера, докато мощността се повиши до желаното ниво.

БРАВНОТ - нулиране на микроконтролера, когато мощността падне под нормалното.

MCLR - активиране на възможността за външно нулиране на микроконтролера. Когато функцията е включена, микроконтролерът ще бъде в постоянно нулиране, докато има положително напрежение на крака на MCLR (щифт 4). За да нулирате микроконтролера, просто инсталирайте бутона, който затваря щифт 4 към земята.