Petrovi Radovan 10052 ta je mikrokontroler n n

  • Slides: 72
Download presentation
Petrović Radovan, 10052 Šta je mikrokontroler ? n n n Mikrokontroler je računar na

Petrović Radovan, 10052 Šta je mikrokontroler ? n n n Mikrokontroler je računar na čipu. On sadrži skoro sve osnovne gradivne blokove računarskog sistema (CPU, ROM, RAM, U/I periferije tipa AD i DA konvertore, serijske komunikacione interfejse (UART), paralelne interfejs portove (PIA), tajmere/brojače, LCD drajvere, i dr) Svi mikrokontroleri imaju usađenu memoriju na čipu kao i veći broj ulazno-izlaznih interfejs linija Odlikuju se niskom cenom i kompaktnošću Mikrokontroleri se danas koriste u embedded sistemima za upravljanje raznim funkcijama Mikrokontroleri se veoma često koriste i u situacijama kada treba da se veoma brzo reaguje na spoljne signale - posebno ako se takvi sistemi koriste za rad u realnom vremenu Tajmer 82 c 54

Mikrokontroleri: tipovi arhitektura i blok šema n Harvard tip- karakteriše se razdvojenim memorijama za

Mikrokontroleri: tipovi arhitektura i blok šema n Harvard tip- karakteriše se razdvojenim memorijama za program i podatke n Princeton tip (tzv. von Neumann)- programska memorija i memorija za podatke dele isti adresni prostor Tajmer 82 c 54

Opšti blok dijagram mikrokontrolera Tajmer 82 c 54

Opšti blok dijagram mikrokontrolera Tajmer 82 c 54

Mikrokontroleri u odnosu na mikroprocesore n Mikroprocesor je integrisano kolo ili čip lociran na

Mikrokontroleri u odnosu na mikroprocesore n Mikroprocesor je integrisano kolo ili čip lociran na osnovnoj ploči koje u suštini predstavlja CPU računarskog sistema n Dok je mikroprocesor (CPU) integrisana komponenta na jedinstvenom čipu, sam mikrokontroler, na jedinstvenom cipu ima integrisano CPU, RAM i ROM memoriju i ostale ulazno-izlazno orijentisane gradivne blokove (paralelni i serijski interfejsi, tajmeri, logika za prihvatanje prekida, A/D i D/A konvertore i dr. ) Tajmer 82 c 54

Detaljni blok dijagram mikroračunarskog sistema Tajmer 82 c 54

Detaljni blok dijagram mikroračunarskog sistema Tajmer 82 c 54

Blok dijagram mikroprocesora(CPU-a) Tajmer 82 c 54

Blok dijagram mikroprocesora(CPU-a) Tajmer 82 c 54

Blok dijagram mikrokontrolera Tajmer 82 c 54

Blok dijagram mikrokontrolera Tajmer 82 c 54

Razlike između mikroprocesora i mikrokontrolera n n Mikroprocesori najcešće CISC tipa za kopiranje podataka

Razlike između mikroprocesora i mikrokontrolera n n Mikroprocesori najcešće CISC tipa za kopiranje podataka iz spoljne memorije u CPU koriste veći broj op-kôdova, dok mikrokontroleri jedan ili dva Za manipulisanje sa podacima tipa bit mikroprocesori koriste jedan ili dva tipa instrukcija, dok kod mikrokontrolera taj broj je veći Mikroprocesori su projektovani za brzi prenos podataka iz programa sa spoljno adresiranih lokacija u čip, dok se kod mikrokontrolera brzi prenos bitova obavlja u okviru čipa. Mikrokontroler moze da funkcioniše kao računar bez dodataka spoljnih gradivnih blokova (memorije i U/I uređaja), dok operativnost mikroprocesora bez spoljne memorije i U/I podsistema nije moguća Tajmer 82 c 54

Šta su tajmeri ? n n n Tajmer-kolo je periferno kolo koje je u

Šta su tajmeri ? n n n Tajmer-kolo je periferno kolo koje je u stanju da meri vremenske intervale Ima mogućnost generisanja događaja u specifičnim vremenskim trenucima. Tipične aplikacije su one koje se odnose na uključenje crvenog/žutog/zelenog svetla na semaforu za specificirani vremenski period, recimo crveno svetlo traje 20 s, žuto 3 s, a crveno 15 s Može da odredi vreme trajanja između dva spoljašnja događaja. Obično aplikacije ovakvog tipa srećemo kod merenja brzine kretanja vozila Tajmer 82 c 54

Tajmer, Brojač n n Tajmer je kolo koje meri vreme putem odbrojavanja taktnih impulsa

Tajmer, Brojač n n Tajmer je kolo koje meri vreme putem odbrojavanja taktnih impulsa poznate periode koji se dovode na ulazu ovog kola. Tako na primer, ako je perioda pobudnog taknog impulsa 1 μs, a izbrojano je 5000 pobudnih taktnih impulsa, to znači da je prošlo vreme od 5 ms Brojač predstavlja generalnija verzija tajmera. Naime, umesto da odbrojava taktne impulse generisani od strane internog oscilatora CPU-a, brojač broji impulse koji su generisani od strane nekog drugog, obično spoljneg, generatora signala. Tako na primer, brojač se može koristiti za brojanje broja vozila koja prolaze na nekoj deonici autoputa, pri čemu je svaki prolaz detektovan od strane odgovarajučeg senzora. Brojač se takođe može koristiti i za brojanje ljudi koji ulaze ili izlaze u/iz neke prostorije Tajmer 82 c 54

