Автор работы: Пользователь скрыл имя, 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
Two Channel Generatorқұралынан тікбұрышты импульстердің тізбегі микроконтроллердің Т портының 0 аяғына келіп түседі. Параллельді кодта А портына микросекундпен шығаратын және келетін сигналдың периоды өлшенетін программаны жазу керек.Код T out виртуальды құралын қабылдауы керек.
#include <hidef.h>// EnableInterrupts макроанықтамасы бар басты
//файлдың қосылуы.
#include "derivative.h"
// Қызметтік регисторлар
// қосылуы.
unsigned int TCNT_NEW, TCNT_OLD;
//Таймер санағышының жаңа
//айнымалылар.
unsigned char T;
void main() {
//Программаның басты
PPST &= ~0x01; // Т портының 0 аяғына резисторді қосу, PPST0 = 0.
PERT |= 0x01; //Т портының 0 аяғына резисторді қосу, PERT0 = 1.
TCTL4 = 0x01; //0 каналында сигналдың үдемелі
TFLG1 = 0xFF; //Кірістің ұстап алуындағы барлық жалаушаларды
TFLG2 |= 0x80; //Таймер
толуының жалаушасын алып
TIE = 1; //0 каналындағы оқиғалар бойынша үзүлулер
TSCR2 = 0x01; //1/2-ге тең таймер санағышының бөлгіш
//жиіліктерінің тактілеуін орнату,
// fCT = fBUS/2 =1МГц.
TSCR1 = 0x80; //Таймердің қосылуы, TEN = 1.
PUCR |= 0x01; //А
портында резисторлардың
// PUPAE =1.
DDRA = 0xFF; // Шығысқа А портының барлық
//сызықтарының инициализациясы.
EnableInterrupts; //Микроконтроллерде үзүлулер рұқсаты.
for(;;) { } //Шексіз бос цикл.
}
interrupt 8 void IC0() { //Таймердің ішкі жүйесінің 0 каналында
// Interrupt сөзінен кейін үзүлулер векторының
//нөмері көрсетіледі.
TFLG1 = 0x01 // 0 каналындағы оқиғалардың жалаушасын
//алып тастау.
TCNT_NEW = TCNT; //Таймер санағышының жаңа мәнін алу.
T = TCNT_NEW – TCNT_OLD; //Периодты есептеу.
TCNT_OLD = TCNT_NEW; //Таймер санағышының ескі мәнінінің
//жаңартылуы.
PORTA = T; // Алған мәліметтерді А портына
}
CodeWarrior ортасында жаңа жобаны құру төменде көрсетілген. Ең алдымен басты мәзірдегі File →New Project пунктін таңдаймыз.
4.3.1 cурет - Жаңа жоба құру мастерінің бірінші терезесі
Жаңа жобаны құру мастерінің бірінші терезесі пайда болады. Осы жерден өзіннің программалайтын микроконтроллердің типін таңдау қажет(4.3.1 суретте көрсетілген). Осы жұмысты және келесі жұмыстарды ойдағыдай орындау үшін 3-ші конфигурация қондырғының ерекшеліктерімен танысу қажет. Екі тақшада да ұстатқыштар мен тіркеуіштердің дұрыс қойылуын қадағалау қажет, себебі олардың дұрыс қойылмауы жабдықтың бұзылуына әкеп соғуы мүмкін. Барлық қосымша құрылған 8 құралдар бір орнату пакетіне біріктірілген және осы практикумға қоса тіркелген.
4.3.2 cурет - Жаңа жоба құру мастерінің екінші терезесі
Алда жоба файлдарының орналасуын көрсету қажет (4.3.2сурет). Мұны “Set” батырмасының көмегімен жасау ыңғайлы. Прогаммалау тілі ретінде С тілін таңдаңыз үшінші терезеде бұрын игерілген файлдарды жаңа жобаға қосуға болады. Бұл мүмкіндіктен бас тартыңыз және “Next >” -ті басыңыз.
4.3.3 сурет - Жаңа жоба құру мастерінің үшінші терезесі
Осы терезеде қосымшаларды өңдеуді жылдамдату үшін құрал таңдау мүмкіндігі туады. Қазір біз оны пайдаланбаймыз, сондықтан да “None” тармағын таңдау қажет. Болашақта өзіндік жұмыс ретінде Device Initialization құрылымымен танысуға болады. Мұның көмегімен микроконтроллердің перифериялы инициализациялық процесін басқа анықтама қағазындағы көптеген қызметтік регистрлерді зерттеу әдісіне қарағанда жеңіл және тез орындауға болады [11].
4.3.4 сурет - Жаңа жоба құру мастерінің төртінші терезесі
ANSI форматындағы бастапқы кодты, Small жадының үлгiсiн және 32 разрядты айнымалыны таңдау қажет. Әйтсе де, қосымшаларда соңғы опциядан және бөлшек сандарға қатысты операциялардан бас тарту ұсынылады.
4.3.5 сурет - Жаңа жоба құру мастерінің бесінші терезесі
Енді C тілінің ерекшелiктеріне қатысты жобаның параметрлерiн орнату керек (4.3.5 сурет). Қазір біз оны пайдаланбаймыз, сондықтан да “None” тармағын таңдау қажет. Екі тақшада да ұстатқыштар мен тіркеуіштердің дұрыс қойылуын қадағалау қажет, себебі олардың дұрыс қойылмауы жабдықтың бұзылуына әкеп соғуы мүмкін.
4.3.6 сурет - Жаңа жоба құру мастерінің алтыншы терезесі
Осы терезеде (4.3.6 сурет) PC-lint бастапқы кодтағы қате іздеу құрылымынан бас тартыңыз.
4.3.7 сурет - CodeWarriorортасының негізгі терезесі
Жаңа жоба конфигурациясының аяқталуымен CodeWarrior ортасындағы негізгі терезе 4.3.7 суреттегідей көрінуі қажет. Қондырғыдағы контактілерді қосу қажет.
4.3.8 сурет - Қондырғыдағы контактілердің қосылуы
MCU_PORT(J6 немесе J7) J4тіркеуіші
Жоғарыда келтірілген программалар дұрыс істеуі үшін 4.3.8 суретте көрсетілгендей өткізгіштерді кейбір контактілерге қолмен қосу қажет.
Қондырғыдағы манипуляциялардан (қимылдан) кейiн құрылған сигналдың керектi параметрлерiн таңдау үшін Two Channel Generator құралы iске қосылады. Сондай-ақ ,микроконтроллерден алынған мәліметтерді компьютердің экранына шығаратын T out утилиті іске қосылады. Енді осыларды орындау үшін жоғарыда жазылған программа іске қосылады.
Осы жұмыста микроконтроллердің кең импульстік модуляциясының модулі зерттеледі. Бұл жұмысқа дайындалу барысында таймер кірісінің ұстап алу функциясын қайталау, микроконтроллердің ШИМ (КИМ) модулімен танысу және төменде келтірілген мысалдарды қарастыру ұсынылады [1].
1. Микроконтроллердiң T портының 0 аяғына Two Channel Generator құралынан тiкбұрыштыимпульстер тізбегі келіп түседі.Микроконтроллермен құрылған ШИМ-сигналды басқаратын сигнал үшін программа жазу. ШИМ-сигналының жиілігі – 15 кГц.Басқару келесі ереже бойынша жүзеге асады: 50 мкс ≤ T ≤ 100 мкс: 0 ≤ γ ≤ 1, Т – кіріссигналының периоды, γ – шығыстың салыстырмалы ұзақтығы. Екі импульстің тізбегін Scope осциллографына шығару.
#include <hidef.h> // EnableInterrupts макроанықтамасы бар басты
#include "derivative.h" // Қызметтік регисторлар анықтамасы бар
#define Tmin 50
//Периодтың минимальды
//қолданыстық макроанықтамасы, мкс
#define Tmax 100
//Периодтың максимальды
//қолданыстық макроанықтамасы,мкс.
unsigned int TCNT_NEW, TCNT_OLD;
//Таймер санағышының ескі
unsigned char T, g = 50;
void main(){//Программаның басты функциясы.
PERT |= 0x01; //Т портының 0 аяғына резистордің қосылуы,
TCTL4 = 0x01; //0 каналында сигналдың үдемелі
//ағымдарының қосылуы.
TFLG1 = 0xFF; // Кірістің ұстап алуындағы барлық жалауша-
TFLG2 |= 0x80; //Таймер толуының жалаушаларын алып
TIE = 1; // 0 каналындағы оқиғалар бойынша үзүлулер
TSCR2 = 0x01; //1/2-ге тең таймер санағышының бөлгіш
TSCR1 = 0x80; //Таймердің қосылуы, TEN = 1.
PWMPOL
= 0x08;
//Ең алдымен импульс
PWMCLK = 0; //3 каналы үшін В тактілеу көзі, PCLK3 = 0.
PWMCAE = 0; //3 каналы үшін ШИМ фронт бойынша,
PWMDTY3 = 100; //Импульстің бастапқы ұзақтығы.
PWMPRCLK = 0; //1-ге тең В тактілеу көзі үшін жиілік бөлгішін
PWMPER3 = 133;//ШИМ модулінің санағыш периоды ,
PWME = 0x08; //Конфигурацияланған каналдың қосылуы,
asm CLI;
for(;;) { } //Шексіз бос цикл.
}
interrupt 8 void IC0() { //Таймердің ішкі жүйесінің 0 каналындағы
TFLG1 = 0x01; //0 каналыңдағы оқиғалар жалаушаларын
TCNT_NEW = TCNT; //Таймер санағышының жаңа мәндерінің
T = TCNT_NEW – TCNT_OLD; // Периодтың есептілуі.
TCNT_OLD = TCNT_NEW;
//Таймер есептеуішінің ескі
Информация о работе MC9S12C128 микроконтроллерінің перифериялы модульдері