Дипломдық жұмыстың мақсаты avr микроконтроллерін


 AVR микроконтроллерлерінің құрылым ерекшеліктері



жүктеу 5.01 Kb.
Pdf просмотр
бет2/7
Дата30.04.2017
өлшемі5.01 Kb.
түріДиплом
1   2   3   4   5   6   7

1.2 AVR микроконтроллерлерінің құрылым ерекшеліктері 
Atmel  AVR  жинамы  8  разрядты  жалпы  ядро  және  әр  түрлі  шеткі 
құрылғылар  негізінде  жұмыс  жасайды.  Микроконтроллер  құраушының  өз 
алдына қойған типтік мәселелерді шешуі үшін мүмкіндіктер береді. 
Atmel AVR микроконтроллерінің ерекшеліктері: 
Өнімділік  тәртібі  1  MIPS/МГц.  MIPS  (Millions  of  Instructions  Per 
Second)  —  процессор  өнімділігінің  ең  көне  әрі  формальді  сипаттамасы, 
себебі  командалар  жиынтығы  процессерлардың  түрлеріне  байланысты 
ерекшелене  отырып,  жұмыстың  тиімді  болуын  қарастырады.  Оған 
қарамастан,  командалары  жоқ  қарапайым  8-  разрядтық  есептеу  жүйелеріне 
үлкен  сандармен  операцияларда,  жылжымалы  нүкте  және  массив 
деректерімен  ерекшелену  жұмыс  өнімділігін  салыстыруда  негізгі  көрсеткіш 
болып  табылады.  AVR  есептеу  ядросы  16-  разрядтық  80286  процессорына 
қарағанда жұмыс жасау принциптері бойынша озық. 
Дамытылған  RISC-архитектурасы.  RISC  (Reduced  Instruction  Set 
Computing) концепциясы өз кезегінде тұтас және тез орындалатын нұсқаулық 
командала  жинағынан  тұратын  әрі  күрделі  операциялық  жүйелерді 
орындайтын арнайы бағдарламаларды ұсынады. 
RISC-архитектурасы  ядро  құрылғысын  жеңілдетеді  (AVR    типтік 
ядросы ПК процессорлық мыңдаған миллион транзистріне  қарағанда 32 мың 
транзистрдан  ғана  тұрады)  және  жұмысын  жетелдетеді  және  типтік 
құрылымның орындалуы 1 такта орындалады. 

24 
 
AVR-да  қос  сатылы  конвейер  бар  және  команда  бір  тактісінде 
орындалады  сонымен  қатар  келесі  такті  тағайындауға  мүмкіндіктер  береді. 
Intel-архитектурасымен 
салыстырғанда 
 
классикалық 
AVR 
микроконтроллерінде  көбейту/бөлу  операциялары  жоқ,  дегенімен  Mega  
жинамында көбейту операциясы бар. 
Жекеленген  желінің  жады  командалары  және  мәлемет.  AVR  басқа 
микроконтроллер  сияқты  гарвардтық  архитектура  негізінде,бағдарламаның 
жады аймағы мен мәліметтері бөлек орналасады. 
Жекеленген  желілерде  жұмысты  жеделдететін  арнайы  бағдарламалар 
мен мәліметтер мүмкіндіктер жасайды. 
32  жалпы  қызмет  регистрі  бар.  Atmel  компаниясы  ең  алғаш  болып 
есептеу  ядросының  классикалық  модельінен  бас  тартып,  командалардың 
орындалуы  АЛУ  және  жалпы  жадыдағы  есте  сақтау  ұяшықтарымен  жүзеге 
асатындай жасалды. 
Жалпы  қызмет  регистрлері  санының  көп  болуы  глобальді  және 
локальді айнымалылардың орналасуынан бас тартуға мүмкіндік береді.  
Flash-жады  (10 000  өшіру/жазу  цикл)  дайын  схемада  тізбекті  канал 
арқыла бағдарламалауға толықтай жағдай жасалған. 
Энергияға  тәуелді  микроконтроллер  бөлігі,  яғни  жады  (EEPROM,  100 
000 өшіру/жазу цикл) мәліметтерді сақтау және бағдарламарды жазу немесе 
SPI-интерфейсі арқылы жүктеу мүмкіндігі. 
Аналогті  сигналдарды  қайта  өңдеуге  арналған  құрылғы:  аналогты 
компаратор және көпканалды 10-разрядты АЦП.  
 Автоматты  түрде  белгілі  уақыт  аралығында  контроллер  жұмысын 
қадағалап отыру үшін таймер қолданады. 
Мәлімет амасу және шеткі құрылғылардың жұмысын бақылап отыруға 
тізбекті интерфейстері SPI, TWI (1
2
С) және UART (USART) пайдаланады. 
Бағдарламаның  орындалуы  0  Гц-тен  16-20  МГц  тактті  жиілігінде 
орындалады. 
Кернеу диапазоны 2,7-тен 5,5 В (дербес жағдайда 1,8 немесе 6,0 В). 
Бағдарлама  үшін  ішкіжүйелік  қайта  жазушы  Flash  жады  және 
статикалық  деректерге  арналған  EEPROM  жадысы  орналасқан.    Тактілік 
жиілігі 16 МГц-ке дейін жетеді.  
Барлық  AVR  микроконтроллерінде    Flash-жады  бар,  ол  1-ден  256 
кбайтка  дейін  әртүрлі  өлшемді  болады.  Ең  басты  ерекшелігі  –  электрлі 
бағдарламалаудың  қайта  құрылуы.  Бірнеше  рет  ақпаратты  өшіріп,  қайта 
бағдарламалап жазуға мүмкіндік береді.   
Деректер  жады  үш  бөліктен  тұрады:  энергияға  тәуелсіз  жады 
(EEPROM), регистрлік жады, оперативті жады (ОЗУ). 
Регистрлік  жады  32  жалпы  қызмет,  қызметтік  кіріс/шығыс 
регистрлерден құрама файл регистрлерден тұрады.  
EEPROM жады – деректерді ұзақ уақыт сақтау және микроконтроллер 
жүйесінің  қызметін  өзгертіп  қолдану  үшін  қпайдаланылады.  Энергияға 