Strukture Tajmer-kola (a) osnovni tajmer; (b) tajmer/brojač događaja; (c) tajmer sa krajem brojanja: (d)

Strukture Tajmer-kola (a) osnovni tajmer; (b) tajmer/brojač događaja; (c) tajmer sa krajem brojanja: (d) 16/32 -bitni tajmer; (e) tajmer sa preskalerom Napomena: CLK- ulaz taktnog signala (impulsi generisani od strane internog oscilatora CPU-a); kb- izlaz kraj brojanja; br_ul- brojački impulsi generisani od strane spoljneg izvora; mode- režim rada; “=“- komparator; MUX- multiplekser Tajmer 82 c 54

Opis projekta sistema n Napajanje (+5 v) Tajmer 82 c 54

Opis projekta sistema n Napajanje (+5 v) Tajmer 82 c 54

Mikrokontroler n n Koristi se AT 89 S 8263 mikrokontroler AT 89 S 8253

Mikrokontroler n n Koristi se AT 89 S 8263 mikrokontroler AT 89 S 8253 je procesor visokih performansi i male potrošnje snage. Radi se o CMOS 8 -bitnom mikrokontroleru sa 12 k. B flash memorije i 2 k. B EEPROM-a. Napravljen je u Atmel korporaciji i kompatibilan je sa poznatim i popularnim procesorom 80 C 51. Reprogramiranje memorije je moguće pomocu SPI serijskog ulaza ili pomoću programatora memorija. AT 89 S 8253 se koristi za operacije niskih frekvencija, i ima 2 softverska moda. IDLE mod zaustavlja CPU dok dozvoljava rad RAM-a, brojač/tajmer-a, serijskog porta i sistema prekida. Niski mod čuva RAM sadržaj ali i zaustavlja oscilator isključujuci sve ostale funkcije u kolu sve dok ne naiđe sledeći spoljašnji prekid ili hardverski reset. FLASH memoriji se može pristupiti preko SPI interfejsa Tajmer 82 c 54

Blok šema mikrokontrolera AT 89 S 8253 Tajmer 82 c 54

Blok šema mikrokontrolera AT 89 S 8253 Tajmer 82 c 54

Clock-Out režim Tajmera 2 mikrokontrolera n n n Klok se dobija sa pina P

Clock-Out režim Tajmera 2 mikrokontrolera n n n Klok se dobija sa pina P 1. 0 Princip rada tajmera je takav da se pri dostizanju prekoračenja u brojanju, od zadate vrednosti brojanja, sadržaj registara RCAP 2 H i RCAP 2 L učitava u TH 2 i TL 2, pri čemu nema generisanja prekida Izlazna frekvencija računa se po formuli Tajmer 82 c 54

Periferija – Tajmer 82 c 54 n n n Ulazna frekvencija do 10 MHz

Periferija – Tajmer 82 c 54 n n n Ulazna frekvencija do 10 MHz Tri 16 -bitna brojača/tajmera Mala potrošnja, oko 10 m. A pri taktu od 8 MHz TTL kompatibilnost 6 režima rada Binarno ili BCD brojanje Tajmer 82 c 54

Primena n n n Sat realnog vremena Brojač događaja Generator pravougaonih impulsa Kontroler motora

Primena n n n Sat realnog vremena Brojač događaja Generator pravougaonih impulsa Kontroler motora Binarni množač frekvencije Tajmer 82 c 54

Blok šema Tajmer 82 c 54

Blok šema Tajmer 82 c 54

Opis n n n Bafer podataka - Trostatički, 8 -bitni, bi-direkcioni bafer i koristi

Opis n n n Bafer podataka - Trostatički, 8 -bitni, bi-direkcioni bafer i koristi se kao interfejs za povezivanje 82 c 54 sa mikrokontrolerom R/W Logika - Prihvata upravljačke signale, i generiše signale za rad celokupnog kola. Rad bloka se kontroliše pomoću signala CS CS - Ulazni signal kojim se dozvoljava rad kola RD - Ulazni signal koji treba da bude u stanju logičke nule, pri čitanju WR - Ulazni signal koji treba da bude u stanju logičke nule, pri upisu A 1, A 0 - Ulazi kojim se vrši selekcija jednog od tri brojača za upis inicijalne vrednosti za brojanje, ili Kontrolne reči Tajmer 82 c 54

Raspored pinova Tajmer 82 c 54

Raspored pinova Tajmer 82 c 54

Električna šema sistema Tajmer 82 c 54

Električna šema sistema Tajmer 82 c 54

Opis konekcije n Data Bus tajmera 82 c 54 povezan je sa Portom 2

Opis konekcije n Data Bus tajmera 82 c 54 povezan je sa Portom 2 mikrokontrolera, dok je Read/Write logika povezana sa Portom P 3, u redosledu: CS, RD, WR, A 1, A 0 ( kao u tabeli 6), (na P 3. 4 ide CS, itd) , Izlaz tajmera 0 povezan je na ulaz tajmera 1 i 2. Trigerovanje gejta 1 i 2 se ostvaruje džamperom na Gejtu 1 i 2. Gejt tajmera 0 je uvek na visokom nivou Izlazi tajmera 0 i 1 i 2 su F_OUT 0, F_OUT 1 i F_OUT 2 Tajmer 82 c 54

Softver n Kao software koristi se Keil µVision 3 V 3. 5 za pisanje

