You are on page 1of 202

Въведение – История -

Микроконтролери спрямо
микропроцесори
 Състоянието, в което днес се намираме в областта на
микроконтролерите, води своето начало от развитието на
технологията на интегралните схеми. Това развитие
позволява да се създадат стотици хиляди транзистори в
един чип. Това е предпоставка за производството на
микропроцесори, а първите компютри са направени чрез
добавяне на външни периферни устройства като памет,
входно-изходни линии, таймери и други. По-нататъшното
увеличаване на броя транзистори в схемата, довежда до
създаване на големи интегрални схеми. Тези интегрални
схеми съдържат, както процесор, така и периферни
устройства. Така се появява първият чип, съдържащ
микрокомпютър, или това, което по-късно ще бъде
наречено микроконтролер.
 През 1969 година и екип от японски инженери от
компанията BUSICOM пристига в Съединените щати
с искане да се направят няколко интегрални схеми
за калкулатори, като се използват техните
разработки. Предложението е дадено на INTEL, а
Марсиан Хоф е отговорен за проекта. Тъй като той е
този, който има опит в работата с компютър (PC)
PDP8, му се налага да предложи коренно различно
решение, вместо предложените разработки. Това
решение предполага, че функцията на интегралната
схема се определя от програма, съхранявана в нея.
 Това означава, че конфигурацията ще бъде по-проста, но
ще изисква много повече памет, отколкото проектът,
предложен от японските инженери. След известно време,
въпреки че японските инженери се опитват да намерят
по-лесно решение, идеята на Марсиан печели и се рaжда
първият микропроцесор. За превръщането на една идея в
готов продукт, основна помощ за INTEL оказва Фредерико
Фагин. Той се прехвърля в INTEL и само за 9 месеца успява
да направи работещ продукт от концепцията. INTEL
получава правата за продажба на този интегрален блок
през 1971 г. Първо, те закупуват лиценза от компанията
BUSICOM, която няма представа какво съкровище има.
През тази година на пазара се появява микропроцесор,
наречен 4004.
 Това е първият 4-битов микропроцесор със скорост 6 000
операции в секунда. Не след дълго американската компания CTC
иска от INTEL и Texas Instruments да направят 8-битов
микропроцесор за използване в терминали. Въпреки че CTC в
крайна сметка се отказа от тази идея, Intel и Texas Instruments
продълживат да работят върху микропроцесора и през април
1972 г. на пазара се появи първият 8-битов микропроцесор под
името 8008. Той е в състояние да адресира 16Kb памет и има 45
инструкции и скорост от 300 000 операции в секунда. Този
микропроцесор е предшественик на всички съвременни
микропроцесори. Intel продължава развитието си през април
1974 г. и пуска на пазара 8-битовия процесор под име 8080,
който може да се справи с 64Kb памет и който има 75
инструкции, а цената започва от $ 360.
 В друга американска компания Motorola разбират
бързо какво се случва, затова пускат на пазара 8-
битов микропроцесор 6800. Главен конструктор е
Chuck Peddle, а Motorola е първата компания, която
заедно със самия процесор, направи други
периферни устройства като 6820 и 6850. По това
време много компании признават по-голямото
значение на микропроцесорите и започват
собствените си разработки. Chuck Peddle напуска
Motorola, за да се присъедини към MOS Technology
и продължава да работи интензивно върху
разработването на микропроцесори.
 На изложението WESCON в Съединените щати през
1975 г. се случва критично събитие в историята на
микропроцесорите. Компанията MOS обявява, че
предлага на пазара микропроцесори 6501 и 6502 по 25
долара всеки, които купувачите могат да закупят
веднага. Това е толкова сензационно, че мнозина
смятат, че това е някаква измама, като се има предвид,
че конкурентите продават 8080 и 6800 по 179 долара
всеки. Като отговор на своя конкурент, както Intel, така
и Motorola понижават цените си в първия ден на
изложението до 69,95 долара за микропроцесор.
Motorola бързо внася иск срещу MOS Technology и
Chuck Peddle за копиране на защитения 6800.
 MOS Technology спира да прави 6501, но продължава
да произвежда 6502. 6502 е 8-битов микропроцесор
с 56 инструкции и възможност за директно
адресиране на 64Kb памет. Поради ниската цена
6502 става много популярен, така че е инсталиран в
компютри като: KIM-1, Apple I, Apple II, Atari,
Comodore, Acorn, Oric, Galeb, Orao, Ultra и много
други. Скоро се появяват няколко производители на
6502 (Rockwell, Sznertek, GTE, NCR, Ricoh и Comodore
поема MOS Technology), който по времето на
просперитета си се продава по 15 милиона
процесора годишно!
 Други обаче не се отказват. Фредерико Фагин
напуска Intel и стартира своя собствена компания
Zilog Inc. През 1976 г. Zilog обявява Z80. Знаейки, че
за 8080 вече са разработени много програми, Faggin
разбира, че мнозина ще останат верни на този
микропроцесор поради големите разходи, които ще
са необходими за повторно преработване на всички
програми. Затова той решава, че новият процесор
трябва да бъде програмно съвместим с 8080, или че
трябва да може да изпълнява всички програми,
които вече са написани за 8080. Освен тези
възможности са добавени и много нови, така че Z80
става много мощен микропроцесор за своето време.
 Той може да адресира директно 64 Kb памет, има
176 инструкции, голям брой регистри, вградена
опция за опресняване на динамичната RAM памет,
еднократна доставка, по-голяма скорост на работа и
т.н. Z80 е голям успех и всички преминават от 8080
на Z80. Може да се каже, че Z80 е без съмнение най-
успешният 8-битов микропроцесор в онова време.
Освен Zilog, се появяват и други нови производители
като Mostek, NEC, SHARP и SGS. Z80 е сърцето на
много компютри като Spectrum, Partner, TRS703, Z-3.
 През 1976 г. Intel излиза с подобрена версия на 8-
битов микропроцесор с име 8085. Въпреки това Z80
е толкова по-добър, че Intel скоро губи битката.
Въпреки че на пазара се появяват още няколко
процесора (6809, 2650, SC / MP и т.н.), всъщност
всичко вече е решено. Няма по-големи подобрения,
които да накарат производителите да се пренасочат
към нещо ново, така че 6502 и Z80 заедно с 6800
остават, като основни представители на 8-битовите
микропроцесори за онова време.
 Микроконтролерът се различава от микропроцесора по
много неща. Първо и най-важното е неговата
функционалност. За да може да се използва
микропроцесор, към него трябва да се добавят други
компоненти, като памет или компоненти за приемане и
изпращане на данни. Накратко това означава, че
микропроцесорът е сърцето на компютъра. От друга
страна, микроконтролерът е проектиран така, че да бъде
всичко това в едно. За прилагането му не са необходими
други външни компоненти, тъй като всички необходими
периферни устройства вече са вградени в него. По този
начин спестяваме времето и пространството, необходими
за конструирането на устройства.
Вградени система за управление.
Embedded systems.
Организация на компютъра
• Блок-схема

• Пет основни блока


– Аритметично и логическо устройство
– Памет
– Управляващо устройство
– Входен блок
– Изходен блок
Организация на компютъра

• Аритметично и логическо устройство


– Изпълнява аритметични и логически операции над
данните
– Данните постъпват от паметта или от входния блок
– Резултатите се съхраняват (записват) в паметта или се
предават към изходния блок
• Памет
– Съхраняват се инструкциите на програмата,
изпълнявана от компютъра и данни те, обработвани
от програмата (междинни и крайни резултати, от
аритметичните резултати)
– Данните постъпват от аритметичното и логическо
устройство или от входния блок
Организация на компютъра

• Входен блок
– Преобразува информацията постъпваща към
компютъра, в подходяща форма (аналого-цифров
преобразувател, клавиатура, бутони и др.)
• Изходен блок
– Извежда информация към външни устройства
(цифро-аналогов преобразувател, индикатори,
принтер и др.)
• Управляващо устройство
– Управлява работата на останалите устройства
– Извлича инструкция от паметта, декодира я и
формира управляващи и синхронизиращи сигнали
• Основни понятия
– Централен процесор – управляващото устройство и
аритметичното и логическо устройство, обединени в
един блок
– бит – основна единица за информация в цифровите
устройства
– Байт – група от осем бита
– Машинна дума (дума на компютъра) – група от
битове, представляваща основна информационна
единица в даден компютър
– Широко разпространение са получили 8, 16, 32 и 64
битови думи
– Цикъл на инструкция
• Адресът на инструкцията (съдържанието на програмния брояч) се
записва в адресния регистър на паметта
• Извличане на инструкцията от клетка от паметта, определена от
адресния регистър
• Част от инструкцията, съдържаща операционния код, се записва в
регистъра на инструкцията
• Съдържанието на регистъра на инструкцията се предава към декодера
на инструкцията и след декодиране се изработват съответните
управляващи сигнали за изпълнение на операцията по време на
изпълнителния цикъл
• Съдържанието на програмния брояч се увеличава с единица т.е.
подготвя се адресът на следващата инструкция
– Изпълнителен цикъл
• Съдържанието на клетка от паметта, определена от адресния регистър,
се зарежда в информационния регистър
• Данните се предават от информационния регистър към аритметичното и
логическо устройство и се извършва съответната операция над данните
• Резултатът се зарежда в информационния регистър
• Съдържанието на информационния регъстър се записва в клетка от
паметта, определена от адресния регистър
• Блок-схема на микрокомпютър

