Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
diplom kz Микроконтроллер құрылғыларының.docx
Скачиваний:
57
Добавлен:
17.02.2016
Размер:
5.05 Mб
Скачать

КІРІСПЕ

Көпшілік «компьютерлік революцияны» автоматты түрде көптеген қиын есептеулерді қажет ететін мәселелерді шешу құралдарын жасау деп қабылдайды. Мұндай есептеулер әр түрлі қызмет түрлерін төлеу кезінде, қиын ғылыми зерттеулерді және әзірлеуді орындағанда, завод және фабрикалардағы технологиялық процессті және құрылғыларды басқару процесі кезінде пайда болады. Уақыт өте келе интернет желісі және сандық телекоммуникациондық жүйені қосудың арқасында «компьютерлік революция» ұғымы кеңейді.

Сонымен бірге екінші революция жүріп жатты, және ол мүмкін әркімнің өміріне көбірек ықпалын тигізді. Ол бізді қоршаған ортаның барлығын арзан әрі қуатты микроконтроллерлер арқылы автоматтандыру болып табылады.

Микроконтроллерлердің көбісі автокөліктерде қолданылады. Қазіргі кездегі автокөліктер 20- дан астам микроконтроллерді өзінде қамтиды, олар мотордың күйін бақылап және оның жұмысын басқарып қана қоймай, сигнализация жүйесі көмегімен оны бұзу және ұрлаудан сақтап қалу, қорғаныс жүйесінің жұмыс жасауын қамтамасыз етеді, сыртқы жарықтандыруды бақылайды, автокөлік ішіндегі ауа температурасын, радио/стереожүйелердің жұмысын бақылайды.

Дербес компьютердің өзінде кем дегенде төрт орнатылған микроконтроллерлері бар болады – екеуі пернетақта мен тышқанның жұмысын қамтамасыз етеді, біреуі қатқыл дискті басқарады, біреуі энергиямен қамтамасыз етілуін қамтамасыз етеді. Мүмкін монитор, принтер немесе модемді басқару үшін одан да көп микроконтроллерлер қолданылады.

Микроконтроллер – ол дербес компьютерлік жүйе, бір корпуста орнатылған мәліметтерді енгізу/шығау құрылғысы, процессор және қосалқы сұлбаларды қамтиды.

Әртүрлі құрылғыларда қолданатын микроконтроллерлер, сыртқы ортаның параметрлерін анықтайтын датчиктер мен қолданушының пернетақтасынан келіп түсетін мәліметтерді интерпретациялау функциясын орындайды, және жүйенің әртүрлі құрылғыларының арасында байланыс орнатады және басқа құрылғыларға мәліметтерді жібереді. Микроконтроллерлерді қолану қолданылатын материалдар мен жиынтықтаушы бұйымдардың бағасы мен мөлшерін едәуір азайтуға мүмкіндік береді, ол соңғы өнімнің өзіндік бағасының төмендеуін қамтамасыз етеді. Микроконтроллерлерді қолдану тұтынушы үшін өнімнің тартымдылығын едәуір өсіре алады, ол салыстырмалы аз қосымша шығын шығару арқылы «достық интерфейсті» іске асырудың арқасында болады. Сонымен қатар, әр түрлі функцияларды іске асыру үшін маманадндырылған, әр түрлі программалық жабдықтаманы бір ғана аппаратты құралдарды қолдана отырып шығарылатын өнімнің қолдану аяасының кеңеюінің қамтамасыз етуге болады.

Диплoмдық жұмыcтың мақсаты - микроконтроллер құрылғысына арналған программалық қамтамасыз етуді әзірлеу.

Дипломдық жұмыстың міндеті - Микроконтроллер құрылғыларының дамуы мен тағайындалуының анализдеу, контроллер және микроконтроллерлік құрылғылардың программалау құралдарын қарастыру, өндірістік ПЛК–ді программалау.

Дипломдық жұмыстың өзектілігі – экономикалық жағынан тиімді және қауіпсіз болуға тиісті барлық өндірістік процесстер басқару жүйесін қажет етеді. Соңғы жылдары тез таралған және басқару техникасын түбегейлі өзгерткен программаланатын логикалық контроллер болып табылады, ол өзінің тиімді бағасымен қатар есептеудегі қуаттылығы мен елеулі икемділігін қосады.

Ең оңай мысалдың объектісі ретінде электрқозғалтқыш арқылы айналатын желдеткіш болуы мүмкін. Басқарушы жүйе ретінде қозғалтқышты шамадантыс жүктеуден және проводтың зақымдануынан қорғайтын мына электрлі қосқыш болып табылады. Оператор командасы қосу/өшіру батырмасын басуында болады, ал объектінің күйі «істейді/істемейді», сонымен қатар ақаулар индикаторы арқылы көрінеді.

Басқа шеткі жағдайда объект – үлкен мұнайхимиялық қондырғы болып табылады. Және мұнда басқару жүйесі өте қиын болады, ол әр түрлі құрылғылардың комбинациясын келтіреді. Оператормен байланыс та мүлдем басқаша болады, мұнда командалардың берілуі және ақпараттың көрінуі көптеген құрылғылардың көмегімен іске асады.

Диплoмдық жұмыc кiрicпеден, теoриялық, негiзгi, ПЛК арқылы басқару артықшылықтары туралы, қoрытынды бөлiмдерден, әдебиеттер тiзiмi және қocымшaлaрдaн тұрaды.

Теориялық бөлімінде микроконтроллердің анықтамасы, тарихы, құрылымы, пайдалылығы, сұлбасы қарастырылады. Және оның қолдану аясы мен артықшылықтары мен кемшіліктері көрсетілген.

Негізгі бөлімінде микроконтроллер құрылғыларын программалау үшін керекті қолданушының құралдары қарастырылады. Және программалау ортасы, тілдері, компилятор, программаторлар, эмуляторлар, симуляторлар, редакторлардың жұмысы сипатталған.

3-ші бөлімде программаланатын логикалық контроллердің артықшылығы, оны программалау, жұмыс істетуден өткізу, техникалық спецификация келтірілген. Диплoмдық жұмыcтa әдебиеттер тiзiмi, coнымен қaтaр прoгрaммaдaн тұрaтын қocымшaлaр берiлген.

1 МИКРОКОНТРОЛЛЕР ҚҰРЫЛҒЫЛАРЫНЫҢ ДАМУЫ МЕН ТАҒАЙЫНДАЛУЫНЫҢ АНАЛИЗІ

    1. Микроконтроллерлер-даму тарихы, жіктелуі

«Микроконтроллер» термині алғашында қолданылып жүрген «біркристалды микро-ЭЕМ» терминін ығыстырып шығарды. 1971 жылы Texas Instruments инжинерлері М. Кочрен және Г. Бун-ге бірінші біркристалды микро-ЭЕМ ге патент берілді. Олар бір кристалда микропроцессормен қатар жады және енгізу-шығару құрылғысын да орналастыруға ұсыныс жасады. 1972 жылы 32 байт мәліметтер жадысы, 1Кбайт программа жадысы, сағат және енгізу-шығару құрылғысы бар бірінші 4-разрядты МКTMS1000 шығарылды. Бірақ оған аса көп мән берілмеді сондықтан бірінші микроконтроллер ретінде 1976 жылы Intel фирмасымен шығарылған I8048 микросхемасын қателесіп санайды.

Орталық процессормен қатар, оның кристалында 1Кбайт программа жадысы, 64 байт мәліметтер жадысы, екі 8-биттік таймер, сағат генераторы және 27 енгізу/шығару порттары орнатылған. Ендігі кезде бұл құрылғы назарсыз қалмады, соның арқасында 8048 микроконтроллері ойын приставкаларында, пернетақталарда, алғашқы IBM PC да және бірқатар басқа да құрылғыларында қолданды.

1980 жылы Intel компаниясы келесі МКI8051 шығарды. Қосымша құрылғылардың сәтті жинағы, ішкі немесе сыртқы программалық жадының икемді таңдауының мүмкіндігі және бағасының қолжетімді болуы бұл МК-ге нарықтағы артықшылықты қамтамасыз етті және ол берілген кластың классикалық үлгісі болып қалды.

8051 Микроконтроллері

Технологиялық көзқараспен қарағанда МКI8051 өз уақытының өте қиын бұйымы болып табылады. Оның кристалында 128 мың транзистор орналасқан, ол дегенімз 16-разрядты МПI8086 тарнзисторлар санынан 4 есеге көп. Бұл 8-разрядты чип микроконтроллерлардың бір тип бұтағының пайда болуына негіз болды, және бұл тип қазіргі уақытқа дейін нарықта көшбасшы орындарды алып тұрды. I8051 аналогін көптеген кәсіпорындар, соның ішінде совет одағындағы Минск, Киев, Воронеж, Новосибирск қалаларындағы кәсіпорындар шығарған. 8051 МК-де отандық өңдеушiлердi бүтiн ұрпағы өстi. Қазіргі кезде МКI8051мен үйлесімді 200-ден астам модификациялары бар. Бірақ 51 топ өзінің орнын одан жас және кемшіліксіз микроконтроллерлерге босатып беріп жатыр.