Softver n Kao software koristi se Keil µVision 3 V 3. 5 za pisanje kôda i simulaciju. Kôd je napisan u C-u Tajmer 82 c 54

Opis kôda n n Najpre se ukine prekid, izvrši programiranje Tajmera 2 mikrokontrolera AT

Opis kôda n n Najpre se ukine prekid, izvrši programiranje Tajmera 2 mikrokontrolera AT 89 S 8253, tako što se odredi vrednost brojanja (za 500 KHz na P 1. 0, je potrebno da vrednost brojanja bude FFFA ili 65530, što se dobija po formuli za Fout). U registar T 2 CON se upiše 253 (C/T 2 se postavi na 0), dok se u T 2 MOD registru T 2 OE postavi na 1. Sa TR 2=1 startuje tajmer sa generisanjem frekvencije. Programira se, zatim, tajmer 0 eksternog tajmera 82 c 54, da generiše 500 puta manju frekvencu, i njegov izlaz se vodi na ulaz tajmera 1 ili 2, koji dalje deli, sa određenom vrednošću, i radi u potrebnom režimu. (U ovom slučaju (MODE 3 – SQUARE WAVE MODE) tajmer 0 deli sa 500 d (1 F 4 H) – LSB i MSB, dok tajmer 1( ili 2) deli sa 1000 d (3 E 8 H) – LSB i MSB). Oba tajmera eksternog tajmera broje binarno 1000 d = 3 E 8 h; LSB=E 8, MSB=3; 500 d = 1 F 4 h; LSB=F 4, MSB=1 Tajmer 82 c 54

Primer kôda – početak n #include <AT 898252. H> sbit Izlaz = P 1^0;

Primer kôda – početak n #include <AT 898252. H> sbit Izlaz = P 1^0; sbit Pin = P 1^2; sbit GATE 1_Pin = P 1^4; sbit GATE 2_Pin = P 1^5; unsigned int k; unsigned int l; void main(void) { Tajmer 82 c 54

Generisanje frekvencije od 500 KHz na pinu P 1. 0 – nastavak kôda: n

Generisanje frekvencije od 500 KHz na pinu P 1. 0 – nastavak kôda: n EA = 0; // GIE = 0 RCAP 2 H = 0 x. FF; // 0 x. FFFA za 12 Mhz XTAL; na PIN-u 1. 0 500 KHz RCAP 2 L = 0 x. FA; T 2 CON &= 253; // C/T 2 treba da bude Clear T 2 MOD |= 2; // T 2 OE = 1; TR 2 = 1; // Start Tajmera Tajmer 82 c 54

Programiranje Tajmera 0 u Modu 3 – nastavak kôda: // Programiranje eksternog TAJMERA -

Programiranje Tajmera 0 u Modu 3 – nastavak kôda: // Programiranje eksternog TAJMERA - 82 c 54, T 1 u modu 3 for(k=0; k<=7000; k++); //kasnjenje od 20 ms pre pocetka programiranja tajmera 0 // Mode 3 - generisanje pravougaonih impulsa // programiranje tajmera 0 - deljenje 500 KHz sa 500 ( sa 1 F 4 ) P 3 = 0 x 0 F; // nedozvoljeno stanje za tajmer 82 c 54 P 2 = 0 x 36; // Kontrolna rec 110110 b – tabela 1, 2, 3, 4, 5 P 3 = 0 x 0 B; // upis Kontrolne reci; iz tabele 6 je 01011 b=Bh P 3 = 0 x 0 F; P 2 = 0 x. F 4; // LSB vrednosti brojanja P 3 = 0 x 08; // upis LSB-a u tajmer 0; iz tabele 6 je 01000 b=8 h P 3 = 0 x 0 F; P 2 = 0 x 01; //MSB vrednosti brojanja P 3 = 0 x 08; //upis MSB-a u tajmer 0 P 3 = 0 x 0 F; // nedozvoljeno stanje za tajmer 82 c 54 for(l=0; l<=7000; l++); //kasnjenje od 20 ms posle pocetka rada tajmera 0 Tajmer 82 c 54

Programiranje Tajmera 1(2) u nekom od modova rada – nastavak k ôda n }

Programiranje Tajmera 1(2) u nekom od modova rada – nastavak k ôda n } // programiranje tajmera 1 sa inicijalnom vrednoscu od 1000 (3 E 8) // Mode 3 - generisanje pravougaonih impulsa P 3 = 0 x 0 F; P 2 = 0 x 76; //kontrolna rec 1110110 – tabela 1, 2, 3, 4, 5 P 3 = 0 x 0 B; // iz tabele 6 je 01011 b=Bh P 3 = 0 x 0 F; P 2 = 0 x. E 8; //LSB vrednosti brojanja P 3 = 0 x 09; //upis LSB-a u tajmer 1 P 3 = 0 x 0 F; P 2 = 0 x 03; //msb vrednosti brojanja P 3 = 0 x 09; //upis MSB-a u tajmer 0; iz tabele 6 je 01001 b=9 h P 3 = 0 x 0 F; // nedozvoljeno stanje za tajmer 82 c 54 while(1) { } Tajmer 82 c 54

Uputstvo za programiranje n n Iz datog kôda se vidi da je za programiranje

