MC9S12C128 микроконтроллерінің перифериялы модульдері

Автор работы: Пользователь скрыл имя, 29 Ноября 2013 в 21:58, дипломная работа

Краткое описание

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

Содержание

КІРІСПЕ 5
1 HCS12 БІР КРИСТАЛДЫ МИКРОКОНТРОЛЛЕРЛЕР КЛАСЫ 7
1.1 Кластардың жалпы сипаттамасы 7
2 ELVIS_S12C128ЭКСПЕРИМЕНТАЛДЫ – ЛАБОРАТОРИЯЛЫҚ ҚОНДЫРҒЫСЫ 11
2.1 Қондырғының жалпы сипаттамасы 11
2.2 Микроконтроллердің тақшасы 12
2.3 CSMB12C128 тақшасы + PBMCUSLK тақшасы 17
2.4 CSMB12C128 тақшасы + PBMCUSLK тақшасы + ELVIS II платформасы 20
3 МИКРОПРОЦЕССОРЛЫҚ ЖҮЙЕЛЕРГЕ АРНАЛҒАН CODEWARRIOR ПРОГРАММАЛЫҚ ОРТАСЫ 21
3.1 Өңдеу ортасының жалпы сипаттамасы 21
3.2 CodeWarrior ортасында жоба құру техникасы 23
4 МК MC9S12C128 ПЕРИФИРИЯЛЫ МОДУЛЬДЕРІН ЗЕРТТЕУ 28
4.1 Микроконтроллерлер жайлы жалпы түсінік 28
4.2 Elvis II қондырғысыныңвиртуальды құралдарының жиыны 30
4.4 Микроконтроллердің ШИМ(кең импульсті модуляция) модулін зерттеу 37
4.5 Берілген параметрлері бар жекелеген импульстер генерациясын зерттеу 40
4.6 Аналогты-цифрлы түрлендіргіштің модулі 42
4.7 SPI тізбекті синхронды интерфейсін зерттеу 44
4.8 SCI тізбекті асинхронды интерфейсін зерттеу 46
ҚОРЫТЫНДЫ 48
ҚОЛДАНЫЛҒАН ӘДЕБИЕТТЕР ТІЗІМІ 49
ҚОСЫМША 50

Прикрепленные файлы: 1 файл

dip_3079.doc

— 2.89 Мб (Скачать документ)

       if (T >= Tmax) {                                //g параметрінің есептелуі.

g = 100;

} else { if (T > Tmin) {

g = (unsigned int) ((unsigned int)(100*(T-Tmin)) /

                    (unsigned char)(Tmax-Tmin));  //Мәліметтер типін  түрлендіру 

//қолданылды.

} else g = 0;

}

PWMDTY3 = (unsigned char)((unsigned int)(g*PWMPER3) /

         (unsigned char)100); //ШИМ каналы үшін салыстыру  деңгейінің есептелуі.

}

     

4.4 сурет - Қондырғыдағыконтактілердің қосылуы

 

                          J2тіркеуіші                              MCU_PORT (J6 немесе J7)

 


 

                  

                       J2 тіркеуіші              Elvis II платформасының  BNC-тіркеуіші



 

            MCU_PORT (J6 немесе J7)     Elvis II платформасының  BNC-тіркеуіші



 

Программаларды және виртуалды аспаптарды iске қосу алдында 4.4 суретке сәйкес қондырғыдағыi манипуляцияларды шығару керек.

4.5 Берілген параметрлері бар  жекелеген импульстер генерациясын  зерттеу

 

Бұл жұмыста таймер кіріс ұстап алу функциясы және таймер ішкі жүйесінің шығыс салыстырылуы арасындағы біріккен жұмыс оқытылады. Мұндай байланыс кейбір кіріс сигналдарға жауап ретінде анықталған параметрлері бар импульстердің генерациясын микроконтроллердің көмегімен жүзеге асыруға мүмкіндік береді. Бұл жұмысқа дайындалу барысында кіріс ұстап алу және таймер ішкі жүйесінің шығыс салыстырылуы режимдері жұмысының ерекшеліктерін қайталаған жөн [12].

Микроконтроллердің  кірісіне ELVISmx  құралдары жиынтығынан алынған функционалды генератор көмегімен құрылған тікбұрышты импульстер тізбегі келіп түседі. Кіріс сигналының жиілігі – 1кГц. Екі импульсті тізбектерін Scope осциллографына шығару.

 