Motorola и Zilog

Басқа сегізразрядты микроконтроллерлердің жарқын өкілдері болып Motorola (68HC05, 68HC08, 68HC11) және Zilog (Z8) компанияларының бұйымдары болып келеді.

Motorola өзінің МК мен тез және арзан жұмыс бастау үшін керек құралдарды ұсынбады, осы жағдай корпаративтік емес қызметкерлердің арасында оның танымалды болуына септігін тигізе қоймады. Біздің елімізде де оның танымалдылығы кең жайылмаған, ол оқу құралдары мен жасау құралдары санының аздығынан болуы мүмкін. Бірақ айта кету керек шет елдерде Motorola МК- лі нарықта алдыңғы орындарды алып тұр. Intel-дің бұрынғы қызметкерлері негзін қалаған Zilog фирмасынан шыққан атақты МКZ8-дің болашағы жарқын көрінген, бірақ нарықтың қарқынды дамып келе жатқан бұл бөлігінде жарысқа шыдамаған микроконтроллердің басқару жүйесі ескірген болып көрінеді.

Microchip

Бірінші айтарлықтай өзгерістер Microchip фирмасының PIC МК-нің пайда болуымен басталды. Бұл микросхемалар сол уақытпен салыстрғандағы өте төмен бағалармен сатылды, соның арқасында қысқа уақытішінде олар МК нарығының біраз бөлігін өзіне қаратты. Сонымен қатар Microchip фирмасының кристаллдары өнімділігі жағынан х51 МК-інен кем түспейтін ал кей жағдайларда асып кететін және ол қымбат программаторды қажет етпейді. Бұл МК-лер сауатты жобаланған порттары бар болды, бірақ қалғаны онша ыңғайлы жасалмады: архитектурасы мардымсыз, ал командалар жүйесі өте шектеулі болды. Соған қарамастан PIC МК-і қымбат емес және оңай қызмет ететін жүйені жасағанда қолданылатын таптырмас құрал болып табылады.

Scinex

PIC МК атағы асқан кезде Scinex фирмасынан осыған ұқсас көптеген құрылғылар шықты. Олар PIC-тің 33 командаларына қарағанда 52 командалары болды. Негізінде, тағы жадымен жұмыс жасау үшін ыңғайлы нұсқаулар, әр команда бір такт ішінде орындалатындай дамытылған архитектура осының бәрі PIC МК-мен салыстырғанда тезәрекеттілікті 4 есеге арттырды. Сонымен қатар Scinex фирмасының МК-інің тактілік жиілігі 100 МГц –қа жетті. Осындай микроконтроллердің жоғарғы жылдамығы оның жасаушыларына әр түрлі перефериядан бас тартуға мүмкіндік берді. Осымен бірге МК-де жоғарыжылдамдықты ядро, жады және енгізу/шығару порттары да бар.

Atmel

1996 жылы микроконтроллер әлемінде нағыз жаңалық, Atmel корпорациясының жаңа прогрессивті AVR ядросы негізінде жасалған өзінің бір топ чиптерін шығаруы болды. AVR МК-і жақсы дамыған командалар жүйесіне ие, оның нұсқаулары 133-ке дейін, жоғарғы өнімділігі 1 MIPS/МГц-ке жақын, схема ішіндегі қайтапрограммалау мүмкіндігін беретін Flash-ПЗУ прогрммалары бар. Көптеген чиптер өзін-өзі программалау функциясына ие. AVR-архитектурасы жоғарғыдеңгейлі Си тіліне негізделген. Сонымен қатар топтағы барлық кристаллдар "жоғарыдан төмен" үйлесімді. Ақылмен жасалған AVR архитектурасы, Microchip контроллерімен салыстырғанда озатын тезәрекеттілік, тартымды бағалы саясат, осының бәрі №1 контроллер атағына ие болуына әкелді. AVR МК-нің танымалдылығына программалық жабдықтаманың және жасау құралдарының қолдауы да әсерін тигізді.Atmel фирмасы осы сұраққа көп көңіл бөледі және қолданушыға көптеген тегін таратылатын программалық өнімдерді ұсынады. Жаңадан бастаған құрастырушыға AVR МК-ін программалау үшін апаратты программаторсыз да жұмыс жасауға болатыны маңызды артықшылық болып табылады. Бұл микроконтроллерлерді программалаудың ең танымал түрі ол персоналды компьютердің параллельді портымен 5 өткізгішті байланыс орнату. AVR біртіндеп 8-разрядты жалпы тағайындалған МК арасында индустриалды стандарт болып қалыптасып келе жатыр. Оларды кез келген жерден алуға болады, орташа бағасы жоғары емес, Microchip компаниясының бұйымдарымен тең бәсекеге түсуімен ерекшеленеді. Қазіргі таңда осының бәрі Atmel AVR МК-лерін ең тартымды және көп үмiт күттіретін компания болып отыр.

Жоғарыда айтылған компаниялар мен олар шығаратын МК-дың тізімі толық емес. МК өндіруші ірі компаниялар арасында мыналарды да атап өту қажет: Cypress, Texas Instruments, Dallas Semiconductor, Philips, Siemens, STMicroelectronics, Futjitsu, Mitsubishi Electronics, National Semiconductor және тағы да басқалар. Қазіргі екзде ең танымал микроконтроллерлерге Microchip Technology компаниясының 8-разрядты РІС-МК мен Atmel компаниясының AVR микроконтроллерлері.

Микроконтроллер ұғымы

Біркристаллды микро-ЭЕМ пайда болуымен басқару аймағындағы автоматтандыруда нағыз төңкеріс болды. Дәл осы жағдай «микроконтроллер» (ағылшын тілінен. control – управление) терминін қолдануды анықтады. Микроконтроллер(МК)- бір микросхемадағы компьютер, әр түрлі электронды құрылғыларды басқару үшін және оған сәйке жазылған программа арқылы олардың арасындағы өзара iс-әрекеттiң жүзеге асыруы. Микропроцессорлық жүйелердің(МПЖ) дамуының қазіргі кезеңдегі негізгі ерекшелігі ол бірнеше интегралды сұлбалардан құралған жүйелерден қазіргі МК ге дейін өтуі. МК универсалды микропроцессордан (МП) айырмашылығы ол бір кристаллда МПЖ-дегі негізгі элементтердің бірігуі: орталық процессор (ЦП), жедел еске сақтау құрылғысы (ОЗУ), тұрақты еске сақтау құрылғысы (ПЗУ), енгізу/шығару порттары және бірқатар мамандандырылған электронды құрылғылар. Орнатылған құрылғылар сырттан ешқандай электр тізбегін қажет етпегендіктен, олар жоғарғы төзімділікке ие. ПЗУ МК орындайтын программаны сақту үшін қызмет етеді. ОЗУ МК-дің ішкі регистрлерінің пулын ұйымдастыру және айнымалыларды уақтша сақтау үшін қолданылады. Енгізу/шығару порттары сыртқы құрылғылармен (негізінде персональді компьютермен, себебі көптеген МК стандартты RS-232C интерфейсімен үйлесімді) МК-дің қосылуын қамтамасыз етеді.

Қазірде кең тараған мамандандырылған құралдарға мыналар кіреді:

  • АСТ-аналогты-сандық түрлендіргіштер (ADC – Analog-to-Digital Converter);

  • САТ- сандық-аналогты түрлендіргіштер (DAC – Digital-to-Analog Converter);

  • Сандық потенциометрлер;

  • Әртүрлі байланыс интерфейстері;

Таймерлер – бұл құрылғыларды берілген периоды мен ұзақтығы ішінде тік бұрышты импульс беру үшін программалауды іске асыруға рұқсат беретін, сонымен қатар көршілес кіру импульстерінің арасындағы уақыт интервалдарын санау құрылғысы болып табылады.

МК-дің нақты моделіне қарай кейбір құрылғылар болмауы мүмкін немесе МК-де бірегей құрылғылар (мысалы, сұйықкристаллды дисплейдің драйверлері, вакуумды флуоресцентті дисплейдің драйвері және тағы да басқа) орнатылуы ғажап емес. Барлық мамандандырылған құрылғылар өзінің тапсырмаларын МК-дің мкропроцессорлы ядросының басқаруымен орындайды.

Микроконтроллердің құрылымды сызбасы.

МК топтарға біріктіріледі. Бір топқа жататын бұйымдарға бірдей микропроцесорлық ядосы бар бұйымдар кіреді. Топтың ең басты ерекшелігі-оған кіретін барлық МК-дің екілік код деңгейінде үйлесуі. Бір топ ішіндегі әртүрлі МК-дің айырмашылығы ол негізінде перефериялық құрылғылардың тізімі және программа мен мәліметтер жадысының көлемінде. Қазіргі кездегі МК-лер ерекше белглерге ие. Олардың негізгілерін талдайық:

Модульдік ұйымдастыру, бір процессордың ядросының (орталық процессор) негізінде бірқатар МК жобаланады, олардың бір- бірінен айырмашылығы программа жадысының көлемі және түрінен, мәліметтер жадысының көлемінен, перефериялық модульдердің жинағымен, синхрондау жиілігімен танып білінеді;

МК жабық архитектурасын қолдану, ол МК корпусының енгізуіндегі адрес және мәліметтер магистралінің болмауымен сипатталады. Осылайша МК мәліметтерді өңдеуің біткен жүйесі болып табылады, және оның адрестер және мәліметтер магистралін параллельді қолдану арқылы оның мүмкіншіліктерін арттыра алмаймыз.

Жұмыс істеу алгоритмдерінде ешқандай айырмашылық жоқ, әр түрлі өндіушілердің микроконтроллеріне типтік функционалды перефериялық модульдерді (таймерлер, АСТ, САТ, бірбәле контроллерлерінің интерфейстері, және т.б) қолдану.

МК арнайы функциялары регистрлердің инициализация процесі кезінде берілетін, Перефериялық модульдердің жұмыс істеу режимдерінің санын кеңейту.

Модульдік құрылым принципінде бір түрге жататын барлық МК-де біркелкі процессорлық ядро, және өзгермелі функционалды блок, ол МК әртүрлі модельдерінде өзгеше болады. Модульдік МК-дің құрылымдық сұлбасы 1-ші суретте келтірілген.

1-сурет. МК модульдік жүйесі

Процессор ядросы өзіне мыналарды қосады:

  • Орталық процессор;

  • Ішкі контроллерлі магистраль (внутреннюю контроллерную магистраль(ВКМ)), ол адрестер,мәліметтері, басқару шинасынан тұрады;

  • МК синхронизация сызбасы;

  • МК жұмыс істеу режимін басқару сызбасынан, оған қоса төмендетілген энергия тұтыну мен бастапқы қалпына келу(реинициализации) және т.б.

Өзгермелі функционалды блок өзіне әртүрлі титі және көлемді жады модулін, енгізу/шығару құрылғысын, тактілік генераторлардың(Г) модулі, таймерлерді қосады. Өзгермелі функционалды блоктың құрамына келесідей қосымша модульдер, мысалы: кернеу компараторлары, АСТ, САТ, және т.б кіреді. Үзілістерді өңдеу модульдері жайлы айтатын болсақ салыстырмалы қарапайым МК-де ол процессор ядросының құрамында болады ал одан күрделі МК-де ол мүмкіндігі жетілген бөлек модуль түрінде беріледі. Әр модуль МК құрамында жұмыс жасау үшін, ВКМ-нің нақты хаттамасын есепке ала отырып жобаланады. Мұндай тәсіл бір түр ішіндегі құрылымы жағынан әр түрлі МК шығаруға мүмкіндік береді.

Микроконтроллерлердің жіктелуі

Бүгінде дүниеде МК мыңдаған түрлері шығарылады. Оларды жіктеудің негізгі белгісі болып микропроцессор ядросындағы арифметикалық-логикалық құрылғы(АЛҚ) өңдейтін мәліметтер разрядтылығы болып табылады. Осы белгіге қарай олар :

4-разрядты- ең қарапайым және арзан МК. Олар ең төмен функционалды мүмкіндіктерімен сиптталады және бағасы төмен қосымшаларға арналған;

8-разрядты- бағасы мен мүмкіндігі жағынан оңтайлы болғанына байланысты ең көп таралған топ. Бұл топтың жарқын өкілдеріне- MCS-51 сериалы (Intel) МК , сонымен қатар PIC (Microchip), HC68 (Motorola), Z8 (Zilog) жатады.

16-разрядты – 8-разрядты МК-ге қарағанда жоғары өнімді бірақ бағасы да жоғары.

32-және 64-разрядты- әдетте универсалды микропроцессорлардың модификациясы болып табылады.

Бөлек топқа сандық сигналды процессорды (DSP – Digital Signal Processor)-арнайы МК жатқызуға болады. Олар сигналды өңдеу жүйелерінде қолдануға бағытталған.

Қазіргі кездегі әлемдік микроконтроллер нарығының үлкен үлесін 8-разрядты құрылғылар алып жатыр(шамамен 50% бағалық үлесте). Олар өнеркәсіпте, тұрмыстық және компьютерлік техникада кеңінен қолданылады. Одан кейін 16-разрядты МК және DSP ( әр топ нарықтың шамамен 20% алып тұр).

8-разрядты жалпы қолданылатын МП-лар олардан өнімділігі әлдеқайда жоғары модельдермен ығыстырылып шықты, сол уқытта 8-разрядты МК әлі де кеңінен қолданысқа ие. Өзінің даму барысында олар салыстырмалы әлсіз дамыған перефериясы бар қарапайым құрылғылардан қазіргі заманға сай қиын басқару алгоритмдерін жүзеге асыратын көпфункционалды МК-ге айналды. 8-разрядты МК-дің мұндай тіршілікке қабілеттілігі олардың нақты объектілерде пайдалануы және бұл объектілерде негізінен логикалық операциялары басым болатын алгоритмдер қолданылады, олардың жылдам өңделуі процессор разрядтылығынан іс жүзінде тәуелсіз. Бұдан бөлек жоғары өнімділіктің қажеті жоқ, бірақ бағасының төмен болуы шарт көптеген пайдалану аялары бар.

1.2 Микроконтроллер сәулеті

МК процессорлық ядросының сәулеті

МК процессор ядросының өнімділігін анықтайтын басты сипаттамалар:

Процессордың командалар жүйесі және опрандтарды дербестендіру тәсілі;

Аралық мәліметтерді сақтауға арналған регистрлер жиынтығы;

Команданы таңдау және орындау процесін ұйымдастыру;

CISC- және RISC- сәулеті

Командалар жүйесі және опрандтарды дербестендіру тәсілінің көзқарасынан қазіргі заманғы 8-разрядты МК процессорының ядросы осы сәулеттердің біреуіне тиесілі:

CISC-сәулеті (Complicated Instruction Set Computer), толық командалар жүйесін жүзеге асырады;

RISC-сәулеті (Reduced Instruction Set Computer), қысқартылған командалар жүйесін іске асырады;

CISC-процессорлары адрестеудің дамыған мүмкіндіктерімен үлкен командалар жиынтығын орындайды, ол жұмыс жасаушы адамға қажет операцияны орындауға ең қолайлы команданы таңдауға мүмкіндік жасайды. Мұндай командалар жүйесінде, кез келген адресация амалы, кез келген процессор регистріне барлық командаларды қолдана алмайды. Командаларды таңдау және оны орындау МК жұмыс істеу циклының бірнеше рет қайталануы ішінде жүзеге асырылады. CISC-сәулетіне жататын МК-ге мына фирмалар қатысты: MCS-51ядросымен Intel-дің МК, қазіргі кезде олар бірқатар өндірушілерден қолдау тауып отыр, Motorola фирмасының НС05, НС08 және НС11 және т.б.

RISC-сәулетіне жататын процессорларда орындалатын командалар жиынтығы минимумге дейін қысқартылған. Күрделі операциларды орындау үшін қолда бар командаларды құрамдастыруға тура келеді. Сонымен қатар барлық командалар ұзындығы тиянақталған форматқа ие, жадыдан команданы таңдау мен оны орындау бір цикл ішінде жүзеге асады. RISC-процессорының командалар жүйесі барлық регистрлерді тең дәрежеде қолдануды шамалайды. Бұл бірқатар операциялардың орындалу кезінде қосымша икемділікті қамтамасыз етеді. RISC-процессорына жататын МК-ге Atmel фирмасының AVR МК-і және Microchip фирмасының PIC МК-і.

RISC-сәулетінің негізгі идеясы тактілік генераторда бір такт ішінде операцияны орындау үшін кодтардың комбинациясын тиянақты түрде таңдау болып табылады. Мұндай тәсілдің ұтымдылығы - ОП-дың аппаратты іске асыруының оңайлатуы және оның өнімділігін едәуір өсіру мүмкіндігі. Бастапқыда мұндай тәсілді іске асыру тек командалар жиынтығын елеулі түрде қысқартудың арқасында қол жеткізуге болатын, осыдан RISC атауы пайда болды. Жалпы айтқанда CISC-сәулетінің бір командасына RISC-сәулетінің бірнеше командалары сәйкес келу керек. Бірақ әдетте RISC-сәулетінің тезәрекеттілігін өсіруінен табылған ұтыс тиімділігі азырақ командалар жүйесінен келген шығынды толығымен жабады, бұл жағдай CISC жүйесіне қарағанда жалпы RISC жүйесінің тиімділігінің жоғары болуына әкеледі. Сондай-ақ ОП оңайлатумен ондағы транзсторлардың санының азаюына, сол себептен кристаллдың ауданының азаюына да алып келеді. Ал онымен МК бағасы мен тұтынылатын қуатының төмендеуі де байланысты.

Фон-нейман (принстон) және гарвард архитектурасы

Командаларды таңдау және орындау процесстерін ұйымдастыруына қарай қазіргі заманғы МК-лерде осы екі сәулеттің біреуі қолданылады: фон-нейман(принстон) немесе гарвард сәулеті.