25 
 
тәуелсіз  EEPROM  64  байттан  4  кбайтка  болады.    Жады  аралықтағы 
деректерді  сақтауға ыңғайлы. 
Ішкі  жедел  статикалық  жады  Static  RAM  (SRAM)  байттық  форматта 
болады  және  деректерді  жедел  сақтауда  қолданылады.  RAM-ға  жазу  /оқуға 
шектеу болмайды және осы қасиетімен ерекшеленеді.  
Микроконтроллердің  ең  маңызды  бөлігі  –  үзіліс  жүйесі.  Барлық  AVR 
микроконтроллерлерде 
көпдеңгейлі 
үзіліс 
жүйесі 
болады. 
Үзіліс 
бағдарламаның  жұмысы  кезінде  сыртқы  және  ішкі  жағдайды  бақылау  үшін 
көпшілік тапсырманы орындайды. 
Аналогты компаратор  микроконтроллердің  шығысындағы кернеулерді 
салыстырады.  Салыстыру  нәтежиесінде  бағдарламадан  қаралған  мән 
шығады. Аналогты компаратор соңғы нарыққа шыққан барлық AVR – де бар. 
Аналогты-цифрлық түрлендіргіш кірісіне берілген бастапқы кернеудің 
сандық  мәнін  алу  үшін  қызмет  жасайды.  Нәтежиесі  аналогты  цифрлық 
түрлендіргіштің деректер регистріне сақталып жазылады.  
Ретті  перифериялық  үшсымды  SPI  интерфейсі  екі  құрылғы  арасында 
ақпаратпен  алмасуды  ұйымдастыруға  арналған.  Оның  көмегімен  аналогты 
цифрлық  түрлендіргіш,  цифрлық  патенциометр,  Флеш-ПЗУ,  цифрлы 
аналогтық  түрлендіргіш  және  әртүрлі  құрылғылар  мен  микроконтроллердің  
арасындағы  ақпарат  алмасу  орындалады.  Бұл  интерфейс  негізінде 
микроконтроллерді бағдарламалау іске асады. 
JTAG  интерфейсі  жоғары  дәрежелі  мамандар  шығарған  және 
электронды  компоненттерді  тексеру  үшін  құрастырылған  болатын. 
Төртсымды  JTAG  интерфейсі  микроконтроллерді  бағдарлауда  және 
ішкіжүйелік қалыптауда қолданылады. 
1.2.1 AVR микроконтроллерлерінің жинамдары 
2002  жылы  Atmel  фирмасы  AVR  ядро  негізінде  8-разрядты 
микроконтроллер  нарыққа  шығарды.  Сол  кезден  бастап,  AVR  жинамы  3 
түрге бөлінеді: Classic, Tiny және Mega. Микроконтроллердің Classic жинамы 
қазіргі кезде шығарылмайды [21]. 
Стандартты жинамдар: 
      
tinyAVR (ATtinyxxx): 
Флеш-жады  16 Кб-ке дейін; SRAM  512 б-ке дейін; EEPROM  512 б-ке 
дейін; 
желілерінің саны енгізу шығару құрылғыларында 4-18 (жалпы шығару саны 
6-32); 
Шеткі құрылғылар саны шектеулі. 
 
megaAVR (ATmegaxxx): 
Флеш-жады  256 Кб-ке дейін; SRAM  16 Кб-ке дейін; EEPROM  4 Кб-ке 
дейін; 

26 
 
желілерінің  саны  енгізу  шығару  құрылғыларында   23-86  (жалпы 
шығару саны 28-100); 
Көбейту аппараты; 
Кеңейтілген командалар және шеткі құрылғылар.  
 
XMEGA AVR (ATxmegaxxx): 
Флеш-жады 384 Кб-ке дейін; SRAM  32 Кб-ке дейін; EEPROM  4 Кб-ке 
дейін; 
4 арналы  DMA-контроллер; 
Оқиғаларды реттейтін инновациялық жүйе. 
Ереже бойынша префикстан кейінгі сан Флеш-жады ( КБ) көлемін және 
модификация  контроллерін  білдіреді.  Нақтырақ  айтсақ,  2-нің  максимал 
дәрежесі, префикстан кейінгі жады көлемін білдіреді, ал қалған сандар тізбегі 
модификация  (мысалы,  ATmega128 

 
жады  көлемі  128  КБ;  ATmega168 

 
жады  көлемі  16  КБ,  модификация  8;  ATtiny44  және    ATtiny45 

жады  4  КБ, 
модификациялары сәйкесінше  4 және 5). 
 Стандартты  жинамдар  негізінде  нақты  мәселені  шешуге  арналған 
микроконтроллерлер шығарылады: 
Ендірілген интерфейстерімен USB, CAN, LCD контроллерімен; 
Ендірілген радиоқабылдағыш  

ATAхxxx, ATAMxxx сериялары; 
Электр құрылғыларын басқару үшін

 AT90PWMxxxx сериясы;  
Автомашина электроникасын жасауға арналған сериялар; 
Жарықтандыру техникасына арналған сериялар. 
Бұл  аталған  микроконтроллерлерден  бөлек  ATMEL  кампаниясы  
AVR32  жинамын,  яғни  AT32UC3  (такті  жиілігі  66  МГц)  және  AT32AP7000 
(такті жиілігі 150 МГц). 
Контроллер нұсқалары 
AT(mega/tiny)xxx 

 
базалық нұсқасы. 
ATxxxL 

 аз кернеумен жұмыс жасайтын  (2,7 В) контроллер. 
ATxxxV 

 
аз кернеумен жұмыс жасайтын (1,8 В) контроллер. 
ATxxxP 

  көп  энергия  қажет  етпейтін  (100  нА-на  Power-down  режимінде) 
контроллер 
ATxxxA 

 
  көп ток қажет етпейтін, яғни такті жиілік  диапазоны және кернеу 