4.5.1-сурет. Шығыс импульсінің параметрлері

 

 

Кіріс сигналға жауап ретінде жүретін шығыс  сигналын микроконтроллердің көмегімен  генерациялайтын программаны жазу. Шығыс импульсінің параметрлері 4.5.1 суретте көрсетілген.

 

#include <hidef.h>

#include "derivative.h"        // Қызметтік регисторлар  анықтамасы  бар  

                                            //файлдың қосылуы.

#define ti_out 200               //Кіріс сигналының импульс ұзақтығын

                                            //қолдануының макроанықтамасы.

void main(void) {

     PERT |= 0x01;                //Т портының 0 аяғына резистордің  қосылуы, 

                                             // PERT0 = PERT1 = 1.

     TCTL4 = 0x01;              //0 каналында сигналдың  үдемелі

                                               //ағымдарының  қосылуы.

     TFLG1 = 0xFF;               // Кірістің ұстап алуындағы барлық жалауша-

                                              //ларды алып тастау.

     TFLG2 |= 0x80;              //Таймер толуының жалаушаларын алып тастау ,

                                              // TOF = 1.                                             

     TIOS = 0x02;                   //1-ші   канал   шығыстың   салыстырылуы,

//0-ші канал кірістік ұстап алу.

     TIE = 0x03;                     //0 және 1 каналдарындағы үзүлулер

                                             // рұқсаты, C0I = C1I = 1. 

     TSCR2=0x00;                 //1/2-ге тең таймер санағышыныңбөлгіш

                  //жиілігініңтактілеуін орнату,fCT = fBUS= 2МГц.                                                  

       TSCR1 = 0x80;             //Таймердің қосылуы, TEN = 1. 

       asm CLI;                        //Микроконтроллерлерде үзүлулер рұқсаты.

here: goto here;//Шексіз бос цикл.

}

   }

 

interrupt 8 void IC0() {         //Таймердің ішкі  жүйесінің 0 каналындағы 

                //оқиғалар бойынша үзүлулердің  ішкі 

//программасы

                                              //Interrupt  сөзінен кейін    үзүлулер векторының

                                              //нөмері көрсетіледі.

       TFLG1 = 0x01;              //0 каналдағы оқиғалар жалаушаларын

                                                //алып тастау.

        TCTL2 = 0x0C;            //1 каналындағы шығыс салыстыруының

                                              //  0-ден 1-ге  дейінгі ағымы.

        TC1 = TCNT+10;         //1 каналында шығыс сигналы тізбекті гене-

                                              //рациялау фронты үшін салыстыру  деңгейінің

                                              //өзгеруі.

        TFLG1 |= 0x02;              //1 каналында оқиға жалаушаларын алып тастау.

}

 

interrupt 9 void IC1() {           //Таймердің ішкі  жүйесінің 1 каналындағы

                                              //оқиғалар бойынша үзүлулердің  ішкі 

                                               //  прогаммасы. 

                                                //Interrupt  сөзінен кейін үзүлулер векторының

                                               //нөмері көрсетіледі.

      TC1 = TCNT+ti_out*2;  //1 каналында салыстыру деңгейін орнату.

        TIE &= ~0x02;                //1 каналында үзүлулерге тыйым салынады.

        TCTL2 = 0x08;               //1 каналындағы шығыс салыстыруының

                                               //1 ден 0-ге  дейінгі ағымы.

                                                //OM1 = 1, OL1 = 0.

      }

}  

4.5.2 сурет - Қондырғыдағы контактілердің қосылуы

 

                   J2 тіркеуіші             MCU_PORT (J6 немесе J7)


 


 

                    J2 тіркеуіші            Elvis II платформасының BNC-тіркеуіші


  


 

        MCU_PORT (J6 немесе J7)  Elvis II платформасының BNC-тіркеуіші

  


        


 

Программаларды және виртуалды  құралдарды iске қосу алдында 4.5.2 суретке сәйкес қондырғыдағы манипуляцияларды шығару керек.

 

4.6 Аналогты-цифрлы түрлендіргіштің  модулі

 

Бұл жұмыста АЦТ-тің әр түрлі жұмыс істеу режимдері қарастырылады, олар: бірканалды және көпканалды,бір ретті және үздіксіз.

Осы жұмыста АЦТ модулімен және оның жұмыс істеу режимімен танысу қажет. Сонымен қатар төменде келтірілген мысалдарды қарастыру керек.