• Операция четене
• Операция запис
Основна архитектура на CPU
• Магистрали
– Адресна магистрала
• Еднопосочна – адресите се предават от процесора към
паметта и периферията
• Всеки адрес съответства на клетка от паметта или регистър на
периферно устройство
– Информационна магистрала
• Двупосочна – обменът на данни е от микропроцесора към
останалите устройства или обратно
• Информационните изводи D0÷D7 са входове или изходи в
зависимост от изпълняваната операция – четене или запис
– Управляваща магистрала
• Определят вида на изпълняваната операция четене/запис
R/W
• Синхронизират работата на устройствата в системата
Памет
Памет

• Феритна памет
• Полупроводникова памет
– Постоянна памет (Read Only Memory, ROM) - Може само да се
чете информация от тях. При изключване на захранването
записаната информация се запазва.
• Масково програмируеми – програмират се от производителя чрез
„фото маски“. Икономически изгодно е при големи серии
• Програмируеми памети, PROM, OTP – програмират се от
потребителя, чрез „прогаряне“ на никел-хромови поводници по
специална процедура
• Електрически програмируеми памети, EPROM – могат да се
програмират и изтриват многократно от потребителя. Изтриването се
извършва чрез ултравиолетови лъчи преминаващи през кварцово
прозорче в корпуса на интегралната схема
• Електрически изтриваеми памети, EEPROM, FLASH – изтриват се чрез
подаване на напрежение на определени изводи
– Памет за четене-запис, Random Access Memory, RAM –
позволяват операции запис-четене с приблизително
еднаква честота. При изключване на захранването
записаната информация с е губи. Използва се за
временно съхранение на данни.
• Статична RAM памет – за съхранение на данните се използват
тригерни регистри. При по-голям обем схемата се усложнява.
Имат по-прост интерфейс.
• Динамична RAM памет – за съхраняване на информацията се
използват кондензатори. Имат по-голям обем от статичните.
Необходимо е „опресняване“ на паметта (поддържане на
заряда на кондензаторите)
• Й
Периферия
• Чрез периферните устройства вградената
система взаимодейства с външната среда. Чрез
входните периферни устройства се получава
информация за параметрите на средата. Чрез
изходните устройства се въздейства на средата.
• Основни типове периферни устройства
– Цифрови входове и изходи с общо
предназначение
– Изводи за серийна комуникация
– Аналогови входове и изходи
Блок диаграма на обощена вградена система
ВИДОВЕ КОМПЮТЪРНИ АРХИТЕКТУРИ

• Архитектура на Фон Нойман


• Архитектура тип “Харвард”
• Архитектура тип “Супер Харвард”
АРХИТЕКТУРА НА ФОН НОЙМАН

• Основни елементи: централен процесор; памет и периферни


устройства; три типа линии за връзка между тях.
• Особености: обща памет за инструкции и данни; обща, двупосочна
шина за инструкции и данни; еднопосична адресна шина;
двупосочна управляващя шина.
АРХИТЕКТУРА ТИП “ХАРВАРД”

• Основни елементи: централен процесор; програмна памет; памет за


данни; периферни устройства; линии за врузка между тях.
• Особености : физическо разделяне на паметта на две части – за
инструкции и данни, със собствени шини за адреси и данни.
СРАВНВНИЕ МЕЖДУ АРХИТЕКТУРИТЕ НА ФОН
НОЙМАН И ХАРВАРД

• Бързодействие: при рхитектурата тип “Харвард” могат да се


извличат едновременно инструкции и данни, което осигурява
по-голямо бързодействие.
• Надеждност: при архитектурата тип “Харвард” не може да
се записва в програмната памет т.е. Да се повреди програмата.
• Гъвкавост: при архитектурата на Фон Нойман може да се
променя съотношението програмна памет/ памет за данни, а
при тип “Харвард” са твърдо зададени.
• Апаратна част: наличието на две памети с отделни
магистрали за адреси и данни предполага по-сложна апаратна
част.
АРХИТЕКТУРА ТИП “СУПЕР
ХАРВАРД”

Особености:
• бърза оперативна памет, “instruction cache” , в самия микропроцесор
• входно/изходен контролер “ с пряк достъп до паметта”
CISC И RISC КМПЮТРИ
• Complex Instruction Set Computer, CISC – Компютър с пълна (разширена)
система от инструкции
•стратегия «кратка програма — дълги команди».
• Reduced Instruction Set Computer, RISC – компютър с редуцирана (намалена)
система от инструкции
•стратегия "дълга програма — кратки команди"

CISC RISC
-голям брой инструкции -малък брой инструкции
-различни видове адресация -няколко вида адресация
-по-къса програма -по-дълга програма
различен форма и дължина на -еднакъв формат и дължина на
инструкциите инструкциите
-изпълнение на инструкциите за -изпълнение на инструкциите за
различен брой тактове еднакъв брой тактове
-по-малък брой регистри -по-голям брой регистри
-микропрограмно управление -твърда логика за всяка инструкция
ВИДОВЕ ТЕХНОЛОГИИ ЗА ИЗГРАЖДАНЕ НА
ЦИФРОВИ СИСТЕМИ ЗА УПРАВЛЕНИЕ

• микропроцесори
• микроконтролери
• програмируеми логичрски контролери
• цифрови сигнални процесори
• програмируеми логически схеми
МИКРОПРОЦЕСОРИ

Особености:
Трудоемък процес на проектиране
Необходимо е проектантът да има познания по програмиране – асемблер, С++
Сравнително сложна апаратна част
Сравнително висока консумация
МИКРОКОНТРОЛЕРИ

Особености:
Интегрирана периферия Опростена „външна“ апаратна част
Улеснено проектиране По-ниска консумация
По-ниска цена По-висока надеждност
Подходящи за работа в реално време Програмиране на асемблер, С++
Еднокристалните микроконтролери са прибори,
конструктивно изпълнени като една голема интегрална
схема (ГИС) и включващи в себе си всички устройства,
необходими за реализация на цифрови системи за
управление. Минималната конфигурация включва:
процесор, памет за данни, памет за команди, вътрешен
генератор на тактов сигнал, а също программируеми
схеми за връзка с външната среда.
Използването на еднокристални микроконтролери в
системите за управление обеспечава достигането на
изключително високи показатели на ефективност при
тази ниска себестойност, така че те видимо нямат
алтернатива като елементна база за изграждане на
управляващи и/или регулиращи системи. Това води до по-
бързо развитие на автоматизацията и интелектулизацията
на съвременния свят.
ПРОГРАМИРУЕМИ ЛОГИЧЕСКИ
КОНТРОЛЕРИ

Oсобенности
Гъвкавост програмиране на високо ниво
надеждност (самодиагностика) не се изискват специални познания по
вграден базов софтуер програмиране
Главната разлика между промишлените
контролери и промишлените компютри е в
адаптацията на езика за програмиране според
конкретната област на използване. Тъй като повечето
промишлени контролери, производство на такива
известни фирми като Allen Bredley, Siemens, Fanuc, ABB
и др., са програмируеми логически контролери (РLС) и
имат вградени интерпретатори за така наречения
Релейно-контакторен език в автоматиката или езика на
Булевата алгебра, което позволява на неспециалист да
програмира системата за управление.
ЦИФРОВИ СИГНАЛНИ ПРОЦЕСОРИ

Особености
Големи изчислителни възможности Подходящи за работа в реално време
Голямо бързодействие
Оптимизирани за цифрова обработка на сигнали
Програмиране на асемблер, С++, МатЛаб??
ПРОГРАМИРУЕМИ ЛОГИЧЕСКИ
СХЕМИ

Архитектура на програмируема логическа схема тип FPGA


Особености:
- Високо бързодействие
- Възможно е паралелно изпълнение на задачи
- Ниска консумация
- Програмиране чрез специални развойни средства и езици
от високо ниво
- Къс период на проектиране
- Не са необходими познания по програмни езици
ПРИМЕР ЗА РЕАЛИЗИРАНЕ НА ПИД
РЕГУЛАТОР С ПРОГРАМИРУЕМА ЛОГИКА

