Микроконтролери Глава 2

Текст на микроконтролери Глава 2

2.8.2018 г. Микроконтролери Глава 2

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

Паметта е част от микроконтролера, чиято функция е да съхранява данни. Най-добрият начин да го обясните е да го опишете като голям килер с много чекмеджета. Ако приемем, че чекмеджетата са маркирани по такъв начин, че да не се бъркат, някое от съдържанието им ще бъде лесно достъпно. Достатъчно е да знаем името на чекмеджето и така неговото съдържание ще ни бъде известно със сигурност.

Компонентите на паметта са точно аа. За определено вписване получаваме съдържанието на именовано място в паметта и това е всичко. Налице са две нови концепции: адресиране и местоположение на паметта. Паметта се състои от всички места в паметта, а адресатът не е нищо повече от избор на едно от тях. Това означава, че трябва да изберем местоположението

памет в единия край, а в другия край трябва да изчакаме съдържанието на това място. В допълнение към вземането на решение от място в паметта, паметта трябва да позволява и записване в него. Това става чрез осигуряване на допълнителна линия, наречена контролна линия. Ще наречем този ред R/W (четене/запис). Контролната линия се използва, както следва: ако R/W = 1 се чете, idac R/W = 0 след това записва в паметта. Паметта е първият елемент, но имаме нужда от други, за да работи нашият микроконтролер.

1.2 Централен процесор

Нека добавим още 3 места в паметта за конкретен блок, който ще има вградена функция за събиране, умножение, деление, изваждане. Частта, която току-що добавих, се нарича "централен процесор" (CPU). Местоположенията му в паметта се наричат ​​регистри.

2.8.2018 г. Микроконтролери Глава 2

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

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

Пътеката се нарича "автобус" - автобус. Физически той представлява група от 8, 16 или повече нишки. Има два вида шини: адресна шина и шина за данни. Първият се състои от толкова редове, колкото адреса (в битове) на паметта, който искаме да адресираме, а другият е толкова широк, колкото данните, в нашия случай 8 бита или линията за връзка. Първият служи за предаване на адресите от процесора в паметта, а вторият за свързване на всички блокове вътре в микроконтролера.

По отношение на функционалността ситуацията се подобри, но възникна и нов проблем: имаме звено, което може да работи самостоятелно, но няма контакт с външния свят или с нас! За да преодолеем този недостатък, нека добавим блок, който съдържа стойности на паметта, чиято единична глава е свързана към шината за данни, а другата има връзка към шината за данни.

изходни линии на микроконтролера, които могат да се видят с просто око като щифтове към електронния компонент.

2.8.2018 г. Микроконтролери Глава 2

Тези места, които току-що добавихме, се наричат ​​„портове“. Има различни видове портове: входни, изходни или двупосочни портове. Когато работите с портове, на първо място е необходимо да изберете с кой порт да работите и след това да изпратите данни или да вземете данни от порта.

При работа с него портът се държи като място в паметта. Просто се пише или чете нещо от него и е лесно да се забележи това на щифтовете на микроконтролера.

С това добавихме към вече съществуващата единица възможността за комуникация с външния свят, но този начин на комуникация има своите недостатъци. Един от основните недостатъци е броят на редовете, които трябва да се използват за прехвърляне на данните. Ами ако трябваше да бъдат прехвърлени на няколко километра? Броят на редовете, умножен по броя на километрите, не е такъв

обещава рентабилен проект. Всичко, което трябва да направим, е да намалим броя на редовете до такава степен, че да не намалим функционалността. Да предположим, че работим само с 3 реда и един ред се използва за изпращане на данни, друг за приемане, а третият се използва като референтен ред както за входната, така и за изходната част. За да работи това, трябва да установим правила за обмен на данни. Тези правила се наричат ​​протокол. Следователно протоколът е дефиниран предварително, така че да няма недоразумение между тях