Микроконтроллердің AN00 кірісіне Analog Level құралынан кернеудің аналогты деңгейі келіп түседі. Келіп түскен сигналды цифрға түрлендіретін және оны Digital Reader виртуалды құрылғысына жіберетін микроконтроллердің көмегімен жүзеге асатын программаны жазу керек. АЦТ бір ретті түрлендіруі бар 8 разрядты режимде жұмыс істеуі керек.PB1 батырмасын басқан кезде цифрға түрленген кодтың орнына 0x00  шығуы керек [7].

 

#include <hidef.h>

#include "derivative.h"              // Қызметтік регисторлар  анықтамасы  бар  

                                                  //файлдың қосылуы.

#define PB1 PORTB_BIT0       //PB1 батырмасы қосылужелісінің қолданыстық

                                                 //макроанықтамасы.

#define DOWN 0                     //Басылған батырма күйінің қолданыстық

                                                 //макроанықтамасы.

#define UP 0                            // Басып алынған батырма күйінің қолданыстық

                                                 //макроанықтамасы.

#define delay(us); for(delay=us/2;delay!=0;delay--) asm NOP;

                                             //Программалық кешігуді құру кодының макро-

                                           //анықтамасы. Микросекундтар машиналық цикл-

                                               //ге аударылады.

unsigned int delay;                //Кешігуді құру үшін айнымалы.

unsigned char BTN = UP;    //Батырма күйін сақтайтын айнымалы.

void main() {

      PUCR |= 0x03;               //А, В порттары аяқтарына резисторлардың

                                             //қосылуы .

      DDRA = 0xFF;              //А порты желілерін шығысқа орнату.

PORTA = 0x00;

DDRB = 0x00;// В порты желілерің кіріске орнату.

      ATDCTL2 |= 0x82;      //АЦТ және  оның түрлендіруінің аяқталуы

                                           // бойынша үзүлулердің қосылуы.

      delay(50);                     //50мкс кешігу. АЦТ-ның аналогты  компонент-

                                          //тері оны қосқаннан кейін  жұмыс күйіне  келу үшін

                                         //қажет.

      ATDCTL3 = 0x08;    //Әр тізбекте бір түрл

   ATDCTL4 |= 0x81;   //АЦТ-ның 8-битті рұқсаты және  оның тактілеу 

                                         //жиілігі fATD= fCLK/4 = 1МГц. 

      ATDCTL5 = 0x00;     //AN0 -ның  аналогты кірісін таңдау, бір канал

                                         //және бір тізбекте таңдалған кірістің бір көшірмесі.

      asm CLI;                    // Микроконтроллерде үзүлулер рұқсаты  .

      for(;;) {                      //Батырма сұраудағы шексіз цикл.

        if (PB1 == UP) BTN = UP; else {    //Егер батырма басылмаған болса,онда

             delay(1000);                                 // BTN = UP.   Әйтпесе кешігуді 1мс 

             if (PB1 == DOWN) BTN = DOWN;   //жасау керек.Егер  одан кейін  

            else delay(1000);                                  // батырма әлі басылған болса,

                                                                       //онда  BTN = DOWN.

         }  

     }

interrupt 22 void ATD0() {    //АЦТ өрнектеуін аяқтау барысында

                                                // үзүлулердің қызмет көрсетуі.

   if (BTN == UP) PORTA = ATDDR0H;   //Егер батырма басылмаған  болса,

                                                                      //онда портқа сандық мәнді 

                                                                      //шығару.

   else PORTA = 0x00                                  // әйтпесе,0 жазу керек.

   ATDCTL5 = 0x00;                                   // AN0  аяғын аналогты кіріс ретінде 

                                                                     //таңдау.Осы кірістен турленген

                                                                    //сигналдың жаңа тізбегін іске қосу.

     }

 

    }

}

4.6 сурет - Қондырғыдағы контактілердің қосылуы

 

                          J2   тіркеуіші                             MCU_PORT(J6 немесе J7)   


 


                         J10 тіркеуіші                             MCU_PORT(J6 немесе J7)



PA7

PA6

PA5

PA4

PA3

PA2

PA1

PA0




DI7

DI6

DI5

DI4

DI3

DI2

DI1

DI0




 

 

Программаларды  және виртуалды құралдарды iске қосу алдында 4.6 суретке сәйкес қондырғыдағы манипуляцияларды шығару керек

Информация о работе MC9S12C128 микроконтроллерінің перифериялы модульдері