Фон-нейман сәулетінің негізгі ерекшелігі программа мен мәліметті сақтау үшін жалпы жадыны қолдануы, ол 1.2-суретте көрсетілген.

Сурет-1.2. Фон-нейман сәулетінің мпж (микропроцессорлы жүйе) құрылымы

Фон-нейман сәулетінің негізгі артықшылығы- бір ғана жалпы жадымен жұмыс жасау арқылы МПЖ құрылғысын оңайлату. Біріңғай жады облысын қолдану программа және мәлімет облыстарының арасында қорды тез арада қайта бөлуге мүмкіндік береді, программалық жабдықтаманың құрастырушысының көзқарасында ол МПЖ икемділігін едәуір өсіреді. Стектің жалпы жадыда орналасуы оның ішіндегісіне қол жеткізуді оңайлатады.

Гарвардтік сәулеттің негзгі ерекшелігі - командалар және мәліметтерді сақтау үшін бөлек адресті кеңістіктерді қолдану(3-сурет). Гарвард сәулеті 70-ші жылдардың соңына дейін қолданылмады, одан кейін МК өндірушілері Гарвард сәулетінің автономды басқару жүйелерін жасаушыларға белгілі артықшылықтарды беретінін түсінді.

Сурет-1.3 – Гарвард сәулетінің сұлбасы

1-адрестер шинасы, 2-мәліметтер шинасы, 3- басқару шинасы

Осыдан гарвард сәулетінің фон-нейман сәулетімен салыстырғандағы артықшылығы ол программаның орындалу жылдамдығының жоғары болуын қамтамасыз ететін параллельді операцияларды іске асыру мүмкіндігі.

Команда және мәліметтерді сақтау үшін адрестік кеңістіктің бөлінуінің арқасында келесі команданың таңдалуы бұдан бұрынғы команданың орындалуымен бір уақытта жүзеге асады, бұл әр түрлі командалардың бірдей такт ішінде орындалуын жүзеге асырады. Осыған орай 8-разрядты МК-дің көптеген өндірушілері дәл осы гарвард сәулетін қолданады.

Түрлі сәулетке қарап жасалған әртүрлі МК салыстыру қиын тапсырма болып табылады және оны нақты қосымшаға (программаға) қарай өткізу қажет.

МК жұмыс істеу тиімділігін нағыз объективті сандық түрде бағалау үшін бізге ВКМ-нің жылдамдығын алуға болады, ол МК өнімділігін анықтаушы ол дегеніміз белгілі бір уақыт аралығында орындалатын операциялар саны. МК өнімділігі MIPS(Million Instructions per Second –секундына миллион нұсқаулық).

Тактілік жиілік өскен сайын МК өнімділігі де артады. МК-дің үнемділігін сипаттайтын келесі сандық сипаттама- оның тұтынатын қуаты. Ол да МК тактілік жиілігі өскен сайын артады.

Микроконтроллер жадысын ұйымдастыру

МК-де жадының негізгі 3типі қолданылады:

  • Бағдарламалар жадысы бағдарламалық код (команда) және константаны сақтауға арналған ТСҚ (тұрақты сақтау қондырғысы) болып табылады. Оның құрамы бағдарламаны орындау барысында өзгермейді.

  • мәліметтер жадысы ЖСҚ (жедел сақтау қондырғысы) болып табылады және бағдарламалар орындау кезіндегі айнымалыларды сақтауға арналған.

  • МК регистрлері – бұл процессордың ішкі регистрлерін және қосымша қондырғыларды басқаруға арналған регистрі (арнайы функция регистрі) бар жадының түрі.

Сонымен қатар жадының екі қосымша түрін айтуға болады:

  • Стектік жады, үзілісті өңдеу мен астыңғы бағдарламаны шақыруға арналған.

  • Сыртқы жады, бағдарламаның немесе мәліметтердің қосымша жадысы МК-ге енгізілген жадысы жетпеген жағдайда сырттан қосылады.

Бағдарламалар жадысы

Бағдарламалар жадысының негізгі қасиеті энергия тәуелсіздігі, яғни қорек көзі болмаған жағдайда да бағдарламаны сақтау мүмкіндігі. Бірақ ол бір немесе бірнеше рет орындалуына бағдарламаланған болуы мүмкін.

Бағдарламаның энергия тәуелсіздігінің келесі типтерін айтуға болады:

  1. ТСҚ-ң маскалық типі – mask-ROM. ТСҚ ұяшығының мұндай типінің құрамы технологиялық шаблон – маска комегімен жасалады және кейін өзгертілмейді. Сондықтан МК-ң бұл типі тек ұзақ эксплуатациялауға қолданылады. Бұл типтің кемшілігі фотошаблон жасауға шығынның көп кетуі және өндіріске енгізу қиындығы болып табылады. Әдетте бұндай үрдіс 2-3 ай уақыт алып, экономикалық жағынан мыңдаған аспап жасағанда ғана тиімді болады. ТСҚ маскалы типінің артықшылығы – зауыт жағдайында бағдарламаланатын жоғары сапа.

  2. Электрлік бағдарламаланатын ерітілмелі сымы бар ТСҚ, бұл типте тұтынушының нөлдік битқа сәйкес келетін сымы бұзылғанша импульстерін өткізу арқылы өзі бағдарламалайды.

  3. ТСҚ-ң қайта бағдарламаланатын ультракүлгін өшіруі бар EPROM (Erasable Programmable ROM). ТСҚ-ң бұл типі электрлік сигналдармен бағдарламаланады және ультракүлгін сәуле арқылы өшіріледі. EPROM жадысының ұяшығы жылжымалы затворы бар сәйкес электрлік сигнал жібергенде заряд басқарылатын затвордан соған тасымалданатын МОП-транзистор.

Ұяшықтың құрамындағысын өшіру үшін ол ультракүлгін сәулемен сәулелендіреді, сәуле жылжымалы затворға потенциалдық кедергі мен табанға ығысуғажеткілікті энергия жеткізеді. Бұл үрдіс бірнеше минут немесе минут алуы мүмкін. EPROM-ы бар МК көпретті бағдарламалануы мүмкін және ультракүлгін сәуле кіретін керамикалық корпуста жасалады. Мұндай корпус қымбат тұрады, яғни МК бағасын қымбаттады.

  1. Бірретті бағдарламаланатын ТСҚ- OTPROM (one time Programmable ROM)

EPROM-ң бір версиясы, корпусында тесігі жоқ, МК бағасын азайту үшін жасалған (бұл арзандату соншалық айқын – соңғы кезде маскалы ТСҚ орнына OTPROM-ды жиі қолданады).

  1. Электрлік өшіретін қайта бағдарламаланатын ТСҚ-EEPROM (Elecrically Erasable Programmable ROM). ТСҚ-ң бұл типін EPROM-ң жаңасы деп айтуға болады. Мұнда жады ұяшығын өшіру электрлік сигналмен жүргізіледі.

EEPROM қолдану МК-ді платадан алмай-ақ бағдарламалауға болады. Бағасы жағынан EEPROM EPROM мен OTPROM аралығында. EEPROM жадысын бағдарламалау технологиясы ұяшықты байттік өшіру мен бағдарламалауды орындайды. EEPROM-ң айқын артықшылығына қарамастан бағдарлама сақтау үшін МК-ң модельдерінде сирек кездеседі. Бұл EEPROM жадысының шектеулігімен және оған қарағанда арзан Flash-ТСҚ-ң бір уақытта пайда болуымен байланысты.

  1. Flash типті электрлік өшіруі бар ТСҚ- Flash-ROM. Функционалдық жағынан Flash жады. EEPROM-нан өзгеше емес. Негізгі айырмашылығы – жазылған ақпаратты өшіруінде. EEPROM жадысында өшіру әрбір ұяшық үшін бөлек жүргізіледі, ал Flash-жадыда өшіру түгел блокпен жүргізіледі. Егер Flash жадының бір ұяшығының мазмұнын өзгерту үшін блокты түгел қайта жазу керек. Декодерлеу сұлбасын EEPROM-ға қарағанда қарапайымдандыру Flash-жадылы МК-ң бірретті бағдарламаланатын ТСҚ және маскалы ТСҚ бар МК-мен бәсекесін тудырды.

Мәліметтер жадысы

МК мәліметтер жадысы әдетте статикалық ЖСҚ негізінде орындалады.

«Статикалық» термині ТСҚ ұяшығының мазмұны МК-ң тактілік жиілігін қанша болса төмен (энергия үнемдеу үшін) мәнінде де сақталады деген сөз. МК-ң көбі «ақпаратты сақтау кернеуі» - USTANDBY деген параметрге ие. Кернеу минималды рұқсат етілген UDDMIN деңгейінен төмен, бірақ USTANDBY деңгейінен жоғары болса МК бағдарламасы жұмыс істемейді, бірақ ақпарат ТСҚ-да сақталады. Кернеу қалпына келгенде МК-ді қайта жүктеп және бағдарламаны мәліметтерді жоғалтпай жалғастыруға болады. Сақтау кернеу деңгейі 1В, яғни керек жағдайда МК-ді автономды қорек көзіне ауыстырып, осы режимде ТСҚ мәліметтерін сақтауға болады.