D1÷D4 – блокове за зкъснение, реализиращи U(k-1)T; y(k-1)T; µИ(k-


1)Т и µД(k-1)T; LUT – функционални блокове; ACC - акумулатори
ЦИФРОВИ СИГНАЛНИ ПРОЦЕСОРИ - СЪЩНОСТ,
ОСОБЕНОСТИ, ПРИЛОЖЕНИЕ.
Два типа микропроцесори:
• микропроцесори с общо предназначение (General Purpose Processor)
• цифрови сигнални процесори ( Digital Signal Processor)

АЦП е аналого-цифров преобразовател; DSP – цифров сигнален процесор; ЦАП –


цифро-аналогов преобразовател; НЧФ – нискочестотен филтър; x(t) и y(t) са
съответно входният и изходният сигнал; t и kT са непрекъснатото и дискретно
време.
При максимална честота на входния сигнал 20 kHz:
fd=2.fmax=2.20=40kHz т.е. времето за обработка на поредния отчет на входния
сигнал x(kTd) и появата на резултата в изхода y(kTd) е: T=/1fd=1/40.103=25µsec.
.
ОСОБЕНОСТИ
• Основни математически операции изпълнявани от DSP:

закъснение

сумиране

умножение с констаната

умножение

• наличие на бърз умножител


• „multiply-accumulate unit, MAC”,
• Бърза оперативна памет, “Instruction Cache”
Цифров филтър с крайна импулсна характеристика:
• специализирани инструкции
• формат на данните с плаваща запетая
• бързи и в някои случаи дублирани периферни модули
• конвейризиране на инструкциите
конвейризиране на инструкциите
БЛОК-СХЕМА
ПРИЛОЖЕНИЕ

• космически изследвания – за обработка на снимки, анализ на


проби, компресия на данни;
• медицина – апарати за диагностика, анализ на
електрокардиограми, обработка на изображения;
• комуникации – компресия на данни, комутация на сигнали,
филтрация;
• промишленост – автоматичен контрол и регулиране,
неразрушаващ контрол, системи и продукти за проектиране;
• военна промишленост – радари, сонари, защита на информацията;
• търговия – мултимедийни презентации, видеоефекти,
видеоконферентни връзки;
• научни изследвания – сбор и обработка на данни, симулация и
моделиране; спектрален анализ.
Цифрови входове. Схеми за формиране на сигналите.
Отстраняване на вибрации при механични контакти.
• Цифрови входове/изходи
– Чрез тези входове микроконтролерът възприема логически сигнали
• Логическа нула или логическа единица
• Включено или изключено
– На тези изходи микроконтролерът генерира логически сигнали
– Наричат се още изводи с общо предназначение
• Видове дискретни сигнали
– Статични сигнали – голяма продължителност и ниска честота на повторение
– Импулсни сигнали – с малка продължителност и ниска честота на повторение
– Импулсни поредици – малка продължителност и висока честота на повторени
Цифрови входове
• Блок-схема
ЦВ

ПП – първичен преобразувател (датчик)


ПСН – преобразувател на сигнал в напрежение
СС –схема за съгласуване (прагов елемент)
Ф – филтър
ГР – галваническа развръзка
ПЕ – прагов елемент
И – интерфейс (логически)
• Преобразуване на сигнал в напрежение (“потенциалносвободни
контакти”)
Свързване на TTL сигнали и LED
На фигурата е показан пример за свързване на три типични В/И цифрови
приложения. Port 0 е конфигуриран като цифров изход, а Port 7 като цифров вход.
Цифровите входни приложения включват получаване на TTL сигнали и следене
състоянието на външно устройство, а именно състоянието на ключа от фигурата.
Цифровия изход изпраща TTL сигнали към външно устройство, а именно
светодиода на фигурата.
• Схема за съгласуване
• Ограничители
• Галваническо “развързване”
• Формиране на сигнали, прагови елементи
• Диференциращи вериги
• Интегриращи вериги
• Отстраняване на ефекта от вибрации на механични контакти
(bounce)
• 6р
• Апаратни средства
• Отстраняване на ефекта от вибрации на механични контакти
(bounce)
– Апаратни средства
• H
– Програмни средства
• Въвеждане на времезадръжка
• Прочитане на определен брой съвпадащи стойности (“0” или “1”) на входния сигнал

Цифрови изходи. Видове комутатори
• Блок-схема
• Изходи непосредствено от порт
– За връзка с логически схеми, външни за системата
– За управление на светодиоди и светодиодни индикатори
– Типична стойност на изходния ток 20mA
• Релейни изходи
– За управление на обекти със средна и голяма мощност
– За генериране на сигнали с ниска честота
– Осигуряват галванично развързване
– Управляват постояннотокови и променливотокови товари
• Полупроводникови ключове
– Транзистори, семистори, тиристори, “твърдотелни” релета
– За управление на обекти с малка и средна мощност
– Осигуряват висока честота на комутация
– Не осигуряват галванично развързване
• Изходи непосредствено от порт
• Управление на реле
• Управление на тиристорни и симисторни ключове
• Управление на тиристорни и семисторни ключове
Аналогови входове/изходи. АЦП, ЦАП, ШИМ.
Преобразуване на цифрови отчети в
технически единици.
• Параметри на АЦП
– Разрядност
• Определя се от броя разряди на изходния код N
– Разрешаваща способност
• Напрежение, съответстващо на единица от най-младшия разряд в изходния код

– Точност
• Зависи от грешката от дискретност и линейността на характеристиката
• Грешката от дискретност е равна на половината от “теглото” на най-младшия бит

– Бързодействие
– Зависи от вида на АЦП
• За интегриращо АЦП – 1 - 100 msec
• За АЦП с поразрядно уравновесявана - 1µsec
– Шумоустойчивост
• Интегриращите АЦП имат по-добра шумоустойчивост
• Честота на дискретизация
• Конфигурации на аналоговия вход
• г
Преобразуване на цифрови отчети в технически единици
• L
Аналогов изход. АЦП и ШИМ
• Аналогов изход с ЦАП.
• й
• Конфигурации на аналогов изход
• Аналогов изход с ШИМ
Управление на цифрови индикатори.
Видове индикатори
• Светодиодни
– 7-сегментни

– 14-сегментни

с общ анод с общ катод

– матрични

– а
• Течнокристални
– 7 – сегментни

– матрични
• Електролуминисцентнтни
Статична индикация
• О
Динамична индикация
• х
Клавиатури
• Клавиатурата е широко използвано средство за въвеждане на
текстова информация (букви и цифри) в цифровите компютри и
съответно в цифровите системи за управление
Видове клавиатури
• “Проста” клавиатура
– Състои се от бутони за управление – пуск, стоп, нулиране и др.
• Цифрова клавиатура
– Включва бутони за цифри и управляващи бутони – адрес, данни, индикация и др.
• Буквено цифрова клавиатура
– Съдържа бутони за цифри и букви
• Специализирана (функционална) клавиатура
– Всеки бутон съответства на някаква функция – увеличаване, намаляване, избор
на режим и др.
• Многофункционална клавиатура
– Съдържа превключватели и сменяеми панели с надписи
• В зависимост от апаратната реализация (в зависимост от начина на
идентифициране и кодиране на натиснатия)
– Клавиатура с кодиран изход
• Използва се шифратор, в изхода на който апаратно се получава код, съответстващ на натиснатия бутон,
например седем битов ASCII код
– Клавиатури с некодиран изход
• Кодът на натиснатия бутон се получава програмно
Клавиатура с некодиран изход

• Представлява набор от бутони, чийто брой зависи от конкретния


случай
• Обикновено не съдържа електронни елементи
• Идентифицирането на натиснатия бутон и получаването на
съответния код се извършва програмно от „мониторна“ програма
• При малък брой бутони, до осем, всеки бутон се свързва към
отделен вход
• При по-голям брой се използва матрично свързване на бутоните
• Обикновено това са специализирани клавиатури
• Ако няма натиснат бутон, на всички изводи на PORTB има “1”, (PORTB) = b’11111111’
• Ако се натисне бутон, на съответния извод има “0”
• Например, ако се натисне бутон S3, на извод RB2 има “0”, (PORTB) = b’1111011’
• След инструкция COMF в клетка М се записва b’00000100’
Матрична клавиатура
• g
• RB0÷RB3 – цифрови
входове
• RB4÷RB7 – цифрови
изходи
• На RB4÷RB7 се извежда
единица последователно
във времето и се четат
входовете
• ако няма натиснат бутон
се четат нули
при натиснат бутон в
на съответният вход се
чете единица, а на
останалите нули
БРОЙНИ СИСТЕМИ. ПОЗИЦИОННИ БРОЙНИ
СИСТЕМИ
ФОРМАТ НА ДАННИ ТЕ В ЦСУ
,

Формат с фиксирана запетая - мястото на запетаята е фиксирано


спрямо разрядите на числото 2,3 3,46.
Формат с плавща запетая – запетаята може да се мести
спрямо разрядите на числото – 1,36.102: 0,136.103.
Формат с фиксирана запетая