көзіне жеткілікті контроллер 
Модель  номеріне    индекс  жазылады  және  ол  орындалу  нұсқасын 
көрсетеді.  8,10,16,20  индекс  алдындағы  сандар  жұмыс  жасауға  қажетті 
максималды жиілікті білдіреді. 
Жазылуындағы бірінші әріп корпус нұсқасын көрінеді: 
АТxxx-P 

 
 DIP корпусі 
АТxxx-A 

 
 TQFP корпусі 
АТxxx-J 

 
PLCC корпусі 
АТxxx-M 

 
MLF корпусі 
АТxxx-MA 

 
UDFN/USON корпусі 

27 
 
АТxxx-C  

 CBGA корпусі 
АТxxx-CK

 
LGA корпусі 
АТxxx-S 

 
EIAJ SOIC корпусі 
АТxxx-SS 

 
JEDEC SOIC корпусі 
АТxxx-T

 
TSOP корпусі 
АТxxx-TS 

 
SOT-23 (ATtiny4/5/9/10) корпусі 
АТxxx-X 

 
TSSOP корпусі 
Келесі  әріп  температура  диапазонын  және  дайындалу  ерекшеліктері 
көрсетеді: 
АТxxx-xC 

 
 температура диапазоны (0 °C — 70 °C) 
АТxxx-xA 

 температура диапазоны −20 °C — +85 °C 
АТxxx-xI 

 
индустриальді температура диапазоны (-40 °C 

  +85 °C) 
АТxxx-xU 

 
 индустриальді температура диапазоны  (-40 °C 

 
 +85 °C)  
АТxxx-xH 

 
 индустриальді температура диапазоны  (-40 °C 

 
+85 °C) 
АТxxx-xN 

 
 кеңейтілген температура диапазоны  (-40 °C 

  +105 °C)  
АТxxx-xF 

 
кеңейтілген температура диапазоны  (40 °C 

  +125 °C) 
АТxxx-xZ 

 
автомобильді температура диапазоны  (-40 °C 

 
+125 °C) 
АТxxx-xD 

 
кеңейтілген автомобильді температура диапазоны (-40 °C 

 
+150 °C) 
 
1.1 Сурет – АVR микроконтроллерлері  
 
AVR микроконтроллерлерінің жинамдарын сипаттай келе, алдыға 
қойған мақсатты орныдау үшін ATmega128 микроконтроллері таңдалып 
алынды. 

28 
 
 1.2.2 Atmega128 микроконтроллерін сипаттау 
ATmega128 микроконтроллер ерекшеліктері: 
Жоғары  өнімді  және  жеткілікті  қуатты  8-разрядты    AVR-
микроконтроллер. 
Дамытылған RISC-архитектурасы: 
133  қуатты  нұсқаулық  және  көбісі  бір  машина  тактісінде  орналасды; 
32  8-  разрядты  жалпы  қызмет регистрі  және  шеткі  құрылғыларды  басқаруға 
арналған регистрлер; 
статикалық режимде жұмыс істейді; 
  16  МГц  тактті  жиелігінде  және  1  секундта  16  млн  операция 
орындалады; 
Көбейту құрылғысы бар және 2 машина тактіде орындалады; 
Энергия тәуелді бағдарлама және мәліметтер  жадысы; 
Жүйе ішінде 128 кбайт  флэш-жады: 1000 жазу/өшіру циклі; 
Бағдарламауға байланысты бөлігі қорғалаған; 
Жүйе ішіндегі енгізілген әрі жүктелген  бағдарлама негізінде орындалу; 
Екі операция қатар орындалады: жазу кезінде оқу мүмкіндігі бар; 
Тозу тұрақтылық 4 кбайт ЭСППЗУ: 100000 жазу/өшіру циклі; 
Енгізілген 
статикалық 
ОЗУ 
көлемі 

кбайт; 
           Опциялық 
мүмкіндігі 
сыртқы 
жады 
өлшемі 
64 
кбайт-қа 
дейін;  Бағдарлама кодын қорғау мүмкіндігі; 
Жүйе 
ішіндегі 
бағдарламалау 
үшін 
SPI 
интерфесі 
бар. 
            JTAG интерфесі (IEEE 1149.1 стандартымен үйлесімділік): 
IEEE  1149.1  стандартымен  үйлесімділік    сипаттау  үшін  шекаралық 
тексеру; 
Енгізілген реттеуге кеңейтілген қолдау функциясы
Флеш-жадыға  бағдарламалау,  ЭСППЗУ,  конфигурация  биті  және  JTAG 
интерфейсі арқылы қорғау.   
Шеткі құрылғыларды қолдануда ереушеліктері:  
Екі  8-  разрядты  таймер-счетчик  бар  және  таймерлерде  салыстыру 
режимі 
бар; 
 Екі  кеңейтілген  16-разрядты  таймер-счетчик  және  салыстыру,  тоқтату 
режимдері бар; 
Бөлек генератор арқылы жұмыс істейтін   уақыт счетчигі;     
  Екі 8-разрядты кең импульсті модулятор; 
Кең импульсті модулятор  кеңейтілген 2-ден 16 разрядпен бағдарланады; 
Шығу модулятор салыстыру; 
 8 мультиплексирлік   10-разрядты аналогты-цифрлық түрлендіргіштер; 
8 симметриялы емес арна; 
7 дифференциялды арна; 
2 дифференцияды арна таңдалынып алынған күшейткіштерімен 1x, 10x және 
200x; 

29 
 
Байттық форматта екі өткізгішті тізбекті интерфейс арқылы жіберу; 
УСАПП кезегі бойынша бағдарланады; 
Тізбекті SPI интерфейс;  
Енгізілген аналогті компаратор; 
Енгізілген генератор бар бағдарланатын таймер. 
Микроконтроллердің арнайы мүмкіндіктері: 
Тоқ көзіне қосқанда немесе кернеу мөлшері азайғанда қалпына келтіру орын 
алады; 
Енгізілген RC-генератор; 
Сыртқы және ішкі үзілістер. 
Такті жиілікті таңдау мүмкіндігі: 
Енгізі-шығару және корпустар бойынша: 
53 – енгізу/шығару бағдарлануы; 
64–шығару. корпусі TQFP. 
Кернеу жұмысы бойынша: 
ATmega128L 2.7 - 5.5В ; 
ATmega128 4.5 - 5.5В . 
Жұмыс жасау өнімділігі бойынша: 
 ATmega128L 0 - 8 МГц ; 