Uputstvo za programiranje n n Iz datog kôda se vidi da je za programiranje Tajmera 2 eksternog tajmera 82 c 54 potrebno samo promeniti vrednost Kontrolne reči, u skladu sa tabelama 1, 2, 3, 4, 5, i vrednost brojanja, dok Tabela 6 omogućava kontrolu upisa, i vrednosti treba menjati u skladu sa istom, u zavisnosti od toga da li se programira tajmer ili upisuje Kontrolna reč Napomena: Tajmer 0 se programira samo u Modu 3 sa vredno šću brojanja 1000 d i uvek je aktivan, Gate (dozvola rada) mu je na logičkoj jedinici. Tajmeri 1 i 2 se programiraju za sve režime rada upisom odgovarajućeg kôda u mikrokontroler i trigeruju džamperom u Modu 1 i 5. Kodovi su dati u poglavlju 4 Tajmer 82 c 54

Programiranje tajmera 82 c 54 n n Programiranje se vrši upisom kontrolne reči i

Programiranje tajmera 82 c 54 n n Programiranje se vrši upisom kontrolne reči i posle toga upisom inicijalne vrednosti za brojanje, koja se ne upisuje u Control Word registar, već u sam tajmer Format upisa: 1. Kontrolna reč 2. LSB vrednosti brojanja 3. MSB vrednosti upisa Ili: 1. Kontrolna reč 2. LSB vrednosti brojanja Ili: 1. Kontrolna reč 2. MSB vrednosti brojanja Tajmer 82 c 54

Programiranje Tajmera 82 c 54 - nastavak n n Ovaj redosled treba poštovati u

Programiranje Tajmera 82 c 54 - nastavak n n Ovaj redosled treba poštovati u skladu sa Kontrolnom reči, tj. ako je brojač, Kontrolnom rečju, predviđen za upis LSB, pa MSB tako i treba upisati pri upisu vrednosti brojanja Ako se navede samo LSB ili MSB u Kontrolnoj reči, onda treba upisati samo tu jednu vrednost – najviše 8 -bitnu LSB – least significiant byte – niži bajt MSB – most significiant byte – viši bajt Tajmer 82 c 54

Programiranje Tajmera 82 c 54 - nastavak n n Kontrolna reč se upisuje u

Programiranje Tajmera 82 c 54 - nastavak n n Kontrolna reč se upisuje u Control Word registar na način opisan sledećom tabelom: Time se određuje brojač, mod rada, i način brojanja, pri čemu je: CS=0 RD = 1 WR = 0 A 1, A 0=1 , kao u sledećoj tabeli: Tajmer 82 c 54

Opis bitova Kontrolne reči Tajmer 82 c 54

Opis bitova Kontrolne reči Tajmer 82 c 54

Algoritam rada Tajmer 82 c 54

Algoritam rada Tajmer 82 c 54

Programiranje mikrokontrolera n Upis kôda u mikrokontroler može da se vrši preko ISP kabla

Programiranje mikrokontrolera n Upis kôda u mikrokontroler može da se vrši preko ISP kabla i ISP konektora na pločici ili korišćenjem programatora. U ovom slučaju korišćen je programator MEC Program. Mate UNP 2 Universal Programmer i software MEC PG 4 UW Tajmer 82 c 54

Programiranje mikrokontrolera – nastavak – osnovni prozor programa MEC PG 4 UW Tajmer 82

Programiranje mikrokontrolera – nastavak – osnovni prozor programa MEC PG 4 UW Tajmer 82 c 54

Programiranje mikrokontrolera – nastavak – selekcija AT 89 S 8253 mikrokontrolera Tajmer 82 c

Programiranje mikrokontrolera – nastavak – selekcija AT 89 S 8253 mikrokontrolera Tajmer 82 c 54

Programiranje mikrokontrolera – nastavak – odabir HEX fajla Tajmer 82 c 54

Programiranje mikrokontrolera – nastavak – odabir HEX fajla Tajmer 82 c 54

Programiranje mikrokontrolera – nastavak – početak programiranja n Ovde treba čekirati opciju FLASH +

Programiranje mikrokontrolera – nastavak – početak programiranja n Ovde treba čekirati opciju FLASH + EEPROM Tajmer 82 c 54

Programiranje mikrokontrolera – nastavak – upis kôda u mikrokontroler Tajmer 82 c 54

Programiranje mikrokontrolera – nastavak – upis kôda u mikrokontroler Tajmer 82 c 54

Primeri za Tajmer 82 c 54 n Dati su primeri rada Tajmera u svih

Primeri za Tajmer 82 c 54 n Dati su primeri rada Tajmera u svih 6 režima (modova), zajedno sa kôdom i talasnim oblicima izlaznog signala. Dati su kôdovi za Tajmer 1; za Tajmer 2 je sve isto samo što treba promeniti vrednosti na Portu P 3 i Portu P 2, u kôdu, u skladu sa prethodnim tabelama Tajmer 82 c 54

MOD 0: Generisanje Prekida po završetku brojanja n Nakon upisa Kontrolne reči Izlaz (OUT)

MOD 0: Generisanje Prekida po završetku brojanja n Nakon upisa Kontrolne reči Izlaz (OUT) je, inicijalno, u stanju logičke nule, i tu ostaje dok brojač ne dostigne nulu. Izlaz onda ide u stanje logičke jedinice i tu ostaje do novog upisa. Gate=1 dozvoljava rad, Gate=0 zabranjuje, ali Gate nema uticaja na Izlaz. Nakon upisa Kontrolne reči i vrednosti brojanja, vrednost brojanja će se učitati na sledeći Klok impuls, koji ne smanjuje tu vrednost; pa za vrednost brojanja N, Izlaz neće otići u stanje logičke jedinice pre N+1 Klok impulsa posle upisa inicijalne vrednosti brojanja. Tajmer 82 c 54