Q - число
QI - брой разряди на цялата част (integer)
QF - брой разряди на дробната част (fractional)
QI+QF - дължина на машинната дума (word length,WL)
Цели числа без знак

Обхват

Дължина на машинната дума


Пример1: за осем разрядна дума най-голямото число, което може да се запише
е 28-1=255.
Пример2: за да се запише числото 255 са необходими log2(255+1)=8 разряда.
Пример3: представяне на цяло число без знак в двоична форма.
Цели числа със знак
За кодиране на знака на едно двоично число се използва най-старшия разряд
(знаков разряд).
Диапазон
Дължина на машинната дума
За положителни числа

За отрицателни числа

Пример: при осем разрядна машинна дума диапазонът на числата със знак е

за положителното число 127 не0бходимия брой разряди са

За отрицателното число -128 необходимия брой разряди е


представяне на дробната част
.
Разрешавща способност
Пример
За пет разрядна дробна част разрешаващата способност:
Брой разряди
Пример
разрешаваща способност се осигурява с
разряда.
ФОРМАТ С ПЛАВАЩА
. ЗАПЕТАЯ
Общ вид
Където: q е мантисата на числото; Sp – характеристиката на числото; S – основа на
характеристиката; p – порядък.
За двоични числа
Едно число е нормализирано, ако удовлетворява условието:
Т.е. числото е нормализирано ако в най-старшия разряд на мантисата има единица.
Стандарт IEEE 754 – 1985
Знак Експонента дроб
(sign) (exponent) (fraction)
Дробта съдържа значещите цифри без най-старшата цифра
Порядъкът се записва в „отместен формат” (“biased format”) .
Пример
При осем разрядна експонента отместването е

Ако действителният порядък е 3, в полето експонента се записва 127+3 = 130. Ако


деиствителният порядък е -3, в полето експонента се записва 127-3 = 124.
ФОРМАТ С ЕДИНИЧНА ТОЧНОСТ
• Дължина на машинната дума – 32 разряда
• Един знаков разряд
• Порядък – 8 разряда
• Мантиса – 23 разряда
• За нормализирани числа
Пример
• Формат с двойна точност. Дилжината на машинната дума е 64 разряда.
Разпределението на разрядите е 1 знаков, 11 разряда за експонентата и 52
разряда за мантисата.
• Формат с четворна точност. Дължината на машинната дума е 128
разряда, от които 1 за знака, 15 за експонентата и 112 за мантисата.
• Десетичен 64 разряден формат с плаваща запетая.
• Десетичен 128 разряден формат с плаваща запетая.

Специалните стойности, които стандартът дефинира са: положителна и отрицателна