възможности, които общуват помежду си. Например, ако един човек говори френски, а друг говори английски, е малко вероятно те да се разберат бързо и ефективно. Да предположим c

имаме следния протокол: Логическата единица "1" е зададена на преносната линия, докато прехвърлянето започне. Веднъж

прехвърлянето започва, понижаваме преносната линия до логическото „0“ за определен период от време (който ще обозначим като Т), така че приемащата страна да знае, че има данни, които трябва да бъдат получени, така че тя да активира приемащия механизъм. Нека сега да се върнем към частта на предаването и да започнем да поставяме нули и единици

на преносната линия по ред, от най-малко значимия бит до най-значимия. Нека всеки бит остане на линията за период от време, равен на T, и в края, или след 8-ия бит, да върне логическата единица "1" обратно на линията, която ще маркира края на предаването на данни. -описано се нарича в професионалната литература NRZ (Non-Return to Zero).

2.8.2018 г. Микроконтролери Глава 2

2.8.2018 г. Микроконтролери Глава 2

Разбира се, когато това се случи с компютър, ние просто го нулираме и продължаваме да работим. Въпреки това няма бутон за нулиране, който да натиснете в случай на микроконтролера, за да разрешите проблема ни. За да преодолеем това препятствие, трябва да въведем друг блок, наречен пазачи. Този блок всъщност е друг брояч за свободно пускане, където нашата програма трябва да пише нула, когато се изпълнява правилно. В случай, че програмата е "непроникнала", нулата няма да бъде записана и броячът ще се нулира сам. достигайки максималната си стойност. Това ще накара програмата да се стартира отново и ще коригира този път през цялото време. Това е важен елемент от всяка програма, която трябва да бъде надеждна за човешки надзор.

1.8 Аналогово-цифров преобразувател

Тъй като сигналите от периферните устройства се различават съществено от тези, които микроконтролерът може да чете (нула и един), те трябва да бъдат преобразувани по начин, който да може да бъде разбран от демоконтролера. Тази задача се изпълнява от блок за аналогово-цифрово преобразуване или AD конвертор. Този блок е отговорен за преобразуването на информация за определена аналогова стойност в двоично число и за предаването й към блок на процесора във формата, която

блока на процесора може да го обработи.

По този начин микроконтролерът вече е завършен и остава само да го поставите в електронен компонент, където да има достъп до вътрешните блокове през външните щифтове. Изображението по-долу показва как изглежда микроконтролерът вътре.

Физическата конфигурация на вътрешността на микроконтролера

2.8.2018 г. Микроконтролери Глава 2

Тънките линии, които преминават отвътре към страната на микроконтролера, представляват естествената връзка на вътрешните блокове с щифтовете на капсулата на микроконтролера. Следващата диаграма представлява централната секция на микроконтролера.

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

2.8.2018 г. Микроконтролери Глава 2

Писането на програми е специална област на работа за микроконтролера и се нарича „програмиране“. Нека се опитаме да напишем малка програма, която ще създадем сами и която всеки ще може да разбере.

STARTREGISTER1 = MEMORY LOCATION_AREGISTER2 = MEMORY LOCATION_BPORTA = REGISTER1 + REGISTER2END

Програмата събира съдържанието на две места в паметта и вижда сумата им на порт А.

Първият ред на програмата е да премести съдържанието на местоположението на паметта "А" в един от регистрите на централния процесор. Тъй като се нуждаем от останалите данни, ние също ще ги преместим в другия регистър на централния процесор.

Следващата инструкция инструктира централния процесор да събере съдържанието на двата регистъра и да изпрати резултата до порт А, така че да се вижда сумата от този сбор.

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

Програмирането може да се извърши на няколко езика като Assembler, C и Basic, които са най-използваните езици. Assembler принадлежи към езици от ниско ниво, които се програмират бавно, но използват най-малкото място в паметта и дават най-добри резултати при разглеждане на скоростта на изпълнение на програмата.

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

Програмирането на C също е по-бавно от Assembler-