ATmega128  0 - 16 МГц.  
ATmega128 – аз қуатты және сегіз 8-разрядты кеңейтілген AVR RISC – 
архитектурасы  негізіндегі  микроконтроллер.  Бір  машиналық  цикл  ішіндегі 
ATmega128-дің  өнімділігі  1млн.  операция  секунд/МГц-ке  жетеді.  Бұл 
жобалаушыға тез әрекеттілік қатынасында және энергияны пайдалану жүйені 
оптимизациялауға  мүмкіндік  береді.  Төменде  1.2  суреттен  ATmega128-дің 
шығыстарын көруге болады[11]. 
 
Сурет 1.2 –ATmega128 кірістері 

30 
 
AVR ядросында 32 жалпы қызмет регистр бар. Барлық сегіз разрядты 
32  регистр  арифметикалы-логикалық  құрылғыға  қосылған.  Ол  екі  түрлі 
регистрді  бір  нұсқауда  көруге  мүмкіндік  береді  әрі  оны  бір  циклда 
орындайды.  
Жүйе 
ішінде 
құрылған 
бағдарлама 
жасаушы 
флеш-жады 
бағдарламаның  жадын  ішкі  жүйе  интерфейс  SPI  арқылы  қарапайым 
прогрмматор немесе жүктеу секторында бағдарламалармен қайта орындауға 
болады.  
ATmega128  толықтай  бағдарламалар  жинытығы  мен  жобалау  үшін 
аппаратты  әдістерде  байланыс  жасауға  мүмкіндік  береді.  Оған  Ассемблер 
компиляторы,  макроассемблер,  С  бағдарламалық  қалыптаушы/симулятор 
жиынтығы кіреді. 
ATmega128  мүмкіндіктерінің  біріне  қорек  көзін  беру  кезінде  тазарту 
әрі қоректену кезіндегі кернеуді азайту және тазарту, сыртқы және ішкі үзіліс 
көздерін, кіріс пен шығыстағы  резистрлерді сөндіруді, жұмыс жасу кернеуі 
4,5 – 5,5 В жатқызуға болады [3].  
 
Сурет 1.3 – ATmega128 микроконтроллері 
 1.3 Қолданылған бағдарламалар 
Дипломдық жобада зерттеуге арнайы бағдарламалар қолданылды: 
AVR  Studio   –  Atmel  компаниясының  8  және  32  биттік  AVR 
қосымшаларын  дамыту  үшін,  NT/2000/XP/Vista/7  Windows  операциялық 
жүйесінде  жұмыс  жасайтын  кешенді  әзірлеу  ортасы  (IDE).  AVR  Studio 
бағдарламаны  қадағалауға  арналған,    Ассемблер/C  компляторынан  және 
симуляторынан тұрады[1]. 
Ағымдағы  нұсқасы  AVR  контроллерін  бүгінгі  барлық  өндірілген 
дамыту  құралдары  қолдайды.  AVR  Studio  бастапқы  коды  редакторы  , 
виртуалды  модельдеу  құралдарын  және  схема  ішіндегі  реттеу  тізбегінен 
құралған  ассемблер  тілінде  немесе    Ассемблер/C  тілінде  бағдарламалар 
жазуға мүмкіндік жасайтын жоба. 

31 
 
AVR Studio сипаттамасы:  

 
Интеграцияланған компилятор Ассемблер / C  ; 

 
Интеграцияланған симулятор; 

 
Плагиннің қолдауымен WinAVR түрінде GCC компиляторын қолдау 
мүмкіндігі бар; 

 
8-разрядтық 
AVR  архитектурасымен  сәйкес  келетін  Atmel 
бағдарламаларына , онымен қоса AVR ONE!, JTAGICE mkI, JTAGICE mkII, 
AVR  Dragon,  AVRISP,  AVR  ISPmkII,  AVR  Butterfly,  STK500  және  STK600 
интерфейсіне  қолдау көрсетеді; 

 
AVR RTOS плагиніне қолдау көрсетеді; 

 
AT90PWM1 және ATtiny40 жинамына қолдау көрсетеді; 

 
Командалық интерфейс жолына TPI негізінде қолдау көрсетеді; 
 
Сурет 1.4 – AVR Studio бағдарламасында жаңа жоба құру 
 
Сурет 1.5 – ATmega128 микроконтроллерін таңдау 

32 
 
Debug  папкасында  компилятордан  өткен  hex  файл  таңдап  алу  керек, 
себебі ол микроконтроллерді тігу үшін қажет болады. 
 
Сурет 1.6– Бағдарлама жазу терезесі 
AVR Studio  редакторі  – дерективалар мен командаларды көк, сандық 
ақпараттарды қара, дұрыс емес ақпаратты қызыл  және түсініктемелерді 
жасыл түспен көрсетіледі. 
Бағдарлама құрар алдында AVR микроконтроллеріне арналған 
ассемблер деретиваларына тоқтала кету қажет: 
.BYTE – ОЗУ-да байттарды резервтеу; 
.CSEG –  бағдарлама сементі; 
.DB – Флеш жады немесе EEPROM-да тұрақты байтты ; 
.DEF – Регистрге ат беру; 
.DEVICE –  Бағдарламада компилятор жасалатын құрылғыны анықтау; 
.DSEG – Ақпарат сегменті; 
.DW – Флеш жады немесе EEPROM-да орналасқан ақпаратты анықтайды; 
.ENDMACRO – Макростық аяқталуы көрсетеді; 
.EQU – Тұрақты ақпаратты орнату; 
.ESEG –  EEPROM сегменті; 
.EXIT – Файлдан шығу; 

33 
 