нула, плюс и минус безкрайност и неопределеност NaN (Not a Number).
Неопределеност се получава при манематически действия от вида
Стандартът определя пет начина за закръгляване:
• Закръгляване към най-близкото четно число (round to nearest, ties to even)
• Закръгляване към най-близкото, „далеч от нулата” (round to nearest, where ties round
away from zero)
• Закръгляване нагоре, към +∞ (round up (toward +∞).
• Закръгляване надолу, към -∞ (round down (toward -∞).
• Закръгляване към нула (round toward zero), „ отрязване” на резултата.
Основни аритметични операции

• Изравняване на поеядъците
• Събиране (изваждане) на мантисите
• Нормализиране на резултата
Пример

изравняване на порядъците:

Сумиране

Нормализиране

Умножение

Делене
Сравнение между формат с фиксирана и плаваща запетая

• диапазон на представяните числа


• разрешаваща способност (resolution) (range)
• динамичен обхват (dynamic range - DR)
• отношение сигнал/шум (signal-to-noise ratio SNR)
• точност (аccuracy)
• апаратна част, бързодействие, цена
Microcontroller PIC16F84
Introduction
• PIC16F84 принадлежи към класa от 8-битови микроконтролери с
RISC архитектурата. Общата му структура е показана на
следващата фигура, представяща основните му блокове.
• Програмна памет (FLASH) - за съхранение на написаната
програма. Тъй като паметта, направена по FLASH технология, може
да бъде програмирана и изчистена повече от веднъж, това прави
този микроконтролер подходящ за разработване на различни
устройства.
• EEPROM - памет за данни, която трябва да бъде запазена, когато
няма захранване. Обикновено се използва за съхранение на
важни данни, които не трябва да се губят, ако захранването
внезапно спре. Например, една такава информация е зададената
температура в регулаторите на температура. Ако по време на
загуба на захранване тези данни се губят, ще трябва да ги зададем
наново при връщане на захранването. По този начин устройството
ни губи от самостоятелност.
ВЪВЕДЕНИЕ
• RAM - памет за данни, използвана от програмата по
време на нейното изпълнение. В RAM се съхраняват
всички междинни резултати или временни данни по
време на изпълнение.
• PORTA и PORTB са физически връзки между
микроконтролера и външния свят. Порт A има пет, а порт
B осем пина.
• FREE-RUN TIMER е 8-битов регистър вътре в
микроконтролера, който работи независимо от
програмата. На всеки четвърти такт на осцилатора той
увеличава стойността си, докато достигне максимума
(255), след което започва да отброява отново от нула. Тъй
като знаем точния интервал между всеки две
последователни стойности от съдържанието на таймера,
таймерът може да се използва за измерване на време,
което е много полезно за някои устройства.
ВЪВЕДЕНИЕ
CPU има ролята на свързващ елемент между другите блокове в
микроконтролера PIC16F84. Той координира работата на другите блокове и
изпълнява потребителската програма.
ПРИЛОЖЕНИЕ
• PIC16F84 перфектно пасва на много приложения - от автомобилната
индустрия и управление на домакинските уреди до индустриалните
инструменти, дистанционните сензори, електрическите катинари и
предпазните устройства. Освен това е идеален както за смарт карти,
така и за устройства с батерия поради ниската му консумация.
Паметта на EEPROM улеснява прилагането на микроконтролери към
устройства, където е необходимо постоянно съхранение на различни
параметри (кодове за предаватели, скорост на двигателя, честота на
приемника и т.н. .). Ниската цена, ниската консумация, лесното
управление и гъвкавостта правят PIC16F84 приложим дори в области,
в които микроконтролерите не са били разглеждани преди това
(например: таймерни функции, подмяна на интерфейс в по-големи
системи, приложения на копроцесори и др.)
• Системата за програмиране на този чип (заедно с с използването само
на два пина при пренос на данни) прави възможна гъвкавостта на
продукта, след като асемблирането и тестването са завършени. Тази
способност може да се използва за създаване на производствена
линия, за съхраняване на данни за калибриране, достъпни само след
окончателно тестване, или може да се използва за подобряване на
програми на готови продукти.
Часовник/цикъл на инструкциите
• Часовникът е основният стартер на микроконтролера и
се получава от външен компонент, наречен
"осцилатор". Ако искаме да сравним микроконтролер с
часовник, тогава нашият "часовник" ще бъде тиктакащ с
звук, който чуваме от часовника. В този случай
осцилаторът може да се сравни с пружина, която е
навита, за да може часовникът да работи. Също така
силата, използвана за навиване на часовника, може да
се сравни с електрическо захранване.
• Тактът от осцилатора влиза в микроконтролер през пин
OSC1, където вътрешната верига на микроконтролера
разделя такта на четири равномерни части Q1, Q2, Q3 и
Q4, които не се припокриват. Тези четири такта съставят
един инструкционен цикъл (наричан също машинен
цикъл), по време на който се изпълнява една
инструкция.
Часовник/цикъл на инструкциите
Изпълнението на инструкцията започва с извикване на следващата инструкция
от поредица. Инструкцията се извиква от програмната памет на всеки Q1 и се
записва в регистъра с инструкции през Q4. Декодирането и изпълнението на
инструкциите се правят между следващите Q1 и Q4 цикъла. На следващата
диаграма можем да видим връзката между инструкционния цикъл и такта на
осцилатора (OSC1), както и тази на вътрешните тактове Q1-Q4. Програмния
брояч (PC) съдържа информация за адреса на следващата инструкция.
Pipelining
Pipelining
• TCY0 чете инструкцията MOVLW 55h (няма значение за нас каква
инструкция се изпълнява, тъй като няма правоъгълник с нея горе) .
• TCY1 изпълнява инструкция MOVLW 55h и чете MOVWF PORTB.
• TCY2 изпълнява MOVWF PORTB и чете CALL SUB_1 .
• TCY3 изпълнява повикване на подпрограма CALL SUB_1 и чете в
инструкция BSF PORTA, BIT3. Тъй като тази инструкция не е тази, от
която се нуждаем или не е първата инструкция на подпрограма
SUB_1, чието изпълнение е следващо по ред, инструкцията трябва
да бъде прочетена отново. Това е добър пример за инструкция,
изискваща повече от един цикъл.
• TCY4 инструкционният цикъл е напълно използван за четене в
първата инструкция от подпрограма на адрес SUB_1.
• TCY5 изпълнява първата инструкция от подпрограма SUB_1 и чете
следващата SUB_1+1.
Pin description
Пин №1 RA2 Втори пин на порт A. Не разполага с
допълнителна функция
Пин №2 RA3 Трети пин на порт A. Няма
допълнителна функция.
Пин №3 RA4 Четвърти пин на порт A. TOCK1, който
функционира като таймер, също се намира на този
пин
Пин №4 MCLR вход Нулиране (Reset) и Vpp
програмиращо напрежение на микроконтролера
Пин №5 Vss Земя (маса) на захранването.
Пин №6 RB0 Нулев пин на порт B. Прекъсването на
входа е допълнителна функция.
Пин №7 RB1 Първи пин на порт B. Без допълнителна
функция.
Пин №8 RB2 Втори пин на порт B. Без допълнителна
функция.
Пин №9 RB3 Трети пин на порт B. Без допълнителна
функция.
Pin description
• Пин №10 RB4 Четвърти пин на порт B. Без допълнителна
функция.
• Пин №11 RB5 Пети пин на порт B. Без допълнителна функция.
• Пин №12 RB6 Шести пин на порт B. Линия "Clock" в програмен
режим.
• Пин №13 RB7 Седми пин на порт B. Линия 'Data' в програмен
режим.
• Пин №14 Vdd плюс на захранването.
• Пин №15 OSC2 пин, предназначен за свързване с осцилатор
• Пин №16 OSC1 пин, предназначен за свързване с осцилатор
• Пин №17 RA2 Втори пин на порт A. Без допълнителна функция
• Пин №18 RA1 Първи пин на порт A. Без допълнителна функция.
Clock generator - oscillator
Осцилаторната схема се използва за осигуряване
на такт за микроконтролера. Тактът е необходим, за
да може микроконтролерът да изпълнява
програмата или програмни инструкции.
Types of oscillators
Типове осцилатори
• PIC16F84 може да работи с четири различни
конфигурации на осцилатора. Тъй като
конфигурациите с кристален осцилатор и
резистор-кондензатор (RC) са тези, които се
използват най-често, това са единствените,
които ще споменем тук. Микроконтролер с
кристален осцилатор има в обозначението си
XT, а микроконтролер с двойка резистор-
кондензатор има обозначение RC. Това е
важно, защото трябва да споменете типа
осцилатор, когато купувате микроконтролера.
XT Oscillator
Кристалният осцилатор
се съхранява в метален
корпус с два щифта,
където сте записали
честотата, при която
кристалът осцилира.
Един керамичен
кондензатор с 30pF,
чийто друг край е
свързан със земята,
трябва да бъде свързан
с всеки щифт.
XT Oscillator
Осцилатор и кондензатори могат да
бъдат опаковани в съвместен калъф с
три пина. Такъв елемент се нарича
керамичен резонатор и е представен в
диаграми като този по-долу.
Централните щифтове на елемента са
земята, докато крайните щифтове са
свързани с OSC1 и OSC2 щифтове на
микроконтролера. При проектирането
на устройство правилото е да
поставите осцилатор по-близо до
микроконтролер, така че да се
избегнат смущения по линиите, по
които микроконтролерът получава
часовник.
RC Oscillator
• В приложения, където не е
необходима голяма точност
във времето, RC осцилаторът e
по-евтиния вариант.
Резонансната честота на RC
осцилатора зависи от
стойността на захранващото
напрежение, съпротивлението
R, капацитета C и работната
температура. Тук трябва да се
спомене, че резонансната
честота също се влияе от
нормалните промени в
параметрите на процеса, от
толеранса на външни R и C
компоненти и т.н.
RC Oscillator
• Горната диаграма показва как RC осцилаторът е свързан
с PIC16F84. Със стойност на резистор R под 2,2 k,
осцилаторът може да стане нестабилен или дори да
спре колебанието. С много висока стойност на R (ex.1M)
осцилаторът става много чувствителен към шума и
влажността. Препоръчва се стойността на резистор R да
бъде между 3 и 100k. Въпреки че осцилаторът ще
работи без външен кондензатор (C = 0pF), кондензатор
над 20pF все пак трябва да се използва за шум и
стабилност. Без значение кой осцилатор се използва, за
да получите такт, с който работи микроконтролерът,
тактът на осцилатора трябва да бъде разделен на 4.
Тактът на осцилатора, разделен на 4, може също да се
получи и на щифт OSC2 / CLKOUT и може да се използва
за тестване или синхронизиране на други логически
вериги.
Oscillator
Oscillator
След захранване осцилаторът започва да се колебае. Трептенията в
началото имат нестабилен период и амплитуда, но след известно време
той се стабилизира.

За да предотвратим подобен неточен такт да влияе на работата на микроконтролера,


трябва да го държим в състояние на ресет до стабилизиране на такта на осцилатора.
На горната диаграма е показана типичната форма на сигнал, който
микроконтролерът получава от кварцовия осцилатор след захранване.
Reset
• Нулирането (ресет) се използва за поставяне на
микроконтролера в "известно" състояние. Това на
практика означава, че микроконтролерът може да
се държи доста неточно при определени нежелани
условия. За да продължи нормалната си работа,
той трябва да бъде нулиран, което означава, че
всички регистри ще бъдат поставени в изходна
позиция. Нулирането се използва не само когато
микроконтролерът не се държи по начина, по който
искаме, но може да се използва и при изпробване
на устройство за спиране на изпълнението на
програмата или за получаване на готовност на
микроконтролера за четене на програма.
Reset
• За да се предотврати
случайно въвеждане на
логическа нула на MCLR пин
(нулирането се активира от
логическа нула), MCLR
трябва да бъде свързан чрез
резистор към положителния
полюс на захранването.
Резисторът трябва да бъде
между 5 и 10K. Този вид
резистор, чиято функция е
да поддържа логическа
единица на линията
превантивно, се нарича
издърпване (pull up).
Reset
• Микроконтролерът PIC16F84 има няколко източника
на нулиране:
• a) Нулиране по време на включване, POR (Power-On
Reset)
• б) Нулиране по време на редовна работа чрез
въвеждане на логическа нула на пин MCLR на
микроконтролера.
• в) Нулиране по време на режим SLEEP
• г) Нулиране при препълване на стражевия таймер
(WDT)
• д) Нулиране от препълване на WDT по време на
работния режим SLEEP.
Reset
• По време на нулиране клетките на RAM
паметта не се нулират. Те са неизвестно
състояние по време на включване на
захранването и не се променят при всяко
нулиране. За разлика от тях, SFR регистрите се
връщат в начално положение. Един от най-
важните ефекти от нулирането е записът в
програмния брояч (PC) на нула (0000h), което
дава възможност на програмата да започне да
се изпълнява от първата инструкция.
Central Processing Unit
Централен процесорен модул

CPU (ЦПУ)
Central Processing Unit

• Централният процесор
(CPU) е мозъкът на
микроконтролера. Този
модул е отговорен за
намиране и извличане на
текущата инструкция,
която трябва да бъде
изпълнена, за
декодиране на тази
инструкция и накрая за
нейното изпълнение.
Central Processing Unit
• Централният процесор свързва всички части на
микроконтролера в едно цяло. Със сигурност най-
важната му функция е да декодира програмните
инструкции. Когато програмистът пише програма,
инструкциите имат ясна форма като MOVLW 0x20.
Въпреки това, за да може микроконтролерът да
разбере това, тази форма на „текстова“ инструкция
трябва да бъде преведена в серия от нули и
единици, които се наричат „опкод“ (машинен код).
Този преход от „текст“ в двоична форма се
извършва от преводачи (translators), като
транслатор на асемблер (или само assembler).
Central Processing Unit
• Така получената от програмната памет
инструкция, трябва да бъде декодирана от
централения процесор. След това можем да
изберем от таблицата на всички инструкции
набор от действия, които изпълняват зададена
задача, определена от инструкцията. Тъй като
инструкциите могат да съдържат задачи, които
изискват различни прехвърляния на данни от
една памет в друга, от памет към портове или
някои други изчисления, то CPU трябва да
бъде свързан с всички части на
микроконтролера. Това става възможно чрез
шина за данни и адресна шина.
Arithmetic Logic Unit (ALU)
• Аритметичният логически модул отговаря за извършване на
операции по събиране, изваждане, преместване (наляво или
надясно в регистъра) и логически операции. Преместването на
данни вътре в регистъра е известно също като „изместване“
(„shifting“). PIC16F84 съдържа 8-битов аритметично логически
модул и 8-битови работни регистри.
Arithmetic Logic Unit (ALU)
• В инструкции с два операнда, обикновено единия
операнд е в работения регистър (W регистър), а другият е
един от регистрите или константа. Под операнд имаме
предвид съдържанието, върху което се извършва някаква
операция, а регистър е всеки от регистрите GPR или SFR.
GPR е абревиатура за „Регистри с общо предназначение“,
а SFR за „Регистри за специални функции“. В инструкции с
един операнд, операнд е W регистър или един от
регистрите. Като допълнение към извършването на
операции в аритметика и логика, ALU управлява битовете
на състоянието (битове, намеращи се в регистъра
STATUS). Изпълнението на някои инструкции засяга
битовете на състоянието, което зависи от самия резултат.
В зависимост от това коя инструкция се изпълнява, ALU
може да повлияе на стойностите на битовете Carry (C),
Digit Carry (DC) и Zero (Z) в STATUS регистъра.
STATUS Register