Kôd #include <AT 898252. H> sbit Izlaz = P 1^0; sbit Pin = P

Kôd #include <AT 898252. H> sbit Izlaz = P 1^0; sbit Pin = P 1^2; sbit GATE 1_Pin = P 1^4; sbit GATE 2_Pin = P 1^5; unsigned int k; unsigned int l; void main(void) { P 1=1; GATE 1_Pin = 1; GATE 2_Pin = 1; // Inicijalizacija sistema EA = 0; // GIE = 0 RCAP 2 H = 0 x. FF; // 0 x. FFFA za 12 Mhz XTAL; na PIN-u 1. 0 500 Khz RCAP 2 L = 0 x. FA; T 2 CON &= 253; // C/T 2 treba da bude Clear T 2 MOD |= 2; // T 2 OE = 1; //T 2 CON |= 4; // TR 2 = Start Timer TR 2 = 1; Tajmer 82 c 54

Nastavak kôda // Programiranje eksternog TAJMERA - 82 c 54, T 1 u modu

Nastavak kôda // Programiranje eksternog TAJMERA - 82 c 54, T 1 u modu 0 for(k=0; k<=7000; k++); // Timer 0 - deljenje 500 KHz sa 500 ( 1 F 4 ) P 3 = 0 x 0 F; P 2 = 0 x 36; // kontrolna rec P 3 = 0 x 0 B; P 3 = 0 x 0 F; P 2 = 0 x. F 4; // lsb vrednosti brojanja P 3 = 0 x 08; P 3 = 0 x 0 F; P 2 = 0 x 01; //msb vrednosti brojanja P 3 = 0 x 08; P 3 = 0 x 0 F; for(l=0; l<=7000; l++); // Timer 1 P 3 = 0 x 0 F; P 2 = 0 x 50; P 3 = 0 x 0 B; P 3 = 0 x 0 F; P 2 = 0 x 04; P 3 = 0 x 09; P 3 = 0 x 0 F; while(1) { } } //kontrolna rec //lsb vrednosti brojanja Tajmer 82 c 54

Talasni oblici CW = Kontrolna reč Tajmer 82 c 54

Talasni oblici CW = Kontrolna reč Tajmer 82 c 54

MOD 1: Monostabilni multivibrator koji se hardverski ponovo okida n n Izlaz će, inicijalno,

MOD 1: Monostabilni multivibrator koji se hardverski ponovo okida n n Izlaz će, inicijalno, biti u stanju logičke jedinice. Izlaz će preći u stanje logičke nule pod dejstvom Klok impulsa i uz trigerovanje gejta i počeće brojanje, pri čemu izlaz ostaje u stanju logičke nule dok tajmer ne dostigne nulu. Izlaz će onda otići u stanje logičke jedinice i tamo ostati do sledećeg Klok impulsa i trigera. Vrednost brojanja od N rezultuje u trajanju od N Klok impulsa. Gate ne utiče na izlaz. Proces se može ponoviti, bez ponovnog upisa vrednosti brojanja u brojač, novim trigerovanjem. Napomena: Trigerovanje se ostvaruje prebacivanjem džampera Gate 1, na pločici sa tajmerom 82 c 54, u srednji položaj(GND) i vraćanjem na 5 V. Tajmer 82 c 54

Kôd #include <AT 898252. H> sbit Izlaz = P 1^0; sbit Pin = P

Kôd #include <AT 898252. H> sbit Izlaz = P 1^0; sbit Pin = P 1^2; sbit GATE 1_Pin = P 1^4; sbit GATE 2_Pin = P 1^5; unsigned int k; unsigned int l; void main(void) { P 1=1; // Inicijalizacija sistema EA = 0; // GIE = 0 RCAP 2 H = 0 x. FF; // 0 x. FFFA za 12 Mhz XTAL; na PIN-u 1. 0 500 Khz RCAP 2 L = 0 x. FA; T 2 CON &= 253; // C/T 2 treba da bude Clear T 2 MOD |= 2; // T 2 OE = 1; //T 2 CON |= 4; // TR 2 = Start Timer TR 2 = 1; Tajmer 82 c 54

Nastavak kôda // Programiranje eksternog TAJMERA - 82 c 54, T 1 u modu

Nastavak kôda // Programiranje eksternog TAJMERA - 82 c 54, T 1 u modu 1 for(k=0; k<=7000; k++); //Timer 0 - deljenje sa 500 P 3 = 0 x 0 F; P 2 = 0 x 36; //kontrolna rec P 3 = 0 x 0 B; P 3 = 0 x 0 F; P 2 = 0 x. F 4; //lsb P 3 = 0 x 08; P 3 = 0 x 0 F; P 2 = 0 x 01; //msb P 3 = 0 x 08; P 3 = 0 x 0 F; for(l=0; l<=7000; l++); } //Timer 1 P 3 = 0 x 0 F; P 2 = 0 x 52; //kontrolna rec P 3 = 0 x 0 B; P 3 = 0 x 0 F; P 2 = 0 x 03; //lsb P 3 = 0 x 09; P 3 = 0 x 0 F; while(1) { } Tajmer 82 c 54

Talasni oblici Tajmer 82 c 54

Talasni oblici Tajmer 82 c 54

MOD 2: Delitelj sa N n n U ovom režimu brojač radi kao delitelj