МК жады көлемі әдетте көп болмайды, ондаған, жүздеген байтты құрайды. Бұл жағдайды МК бағдарлама жазғанда ескеру керек.

Сонымен, МК бағдарламалаған кезде константаларды, мүмкін болса, айнымалы ретінде сақтамай, ТСҚ-ға енгізеді.

МК регистрлері

Мк регистрлер жиынтығы оның ресурстарын басқаруға қолданылады.

Бұл регистр санына процессор регистрі (аккумулятор, жағдай регистрі, индексті регистрлар), басқару регистрлері (үзіліс, таймерді басқаратын регистр), мәліметті енгізу/шығару регистрі (порт мәліметі регистрі, параллель, тізбекті немесе аналогты енгізу/шығаруды басқаратын регистр). Регистрлерге бағыттау әртүрлі болуы мүмкін. RISC-процессорлы МК-де барлық регистрлер (жиірек аккумулятор) берілген адрес бойынша орналасады. Бұл процессор жұмысына үлкен икемділік береді. Кейбір МК-де барлық регистрлер мен мәліметтер жадысы бір кеңістікте орналасады. Бұл мәліметтер жадысы регистрлермен біріккендігін көрсетеді. Мұндай әдіс «МК ресурстарын жадыда көрсету» деп аталады.

Басқа МК-де қондырғының енгізу/шығару адрестік кеңістігі жалпы жады кеңістігінен бөлінген. Енгізу/шығару кеңістігінің бөлектігі гарвардтық архитектурасы бар процессорға артықшылық береді, яғни енгізу/шығару регистріне бағыштау кезінде команданы оқу мүмкіндігі.

Стектік жады

Стектік жады деп «соңғы жазылған- бірінші оқылады» (Last Input First Output – LIFO) принципімен ұйымдастырылған жадыны айтады. Жадының мұндай типі астыңтыңғы бағдарламаны (подпрогамма) және үзілісті өңдеуді ұйымдастыру үшін керек. Мұндай операциялар кезінде бағдарламалық есептегіш пен негізгі регистрлер құрамы стекте сақталады, сосын негізгі бағдарламаға келгенде қайта орнына келеді. МК-де стек ақпаратты немесе бағдарламалық түрде ұйымдастыруы мүмкін.

Аппаратты стек регистрлер жиынтыгынан тұрады және регистрлер арасындағы байланыс мәліметтерді жазу, оқу кезінде стек құрамы автоматты түрде жылжиды. Аппаратты стектің артықшылығы – оның тездігінде, кемшілігі – көлемінің аздығы. Гарвардтық архитектурада стектік операциялар жадынынң сол мақсатқа арналған бөлігінде орындалады. Бұл дегеніміз астыңғы бағдарламаны шақыру кезінде гарвард архитектурасы бар процессор бір мезетте бірнеше қимыл жасайды.

Басқа әдіс – стекті ұйымдастыру үшін ТСҚ мәліметін қолдану. Фон-нейман архитектурасында жадының біртұтас аймағы стекті іске үшін де қолданылады. Бірақ қондырғының өнімділігі төмендейді, өйткені жадының барлық түріне бір уақытта ену мүмкін емес. Астыңғы бағдарламаның командасын шақыру кезінде келесі команданың таңдауы тек бағдарламалық есептегіштің мазмұны стекке орналастырылғаннан кейін орындалады. МК- ның екі архитектурасы да мәліметтерді сақтауға жады көлемінің шектеулігі бар. Егер процессорда бөлек стек пен оған жазылған мәлімет оның көлемінен асып кетсе, стек сілтегішінің құрамы циклдік түрде өзгеріс болады және ол алдында толтырылған стек ұяшығына сілтеме жасайтын болады. Сонда астыңғы бағдарламаны қайтару кезінде қайтару адресі қате болады. Егер МК мәліметтер мен стек үшін жалпы жады аймағын қолданса, стектің толып кету кезінде мәліметтер аймағына жазылу қаупі болады.

Сыртқы жады

МК-ның жабық архитектурасына көшуі тенденциясына қарамастан, кейбір жағдайда бағдарлама немесе мәліметтердің қосымша сыртқы жадысын қосу керектігі туады. Егер МК сыртқы жадыны қосу үшін арнайы әдістері болса онда мұндай операция қарапайым әдіспен жүргізіледі.

Екінші әмбебап әдіс сыртқы жады қосу үшін енгізу/шығару порттарын қолдану және жадыға жүгіну бағдарламалық әдістермен орындалуында. Мұндай әдісте енгізу/шығару қарапайым құралдарын қолдануға болады, яғни күрделі шиналы интерфейссіз, бірақ сыртқы жадыға жүгіну кезінде жүйенің теңдігінің азаюына әкеледі. МК-ның сыртқы жақ уақытпен байланысын ұйымдастыру.

Енгізу/шығару порттары.

Әрбір МК енгізу/шығару линиясының бірнешеуіне ие, олар көп разрядты (көбіне 8-разрядты) параллельді енгізу/шығару порттарына біріктірілген.

Порттан жалпы жағдайда асинхронды жұмыс істейтін басқару объектісі мен МК жұмыс жасауының уақытша келістігін атқаратын қондырғы рөлінде істейді.

МК жадысында әрбір енгізу/шығару портында өзінің мәліметтер регистрі адресі сәйкес келеді. Енгізу/шығару мәліметтер регистрі портына жүгіну мәліметтер жадысына жүгіну командасына сәйкес келеді. Сонымен қатар көптеген МК-де порттардың бөлек разряды биттік процессор командаларымен сұрастырылуы немесе қондарылуы мүмкін. Функциясына қарай параллельді порттардың келесі түрлері болады:

  • Бірбағытты порттар, ақпаратты тек енгізуге немесе тек шығаруға арналған

  • Екі бағытты порттар, жіберу бағыты (енгізу/шығару) МК инициализация кезінде анықталады

  • Альтернативті функциясы бар порттар (мультиплексті порттар). Бұл порттардың жекелеген линиялары МК-ның енгізілген перифериялық қондырғыларымен бірге қолданылады, мысалы, таймер, АЦТ, кезекті интерфейсті контроллерлер.

  • Бағдарламалық басқармалы схематехникалық енгізу/шығару буфері бар порттар

МК мен сыртқы қондырғылардың параллельді енгізу/шығару порттары арқылы ақпарат алмасудың үш алгаритмі бар:

  • Қарапайым бағдарламалық енгізу/шығару режимі

  • Стробалау арқылы енгізу/шығару режимі

  • Айырбастауды растайтын сигналдар жиынтығы бар енгізу/шығару режимі

Таймерлер және оқиғалар процессоры

МК көмегімен жүзеге асатын көптеген басқару есептері оларды нақты уакытта орындалуын талап етеді, яғни басқарылатын объект туралы ақпаратты жүйенің алуы, керек есептерді беру, объектіні өзгерту үшін қысқа уақыт интервалында басқарушы өзгертулерді беру деген сөз.

Нақты маштабта басқару функцияларының ОП-ға жүктеу тиімсіз, себебі есептеу үшін белгілі бір ресурс талап етеді. Сондықтан қазіргі заманғы МК таймер қолданылатын нақты уақытта жұмыс істейтін жұмысты аппараттық қолдауды пайдаланылады.

Таймер модульдері оқиғалар датчигінен келетін ақпараттың уақыты туралы мәліметті қабылдау үшін, уақыт бойынша басқарушы әсер жасау үшін керек.

8-разрядты МК таймерінің «классикалық» модулі арнайы басқару сұлбасы бар 8 немесе 16-разрядты есептегіштен тұрады.

МК схематехникасында әдетте таймерді кезектес импульс шығару режимімен сыртқы оқиғалар есептегіші режиміндеде жұмыс істеу қарастырылған. Сондықтан оны таймер/есептегіш деп атайды.

Есептеудің бағыты – тікелей, яғни кіріс импульс келгенде есептегіш құрамы инкременттеледі.

Есептегіш баптауына (настройка) кіріс сигналдың біреуін қолданады: басқарылатын бөлгіштің шығысынан импульсті кезектеу; МК кірісіне келетін сыртқы оқиғалар сигналы.

Бірінші жағдайда есептегіш таймер режимінде десе, екіншісінде – оқиғалар есептегіші режимінде жұмыс істейді дейді. Есептегіш толып кеткен жағдайда «бірлікке» толып кету триггері қондырылады, ол таймерден үзіліс рұқсат берілсе үзіліске сұраныс жасайды. Таймерде іске қосу, тоқтату есептегіштің ағымдағын жағдайын орнату немесе оқу бағдарламалық әдіспен орындалады.