бит 0 C (Carry) Transfer, бит който се влияе от операциите събиране, изваждане и


преместване.
1 = пренос е извършен от най-високия резултат на бита
0 = трансфер не е извършен
C битът се влияе от инструкциите ADDWF, ADDLW, SUBLW, SUBWF.
бит 1 DC (Digit Carry) DC Transfer, бит засегнат от операции на събиране, изваждане и
изместване. За разлика от C бита, този бит представлява прехвърляне от четвъртото
получено място. Той се установява в единица чрез добавяне, когато възникне
пренасяне от bit3 към bit4, или чрез изваждане, когато възникне заем от bit4 към bit3,
или чрез изместване в двете посоки.
1 = трансфер, извършен на четвъртия бит, в зависимост от реда на резултата
0 = трансфер не е извършен
DC битът се влияе от инструкциите ADDWF, ADDLW, SUBLW, SUBWF.
STATUS Register
• бит 2 Z (нулев бит) Индикация за нулев резултат
• Този бит се установява в едно, когато резултатът от изпълнена на
аритметична или логическа операция е нула.
• 1 = резултатът е равен на нула
• 0 = резултатът не е равен на нула

• бит 3 PD (бит за изключване на захранването)


• Бит, който се установява в едно всеки път, когато захранването се
включва към микроконтролера, когато започне да работи, след всяко
редовно нулиране и след изпълнение на инструкцията CLRWDT.
Инструкция SLEEP го нулира, когато микроконтролерът изпадне в
режим на ниска консумация / употреба. Неговото многократно
установяване в едно е възможно чрез нулиране или чрез включване
или изключване на захранването. Установяването в едно може да
бъде задействано и от сигнал на RB0 / INT пин, промяна на RB порт,
завършване на писане във вътрешен DATA EEPROM, както и от
стражът(watchdog).
• 1 = след включване на захранването
• 0 = изпълнение на инструкция SLEEP
STATUS Register
• бит 4 TO Тайм-аут; Препълване на пазач.
• Битът се задава след включване на доставката и изпълнението
на инструкции CLRWDT и SLEEP. Битът се нулира, когато пазачът
стигне до края, сигнализирайки, че нещо не е наред.
• 1 = не е възникнал преливник
• 0 = възникна преливник

• bit6: 5 RP1: RP0 (Register Bank Select bits)


• Тези два бита са горната част на адреса за директно
адресиране. Тъй като инструкциите, които адресират директно
паметта, имат само седем бита, те имат нужда от още един бит,
за да адресират всички 256 байта, което е колко байта има
PIC16F84. RP1 бит не се използва, но е оставен за някои бъдещи
разширения на този микроконтролер.
• 01 = първа банка
• 00 = нулева банка
STATUS Register
• бит 7 IRP (Register Bank Select bits)
• Бит, чиято роля е да бъде осми бит за косвено адресиране на
вътрешната RAM.
• 1 = банка 2 и 3
• 0 = банка 0 и 1 (от 00h до FFh)

• Регистърът STATUS съдържа аритметичен статус ALU (C, DC, Z),


RESET статус (TO, PD) и битове за избор на банка от памет (IRP,
RP1, RP0). Като се има предвид, че изборът на банка памет се
контролира чрез този регистър, той трябва да присъства във
всяка банка. Регистърът STATUS може да бъде дестинация за
всяка инструкция, с всеки друг регистър. Ако регистърът STATUS
е дестинация за инструкции, които засягат Z, DC или C битове,
тогава писането до тези три бита не е възможно.
OPTION register

bit 0:2 PS0, PS1, PS2 (Prescaler Rate Select bit)


Тези три бита определят като бит за премащабиране. Какво представлява
prescaler и как тези битове могат да повлияят на работата на
микроконтролера ще бъде обяснено в раздел на TMR0.
OPTION register
• bit 3 PSA (Prescaler Assignment bit)
• Бит, който присвоява prescaler между TMR0 и watchdog.
• 1 = prescaler е назначен за watchdog
• 0 = prescaler е присвоен на таймер за свободно пускане TMR0
• bit 4 T0SE (TMR0 Source Edge Select bit)
• Ако е позволено да задейства TMR0 чрез импулси от пин RA4 /
T0CKI, този бит определя дали това ще бъде по падащия или
нарастващия фронт на сигнала.
• 1 = падащ фронт
• 0 = нарастващ фронт
• bit 5 TOCS (TMR0 Clock Source Select bit)
• Този пин позволява на free-run timer да увеличи състоянието си
или от вътрешен осцилатор на всеки ¼ осцилатор часовник, или
чрез външни импулси на пин RA4 / T0CKI.
• 1 = външни импулси
• 0 = 1/4 вътрешен таймер
OPTION register
• bit 6 INTEDG (Interrupt Edge Select bit)
• Ако прекъсването е възможно, този бит ще
определи фронта, при който прекъсването ще се
активира от пин RB0 / INT.
• 1 = нарастващ фронт
• 0 = падащ фронт
• bit 7 RBPU (PORTB Pull-up Enable bit)
• Този бит включва и изключва вътрешни „pull-up“
резистори на порт B.
• 1 = "pull-up" резистори са изключени
• 0 = "pull-up" резистори са включени
EEPROM Data memory

• PIC16F84 има 64 байта EEPROM памет на


адреси от 00h до 63h, които могат да бъдат
записвани или прочетени от него. Най-важната
характеристика на тази памет е, че тя не губи
съдържанието си по време на изключено
захранване. Това на практика означава, че
написаното в него ще остане, дори ако
микроконтролерът е изключен. Данните могат
да се запазват в EEPROM без захранване до 40
години (според както производителя на
микроконтролера PIC16F84 заявява) и могат да
бъдат изпълнени до 10000 цикъла на запис.
EEPROM Data memory

• На практика EEPROM паметта се използва за


съхранение на важни данни или някои
параметри на процеса. Един такъв параметър
е зададена температура, назначена при
настройка на температурен регулатор към
някакъв процес. Ако тези данни не се запазват,
ще е необходимо да се настройва зададената
температура след всяка загуба на захранване.
Тъй като това е много непрактично (и дори
опасно), производителите на
микроконтролери започнаха да инсталират
един по-малък тип EEPROM памет.
EEPROM Data memory
• EEPROM паметта се поставя в специална локация от
паметта и може да бъде достъпвана през
специални регистри. Тези регистри са:
• EEDATA на адрес 08h, който задържа данни за четене
или които трябва да бъдат записани.
• EEADR на адрес 09h, който съдържа адрес на на
EEPROM, за позицията която се достъпва.
• EECON1 на адрес 88h, който съдържа контролни
битове.
• EECON2 на адрес 89h. Този регистър не съществува
физически и служи за защита на EEPROM от
случайно записване.
EECON1 Register
• Регистърът EECON1 на адрес 88h е контролен регистър с пет
използвани бита. Битовете 5, 6 и 7 не се използват и при
четене винаги са нула. Тълкуване на регистрите на битовете
на EECON1 следва.

bit 0 RD (Read Control bit)


Задаването на този бит инициализира прехвърлянето на
данни от адрес, определен в EEADR, в регистъра EEDATA. Тъй
като времето не е толкова важно при четене на данни,
колкото при записването, данните от EEDATA могат да се
използват допълнително в следващата инструкция.
1 = инициализира четенето
0 = не инициализира четенето
EECON1 Register
• bit 1 WR (Write Control bit)
• Настройката на този бит инициализира записването на
данни от регистъра EEDATA на адреса, посочен чрез
регистъра EEADR.
• 1 = инициализира писането
• 0 = не инициализира писането
• bit 2 WREN (EEPROM Write Enable bit) Enables writing to
EEPROM
• Ако този бит не е установен в едно, микроконтролерът
няма да позволи запис в EEPROM.
• 1 = разрешено писане
• 0= не е разрешено писане
EECON1 Register
• bit 3 WRERR (Write EEPROM Error Flag ) Грешка по време на
писане в EEPROM
• Този бит е сетнат само в случаите, когато записването в EEPROM е
било прекъснато от сигнал за нулиране или изчерпване на
времето в контролния таймер (ако е активирано).
• 1 = възникнала е грешка
• 0 = грешка не е възникнала
• bit 4 EEIF (EEPROM Write Operation Interrupt Flag bit) Бит,
използван за информиране, че записването на данни в EEPROM е
приключило.
• Когато записването приключи, този бит се сетнва автоматично.
Програмистът трябва да изчисти EEIF бита в програмата си, за да
разреши ново прекъсване от записването.
• 1 = записването е прекратено
• 0 = записването все още не е прекратено или не е започнало
Reading from EEPROM Memory
• Задаването на RD бита инициализира
прехвърлянето на данни от адреса, намерен в
регистъра EEADR, в регистъра EEDATA. Както
при четене на данни не ни трябва толкова
време, колкото при писането, данните, поети
от регистъра на EEDATA, вече могат да бъдат
използвани по-нататък в следващата
инструкция.
• Проба от частта от програма, която чете данни
в EEPROM, може да изглежда като следното:
Reading from EEPROM Memory