MOD 2: Delitelj sa N n n U ovom režimu brojač radi kao delitelj sa N. Izlaz je, inicijalno, u stanju logičke jedinice. Kada se vrednost brojanja smanji na 1, izlaz prelazi u stanje logičke nule i tu ostaje za vreme jednog impulsa Kloka. Izlaz ponovo prelazi u stanje logičke jedinice, brojač ponovo učita vrednost brojanja i proces se ponavlja periodično. Za vrednost brojanja N, sekvenca se ponavlja na svakih N Klok impulsa. Gate=1 dozvoljava brojanje, Gate=0 zabranjuje. Ako se Gate prebaci na logičku nulu u toku izlaznog impulsa, Izlaz odmah prelazi u logičku nulu. Triger ponovo učita brojač sa inicijalnom vrednošću na sledeći Klok impuls. Izlaz prelazi u logičku nulu nakon N Klok impulsa posle trigerovanja. * Nakon upisa Kontrolne reči i inicijalne vrednosti brojanja, brojač će biti učitan na sledeći Klok impuls. Izlaz ide u stanje logičke nule i tamo je N Klok impulsa nakon upisa vrednosti brojanja. * Napomena: Ovaj slučaj se ostvaruje prebacivanjem džampera u srednji položaj (GND) i vraćanjem na 5 V. Tajmer 82 c 54

Kôd #include <AT 898252. H> sbit Izlaz = P 1^0; sbit Pin = P

Kôd #include <AT 898252. H> sbit Izlaz = P 1^0; sbit Pin = P 1^2; sbit GATE 1_Pin = P 1^4; sbit GATE 2_Pin = P 1^5; unsigned int k; unsigned int l; void main(void) { P 1=1; GATE 1_Pin = 1; GATE 2_Pin = 1; // Inicijalizacija sistema EA = 0; // GIE = 0 RCAP 2 H = 0 x. FF; // 0 x. FFFA za 12 Mhz XTAL; na PIN-u 1. 0 500 Khz RCAP 2 L = 0 x. FA; T 2 CON &= 253; // C/T 2 treba da bude Clear T 2 MOD |= 2; // T 2 OE = 1; //T 2 CON |= 4; // TR 2 = Start Timer TR 2 = 1; Tajmer 82 c 54

Nastavak kôda } // Programiranje eksternog TAJMERA - 82 c 54, T 1 for(k=0;

Nastavak kôda } // Programiranje eksternog TAJMERA - 82 c 54, T 1 for(k=0; k<=7000; k++); //Timer 0 - deljenje sa 500 P 3 = 0 x 0 F; P 2 = 0 x 36; //kontrolna rec P 3 = 0 x 0 B; P 3 = 0 x 0 F; P 2 = 0 x. F 4; //lsb P 3 = 0 x 08; P 3 = 0 x 0 F; P 2 = 0 x 01; //msb P 3 = 0 x 08; P 3 = 0 x 0 F; for(l=0; l<=7000; l++); //Timer 1 P 3 = 0 x 0 F; P 2 = 0 x 54; //kontrolna rec P 3 = 0 x 0 B; P 3 = 0 x 0 F; P 2 = 0 x 03; //lsb P 3 = 0 x 09; P 3 = 0 x 0 F; while(1) { } u modu 2 Tajmer 82 c 54

Talasni oblici Tajmer 82 c 54

Talasni oblici Tajmer 82 c 54

MOD 3: Generator pravougaonih impulsa n Sličan Modu 2, ali je izlaz povorka pravougaonih

MOD 3: Generator pravougaonih impulsa n Sličan Modu 2, ali je izlaz povorka pravougaonih impulsa iste širine, i to samo u slučaju parne inicijalne vrednosti brojanja N. Ovo je periodičan režim rada i imamo pravougaone impulse sa periodom od N Klok ciklusa. Gate=1 dozvoljava brojanje, Gate=0 zabranjuje. Ako se Gate prebaci na logičku nulu u toku izlaznog impulsa, izlaz odmah prelazi u logičku nulu. Triger ponovo učita brojač sa inicijalnom vrednošću na sledeći Klok impuls. ** Nakon upisa Kontrolne reči i inicijalne vrednosti brojanja, brojač će se učitati na sledeći Klok impuls. Imamo dva slučaja: parna i neparna vrednost brojanja Parno N: Izlaz je inicijalno u stanju logičke jedinice. Vrednost brojanja se učita na jedan impuls Kloka i smanji za dva na sledeći Klok impuls. Kada se odbroji Izlaz menja vrednost i brojač se ponovo učita sa inicijalnom vrednošću brojanja. Proces se ponavlja u beskonačnosti. Tajmer 82 c 54

MOD 3: Generator pravougaonih impulsa - nastavak Neparno N: n Izlaz je, inicijalno, u

MOD 3: Generator pravougaonih impulsa - nastavak Neparno N: n Izlaz je, inicijalno, u stanju logičke jedinice. Inicijalna vrednost minus jedan (paran broj) se učita na Klok impuls i smanji za dva na sledeći Klok impuls. Posle vremena od jednog Klok impulsa nakon odbrojavanja tajmera, izlaz prelazi u stanje logičke nule i brojač se ponovo učita sa inicijalnom vrednošću minus jedan. Zatim se novim Klok impulsom vrednost brojanja umanji za dva. Kada se izvrši brojanje, Izlaz ponovo prelazi u logičku jedinicu i brojač je ponovo učitan sa vrednošću brojanja minus jedan. Proces se ponavlja u beskonačnosti. Izlaz će biti u stanju logičke jedinice (N+1)/2, i u stanju logičke nule (N-1)/2, od zadate vrednosti brojanja. ** Napomena: Ovaj slucaj se ostvaruje prebacivanjem džampera u srednji položaj (GND) i vraćanjem na 5 V. Tajmer 82 c 54