Қарастырылған «классикалық» таймер/есептегіш модулі қарапайым МК-де кеңінен қолданылады. Ол уақыт интервалын өлшеуге және импульс кезектігін жасауға қолданылады. Таймер/есептегіштің кемшілігі: таймерді іске қосу, тоқтату командаларын орындау кезінде уақыт шығыны, соның кесірінен уақыт интервалын өлшеуде қате кетіп, минималды уақыт ұзақтығын шектейді; уақыт интервалын жасауда қиындықтар (уақыт белгілері), ол толық есеп коэффициентін өзгеше, бір уақытта бірнеше каналға қызмет көрсету болмайтындығы.

Бастапқы екі кемшілік жетілдірілген таймер/есептегіште жойылды, ол MCS-51 (intel) типті МК-де қосымша есептік кірісті қосумен жүргізіледі. Бұл шешім уақыт интервалын өлшеудің нақтылығын арттырады, яғни іске қосумен тоқтату аппаратты түрде орындалады. Сонымен қатар жетілдірілген таймерде кездейсоқ код арқылы толып кету кезінде есептегішті қайта жүктеу режимі бар. Ол уақыт кезектігін есептік толық коэффициент периодынан бөлек период жасауға мүмкіндік береді.

Алайда бұл жетілдірулер «классифкалық» таймердің кемшілігін жұмыстың бірканалды режимін жоймайды. Бұл аймақтағы МК-ның нақты уақыт жүйеастын жетілдіру келесі бағытта жүргізілуде: таймер/есептегіш модулінің санын арттыру. Мұндай жол MCS-51құрылымды МК шығаратын фирмаларға, сонымен қатар Mitsubishi және Hitachi компанияларының МК-не тән.

Таймерлер

Таймерер тек берілген кідірісті қамтамасыз ету үшін қолданылады деп саналады. Бірақ микроконтроллерлерде таймерлер кең шеңбердегі міндеттерді шешу үшін қолданылады.

Әдетте таймерді ауыстырып-қосу үшін процессордың тактілік импульстері қолданылады. Таймерге бастапқы мәнді жүктеп, таймердің толып кету уақытына байланысты интервалдың бітуін тіркеу арқылы, белгілі бір уақыт интервалын санауға болады.

Көп жағдайда таймердің алдында тактілік жиіліктің алдын ала бөлгішін қосады, ол ұзынырақ уақыт интервалын санау мүмкіндігі үшін керек. Бөлгіш белгілі бір тактілік импульстердің жетуінен кейін таймер құрамындағы инкрементті қамтамасыз етеді.

Егер тактілік жиілігі 10 МГц жүйеде 10мс (0.01с) кідірісті іске асыру керек болса, онда 1.4- суретте көрсетілген сұлбаны қолдануға болады. Алдымен талап етілетін бөлу коэффицентін анықтау қажет. 10 МГц тактілік жиілікте таймер толып кетуіне дейін 10000 рет қайта-қосылу керек, бұл 8-разрядты счетчикке мүмкін емес іс. Мұндай кідірісті қамтамасыз ету үшін алдын-ала бөлгішке бөлу коэффицентін анықтау керек, ол әдетте екінің дәрежесі (ол дегеніміз 1, 2, 4, 8, ...256) болып табылады. Егер бөлу коэффицентін 64 деп алсақ, онда таймер 156 рет қайта қосылғанда ол тактілік жиіліктің бөлгішінің алдына түседі 64 х 156 = 9984, бұл талап етілетін шамаға жақын. Кідірістң дәлірек шамасына NOP немесе басқа командаларды қосу арқылы қол жеткізуге болады, ол белгілі уақыт аралығын толтыру үшін қолданылады. Берілген уақыттың санағын жүргізу үшін таймерді тазартып, оның құрамын 156 шамасымен үзіліссіз салыстыруы болады.

1.4-сурет. Микроконтроллердегі таймер құрылымы

Санаудың ең нәтижелі әдісі ол таймерге 100 = 256 – 156 санын енгізіп , таймер толғаннан кейін үзіліс жалаушасы 1 болғанын күту керек. Бұл әдісті қолана отырып программалардың орындалуының мультиміндетті режимін іске асыруға болады. Таймер 10 мс санағаннан кейін тапсырма келесі тапсырмаға ауысады.

Бұл әдіс нақты уақыт жүргізетін сағат жасау үшін қолдануға ұсынылмайды. Себебі таймер қайта жүктелген кезде бөлгіштің бөлу коэффицентінің шамасы белгісіз, ал оның ішіндегісі таймердің регистріне жазылу барысында 0 ге лақтырылады, ол уақыт санағын жүргізгенде қатеге әкеліп соғады. Оның орнына таймерге үзіліссіз санақ жүргізу мүмкіндігін беру керек(сонда бөлгіш ешқашан лақтырылмайды), ал ол толғанда сағаттың счетчигінің құрамын өсіру керек. Программаға нақты уақытты білу керек болғанда ол счетчиктің ішіндегісін таңдап оны түрлендіреді, сол арқылы ол дұрыс уақыттың шамасын біледі. Мұндай әдіс IBM PC де қолданылады, онда таймердің қайта-қосылуы секундына 18,2 рет іске асады.

1.4-суретке қарап таймер сыртқы оқиғаларды санау үшін қолданылуы мүмкін екендігі байқалады, егер оны қайта-қосу үшін сыртқы сигнал пайдаланылса.

Егер микроконтроллерде екі таймер болса, онда қарапайым тахометрді іске асыруға болады – ол уақыт бірлігінде болатын оқиғалардың санағын жүргізетін санауыш (1.5- сурет). Тахометрді іске асыру программасы алдымен TMR2 санауышының құрамын 0 ге лақтырады, одан кейін TMR1 таймері жұмыс істеуі үшін белгілі бір уақыт интервалын бекітеді. Осы интервалдың өтуінен кейін TMR1 жұмыс істеп бастайды (TMR1 толып кетуіне І битке бекітіледі), сол уақытта TMR2 ағымдағы құрамын оқиды.

1.5- сурет. Тахометрді іске асыру.

Микроконтроллердегі таймерлер көп жағдайда кең-импульсті модуляция PWM (Pulse Width Modulated) сигналдарды енгізу-шығару үшін пайдаланады. PWM сигнал көп жағдайда аналогты сигналдың мәнін сандық жүйеге беру үшін немесе одан алу үшін қолданылады. Сигнал қайталанылатын пішінге ие, онда импульстің ұзақтығы берілетін аналогты шамасының мәніне пропорционал (1.6-сурет).

PWM- сигналдар көп жағдайда электроқозғалтқыштарды басқару үшін қолданылады, ол валлдың сервоприводтегі орнын немесе айлану жылдамдығын тапсырады. 1.7-суретте микроконтроллердің шығысындағы PWM сигналының генерациясының сұлбасы көрсетілген. Таймердің құрамына қарағанда «импульстің ұзақтығының» берілген мәні үлкен болса, бұл сұлбаның шығысында жоғарғы потенциалды (импульстің шыңы) ұстап тұрады. Таймердің құрамы «периодтың» берілген мәніне тең немесе одан жоғары болса, онда таймер 0 ге лақтырылады, одан соң процесс қайталанады. PWM-сигналын алудың мұндай әдісін қолданғанда процессор аз қатысады, тек импульстің периоды мен ұзақтығының керек шамасын қою қажет. Сонымен бірге импульс ұзақтығының мәні процессор арқылы кез келген уақытта шығару процессінің тоқтауысыз өзгеріледі.

1.6-сурет. Кең-импульсті PWM сигналының мадуляциясы.

1.7-суретте. PWM сигналының генераторының сұлбасы

Егер белгілі бір жиіліктегі тікбұрышты импульстік сигналды құрастыру керек болса, онда жаңағы сұлбаны қолдануға болады, ондағы периодты импульс ұзындығынан екі есеге арттыру керек.

PWM-сигналының импульсінің ұзындығын өлшеу 1.8-суретінде келтірілген сұлба арқылы іске асады. Бұл сұлбада таймердің RESET кірісіне лақтыру сигналы, кіріс сигналы төмен деңгейде болғанша беріледі. Кіріс сигналының жоғары деңгейге түскенде таймер іске қосылады, және оның құрамы импульс ұзақтығының регистріне келіп түседі. Импульстің бітуімен, кірісте қайта төмен деңгей орнағанда, таймердің құрамы импульс ұзақтығының регистрінде сақталады, ал таймер келесі импульс келгенше 0 болып лақтырылады. Оңайлық үшін сұлбада кейбір кідіріс элементтері көрсетілмеген, бұл элементтер таймер мәні ұзақтық регистріне оның лақтырылуына дейін жазылатындығына кепілдік береді.

Тактілі сигнал

Кіруші PWM-сигналы

Импульс ұзақтығы

Мәліметтер шинасы

1.8-суреті. Импульс ұзақтығын өлшеу сұлбасы.

Арифметикалық-логикалық құрылғы

Процессордың арифметикалық-логикалық құрылғысы (АЛҚ) программадағы барлық математикалық операцияларды орындау үшін қлданылады. Бұл операциялар өзіне қосу, азайту, логикалық ЖӘНЕ, логикалық НЕМЕСЕ, регистрдің құрамын жылжыту және алынған нәтижге қарап жағдай регистрдің құрамын орнату. АЛҚ командаларды немесе мәліметтерді оқығанда немесе жазғанда қолданылмайды, ол тек мәліметтерді өңдеу үшін қызмет етеді.