.INCLUDE – Басқа файл орнату; 
.LIST –  Листингте генерация қосу; 
.LISTMAC – Листингте макрос айналымын қосу
.MACRO – Макрос басы; 
.NOLIST –  Листингте генерация өшіру; 
.ORG –  Сегмент орнату; 
.SET –   Айнымалы үшін эквивалентті мән орнату; 
Қолданылған келесі бағдарлама: 
CodeVisionAVR —  Atmel  құрамындағы  AVR  микроконтроллерін 
интеграцияланған  бағдарлама жүйесінде  қамтамасыз ететін әзірлеу ортасы.  
CodeVisionAVR келесі компоненттерден тұрады: 

 
AVR үшін Си – тілдегі комплиятордан; 

 
AVR үшін ассемблер тіліне комплиятордан; 

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

 
STK-500 реттеу платасымен модуль әрекетінен; 

 
Программатор мен модуль байланыс әрекетінен; 

 
Синтаксисі бар бастапқы коды редакторынан; 

 
Терминалдан; 
CodeVisionAVR құжаттарының негізгілері: 

 
HEX,  BIN  және  ROM  программатор  араласуымен  микроконтроллерді 
жүктеуге арналған файлдар тізбегі;   

 
COFF — файл, реттеушіге арналған мәліметтен тұрады; 

 
OBJ —  файл,  компиляцияның  код  тізбегін  сақтайтын,  яғни  басқа 
сөзбен айтқанда объективті код; 
 
Сурет 1.7 – CodeVisionAVR бағдарламасының бастапқы беті 

34 
 
Қойылған  тапсырманы  орындап  болғаннан  кейін,  іс  жүзінде  бақылау 
үшін Proteus бағдарламалау ортасы пайдаланылады. 
Proteus —  іс  жүзінде  аналогтық  және  цифрлық  құрылғылардың  үлкен 
саны модельдеуге мүмкіндік беретін, ең қуатты автоматтандырылған жоба.  
Proteus VSM бағдарламалық пакеті жобалау сатысында және қадағалау 
кезінде  қателіктерді  анықтауға  кез  келген  электрондық  құрылғы  схемасын 
құру  және  оның  жұмысын  модельдеуге  мүмкіндік  береді.  Бағдарлама  екі 
модульден  тұрады. ARES –  Electra  жабдықталған  баспа  плат  редакторы. 
Одан бөлек, ARES үш өлшемді баспа модельін жасап шығара алады. Proteus 
VSM  6000  астам  электрондық  барлық  анықтамалық  деректермен 
компоненттерін  ,  сондай-ақ  зерттеу  демонстрациялық  жобаларды  қамтиды. 
Бағдарлама  USB  порты  мен  компьютердің  COM  виртуалды  құрылғысын 
жалғау үшін мүмкіндік беретін   USBCONN және  COMPIM құрылғыларын 
қолданады.  Осы  порттарына  кез-келген  сыртқы  құрылғы  қосылатын    болса 
да,  виртуалды  тізбек  онымен  жұмыс  істейтін  болады.  Proteus  VSM  келесі 
компиляторларды  қолдайды:  CodeVisionAVR,  WinAVR  (AVR),  ICC  (AVR, 
ARM7,  Motorola),  HiTECH  (8051,  PIC  Microchip)  және  Keil  (8051,  ARM). 
PSpice  электрондық  компоненттері  моделін  экспорттауға  арнайы 
бағдарламар бар[18].  
 
Сурет 1.8 – Proteus  бағдарламасы 

35 
 
 
Сурет 1.9 – Proteus  бағдарламасының бастапқы беті 
2 AVR микроконтроллерін зерттеу бағдарламалары 
AVR  микроконтроллерінің  командалар  жүйесі  арқылы,  яғни 
командаларды  пайдалана  отырып,  бағдарлама  жасап,  қойылған  тапсырмаға 
сай құрылғыларды жасауды ұйымдастыру. 
Бағдарламалау  бөлігі  AVR  Studio  бағдарламалау  ортасын  пайдалана 
отырап  орындау,  аталымды  бағдарламалау  ортасында  жазып,  бұл 
бағдарламаны  оның  құрамындағы  әртүрлі  перифериялық  құрылғыларды 
тікелей  пайдалану  арқылы  баптау  өте  ыңғайлы  келеді.  Іс  жүзінде 
бағдарламаның  орындалуын  тексеру  үшін  Proteus  бағдарламалау  ортасы 
арқылы көз жеткізу. 
Бұл  бөлімде  қарастырылатын  AVR  микроконтроллерінің  әртүрлі 
бағыттағы жұмысын ұйымдастырушы бағдарламалар және оның командалар 
жүйесіндегі  командалардың  пайдаланылу  және  орындалу  ерекшеліктерін 
біртіндеп таныстыру тәсілімен құрылған.  
2.1  «Жүгірме жарықтар» құрылғысын құру 
«Жүгірме  жарық»  бағдарламасын  автоматтандыру,  яғни  8  жеке 
бөліктен  тұратын  гирлянда  жұмысын  ұйымдастыру.  Құрылғы  жарықтың 
жануын  екі  бағытта  жасау  керек  және  белгілі  батырманы  басқанда  бағыты 
өзгеруі қажет [7]. 

36 
 
 
Сурет 2.1– Жүгірме жарық сұлбасы 
  