Kôd #include <AT 898252. H> sbit Izlaz = P 1^0; sbit Pin = P

Kôd #include <AT 898252. H> sbit Izlaz = P 1^0; sbit Pin = P 1^2; sbit GATE 1_Pin = P 1^4; sbit GATE 2_Pin = P 1^5; unsigned int k; unsigned int l; void main(void) { P 1=1; GATE 1_Pin = 1; GATE 2_Pin = 1; // Inicijalizacija sistema EA = 0; // GIE = 0 RCAP 2 H = 0 x. FF; // 0 x. FFFA za 12 Mhz XTAL; na PIN-u 1. 0 500 Khz RCAP 2 L = 0 x. FA; T 2 CON &= 253; // C/T 2 treba da bude Clear T 2 MOD |= 2; // T 2 OE = 1; //T 2 CON |= 4; // TR 2 = Start Timer TR 2 = 1; Tajmer 82 c 54

Nastavak kôda // Programiranje eksternog TAJMERA - 82 c 54, T 0 i T

Nastavak kôda // Programiranje eksternog TAJMERA - 82 c 54, T 0 i T 1 u modu 3 for(k=0; k<=7000; k++); //Timer 0 - deljenje sa 500 P 3 = 0 x 0 F; P 2 = 0 x 36; //kontrolna rec P 3 = 0 x 0 B; P 3 = 0 x 0 F; P 2 = 0 x. F 4; //lsb P 3 = 0 x 08; P 3 = 0 x 0 F; P 2 = 0 x 01; //msb P 3 = 0 x 08; P 3 = 0 x 0 F; for(l=0; l<=7000; l++); //Timer 1 - deljenje frekvencije od 1 KHz sa 4 P 3 = 0 x 0 F; P 2 = 0 x 56; //kontrolna rec P 3 = 0 x 0 B; P 3 = 0 x 0 F; P 2 = 0 x 04; //lsb P 3 = 0 x 09; P 3 = 0 x 0 F; while(1) { } } Tajmer 82 c 54

Talasni oblici Tajmer 82 c 54

Talasni oblici Tajmer 82 c 54

MOD 4: Softversko-trigerovani režim rada n Izlaz će, inicijalno, biti u stanju logičke jedinice.

MOD 4: Softversko-trigerovani režim rada n Izlaz će, inicijalno, biti u stanju logičke jedinice. Kada brojač odbroji, Izlaz će otići u stanje logičke nule za vreme od jednog Klok impulsa i zatim će ponovo otići u jedinicu. Brojanje počinje upisom vrednosti brojanja. Gate=1 dozvoljava brojanje, Gate=0 zabranjuje i ne utiče na Izlaz. Nakon upisa Kontrolne reči i vrednosti za brojanje, brojač se učitava na sledeći Klok impuls, koji ne smanjuje vrednost brojanja, i za vrednost brojanja N Izlaz ne ide u stanje logičke jedinice sve dok ne prođe N+1 impulsa Kloka, od trenutka upisa vrednosti brojanja Tajmer 82 c 54

Kôd #include <AT 898252. H> sbit Izlaz = P 1^0; sbit Pin = P

Kôd #include <AT 898252. H> sbit Izlaz = P 1^0; sbit Pin = P 1^2; sbit GATE 1_Pin = P 1^4; sbit GATE 2_Pin = P 1^5; unsigned int k; unsigned int l; void main(void) { P 1=1; GATE 1_Pin = 1; GATE 2_Pin = 1; // Inicijalizacija sistema EA = 0; // GIE = 0 RCAP 2 H = 0 x. FF; // 0 x. FFFA za 12 Mhz XTAL; na PIN-u 1. 0 500 KHz RCAP 2 L = 0 x. FA; T 2 CON &= 253; // C/T 2 treba da bude Clear T 2 MOD |= 2; // T 2 OE = 1; //T 2 CON |= 4; // TR 2 = Start Timer TR 2 = 1; Tajmer 82 c 54

Nastavak kôda } // Programiranje eksternog TAJMERA - 82 c 54, T 1 for(k=0;

Nastavak kôda } // Programiranje eksternog TAJMERA - 82 c 54, T 1 for(k=0; k<=7000; k++); //Timer 0 - deljenje sa 500 P 3 = 0 x 0 F; P 2 = 0 x 36; //kontrolna rec P 3 = 0 x 0 B; P 3 = 0 x 0 F; P 2 = 0 x. F 4; //lsb P 3 = 0 x 08; P 3 = 0 x 0 F; P 2 = 0 x 01; //msb P 3 = 0 x 08; P 3 = 0 x 0 F; for(l=0; l<=7000; l++); //Timer 1 P 3 = 0 x 0 F; P 2 = 0 x 58; //kontrolna rec P 3 = 0 x 0 B; P 3 = 0 x 0 F; P 2 = 0 x 03; //lsb P 3 = 0 x 09; P 3 = 0 x 0 F; while(1) { } u modu 4 Tajmer 82 c 54

Talasni oblici Tajmer 82 c 54

Talasni oblici Tajmer 82 c 54