АЛҚ-ны аппаратты блок ретінде елестетуге болады, ол мәліметтердің(операндтар) екі сөзін өңдеп алынған нәтижені сақтайды (1.9- сурет). АЛҚ-ға операндтар қалай енгізіледі және нәтиженің қайда түсетіндігі- микроконтроллердің нақты түрінен тәуелді. Процессорлардың әртүрлі типтері мен командалар жүйесінің арасындағы негізгі айырмашылықтарының бірі осы болады. Кейбір микроконтроллерлер аккумулятордың регитрінен бір операндты таңдайды да нәтижені сол аккумуляторде сақтайды. Басқа микроконтроллерлер операндтардың әртүрлі көздерін қолдануға және олардың орналасу орындарын қолдануға мүмкіндік береді.

1.9-сурет. Структура АЛУ

АЛҚ негізінен тек оң бүтін сандармен ғана жұмыс істейді. Бірақ азайту амалы орындалғанда теріс сандар пайда болады, егер азайтқыш азайтындыдан үлкен болса. Теріс сандарды бейнелеу үшін қосымша код пайдаланылады(«екіге дейін толтыру»). Оны кез келген АЛҚ мен жұмыс жасау кезінде ескеру қажет.

Microchip PIC контроллерінің мысалында азайту амалының қалай орындалатындығын қарастырайық. Бір саннан екінші саннан азайтқанша, теріс санның қосу амалы орындалады:

А - В = А + (-В),

Мұндағы -В теріс саны қосымша кодта көрсетіледі. Екілік теріс санның қосымша кодын алу үшін, әр биттің мәнін инвреттеп, одан кейін бірді қосу қажет:

-В = (В ^ 0x00FF) + 1.

Егер теріс сандардың қосымша кодқа түрлену сызбасы бар болса, онда азайту амалының сызбасын қолданудың керегі жоқ. АЛҚ -ның құрамында сумматор болса, ол азайту амалын келесідей ауыстыру арқылы іске асырады:

А-В=А+(В ^ 0x00FF) + 1.

Егер қосу және азайту кезінде қойылатын орын ауыстыру жалаушасын ескерсек, бұл азайту амалын орындау әдісі алынған нәтиженің анализі кезінде қиындық тудыруы мүмкін.

Сумматор және азайтқыштары бар «Классикалық» АЛҚ-ларда көптеп «орнын ауыстыру-заемы» жалпы жалаушасы қолданылады. Бұл жалауша 1 болып келесі жағдайда орнатылады, қосу амалы 0x00FF -тен үлкен болса немесе азайту амалы нөлден төмен болса. Екі жағдайда да жалауша, 8 үлкен биттің нәтижелерінің мәні, 8 кіші биттерге жасалған операциялардың мәніне тікелей тәуелділігін көрсетеді.

Егер АЛҚ –да азайтқыш болмаса(жоғарыда көрсетілген мысалда көрсетілгендей), онда орын ауыстыру жалаушасы алу немесе қосу кезінде бекітіледі, бірақ ол басқа мәнге ие. Оны түсіу үшін, бір-екі мысалды қарастырайық. Бірінші мысалда бір сан екінші саннан азайтылатындығын көрсетеді, онда екінші сан үлкенірек:

0x0077 - 0x0055 = 0x0077 + (-0x0055) =

= 0x0077 + (0x0055 ^ 0x00FF) +  1   =

= 0x0077 + 0х00АА +  1  =

= 0x0122

Нәтижесі 0xFF тен үлкенірек болады, ол орын ауыстыру жалаушасын үлкен байттағы(орнын ауыстыру-заемы бұл жағдайда 1-ге тең емес) кіші битті 1 ге ауыстырады. Кіші 8 бит 0х22 ге тең- бұл мән қабылдауышқа нәтиже ретінде жазылады.

Келесі мысал үлкен сан кіші саннан азайтылатындығын көрсетеді:

0x0055 - 0x0077 = 0x0055 + (-0x0077) =

= 0x0055 + (0x0077 ^ 0x00FF) +  1   =

= 0x0055 + 0x0088 +  1   =

= 0x00DE

Бұл мысалда кіші 8 разрядтар қосымша кодта 22 санын көрсетеді, ал үлкен байтқа орын ауыстыру биті 0-ге тең. «классикалық» АЛҚ да бұл мысал үшін де нәтиженің мәні 0xDE -ға тең, бірақ орнын ауыстыру-заемы жалаушасы 1 ге орнатылады.

Азайтқышты қолданбайтын АЛҚ-да азайту нәтижесі оң болғанда орын ауыстыру жалаушасы 1-ге орнатылады, және нәтиже теріс болғанда ол 0-ге лақтырылады. Сондықтан үлкен байтқа құрылатын орын ауыстыру битін бұл жағдайда «орын ауыстыру-белгі» жалаушасы деп атауға болатын еді, себебі азайту амалы орындалғанда ол нәтиже белгісін көрсетеді.

Есте сақтайтын жайт, бір әулеттен шыққан әр түрлі микроконтроллерлердің АЛҚ-лары көп жағдайда бірдей болып келеді. Кейбір әулеттерде АЛҚ белгілі бір операцияларды іске асырады, мысалы көбейту амалы, ол басқа әулеттердің микроконтроллерлерімен орындалмайды. Бір әулеттің микроконтроллерлері қамтамасыз ететін қосымша функциялар, ол перефериялық құрылғылар сияқты қосымша аппараттық қордың құрылымына келіп қосылуының арқасында жүзеге асады. Онымен бірге АЛҚ-ның құрылымы мен функциялары сақталады, себебі микроконтроллерге қосылатын қосымша құрылғылар өздерінің регистрлерін пайдаланады, олар жағдай регистрі мен акуммулятормен байланыспаған. Оның айқын дәлелі болып Motorola фирмасы шығаратын 8-разрядты микроконтроллер әулетінен шыққан 68НС05 түрі болып табылады.

АЛҚ-ның күрделілігі бүкіл микроконтроллердің күрделі болуын анықтайды. АЛҚ-ны жасап шығару үшін бір топ әзірлеушілер жұмыс істейді, ол микропроцессор немесе микроконтроллердің қалған бөлігімен жұмыс жасайтын топтың құрамы жағынан кем емес(одан да үлкен болуы мүмкін, егер қйындығы жағынан персоналды компьютердің процессоры сияқты болса). АЛҚ ның жұмыс істеуіне қарай, микроконтроллердің құрамына кіретін процессордың да жұмыс істеуі тәуелді, ол дегеніміз бүкіл микроконтроллердің жұмысы да тәуелді.

Күзеттiк таймерлер

Қоршаған құрылғылар тарататын электрлік ақаулар, терiс адрес бойынша микроконтроллердiң үндеуi шақырады, оның іс-әрекеті одан кейiн болжамсыз болады (микроконтроллер «бәрін қиратады»). Мұндай жағдайларды қадағалап отыру үшін күзеттiк таймерлерді микроконтроллердiң құрамына жиi қосады.

Белгілі бір уақыт аралығында (әдетте ондаған миллисекундтерден бiрнеше секундтерге дейiн ) оның ішіндегісі жаңартылмаса, бұл құрылғы микроконтроллердiң лақтырылуын шақырады. Егер бағдарламалық санауышты iшiндегiнiң өзгерiсi бағдарламаның берілгенiне сәйкестенбесе, онда күзеттiк таймерiнiң атқарылған түрлендiрулерi іске аспайды. Осы жағдайда микроконтроллердiң лақтыруын күзеттiк таймер орындайды, және оны бастапқы күйiне қайтып алып келеді.

Көп өндірушiлер өз қосымшаларында күзеттiк таймерлердi пайдаланбайды, себебі электрлік ақаулардың ықпалымен күресу үшін қолданудың қажеті жоқ деп ойлайды, мысалы, микроконтроллерді трансформатордың жанында электронды-сәулелі дисплейге орнатқанда, немесе автокөліктегі оталу катушкасының жанында. Электрикалық ақаулардың пайда болу қаупі қазiргi электроникада болмашы, бiр жағынан биiгiрек атап өтiлген жағдайлардағы ұқсас болып келеді.

Бағдарламалық мәселелердi жасыру үшiн күзеттiк таймердi пайдаланылуға ұсынылмайды. Бiр жағынан бұл таймер программалық қателiктердiң ықтималдығын азайта алады, дегенмен ол барлық пайда болуы мүмкiн себептерден сақтауы екiталай. Аппаратты құралдардың арқасында программалық ақаулардың пайда болуының алдын алудың орнына, программалық қамсыздандыруды әр түрлі жағдайларда мұқият тексеру дұрысырақ болып табылады.

Үзілу(прерывание)