Қойылған  тапсырмада  берілгендей  біздің  құрылғы  сегіз  жарық  көзін 
басқару  керек  және  ол  үшін  барлық  сегіз  шамның  бір  портын  пайдаланған 
тиімді.  Бұдан  бөлек  жарық  бағытын  ауыстыратын  батырма  жасау  керек. 
Тапсырманы шешу үшін Atmega128 микроконтроллерін пайдаланған жөн. 
Бағдарламаны  жазу  және  реттеу  үшін  микроконтроллерге  шамдарды 
жалғаудың қажеті жоқ. Ең алымен  қарапайым сегіз шам қосамыз. 
Жүгірме жарықтың  алгоритм жұмысы әртүрлі болуы мүмкін. Мүмкін 
болатын алгоритмдердің орта түсінікте көрінісі келесідей болады: 
Басқару батырмасының жғдайын қадағалау. 

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

 
Егер  контакт  ажырап  кетсе,  солға  жылжыту  процедурасына 
ауысу. 

 
Толық  циклдік  жұмыс  аяқталған  кезде,  алгоритмнің  бірінші 
пунктіне қайта өту керек. 
Сол  себептен,  контакт  қосу  батырмасы  ажырап  тұрғаны  үшін, 
бағдарламада  оңға  жылжыту  процесі  орындалады.  Егер  де  қосу 
батырмасының  жағдайы  өзгермесе,  жылжыту  бағыты  одан  әрі  жалғаса 
береді. Оңға жылжыту сияқты, әр солға жылжыту кезінде қосу батырмасына 
арнайы тексеріс жүргізіледі. Егер оның жағдайы алдындағыдан өзгеше болса, 
оның жылжыту бағыты өзгереді.  
Жылжыту алгоритмнің орындалуы: 
Ал  енді  алгоритмнің  жылжу  тәртібінің  орындалуын  қарастырамыз. 
Оңға  және  солға жылжуы  аналогті  түрде орындалады.  Төменде жалпы оңға 
және солға арналған ортақ алгоритм бар.  
Жұмыс  регистріне  бастапқы  мағынасын  жазу.  Бастапқы  мағынасында 
бір  разряды  бірге  тең,  ал  қалғандары  екілік  кодта  қолданылады.  Оңға 
жылжыту  үшін  үлкен  разрядтағы  саны  бірге  тең  бірліктер  қажет 
(0b10000000). Солға жылжыту ушін кіші разрядта орнатылады (0b00000001). 
Регистр жұмысын PB портына енгізу. 
Бағдарламадағы  кідіру  бөлімін  шақыру.  Бірінен  кейін  бірі  жанатын 
шамдар арасындағы кідіру аралықтарын бақылайды. Егер де кідіріс болмаса, 
жүгіру  жылдамдығы  жоғары  болар  еді.  Жүгірме  жарықты  бақылаушы  осы 
көрініс светодиодтын барлық шамдары бір уақытта жанғандай көрінеді.  

37 
 
Жұмыс регистріндегі разрядты бір сатыға жылжыту. 
Циклдің аяқталуын бақылау. 
Егер  толық  циклді  жылжыту  аяқталмаса,  екінші  алгоритм  пунктіне 
көшуге болады. 2,3,4,5 және 6 пункттері 8 рет қайталанады, тек содан кейін 
ғана толық жылжыту циклі аяқталады. 
 
2.1.1 Құрылғыны Ассемблер тілінде бағдарламалау  
Бұл  бөлімде  жоғарыда  айтылған  алгоритмді  пайдалана  отырып, 
Ассемблер тілінде бағдарламана құра арқылы түсініктеме беріледі.  
Листинг 2.1 
.include "m128def.inc"     
 ;  Негізгі файлды орнату 
.list   
 
 
 
 ; Листингті қосу 
.def  temp = r16   
           ; Негізгі жұмыс регистрін анықтау 
.def   rab = r17 
 
           ; Жұмыс регистрін анықтау 
.equ  kdel = 780 
; Программалық кодтың басы 
.cseg   
 
 
 
; Бағдарламалық кодтың сегментін таңдау 
.org   0 
 
 
 
; Негізгі адресті 0-ге теңестіру 
; Стека инициализациясы 
ldi 
 
temp, 0x7F             ; Стек адресін таңдау 
out 
 
SPL, temp      
 ; Стек регистріне жазу 
; ВВ порт инициализациясы 
out 
 
DDRD, temp 
 ; DDRD-ге  0 жазу 
ldi 
 
temp, 0xFF             ; temp регистріне $FF санын жазу 
out 
 
DDRB, temp 
 ; Осы жазбаны PORTВ жазу 
out 
 
PORTB, temp 
  
out 
 
PORTD, temp 
  ; Осы жазбаны PORTD жазу 
; Таймер Т1 инициализациясы 
ldi 
 
temp, 0x05              
out 
 
TCCR1B, temp 
 
; Компаратор инициализациясы 
ldi  
          temp, 0x80   
 ;   Компараторды қосу 
out 
 
ACSR, temp 
; Бағдарламаның негізгі бөлігі 
main:  
in 
temp, PIND                      ; PD портындағы ақпаратты оқу 
sbrs   temp, 0 
                     ;  Кіші разрядты тексеру 
rjmp  m3 
 
 
          ; 0 болмаса солға жылжыту 
; Оңға жылжыту 
m1:  ldi 
rab, 0b10000000       ; Бастапқы мәндә жазу     
m2:  out 
PORTB, rab  
     ; PB  қазіргі мәнді портына жазу 

38 
 
 
rcall  wait1  
 
     ; Кідіріс  
lsr 
rab 
 
 
 ;Жұмыс регистіндегі ақпаратты жылжыту 
brcc   m2 
 
 
; Регистр соңына жетпесе жалғастыру 
  
rjmp  main   
 
;  Басына қарай оралу               
; Солға жылжыту 
m3:  ldi rab, 0b00000001   ; Бастапқы мәнді жазу 
m4:  out PORTB, rab         ; PD портындағы ақпаратты шығару 
 
rcall  wait1                  ; Кідіріс 
 
lsl 
rab 
                 ; Жұмыс регистіндегі ақпаратты жылжыту 
 
brcc  m4 
 
       ;  Регистр соңына жетпесе жалғастыру 
  
          rjmp  main   
       ;  Басына оралу 
          ; Ішкі бағдарламадағы кідіріс 
wait1:          push  temp   
         ; temp сақтау 
                    ldi 
temp, 0 
         ; temp 0 жазу 
          out 
TCNT1H, temp 
;0-ді регистрдің үлкен байтыны жазу 
          out    TCNT1L, temp      ; 0-ді регистрдің кіші байтыны жазу 
wt1:        
in temp, TCNT1L            ; temp регистіріне сақтау 
 
cpi 
temp, low(kdel)    ; Тұрақтының кіші бөлігімен салыстыру 
 
 
brlo  wt1            ; Егер temp кіші low(kd) кіші болса өту 
wt2:           in temp, TCNT1H           ;  Есептеу регистірінің үлкен байты 
          cpi temp, high(kdel)      
 
brlo  wt1   
         
                    pop  temp   
         ; Регистр мәнін қалпына келтіру 
 
 