MOD 5: Hardversko-trigerovani režim rada n Izlaz će biti, inicijalno, u stanju logičke jedinice.

MOD 5: Hardversko-trigerovani režim rada n Izlaz će biti, inicijalno, u stanju logičke jedinice. Brojanje počinje rastućom ivicom gejta. Kada se izvrši brojanje, Izlaz će preči u stanje logičke nule i ostati u tom stanju jedan klok impuls, nakon čega se vraća u stanje logičke jedinice. Nakon upisa Kontrolne reči i inicijalne vrednosti brojanja, brojač će biti učitan nakon Klok impulsa, kome prethodi trigerovanje gejta. Ovaj Klok impuls ne smanjuje vrednost brojanja, pa za inicijalnu vrednost brojanja N, Izlaz ne ide u stanje logičke nule sve dok ne prođe N+1 Klok impulsa posle trigerovanja. Sekvenca brojanja je retrigerabilna. Gejt ne utiče na izlaz. Trigerovanje se ostvaruje prebacivanjem džampera u srednji položaj (GND) i vraćanjem na 5 V Tajmer 82 c 54

Kôd #include <AT 898252. H> sbit Izlaz = P 1^0; sbit Pin = P

Kôd #include <AT 898252. H> sbit Izlaz = P 1^0; sbit Pin = P 1^2; sbit GATE 1_Pin = P 1^4; sbit GATE 2_Pin = P 1^5; unsigned int k; unsigned int l; void main(void) { P 1=1; // Inicijalizacija sistema EA = 0; // GIE = 0 RCAP 2 H = 0 x. FF; // 0 x. FFFA za 12 Mhz XTAL; na PIN-u 1. 0 500 Khz RCAP 2 L = 0 x. FA; T 2 CON &= 253; // C/T 2 treba da bude Clear T 2 MOD |= 2; // T 2 OE = 1; //T 2 CON |= 4; // TR 2 = Start Timer TR 2 = 1; Tajmer 82 c 54

Nastavak kôda } // Programiranje eksternog TAJMERA - 82 c 54, T 1 u

Nastavak kôda } // Programiranje eksternog TAJMERA - 82 c 54, T 1 u modu 5 for(k=0; k<=7000; k++); //Timer 0 - deljenje sa 500 P 3 = 0 x 0 F; P 2 = 0 x 36; //kontrolna rec P 3 = 0 x 0 B; P 3 = 0 x 0 F; P 2 = 0 x. F 4; //lsb P 3 = 0 x 08; P 3 = 0 x 0 F; P 2 = 0 x 01; //msb P 3 = 0 x 08; P 3 = 0 x 0 F; for(l=0; l<=7000; l++); //Timer 1 P 3 = 0 x 0 F; P 2 = 0 x 5 A; //kontrolna rec P 3 = 0 x 0 B; P 3 = 0 x 0 F; P 2 = 0 x 03; //lsb P 3 = 0 x 09; P 3 = 0 x 0 F; while(1) { } Tajmer 82 c 54

Talasni oblici Tajmer 82 c 54

Talasni oblici Tajmer 82 c 54

Zadatak za studente n Proveriti ispravnost rada Tajmera 82 c 54 u svim MOD-ovima

Zadatak za studente n Proveriti ispravnost rada Tajmera 82 c 54 u svim MOD-ovima rada Tajmer 82 c 54

Mod 0 n Pokrenuti sa CD-a iz direktorijuma, Kod/Timer-82 c 54/Mod 0/Timer 1 fajl

Mod 0 n Pokrenuti sa CD-a iz direktorijuma, Kod/Timer-82 c 54/Mod 0/Timer 1 fajl Timer 1_Mod 0. Uv 2, (µVision Project File) Tajmer 82 c 54

Testiranje Tajmera u Modu 0 n n Upisati, umesto postojeće, novu vrednost za brojanje,

Testiranje Tajmera u Modu 0 n n Upisati, umesto postojeće, novu vrednost za brojanje, koja je zadata u vežbi Potrebno je, u redu 53, umesto vrednosti 4 na portu P 2 (P 2 = 0 x 04; //LSB vrednosti brojanja) upisati novu vrednost, i sa Project/Rebuild all target files izvršiti kompajliranje, nakon čega se kreira HEX fajl Timer 1_Mod 0. hex, kojim će se mikrokontroler isprogramirati Tajmer 82 c 54

Testiranje Tajmera u Modu 0 - nastavak n Osnovni prozor Keil-a, gde se vrši,

Testiranje Tajmera u Modu 0 - nastavak n Osnovni prozor Keil-a, gde se vrši, potrebna, promena vrednosti brojanja tajmera Tajmer 82 c 54

Testiranje Tajmera u Modu 0 - nastavak n n Posmatrati pomoću osciloskopa talasne oblike

Testiranje Tajmera u Modu 0 - nastavak n n Posmatrati pomoću osciloskopa talasne oblike na F_OUT 0 i F_OUT 1, na pločici sa tajmerom 82 c 54 i uočiti odnos frekvencija Skicirati te talasne oblike Tajmer 82 c 54

Testiranje Tajmera 82 c 54 u ostalim modovima rada n n Ostali MOD-ovi tajmera

Testiranje Tajmera 82 c 54 u ostalim modovima rada n n Ostali MOD-ovi tajmera 1, i 2 se proveravaju na isti način Treba otvoriti potreban direktorijum i učitati fajl čije ime odgovara tajmeru i MOD-u u kome se tajmer testira Tajmer 82 c 54