Көп қолданушылардың көзқарасы бойынша үзілу - бұл аппаратты қамтамасыз етудiң бөлiгі және оны өз бетінше қалдыру керек деп ойлайды, себебі оларды қолдану үзілуді өңдеу программасын құрастыру үшін процессор жөнінде асқан өнер-бiлiмi қажет болғаны дұрыс деп саналады. Басқа жағдайда жүйе үзілу пайда болғанда «ұйықтайды» немесе «бәрін қиратады». Мұндай сезiм әдетте дербес компьютер үшiн үзілумен айналысқаннан кейін ,үзілуді өңдегішті жасауды қйындататын бірқатар ерекшеліктері бар. Бұл мәселелердің көбісі микроконтроллерлердiң негізінде жүзеге асырылған құрылғыда орын алмайды. Үзулердi берілген жабдықта қолдану оны құрастыру мен қолдануды жеңiлдете алады.

Компьютерлік жүйеде үзілу – Бұл ішкі программаның арнайы іске қосылуы («үзілуді өңдеуші» немесе «үзілуге қызмет көрсету программасы» деп аталады), ол аппаратураның сигналымен шақырылады. Бұл ішкі программаның іске асу уақытында ағымдағы программаның орындалуы тоқтатылады. «Үзуге сауал» (interrupt request ) терминінің қолдану себебі, кей кезде программа үзілуді растаудан және үзілуді өңдеушіні дереу орындаудан бас тартады(2.19-сурет).

Компьютерлiк жүйедегі үзілу күнделiктi өмiрдегі үзулерге ұқсас. Мұндай үзілудің классикалық мысалы – теледидар көру уақытында телефонның қоңырау соғуы. Телефонның қоңырау шалу уақытында, үш түрлі әрекет етуге болады. Бiрiншi — қоңырауды елемеу. Екiншi — қоңырауға жауап қайтару, бiрақ «бос уақыт болғанда жауап қайтарылатындығы» туралы айту және соңынан қайта телефон соғу. Үшiншi — ағымдағы iс кейiнге қалдырылып, қоңырауға жауап қайтару. Компьютерлiк жүйеде де сол сияқты үш түрлі жауап қайтаруға болады, ол сыртқы аппаратты сауалға реакция ретiнде қолданлуы мүмкін.

Бiрiншi мүмкiн болатын жауап — «ағымдағы тапсырманың орындалуы аяқталмағанынша, үзілуге жауап бермеу» -үзудiң сауалына қызмет көрсетудi болдырмау (жасыру ) жолмен жүзеге асырылады. Мiндеттiң аяқтауынан кейiн екі жағдайдың біреуі болуы мүмкiн:масканың лақтырылуы және қызмет көрсетуге рұқсат беру, ол үзуді өңдеушіні шақыруға алып келеді, немесе («поллинг») биттердiң мәнiн талдау, үзу сауалдарының келуін көрсететді және үзу өңдеушісін шақыруынсыз қызмет көрсету бағдарламасының тiкелей орындалуы. Мұндай үзулердi өңдеудiң әдiсi негiзгi программаның орындалу уақытын қамтамасыз ету керек болғанда қолданылады, себебі қажет интерфейстің іске асуын кез-келген үзіліс бұза алады.

1.10-сурет. Үзілудің орындалуы

Үзулердi ұзақ уақыт жасыру ұсынылмайды себебі, бұл уақыт ағымында бiрнеше оқиғалардың қабаттасуы болуы мүмкін, ол үзілуді шақырады және ол жағдайда бір ғана оқиға танылады. Жасырудың ықтимал болатын ұзақтығы микроконтроллердiң нақты қолданылуына бағынышты, оның түрі және осындай жағдайлардың еріп жүру жиілігі. Үзілуді шақыратын, күтілетін ерген оқиғалардың ең аз периодының жартысынан асатын уақыттан үзілуді тыйым салуға ұсынылмайды.

Үзу өңдеушiсi келесi әрекеттердiң тiзбегін қамтамасыздандырады:

1.контекст регистрлерінің құрамын сақтау.

2.сауалды шақыртатын құрылғыларды және үзілу контроллерін лақтыру.

3. мәліметерді өңдеу.

4. контекст регистрлерінің құрамын қалпына келтiру.

5. үзілген бағдарламаға қайтып келу.

Контекстiң регистрлерi - бұл негiзгi программаның орындалу күйін анықтайтын регистрлер. әдетте олардың қатарына бағдарламалық санауыш, күй регистрлері және аккумуляторлар жатады. Процессордың басқа регистрлерi, мысалға индекстiк регистрлер, үзулердi өңдеудiң процесiнде қолданылуы мүмкін, сондықтан олардың құрамы сақталуы керек. қалған Басқа регистрлер нақты микроконтроллер және оның қолданылуы үшін өзгеше болып табылады.

Бастапқы қалпына лақтырылғаннан кейін үзілу контроллері келесі сауалды қабылдауға дайын, ал үзілуді шақыратын құрылғы, нақты себептер пайда болғанда сауалды жіберуге дайын . Егер үзудiң жаңа сауалы қабылданса, онда процессордың үзулердi жасырудың регистрi үзулердi өңдеуіне жол бермейдi,бірақ үзулердi күйдiң регистрi бұл сауалды жазып қояды, және ол өзіне қызмет көрсетудi күтед. Ағымдағы үзілудің өңделуі аяқталғаннан кейін үзілу маскасы лақтырылады, және жаңадан түскен сауал өңделуге жіберіледі.

Салынған үзулер стектері жоқ микроконтроллерлердiң кейбiр түрлерiне iске асыру үшiн күрделi. Бұл үзулер стектің толып кетуімен байланысты мәселелерді шақыруы мүмкін. Микроконтроллерлердің стектік жадысы мен мәліметер жадысының көлемі шекті болғандықтан стектің толып кетуі көкейтесті мәселе болып отыр: салынған үзулердің тізбектеліп келуі стекке шамадан тыс көп мәліметтердің келіп орналасуына алып келуі мүмкін.

Теледидармен көрсетілген екінші мысалда үзілудің сауалына тез арада жауап беруге болатындығы, қажет мәліметтерді қабылдап , ағымдаы тапсырманы шешкен соң оларды қолданылатындығы көрсетіледі. Микроконтроллерлерде бұл түскен мәліметтерді жады массивінде сақтап одан кейін оны өңдеу арқылы іске асады, ол бастапқы программаның орындалуы аяқталғаннан кейін болады. Мұндай қызмет көрсетудiң тәсiлi мына екі іс- әрекеттің арасындағы жақсы ымыра болып табылады:үзілуді толық әрі дереу өңделуі,ол ұзақ уақыт алуы мүмкін, және үзуді елемеу, ол үзуді шақырған оқиға туралы ақпапаттың жоғалуына әкелуі мүмкін.

Контекст регистрлерін қалпына келтiру және қайтару командасының орындалуы процессорды үзуден ол үзудiң пайда болуына дейiн табылған күйге қайтарады.

Әр түрлі регистрлердің құрамы үзілуді өңдегенде қандай күйге түсетіндігін қарастырайық. Қалып-күй регистрінің құрамы әдетте үзілуді өңдегенге дейін программа санауышының құрамымен автоматты түрде бірге сақталып отырады. Бұл қайта жіберу командаларының көмегімен программалық жабдықтармен жадыда сақталуынан босатады, одан кейін бастапқы программаға қайтқан кезде қалпына келеді. Бірақ мұндай автоматты сақталу микроконтроллерлердің барлық түрінде іске аспайды, сондықтан үзілуді өңдеуді ұйымдастыру жұмыстарына көп көңіл бөлу керек.

Егер қалып-күй регитрлерінің құрамы үзілуді өңдегіштің орындалуының алдында сақталса, онда қайтару командасы арқылы оның автоматты қалпына келу процесі орын алады.

Егер процессордың басқа регистрлерінің құрамы үзілуді өңдеген кезде өзгерсе, онда ол да негізгі программаға алдын-ала қайтарумен қалпына келтірілмей тұрып және өзгермей тұрып оны сақтау қажет. Әдетте процессордың барлық регистрлерін сақтаған абзал, ол тараптауға келмейтін айтып келмейтін қателердің алдын алуға ерік береді.

Программалық санауышқа енгізілеін адрес үзілуді өңдегішке өткенде «үзілу векторы» деп аталады. Векторлардың бiрнеше түрлерi бар. Программалық санауышқа енгізілеін адрес микроконтроллердің іске қосылуы кезінде (reset) «лақтыру векторы» деп аталады. Әр түрлі үзілулерге түрлі векторлар берілуі мүмкн, ол қызмет көрсету программасын үзілудің себебін анықтаудан босатады. Әр түрлі үзілулердің бір векторды қолдану әдетте микроконтроллермен жұмыс кезінде қиындық тудырмады, себебі көп жағдайда микроконтроллер тек бір ғана программаны орындайды. Осы қасиет микроконтроллерді персональді компьютерден ажыратады, оны қолдану барысында үзілулердің жаңа көздері қосылуы мүмкін. Аппаратты бөлігі жақсы белгілі микроконтроллерде үзілу векторларының қатарласып қолданылуы ешқандай қиындық тудырмауы керек.