ret 
 
         ; Бағдарламадан шығу 
 
Бағдарламаның  мүмкін  болатын  нұсқасы  төменде  көрсетілген. 
Бағдарламада  бірнеше  жаңа  операторлар  кездеседі.  Одан  бөлек  біз  жаңа 
тумен  жұмыс  жасаймыз.  Бұл  ту  SREG  разрядынынң  бір  регистрі  болып 
табылады және басқаша атауы тасымал туы.  
Анықтамасы.  Тасымал  туы  –  разряд,  екі  таңбалы  операция 
орындалатын кездегі биттің тасымалдануы.  
Тудың  тасымал  мазмұны,  Z  нөлдік  туының  шартты  ауысуын 
орындайды.  Мысалы,  қосымша  разряд  негізінде  бүкіл  жылжыту 
операцияларына  қатысады.  Ал  енді  жаңа  операторлармен  толықтай 
танысамыз. 
Lsr – логикалық оңға жылжыту. Бұл оператор тек жылжымалы регистр 
атауынан тұрады. Схематикалық мәліметтер төмендегідей көрсетіледі: 
 
Кіші  разрядтың  мазмұны,  С  туына  көшіріледі  де,  оның  орнына  1-ші 
разрядты ту орнатылады. Ең үлкен разрядтқа нөл жазылады.  

39 
 
Lsl  –  логикалық  солға  жылжыту.  Бұл  оператор  қозғалысы  төбедегі 
логикалық оңға жылжыту операторнына қарама-қайшы. Бұл жылжыту үлгісі 
төменде көрсетілген:  
 
Brcc  –  «Тасымал  жоқ»  шарасы  бойынша  ауысуы.  Берілген  оператор  С 
тасымал туының мазмұнын тексереді және қатысты ауысу мекен-жайындағы 
өзгерістерді қарастырады.  
Eor  –  «Немесе»  командасын  шектейтін  оператор.  Бұл  оператор  екі 
командадан тұрады. Параметрлер негізінде екі регистр аты қолданылады.  
«Оңға  жылжу»  процедурасы  келесідей  жұмыс  жасайды.  Жұмыс 
регистріне  23  жолда  rab  бастапқы  регистрі  қолданылады.  Ондай  сандар 
екіжақты  форматта  жазылады.  Одан  кейін  24-30  жолда  циклді  өзгерту 
байқалады.  
Осыған  дейін  айтылғандай,  инициализация  модулі  жаңа  бағдарламада 
өзгеріссіз  қалған.  Жаңа  бағдарламада  ол  1-19  жолда  орналысқан. 
Айнымалалыр  блоктарын  анықтайтын  сипаттамалар  ғана  енгізілген.  Loopl, 
loop2  және  loopl3  таныс  регистрлерінен  бөлек,  бізге  тағы  қосымша  регистр 
қажет  болады.  Ол  регистрді  біз  жылжыту  операциясында  қолданамаыз.  7 
жолда г20 регистрі қолданылып, оған rab атауы қойылады.  
20 жолда негізгі бағдарлама циклі басталады. Ол  PD портынан бастау 
алады.  Нәтиже  temp  регистрінде  орналасады.  21  жолда  есептелген  санның 
кіші разрядтағы бағалау жұмысы жүзеге асырылады.  Егер разряд бәрге тең 
болса, онда 22 жолға операциялық тасымал өткізіледі және бағдарлама жаңа 
процедураны орындау үшін оңға жылжиды (23 жолдың басталуы). Егер кіші 
разряд PD саны нөлге тең болса, онда rjmp операторы 22 жолда басқару m3 
белгісіне  ауысады  және  бағдарлама  оңға  жылжыталады  (31  жолдың 
басталуы).  
 «Оңға  жылжыту»  процедура  келесідей  жұмыс  істейді.  23  жолда  rab 
регистріне  бастапқы  мән  беріледі.  Ол  сан  екілік  форматта  жазылған.  Одан 
кейін  циклдік  жылжу  басталады  (24-30  жолда).  Циклдік  жылжытудың 
бірінші  операциясы,    алгоритммен  сәйкес  жүргізілуі  керек.  Алайда  бір 
кедергі бар. 
Егерде  rab  регистрінің  мазмұнын  PB  портына  енгізсек,  бізге  қажетті 
суреттің қарсы түрін аламыз. Барлық светодиодтар біреуінен басқасы жанып 
тұрады. Оның болу себебі, шығар кезде нөл светодиодты жандырады ал бір 
өшіреді. Егер біз жүгірмелі жарық алғымыз келсе, бізге PB портына енгізбей 
тұрып, rab регистрін инвертациялау қажет.  
Rab  регистрі  инвертациялау  үшін  аранйы  еог  командасын  қолданады. 
(«Немесе  ЕМЕС»).    «Немесе  ЕМЕС»  операциясы  сандарды  инвертациялау 
қасиетіне ие. Егер сіз кері оралып, «Немесе ЕМЕС» кестесін қарасаңыз осы 
ерекшелікті аңғаруға болады.  

40 
 
Ереже. Барлық кесте жолдарға ортақ ереже: егер операндтың бірі бірге 
тең  болса,  онда  нәтиже  QxFF  тең  болады.  Осындай  операцияны  орындау 
үшін,  24  жолда  temp  регистрін  жазып  алады.  25  жолда  «Немесе  ЕМЕС» 
операциясында temp және rab регистрлері арасында жүзеге асырылады.  
Бұл 
операцияның 
нәтижесі 
бірінші 
команданың 
параметрі 
болғандықтан,  temp  регистріне  енгізіледі.  Осы  орайды  rab  регистрінің 
мазмұны  өзгермейді.  26  жолда  temp  регистрінің  мазмұны  PB  портына 
енгізіледі.  
Жылжыту  процедурасының  келесі  қолданылуы  –  бағдарламадағы 
кідіру  бөлімін  шақыру.  Бұл  бөлім 27 және 28  жолда  орындалады.  29 жолда 
оператор  ъгсс  өзгеру  аясын  тексереді.  Бұл  тексеріс  толық  жылжыту  қашан 
аяқталатынын көрсетеді. 4.2 кестесінде көрсетілген. 
               
