Какво представлява контролера?

Източник:  SparkFun Electronics

Автор:  Nate

Превел: Т.Б.

Може би вече Ви е известно какво представлява логическият елемент ИЛИ. Логическият елемент ИЛИ е логическа врата, която посредством двата си входни сигнала управлява изхода си. Може би вече сте си играли с този тип електронни врати, дори е възможно те да са били в DIP корпус елемента „ИЛИ врата“ (4 бр. в структурата му). DIP корпусът изисква захранващ извод и извод маса. Протичащото електричество през интегралната схема и позволява да работи. Може да не Ви е известно как точно е била направена интегралната схема, но Вие разбирате, че ако смените входовете, състоянието на изхода се променя. Можете да наблюдавате това, като свържете входовете веднъж към токозахранващия източник (VCC), и втори път към маса (GND). Вие най-вероятно имате опит и с интегралните схеми в DIP корпус чрез учебната платка Breadboard (бредборд).  Ако нещо от гореспоменатите не Ви е известно, не се стресирайте! Ние ще се опитаме да Ви го обясним.

Микроконтролерът функиционира точно както елементът „ИЛИ“. Вие имате определени входове, имате и изходи. Тука щуротията е, че микроконтролерът може да изпълнява код. Или за да бъдем още по-точни „машинен код“. Например, с малко работа от ваша страна, вие бихте могли да наблюдавате входните състояния на изводи А и В. И базирайки се на тези входове, вие можете да контролирате изхода С. И така, за да имитираме елемента „ИЛИ“:

if (A == 1 || B == 1){

C = 1;

}

else{

C = 0;

}

 

 

Това е програмен код на езикът „С“!  Вие можете да програмирате, най-различни приложения, да компилирате след това кода, да го заредите в контролера, да включите контролера и той да изпълни кода. Изключително просто! Микроконтролерите се използват в цялата електроника, като например микровълновата, дистанционното на телевизора, клетъчния телефон, мишката, принтера, в новите автомобили има над 150 микроконтролера! Примерно има един контролер, който очаква от вас да натиснете спирачките (BRAKES == 1) и да заключи гумите (LOCK_UP == 1). Когато това се случи, контролерът отпуска спирачките, и вие имате ABS система (anti-lock brake system).

В началото, микроконтролерите били OTP или Еднократно програмируеми (one-time-programmable), което означава че можете да го програмирате само 1 път, да тествате кода, и евентуално ако кода Ви неработи – просто го изхвърляте в коша и си купувате нов. Сега, в наши дни контролерите са „флаш-базирани“, тоест те имат вградена флаш памет, която позволява програмният код да бъде записван и пре-записван хиляди пъти. Програмирам микроконтролери от години и изгарям контролера много преди да достигна неговия лимит на програмни цикли.

Флаш микроконтролерите се различават от компютърната и RAM. Компютрите изискват колосално захранване и елементи, за да работят. Компютрите загрямат. На компютрите им е нужна цяла вечност и ден, за да стартират. Микроконтролерите се включват и започват изпълнението на кода в рамките н мили-секунди и ако те са достатъчно топли, вие може да усетите топлината излъчвана от тях, ако нещо е тотално „омазано“ – има вероятност да изгорите контролера. Ох, – и контролерите струват около $2 (има и по-скъпи :) ).

Сега да се върнем обратно на интегрална схема на логическият елемент ИЛИ. Има куп изводи, всички отдадени на една цел, за да бъдат входове или съответно изходи, на различните вградени ИЛИ-врати (4 врати в един корпус = 8 входа, 4 изхода, 2 извода захранване/маса). Сега с микроконтролера, най-основният функционален извод е GPIO – Вход с Общо предназначение (general purpose input). Тези GPIO изводи, могат да бъда конфигурирани като входове/изходи по програмен път. Всеки вход може да бъде наблюдаван. Например:

if (PORTC.2 == 1)

тогава направи нещо…

Всеки изходен пин, може да бъде установяван във „високо“ или „ниско“ логическо ниво. Например:

while(1)
{
RB3 = 1;
delay_ms(1000);
RB3 = 0;
delay_ms(1000);
}

Познахте ли какво прави порграмния код? Той превключва извода RB3 между двете логически нива („1″/“0“) на всеки 2 секунди. Яко нали? Това е така нареченият „Hello World“ проект от света на електрониката. Изглежда елементарен, но всъщност е способен да Ви отговори на въпроси от сорта на „Как да зададете включване на нещо след 5 часа“. Ако не сте наясно с този пример, косата може да Ви побелее :) От друга страна, чрез този код може да наблюдавате премигването на светодиод, което за начинаещ си доста вълнуващо!