След последната програмна инструкция,


съдържанието от нулевия EEPROM адрес
може да бъде намерено в работения
регистър w.
Writing to EEPROM Memory
• За да запише данни в EEPROM локацията, програмистът първо
трябва да напише адрес в регистъра EEADR и данни в регистъра
EEDATA. Само тогава е полезно да настроите WR бита, който да
стартира цялото действие. WR бита ще бъде нулиран и EEIF бита
сетнат след записваното, което може да се използва при
обработка на прекъсвания. Стойности 55h и AAh са първият и
вторият ключ, които забраняват случайно записане в EEPROM.
Тези две стойности се записват в EECON2, който служи само за
тази цел, за да се получат тези две стойности и по този начин
предотвратяват всяко случайно записване в EEPROM паметта.
Програмните редове, маркирани като 1, 2, 3 и 4, трябва да се
изпълняват в този ред в равномерни интервали от време. Ето
защо е много важно да изключите прекъсванията, които могат да
променят времето, необходимо за изпълнение на инструкциите.
След записването прекъсванията могат да бъдат активирани
отново.
Writing to EEPROM Memory
Пример за частта от програма, която записва данни 0xEE на
първо място в EEPROM паметта, може да изглежда по
следния начин:
Набор от инструкции
PIC16CXX
Instruction Set
Introduction
• Вече стана ясно, че микроконтролерът не е като
всяка друга интегрална схема. Когато излязат от
производството, повечето интегрални схеми са
готови да бъдат вградени в устройства, което не
е така при микроконтролерите. За да
"накараме" микроконтролерът да изпълни
задача, трябва да му кажем какво точно да
прави, или с други думи трябва да напишем
програмата, която микроконтролерът ще
изпълни. В тази лекция са описани инструкции,
които съставят асемблера или програмния език
от ниско ниво за PIC микроконтролери.
Instruction Set in PIC16Cxx
Microcontroller Family
• Пълен комплект, който включва 35
инструкции, е даден в таблица. Причината за
такъв малък брой инструкции се крие преди
всичко във факта, че говорим за RISC
микроконтролер, чиито инструкции са добре
оптимизирани предвид скоростта на работа,
архитектурната простота и компактността на
кода. Единственият недостатък е, че се очаква
програмистът да овладее „неудобна“ техника
за използване на намален набор от 35
инструкции.
Data transfer
• Прехвърлянето на данни в микроконтролер се
извършва между работния регистър (W) и регистъра
'f', който представлява всяко място във вътрешната
оперативна памет (независимо дали са регистри за
специална или обща цел).
• Първите три инструкции (вижте следващата таблица)
предвиждат константа да се записва в W регистър
(MOVLW е кратко за MOVe Literal to W), а данните да
се копират от W регистър в RAM, а данните от RAM да
се копират във W регистъра (или на същото място в
RAM паметта, в който момент се променя само
състоянието на флага Z). Инструкция CLRF записва
константа 0 в регистър 'f', а CLRW записва константа 0
в регистър W. Инструкцията SWAPF разменя местата
на 4-битовите полубайтове в регистъра.
Arithmetic and logic
• От всички аритметични операции, PIC като
повечето микроконтролери поддържа само
изваждане и събиране. Флаговете C, DC и Z се
задават в зависимост от резултат от събиране
или изваждане, но с едно изключение: тъй
като изваждането се извършва като добавяне
на отрицателна стойност, C флагът е обратен
след изваждане. С други думи, тя се задава,
ако операцията е възможна, и се нулира, ако
по-голямото число е извадено от по-малко.
Arithmetic and logic
• Логическият интерпретатор на PIC има
възможност за извършване на операции AND,
OR, EX-OR, допълващи (COMF) и въртене (RLF и
RRF). Инструкциите, които въртят съдържанието
на регистъра, движат битовете вътре в
регистъра през флаг С от едно пространство
вляво ( към бит 7) или вдясно (към бит 0). Бит,
който "излиза" от регистъра, се записва в флаг
С, а стойността на флаг С се записва в бита на
"противоположната страна" на регистъра.
Bit operations
• Инструкции BCF и BSF сетват или нулират
един бит където и да е в паметта. Въпреки
че това изглежда като проста операция, тя
се изпълнява така, че CPU първо чете целия
байт, променя един бит в него и след това
записва целия байт на същото място.
Directing a program flow
• Инструкции GOTO, CALL и RETURN се изпълняват по
същия начин, както при всички други микроконтролери,
само стекът е независим от вътрешната RAM и е
ограничен до осем нива. Инструкцията 'RETLW k' е
идентична с инструкция RETURN, с изключение на това,
че преди да се върне от подпрограма, в регистъра W се
записва константа, дефинирана от операнда на
инструкцията. Тази инструкция ни позволява лесно да
проектираме таблиците (списъците) за търсене. Най-
често ги използваме, като определяме позицията на
данните на нашата таблица, добавяйки я към адреса, от
който започва таблицата, и след това четем данни от
това местоположение (което обикновено се намира в
програмната паметта).
Directing a program flow
• Таблицата може да бъде оформена като
подпрограма, която се състои от поредица от
инструкции „RETLW k“, където константи „k“ са
членове на таблицата.
Directing a program flow
• Пишем позицията на член на нашата таблица в
регистър W и използвайки CALL инструкция за
извикване на подпрограма, която създава
таблицата. Първият ред на подпрограмата
ADDWF PCL, f добавя позицията на член на W
регистъра към началния адрес на нашата
таблица, намиращ се в регистъра на PCL и така
получаваме реалния адрес на данните в
паметта на програмата. Когато се връщаме от
подпрограма, ще трябва в W да регистрираме
съдържанието на адресиран член на таблицата.
В предишен пример константата 'k2' ще бъде в
регистър W след връщане от подпрограма.
Directing a program flow
• RETFIE (RETurn From Interrupt - Interrupt Enable) е
връщане от рутина за прекъсване и се различава от
RETURN само по това, че автоматично задава бита
GIE (Global Interrupt Enable). При прекъсване този бит
се изчиства автоматично. Когато прекъсването
започне, само стойността на програмния брояч се
поставя в горната част на стека. Не се осигурява
автоматично запаметяване на регистърните
стойности и състояния. Условните скокове се
синтезират в две инструкции: BTFSC и BTFSS. В
зависимост от състоянието на бита в регистъра на 'f',
който се тества, инструкциите пропускат или не
прескачат следващата инструкция на програмата.
Instruction Execution Period
• Всички инструкции се изпълняват в един цикъл,
с изключение на инструкциите за условен
преход, ако условието е било вярно или ако
съдържанието на брояча на програмата е
променено с някаква инструкция. В този случай
изпълнението изисква два операционни
цикъла за инструкция, като във вторият цикъл
се изпълнява NOP (Без операция). Четири такта
на генератора съставят един операционен
цикъл. Ако използваме осцилатор с честота
4MHz, нормалното време за изпълнение на
инструкция е 1 μs, а в случай на условно
разклоняване периодът на изпълнение е 2 μs.
Word list
• f - any memory location in a microcontroller
• W - work register
• b - bit position in 'f' register
• d - destination bit
• label - group of eight characters which marks the
beginning of a part of the program
• TOS - top of stack
• [] - option
• <> - bit position inside register
• k - константа
Word list
Word list
Word list
• * 1 Ако входно / изходният порт е източник на
операнд, състоянието на пиновете на
микроконтролера се чете
• * 2 Ако тази инструкция се изпълни в TMR
регистър и ако d = 1, prescaler, присвоен на този
таймер, автоматично ще бъде нулиран
• * 3 Ако PC е променен или резултатът от теста = 1,
инструкцията се изпълнява на два цикъла.
МИКРОКОМПЮТЪРИ
Първи опити
• Идеята е за създаване на напълно
функционален микрокомпютър, с цена 25-30$.
• През 2006 година се появява първият прототип,
базиран на микроконтролер Atmel. Ъптън
(Upton), един от създателите на компанията
Raspberry Pi усеща, че не това е решението. Две
години по-късно, заедно със своите колеги,
изчиства идеята за Raspberry Pi. Истината е, че
всеки има подобна идея в главата си, но не и
ясна представа за реализирането ѝ. Срещата в
есенния октомврийски ден отваря очите на
инженерите и те се захващат за работа.
• Вторият прототип е много по-мощен от творението на
Ъптън, но все още не е пълноценният компютър, който
е крайната цел на екипа. Той работи под Python, коeто
дава и част от името на джаджата - Pi. Що се отнася до
първата част, вероятно отдава почит към някои от
първите големи технологични компании, които носят
имена на плодове - Apple, Tangerine Computer Systems,
Apricot Computers и Acorn Computers. Към това трябва
да добавим и израза “blowing a raspberry”, който в
английския се използва за несериозно поведение,
шега и т.н. В интервю за MakeUseOf Ъптън обяснява, че
в онзи момент дори не са се замисляли, че искат
творението им да бъде компютър за общо
приложение.
• Инженерите продължават да изпитват
проблеми със самия продукт - от дизайн до
процесор, който да отговаря на нуждите им,
но и да е с достъпна цена. В нито един момент
не приемат, че могат да надвишат цената от 35
долара, което прави проектирането трудно и
дори в очите на някои хора - невъзможно.
Екипът не се отказва, а решението идва чак
през 2011 година под формата на достъпен
чип, проектиран от работодателя на Ъптън -
американската компания за полупроводници
Broadcom (тогава Avago Technologies).
• Процесорът се равнява на Intel Pentium 2 с
честота 300 MHz, който е актуален в края
90-те години на миналия век. Това заляга в
основата на първия модел Raspberry Pi,
който е представен на 19 февруари 2012
година, а десет дни по-късно влиза в
продажба. Устройството работи с Linux, има
едноядрен процесор на 700Mhz, 256 MB
RAM, един USB порт, Ethernet порт, HDMI
1.3 порт и графичен чип VideoCore IV, която
може да възпроизвежда видео във FHD
резолюция.
• Дори с подходящ процесор, създаването на
Raspberry Pi не е толкова лесно и всеки един
компонент трябва да е абсолютно необходим, за да
бъде поставен на малката платка. Отново - цената е
огромната пречка, но и най-важният елемент за
идеята - ако е прекалено висока, нищо от
направеното дотук няма да има значение. Правят се
много жертви, включително и от възможностите на
процесора, но важнa добавка са GPIO пиновете,
които му позволяват да взаимодейства с други
платки и да управлява светлини, ключове, моторчета
и т.н. Именно това е едно от решенията, които
поставят Raspberry Pi в центъра на различни
домашно направени IoT продукти и симпатични
роботчета.
• Raspberry Pi e огромен успех и компанията
изпитва сериозни затруднения в задоволяване
на търсенето. Решението е лицензирането на
проекта на трети страни, които да го
произвеждат - първо във фабрика в Китай, а
по-късно от тази на Sony във Великобритания.
Така малкият и достъпен компютър успява да
достигне до милиони ентусиасти, жадни да
създават и експериментират. Около Pi се
създава огромна общност, която си помага,
обменя знания и тласка напред развитието на
технологиите, но най-важното - интереса и
любопитството в много от по-малките.
• Мини компютърът Raspberry Pi промени
света на компютрите завинаги откакто се
появи за първи път на пазара през
февруари 2012 година. Освен с
компактните си размери, които са
приблизително, колкото кредитна карта,
той се продава и на много достъпна цена.
• Днес обаче, Raspberry Pi има конкуренция.
От Make Use Of разглеждат някои
забележителни алтернативи на Pi, заедно с
някои компютри от по-висок клас, които
следват подобна функция.
Rock64
• Проектиран да бъде директен конкурент на Pi,
Rock64 има няколко ключови предимства пред
Pi. Rock64 се продава в няколко модификации,
като базовата с 1 GB оперативна памет струва
$25. Версията с 2 GB RAM се продава за $35, а
топ-версията е с цена $45. Четириядреният 1.5
GHz Rockchip RK3328 процесор изпреварва
този на Pi 3. Rock64 има не само двойно
повече RAM от Pi, но и гнездо за добавяне на
eMMC памет. Освен това поддържа пълната
гама GPIO пинове.
Rock64
• Друго предимство е Gigabit Ethernet порта,
както и наличието на два USB 2.0 порта и
един USB 3.0 порт. HDMI изходът на Rock64
поддържа 4K при 60 кадъра в секунда (FPS).
Но ето и минусите: няма поддръжка за Wi-
Fi или Bluetooth, докато Pi 3 има и двете.
Rock64 трябва да се захранва от +5v 3A жак,
и макар че това не е голям проблем, не е
толкова удобно, колкото с микро USB кабел,
както е случая с Pi.
Rock64
NanoPi NEO Plus2
• Друг силен претендент от FriendlyArm е
NanoPi NEO Plus2. Неговият 64-битов
Allwinner H5 процесор поне на хартия е по-
добър от този на Pi 3. NanoPi NEO Plus2 има
Gigabit Ethernet порт, както и Wi-Fi и
Bluetooth връзки, разполага с 8GB eMMC
памет заедно с MicroSD слот и има 1 GB
DDR3 RAM. Всички тези функции се
предлагат на по-ниска цена, само за $ 24.99
от уеб сайта на FriendlyArm.
NanoPi NEO Plus2
• Ето и недостатъците: няма HDMI порт, тъй
като платката е проектирана да се използва
без глава през нейната операционна
система Ubuntu Core. Няма директен аудио
изход, въпреки че има връзки, за да можете
сами да заредите изход. USB
комуникацията може да се постигне само
чрез USB-to-TTL кабел. Има и само два USB
порта.
NanoPi NEO Plus2
Banana Pi
• Мощта на Banana Pi идва от Allwinner V40 SoC
и 1 GB DDR3 SDRAM. Wi-Fi и Bluetooth се
предлагат стандартно, заедно с Gigabit
Ethernet конектор. Banana Pi има много общо с
Raspberry – същият размер и се предлага от
AliExpress за същата цена като Pi 3, има и
същия брой USB 2.0 портове, същите
конектори за камера и цифров дисплей. Има
обаче и няколко допълнителни функции.
Мрежовият чип на Banana е отделен, така че
честотната лента не се натиска от други
системи. Също така има SATA порт, позволяващ
паметта да бъде директно прикрепяна.
Banana Pi
Espressobin
• Проектиран за съхранение и свързване в
мрежа, Espressobin има специален мрежов
комутатор Topaz, използващ три Ethernet порта,
заедно със SATA конектори, позволявайки му да
действа като сървър, рутер или почти всичко,
което искате да бъде. Има USB 3.0 порт, както и
един USB 2.0. Опцията за прикачване на
допълнителни периферни устройства през
miniPCIe порта, донякъде компенсира липсата
на възможности за Wi-Fi и Bluetooth.
Espressobin обаче може би не е добър вариант
за начинаещи.
Espressobin
LattePanda
• За първи път LattePanda се появи през 2015
година и направи доста добро впечатление
с мощния си Cherry Trail Z8350 четириядрен
процесор. Произведено от DFRobot,
LattePandа разполага с интегриран
Atmega32u4, който го прави съвместим с
Arduino и стартира Windows 10 като главна
операционна система. LattePand обаче е на
разположение за $ 209, което го прави най-
скъпата алтернатива на Raspberry Pi, която
разгледахме по-горе.
LattePanda
Arduino
• Arduino е термин, означаващ компания за
компютърен софтуер и хардуер, проект и
потребителско общество, които разработват и
поддържат устройства с микроконтролери и
комплекти за построяване на цифрови устройства с
лесен за ползване свободен хардуер и софтуер,
позволяващи постигането на интерактивност от
неспециалисти, които могат да взаимодействат и
управляват неща от реалния свят.
• Продуктите Arduino се разпространяват като хардуер
и софтуер с отворен код, лицензиран под LGPL/GPL
лиценз, разрешаващ производството и
разпространението от всеки. Платките и наборите се
продават в сглобен или в „направи си сам“ вариант,
достъпни са и като чертежи, схеми и изходен код за
изцяло самостоятелно разработване.
Arduino
• Платките Arduino използват 8-битови (AVR)
микроконтролери или 32-битови (ARM) процесори
Atmel (най-новите модели Arduino включват и
платки с други процесори). Платките са снабдени с
множество цифрови и аналогови входно-изходни
изводи (pins), които могат да бъдат свързвани с
разнообразни платки за разширение (shields) и
други схеми. Те включват и сериен или USB
интерфейс, с чиято помощ може да се зареждат
програми от компютър. Микроконтролерите
обикновено се програмират с помощта на езиците
за програмиране C и C++, като специално за
платките Arduino се препоръчва да се използва
Arduino IDE средата, базирана на Processing.
Arduino
Arduino

You might also like