Кестеде  барлық  разрядтардың  мәні  көрсетілген  және  rab 
регистрінің  толық  сегіз  қадамы  бойынша  толық  жылжыту  циклі  берілген. 
Жылжымалы регистр разрядтары Ь7-ЬО болып бейнеленеді.  
           Re  нәтижесі  тек  сегізінші  қадам  орындалған  сон  ғана  көріне 
бастайды. C нөлге тең болса, Ъгсс оператор 29 жолда m2 белгісіне ауысады. 
Сегізінші  қадамнан  кейін,  С  бірге  тең  болады.  Сондықтан  29  жолға  ауысу 
жүзеге аспай, 30 жолға ауысады. Кезекті 30 жолда басқармаға беріліп, негізгі 
цикл жаңа батырма тексерісін бастайды.   
 
Сурет 2.2– Жұмыс регистрінде ақпаратты жылжыту 
 
2.1.2 Таймер жұмысын ұйымдастыру 
16  -  разрядтық  таймер  уақыт  аралықтарын  дәл  көрсетуге,  тікбұрышты 
сигналдарын  қалыптастыру  және  импульстік  сигналдарды  уақытша 
сипаттамаларын өлшеуге арналған.  
Негізгі ерекшеліктері: 

 
16-разрядтық есептеуіштер  

 
Үш бөлек салыстыру блоктарынан  тұрады 

 
Екі буферлік шекті салыстыру тізілімі (OCR) 

 
Бір басып алу блогынан тұрады 

 
Блокка кірерде шуды басу құралы бар 

41 
 

 
Басқа  құрылғылармен  салыстырғанда  сәйкес  келген  таймерді 
қалпына келтіреді (автоматты қалпына келтіру) 

 
Жаңа порогты жазу кезінде OCR ( қос - буферлік ) және фазалық 
түзетумен салыстырғанда жалған дабыл генерациясыз импульстік 
модуляция 

 
Айнымалы PWM мерзімі 

 
Жиілік генераторы 

 
Сыртқы көріністер санауышы 

 
10  тәуелсіз  үзіліс  көздері  (TOV1  ,  OCF1A  ,  OCF1B  ,  OCF1C  , 
ICF1, TOV3 , OCF3A , OCF3B , OCF3C және ICF3) [14]. 
 
Сурет 2.3– 16-разрядты таймер жұмысың блок-схемасы 
Үйлесімділігі: 
16–разрядтық 
таймер-есептеуіштер 
алдыңғы 
нұсқаларымен 
салыстырғанда  таймер-есептеуіштің  жұмыс  жасауы  жақсарған.  Таймердің 
үйлесімділігі келесі позициялар бойынша байқалады: 

 
16  –  разрядтық  таймер-есептеуішімен  байланысы  бар  барлық; 
регистрлер мекен-жайларын жинақтаған кезде; 

 
Барлық 16 - разрядтық тіркелімдер ішіндегі биттің орналасуы; 

 
Үзіліс векторлары. 
Келесі  бит  басқарушыларының  атауы  өзгерсе  де,  белгілері  мен 
регистрдегі орны өзгеріссіз қалған.: 

 
PWMn0 ауыстырылды WGMn0; 

 
PWMn1 ауыстырылды WGMn1; 

 
CTCn ауыстырылды WGMn2. 
Төменде 
16-разрядтық 
таймер-есептеуішінің 
құрамына 
енген 
регистрлер көрсетілген : 

 
Таймер-есептеуішінің басқару регистрі С (TCCRnC); 

42 
 

 
С салыстыру регистрі, OCRnCH және OCRnCL (немесе OCRnC). 
Келесі  биттер  16-разрядтық  таймер-есептеуіш  құрамына  кірген 
регистрлер: 

 
COM1C1, COM1C0 және жаңадан қосылған TCCR1A; 

 
FOCnA,  FOCnB  және  FOCnC  жаңа  регистр  TCCRnC  құрамына 
қосылды; 

 
WGMn3  TCCRnB құрамына енді; 

 
С  каналын  тоқтатуға  арналған  ту  шығарылды.  Кейбір 
жағдайларда үйлесімділікті жақсарту мәселесі қозғалады. 
 
 
Сурет 2.4– Таймер жұмысын ұйымдастыру сұлбасы 
2.1.2 «Жүгірме жарық» құрылғысының іс жүзінде орындалуы 
Proteus  бағдарламасында  жоғырада  келтірілген  алгоритм  мен  сұлбаны 
пайдалану  арқылы,  жұмыс  жасау  принципіне  сай,  қажет  элементтерді 
шығару және сәйкесінше жалғау арқылы орындалады.  

43 
 
 
Сурет 2.5– Proteus-та Atmega128 микроконтроллері 
 
Сурет 2.6– Жүгірме жарық жұмысын ұйымдастыру 
Суретте  көріп  отырғанымыздай,  сұлба  сегіз  регистрлер,  шамдар, 
жерлеуден және қосып/өшіру батырмасынан тұрады. 

44 
 
 
Сурет 2.7– Микроконтроллерге қажетті файлды таңдау 
Сұлбадағы  микроконтроллердің  үстіне  екі  рет  басу  арқылы  оның 
баптамаларын  көре  аламыз.  Қойылған  тапсырма  бойынша  орындалу  үшін, 
яғни іс жүзінде көз жеткізу үшін алдын-ала Ассемблер тілінде бағдарланған 
AVR Studio бағдарламалау ортасында қажетті HEX  файлды таңдаймыз. 
 
Сурет 2.8– HEX  файлын таңдау 

45 
 
Қосып/өшіру  батырмасы  арқылы  құрылғының  орындалуына  көз 
жеткізу. Арнайы батырманы басу арқылы шамдардың жану бағытын өзгертң 
мүмкіндігі бар. 
 
Сурет 2.9– Proteus-та Жүгірме жарық құрылғысы 

жүктеу 5.01 Kb.

Поделитесь с Вашими друзьями:
1   2   3   4   5   6   7




©emirb.org 2020
әкімшілігінің қараңыз

    Басты бет