Download - Šta je mikrokontroler ?
Tajmer 82c54Tajmer 82c54
Šta je mikrokontroler ?Šta je mikrokontroler ? Mikrokontroler je računar na čipuMikrokontroler je računar na čipu. On sadrži skoro sve . On sadrži skoro sve
osnovne gradivne blokove računarskog sistema (CPU, ROM, osnovne gradivne blokove računarskog sistema (CPU, ROM, RAM, U/I periferije tipa AD i DA konvertore, serijske RAM, U/I periferije tipa AD i DA konvertore, serijske komunikacione interfejse (UART), paralelne interfejs komunikacione interfejse (UART), paralelne interfejs portove (PIA), tajmere/brojače, LCD drajvere, i dr)portove (PIA), tajmere/brojače, LCD drajvere, i dr)
Svi mikrokontroleri imaju usađenu memoriju na čipu kao i Svi mikrokontroleri imaju usađenu memoriju na čipu kao i veći broj veći broj
ulazno-izlaznih interfejs linijaulazno-izlaznih interfejs linija Odlikuju se niskom cenom i kompaktnošćuOdlikuju se niskom cenom i kompaktnošću Mikrokontroleri se danas koriste u Mikrokontroleri se danas koriste u embeddedembedded sistemima za sistemima za
upravljanje raznim funkcijamaupravljanje raznim funkcijama Mikrokontroleri se veoma često koriste i u situacijama kada Mikrokontroleri se veoma često koriste i u situacijama kada
treba da se veoma brzo reaguje na spoljne signale - treba da se veoma brzo reaguje na spoljne signale - posebno ako se takvi sistemi koriste za rad u realnom posebno ako se takvi sistemi koriste za rad u realnom vremenuvremenu
Petrović Radovan, 10052
Tajmer 82c54Tajmer 82c54
Mikrokontroleri: tipovi arhitektura i blok šemaMikrokontroleri: tipovi arhitektura i blok šema
HarvardHarvard tip- karakteriše se razdvojenim memorijama za tip- karakteriše se razdvojenim memorijama za program i podatkeprogram i podatke
PrincetonPrinceton tip (tzv. von Neumann)- programska memorija i tip (tzv. von Neumann)- programska memorija i memorijamemorija za podatke dele isti adresni prostor za podatke dele isti adresni prostor
Tajmer 82c54Tajmer 82c54
Opšti blok dijagram mikrokontroleraOpšti blok dijagram mikrokontrolera
RAM
bajt - adresibilni ROM
Fle [ EEPROM
memorijski sistem
centralna procesorska
jedinica - CPU -
sistem za analogno -
digitalnu konverziju
sistem za analogno -
digitalnu konverziju
Unapredene karakteristike : sistem distribuiranog procesiranja impulsno širinska modulacija
Dodatne karakteristike : DA i AD konvertori sat realnog vremena LCD interfejs
sistem za serijsku
komunikaciju
sistem za proširenje. . .
port A port B port X. . .
Tajmer 82c54Tajmer 82c54
Mikrokontroleri u odnosu na mikroprocesoreMikrokontroleri u odnosu na mikroprocesore
Mikroprocesor je integrisano kolo ili čip lociran na osnovnoj Mikroprocesor je integrisano kolo ili čip lociran na osnovnoj ploči koje u suštini predstavlja CPU računarskog sistemaploči koje u suštini predstavlja CPU računarskog sistema
Dok je mikroprocesor (CPU) integrisana komponenta na Dok je mikroprocesor (CPU) integrisana komponenta na jedinstvenom čipu, sam mikrokontroler,na jedinstvenom jedinstvenom čipu, sam mikrokontroler,na jedinstvenom cipu ima integrisano CPU, RAM i ROM memoriju i ostale cipu ima integrisano CPU, RAM i ROM memoriju i ostale ulazno-izlazno orijentisane gradivne blokove (paralelni i ulazno-izlazno orijentisane gradivne blokove (paralelni i serijski interfejsi, tajmeri, logika za prihvatanje prekida, A/D serijski interfejsi, tajmeri, logika za prihvatanje prekida, A/D i D/A konvertore i dr.)i D/A konvertore i dr.)
Tajmer 82c54Tajmer 82c54
Detaljni blok dijagram mikroračunarskog sistemaDetaljni blok dijagram mikroračunarskog sistema
Tajmer 82c54Tajmer 82c54
Blok dijagram mikroprocesora(CPU-a)Blok dijagram mikroprocesora(CPU-a)
ALU
Akumulator
Radni registri
PC SP
kola za taktovanje i sinhronizaciju
kola za prihvatanje
prekida
Tajmer 82c54Tajmer 82c54
Blok dijagram mikrokontroleraBlok dijagram mikrokontrolera ALU tajmer/brojač paralelni U/I port
akumulator
registri opšte namene
interni RAM
interni ROM
interni FLASH
SP
PC
serijski U/I port
ADC
DAC
kolo za prekid
kolo za taktovanje
Tajmer 82c54Tajmer 82c54
Razlike između mikroprocesora i Razlike između mikroprocesora i mikrokontroleramikrokontrolera
Mikroprocesori najcešće CISC tipa za kopiranje podataka Mikroprocesori najcešće CISC tipa za kopiranje podataka iz spoljne memorije u CPU koriste veći broj op-kôdova, iz spoljne memorije u CPU koriste veći broj op-kôdova, dok mikrokontroleri jedan ili dvadok mikrokontroleri jedan ili dva
Za manipulisanje sa podacima tipa bit mikroprocesori Za manipulisanje sa podacima tipa bit mikroprocesori koriste jedan ili dva tipa instrukcija, dok kod koriste jedan ili dva tipa instrukcija, dok kod mikrokontrolera taj broj je većimikrokontrolera taj broj je veći
Mikroprocesori su projektovani za brzi prenos podataka iz Mikroprocesori su projektovani za brzi prenos podataka iz programa sa spoljno adresiranih lokacija u čip, dok se kod programa sa spoljno adresiranih lokacija u čip, dok se kod mikrokontrolera brzi prenos bitova obavlja u okviru čipa.mikrokontrolera brzi prenos bitova obavlja u okviru čipa.
Mikrokontroler moze da funkcioniše kao računar bez Mikrokontroler moze da funkcioniše kao računar bez dodataka spoljnih gradivnih blokova (memorije i U/I dodataka spoljnih gradivnih blokova (memorije i U/I uređaja), dok operativnost mikroprocesora bez spoljne uređaja), dok operativnost mikroprocesora bez spoljne memorije i U/I podsistema nije mogućamemorije i U/I podsistema nije moguća
Tajmer 82c54Tajmer 82c54
Šta su tajmeri Šta su tajmeri ??
Tajmer-kolo je periferno kolo koje je u stanju da meri Tajmer-kolo je periferno kolo koje je u stanju da meri vremenske intervale vremenske intervale
Ima mogućnost generisanja događaja u specifičnim Ima mogućnost generisanja događaja u specifičnim vremenskim trenucima. Tipične aplikacije su one koje se vremenskim trenucima. Tipične aplikacije su one koje se odnose na uključenje crvenog/žutog/zelenog svetla na odnose na uključenje crvenog/žutog/zelenog svetla na semaforu za specificirani vremenski period, recimo semaforu za specificirani vremenski period, recimo crveno svetlo traje 20 s, žuto 3 s, a crveno 15 scrveno svetlo traje 20 s, žuto 3 s, a crveno 15 s
Može da odredi vreme trajanja između dva spoljašnja Može da odredi vreme trajanja između dva spoljašnja događaja. Obično aplikacije ovakvog tipa srećemo kod događaja. Obično aplikacije ovakvog tipa srećemo kod merenja brzine kretanja vozilamerenja brzine kretanja vozila
Tajmer 82c54Tajmer 82c54
Tajmer, BrojačTajmer, Brojač
Tajmer je kolo koje meri vreme putem odbrojavanja Tajmer je kolo koje meri vreme putem odbrojavanja taktnih impulsa poznate periode koji se dovode na ulazu taktnih impulsa poznate periode koji se dovode na ulazu ovog kola. Tako na primer, ako je perioda pobudnog ovog kola. Tako na primer, ako je perioda pobudnog taknog impulsa 1 μs, a izbrojano je 5000 pobudnih taktnih taknog impulsa 1 μs, a izbrojano je 5000 pobudnih taktnih impulsa, to znači da je prošlo vreme od 5 msimpulsa, to znači da je prošlo vreme od 5 ms
Brojač predstavlja generalnija verzija tajmera. Naime, Brojač predstavlja generalnija verzija tajmera. Naime, umesto da odbrojava taktne impulse generisani od strane umesto da odbrojava taktne impulse generisani od strane internog oscilatora CPU-a, brojač broji impulse koji su internog oscilatora CPU-a, brojač broji impulse koji su generisani od strane nekog drugog, obično spoljneg, generisani od strane nekog drugog, obično spoljneg, generatora signala. Tako na primer, brojač se može generatora signala. Tako na primer, brojač se može koristiti za brojanje broja vozila koja prolaze na nekoj koristiti za brojanje broja vozila koja prolaze na nekoj deonici autoputa, pri čemu je svaki prolaz detektovan od deonici autoputa, pri čemu je svaki prolaz detektovan od strane odgovarajučeg senzora. Brojač se takođe može strane odgovarajučeg senzora. Brojač se takođe može koristiti i za brojanje ljudi koji ulaze ili izlaze u/iz neke koristiti i za brojanje ljudi koji ulaze ili izlaze u/iz neke prostorije prostorije
Tajmer 82c54Tajmer 82c54
Strukture Tajmer-kolaStrukture Tajmer-kola
16-bitni brojač - naviše
16
CLKIZL
16-bitni brojač - naviše
16CLK
=
kraj brojanja
kb
IZL
16-bitni brojač - naviše
16MUX2 u 1
CLK
br_ul
mode
16-bitni brojač - naviše
1616-bitni brojač
- naviše
16
16-bitni brojač - naviše
16
preskaler
CLK
CLK
mode
Reset(a) (b)
(c)
(d)
(e)
kb
(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 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 82c54Tajmer 82c54
Opis projekta sistemaOpis projekta sistema
Napajanje (+5v)Napajanje (+5v)
Tajmer 82c54Tajmer 82c54
MikrokontrolerMikrokontroler
Koristi se AT89S8263 mikrokontrolerKoristi se AT89S8263 mikrokontroler AT89S8253 je procesor visokih performansi i male potrošnje AT89S8253 je procesor visokih performansi i male potrošnje
snage. Radi se o CMOS 8-bitnom mikrokontroleru sa 12 kB snage. Radi se o CMOS 8-bitnom mikrokontroleru sa 12 kB flash memorije i 2kB EEPROM-a. Napravljen je u Atmel flash memorije i 2kB EEPROM-a. Napravljen je u Atmel korporaciji i kompatibilan je sa poznatim i popularnim korporaciji i kompatibilan je sa poznatim i popularnim procesorom 80C51. Reprogramiranje memorije je moguće procesorom 80C51. Reprogramiranje memorije je moguće pomocu SPI serijskog ulaza ili pomoću programatora pomocu SPI serijskog ulaza ili pomoću programatora memorija. AT89S8253 se koristi za operacije niskih memorija. AT89S8253 se koristi za operacije niskih frekvencija, i ima 2 softverska moda. IDLE mod zaustavlja frekvencija, i ima 2 softverska moda. IDLE mod zaustavlja CPU dok dozvoljava rad RAM-a, brojač/tajmer-a, serijskog CPU dok dozvoljava rad RAM-a, brojač/tajmer-a, serijskog porta i sistema prekida. Niski mod čuva RAM sadržaj ali i porta i sistema prekida. Niski mod čuva RAM sadržaj ali i zaustavlja oscilator isključujuci sve ostale funkcije u kolu zaustavlja oscilator isključujuci sve ostale funkcije u kolu sve dok ne naiđe sledeći spoljašnji prekid ili hardverski sve dok ne naiđe sledeći spoljašnji prekid ili hardverski reset. FLASH memoriji se može pristupiti preko SPI reset. FLASH memoriji se može pristupiti preko SPI interfejsainterfejsa
Tajmer 82c54Tajmer 82c54
Blok šema mikrokontrolera AT89S8253Blok šema mikrokontrolera AT89S8253
Tajmer 82c54Tajmer 82c54
Clock-Out režim Tajmera 2Clock-Out režim Tajmera 2 mikrokontroleramikrokontrolera
Klok se dobija sa pina P1.0Klok se dobija sa pina P1.0 Princip rada tajmera je takav da se pri dostizanju Princip rada tajmera je takav da se pri dostizanju
prekoračenja u brojanju, od zadate vrednosti brojanja, prekoračenja u brojanju, od zadate vrednosti brojanja, sadržaj registara RCAP2H i RCAP2L učitava u TH2 i TL2, pri sadržaj registara RCAP2H i RCAP2L učitava u TH2 i TL2, pri čemu nema generisanja prekidačemu nema generisanja prekida
Izlazna frekvencija računa se po formuliIzlazna frekvencija računa se po formuli
P2L)]RCAP2H/RCA(65536[4FoscFout
Tajmer 82c54Tajmer 82c54
Periferija – Tajmer 82c54Periferija – Tajmer 82c54
Ulazna frekvencija do 10MHzUlazna frekvencija do 10MHz Tri 16-bitna brojača/tajmera Tri 16-bitna brojača/tajmera Mala potrošnja, oko 10mA pri taktu od 8MHzMala potrošnja, oko 10mA pri taktu od 8MHz TTL kompatibilnostTTL kompatibilnost 6 režima rada 6 režima rada Binarno ili BCD brojanje Binarno ili BCD brojanje
Tajmer 82c54Tajmer 82c54
PrimenaPrimena
Sat realnog vremenaSat realnog vremena Brojač događajaBrojač događaja Generator pravougaonih impulsaGenerator pravougaonih impulsa Kontroler motoraKontroler motora Binarni množač frekvencijeBinarni množač frekvencije
Tajmer 82c54Tajmer 82c54
Blok šemaBlok šema
Tajmer 82c54Tajmer 82c54
OpisOpis
Bafer podataka - Bafer podataka - Trostatički, 8-bitni, bi-direkcioni bafer i Trostatički, 8-bitni, bi-direkcioni bafer i koristi se kao interfejs za povezivanje 82c54 sakoristi se kao interfejs za povezivanje 82c54 sa mikrokontrolerommikrokontrolerom
R/W LogikaR/W Logika - - Prihvata upravljačke signale, i generiše Prihvata upravljačke signale, i generiše signale za rad celokupnog kola. Rad bloka se kontroliše signale za rad celokupnog kola. Rad bloka se kontroliše pomoću signalapomoću signala CS CS
CS CS -- Ulazni signal kojim se dozvoljava rad kola Ulazni signal kojim se dozvoljava rad kola RD RD -- Ulazni signal koji treba da bude u stanju logičke nule, Ulazni signal koji treba da bude u stanju logičke nule,
pri pri čitanjučitanju WR WR -- Ulazni signal koji treba da bude u stanju logičke nule, Ulazni signal koji treba da bude u stanju logičke nule,
pri upisupri upisu A1,A0A1,A0 - - Ulazi kojim se vrši selekcija jednog od tri brojača Ulazi kojim se vrši selekcija jednog od tri brojača
za upis inicijalne vrednosti za brojanje, ili za upis inicijalne vrednosti za brojanje, ili Kontrolne rečiKontrolne reči
Tajmer 82c54Tajmer 82c54
Raspored pinovaRaspored pinova
Tajmer 82c54Tajmer 82c54
Električna šema sistemaElektrična šema sistema
Tajmer 82c54Tajmer 82c54
Opis konekcijeOpis konekcije
Data Bus tajmera 82c54 povezan je sa Portom2 Data Bus tajmera 82c54 povezan je sa Portom2 mikrokontrolera, dok je Read/Write logika povezana sa mikrokontrolera, dok je Read/Write logika povezana sa Portom P3, u redosledu:Portom P3, u redosledu:
CS, RD, WR, A1, A0 ( kao u tabeli 6), (na P3.4 ide CS, CS, RD, WR, A1, A0 ( kao u tabeli 6), (na P3.4 ide CS, itd)itd),,
Izlaz tajmera 0 povezan je na ulaz tajmera 1 i 2. Izlaz tajmera 0 povezan je na ulaz tajmera 1 i 2. Trigerovanje gejta 1 i 2 se ostvaruje džamperom na Gejtu 1 Trigerovanje gejta 1 i 2 se ostvaruje džamperom na Gejtu 1 i 2. Gejt tajmera 0 je uvek na visokom nivoui 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_OUT2Izlazi tajmera 0 i 1 i 2 su F_OUT 0, F_OUT 1 i F_OUT2
Tajmer 82c54Tajmer 82c54
SoftverSoftver
Kao software koristi se Kao software koristi se Keil µVision3 V3.5Keil µVision3 V3.5 za pisanje za pisanje kôdkôda i a i simulaciju.simulaciju. Kôd Kôd je napisan u C-uje napisan u C-u
Tajmer 82c54Tajmer 82c54
Opis Opis kôdkôdaa
Najpre se ukine prekid, izvrši programiranje Tajmera 2 Najpre se ukine prekid, izvrši programiranje Tajmera 2 mikrokontrolera AT89S8253, tako što se odredi vrednost mikrokontrolera AT89S8253, tako što se odredi vrednost brojanja (za 500KHz na P1.0, je potrebno da vrednost brojanja (za 500KHz na P1.0, je potrebno da vrednost brojanja bude FFFA ili 65530, što se dobija po formuli za brojanja bude FFFA ili 65530, što se dobija po formuli za Fout). U registar T2CON se upiše 253 (C/T2 se postavi na 0), Fout). U registar T2CON se upiše 253 (C/T2 se postavi na 0), dok se u T2MOD registru T2OE postavi na 1. Sa TR2=1 dok se u T2MOD registru T2OE postavi na 1. Sa TR2=1 startuje tajmer sa generisanjem frekvencije. Programira se, startuje tajmer sa generisanjem frekvencije. Programira se, zatim, tajmer 0zatim, tajmer 0 eksternog tajmera 82c54, da generiše 500 eksternog tajmera 82c54, da generiše 500 puta manju frekvencu, i njegov izlaz se vodi na ulaz tajmera 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 1 ili 2, koji dalje deli, sa određenom vrednošću, i radi u potrebnom režimu. (U ovom slučaju (MODE3 – SQUARE potrebnom režimu. (U ovom slučaju (MODE3 – SQUARE WAVE MODE) tajmer 0 deli sa 500d (1F4 H) – LSB i MSB, WAVE MODE) tajmer 0 deli sa 500d (1F4 H) – LSB i MSB, dok tajmer 1( ili 2) deli sa 1000d (3E8 H) – LSB i MSB). Oba dok tajmer 1( ili 2) deli sa 1000d (3E8 H) – LSB i MSB). Oba tajmera eksternog tajmera broje binarnotajmera eksternog tajmera broje binarno
1000d = 3E8h; LSB=E8, MSB=3; 500d = 1F4h; 1000d = 3E8h; LSB=E8, MSB=3; 500d = 1F4h; LSB=F4, MSB=1LSB=F4, MSB=1
Tajmer 82c54Tajmer 82c54
Primer kPrimer kôôda – početak da – početak
#include <AT898252.H>#include <AT898252.H> sbit Izlaz = P1^0; sbit Izlaz = P1^0;
sbit Pin = P1^2; sbit Pin = P1^2; sbit GATE1_Pin = P1^4; sbit GATE1_Pin = P1^4; sbit GATE2_Pin = P1^5; sbit GATE2_Pin = P1^5; unsigned int k;unsigned int k;unsigned int l;unsigned int l;void main(void)void main(void){{
Tajmer 82c54Tajmer 82c54
Generisanje frekvencije od 500KHz na pinu P1.0 – Generisanje frekvencije od 500KHz na pinu P1.0 – nastavak knastavak kôôdada::
EA = 0; EA = 0; // GIE = 0// GIE = 0RCAP2H = 0xFF;RCAP2H = 0xFF; // 0xFFFA za 12Mhz XTAL; na PIN-u 1.0 // 0xFFFA za 12Mhz XTAL; na PIN-u 1.0 500KHz 500KHz RCAP2L = 0xFA;RCAP2L = 0xFA;T2CON &= 253;T2CON &= 253; // C/T2 treba da bude Clear// C/T2 treba da bude Clear T2MOD |= 2;T2MOD |= 2; // T2OE = 1;// T2OE = 1;TR2 = 1; TR2 = 1; // Start Tajmera// Start Tajmera
Tajmer 82c54Tajmer 82c54
Programiranje Tajmera 0 u Modu3 – nastavak kProgramiranje Tajmera 0 u Modu3 – nastavak kôôdada::
// Programiranje eksternog TAJMERA - 82c54, T1// Programiranje eksternog TAJMERA - 82c54, T1 u modu 3u modu 3 for(k=0; k<=7000; k++);//kasnjenje od 20ms pre pocetka for(k=0; k<=7000; k++);//kasnjenje od 20ms pre pocetka
programiranja tajmera 0programiranja tajmera 0 // Mode 3 - generisanje pravougaonih impulsa// Mode 3 - generisanje pravougaonih impulsa // programiranje tajmera 0 - deljenje 500KHz sa 500 ( sa 1F4 )// programiranje tajmera 0 - deljenje 500KHz sa 500 ( sa 1F4 ) P3 = 0x0F; P3 = 0x0F; // nedozvoljeno stanje za tajmer 82c54 // nedozvoljeno stanje za tajmer 82c54
P2 = 0x36; P2 = 0x36; // Kontrolna rec 110110b – tabela 1,2,3,4,5// Kontrolna rec 110110b – tabela 1,2,3,4,5P3 = 0x0B; P3 = 0x0B; // upis Kontrolne reci; iz tabele 6 je 01011b=Bh// upis Kontrolne reci; iz tabele 6 je 01011b=BhP3 = 0x0F;P3 = 0x0F;P2 = 0xF4; P2 = 0xF4; // LSB vrednosti brojanja// LSB vrednosti brojanjaP3 = 0x08; // upis LSB-a u tajmer 0; iz tabele 6 je 01000b=8hP3 = 0x08; // upis LSB-a u tajmer 0; iz tabele 6 je 01000b=8hP3 = 0x0F;P3 = 0x0F;P2 = 0x01;P2 = 0x01; //MSB vrednosti brojanja //MSB vrednosti brojanjaP3 = 0x08; //upis MSB-a u tajmer 0 P3 = 0x08; //upis MSB-a u tajmer 0 P3 = 0x0F; // nedozvoljeno stanje za tajmer 82c54 P3 = 0x0F; // nedozvoljeno stanje za tajmer 82c54 for(l=0; l<=7000; l++); //kasnjenje od 20ms posle pocetka rada for(l=0; l<=7000; l++); //kasnjenje od 20ms posle pocetka rada tajmera 0tajmera 0
Tajmer 82c54Tajmer 82c54
Programiranje Tajmera 1(2) u nekom od modova rada – Programiranje Tajmera 1(2) u nekom od modova rada – nastavak knastavak kôôdada
// programiranje tajmera 1 sa inicijalnom vrednoscu od 1000 (3E8)// programiranje tajmera 1 sa inicijalnom vrednoscu od 1000 (3E8)// Mode 3 - generisanje pravougaonih impulsa// Mode 3 - generisanje pravougaonih impulsaP3 = 0x0F;P3 = 0x0F;P2 = 0x76; P2 = 0x76; //kontrolna rec 1110110 – tabela 1,2,3,4,5//kontrolna rec 1110110 – tabela 1,2,3,4,5P3 = 0x0B; P3 = 0x0B; // iz tabele 6 je 01011b=Bh // iz tabele 6 je 01011b=BhP3 = 0x0F;P3 = 0x0F;P2 = 0xE8;P2 = 0xE8; //LSB vrednosti brojanja//LSB vrednosti brojanjaP3 = 0x09; //upis LSB-a u tajmer 1P3 = 0x09; //upis LSB-a u tajmer 1P3 = 0x0F;P3 = 0x0F;P2 = 0x03;P2 = 0x03; //msb vrednosti brojanja//msb vrednosti brojanjaP3 = 0x09; //upis MSB-a u tajmer 0; iz tabele 6 je 01001b=9hP3 = 0x09; //upis MSB-a u tajmer 0; iz tabele 6 je 01001b=9hP3 = 0x0F; // nedozvoljeno stanje za tajmer 82c54 P3 = 0x0F; // nedozvoljeno stanje za tajmer 82c54 while(1)while(1){{}}
}}
Tajmer 82c54Tajmer 82c54
Uputstvo za programiranjeUputstvo za programiranje
Iz datog Iz datog kôdkôda se vidi da je za programiranje Tajmera 2 a se vidi da je za programiranje Tajmera 2 eksternog tajmera 82c54 potrebno samo promeniti eksternog tajmera 82c54 potrebno samo promeniti vrednost Kontrolne reči, u skladu sa tabelama 1,2,3,4,5, i vrednost Kontrolne reči, u skladu sa tabelama 1,2,3,4,5, i vrednost brojanja, dok Tabela 6 omogućava kontrolu upisa, vrednost brojanja, dok Tabela 6 omogućava kontrolu upisa, i vrednosti treba menjati u skladu sa istom, u zavisnosti od i vrednosti treba menjati u skladu sa istom, u zavisnosti od toga da li se programira tajmer ili upisuje Kontrolna rečtoga da li se programira tajmer ili upisuje Kontrolna reč
Napomena: Tajmer 0 se programira samo u Modu3 sa Napomena: Tajmer 0 se programira samo u Modu3 sa vrednovrednošću brojanja 1000d šću brojanja 1000d i uvek je aktivan, Gate (dozvola i uvek je aktivan, Gate (dozvola rada) mu je na logičkoj jedinici. Tajmeri 1 i 2 se rada) mu je na logičkoj jedinici. Tajmeri 1 i 2 se programiraju za sve režime rada upisom odgovarajućeg programiraju za sve režime rada upisom odgovarajućeg kôdkôda u mikrokontroler i trigeruju džamperom u Modu 1 i 5. a u mikrokontroler i trigeruju džamperom u Modu 1 i 5. Kodovi su dati u poglavlju 4Kodovi su dati u poglavlju 4
Tajmer 82c54Tajmer 82c54
Programiranje tajmera 82c54Programiranje tajmera 82c54
Programiranje se vrši upisom Programiranje se vrši upisom kontrolne rečikontrolne reči i posle toga i posle toga
upisom inicijalne vrednosti za brojanje, koja se ne upisuje u upisom inicijalne vrednosti za brojanje, koja se ne upisuje u Control Word registar, već u sam tajmerControl Word registar, već u sam tajmer
Format upisa:Format upisa:1. Kontrolna reč1. Kontrolna reč2. LSB vrednosti brojanja2. LSB vrednosti brojanja3. MSB vrednosti upisa3. MSB vrednosti upisaIli:Ili:1. Kontrolna reč1. Kontrolna reč2. LSB vrednosti brojanja2. LSB vrednosti brojanjaIli:Ili:1. Kontrolna reč1. Kontrolna reč2. MSB vrednosti brojanja2. MSB vrednosti brojanja
Tajmer 82c54Tajmer 82c54
Programiranje Tajmera 82c54 - nastavakProgramiranje Tajmera 82c54 - nastavak
Ovaj redosled treba poštovati u skladu sa Kontrolnom reči, Ovaj redosled treba poštovati u skladu sa Kontrolnom reči, tj. ako je brojač, Kontrolnom rečju, predviđen za upis LSB, tj. ako je brojač, Kontrolnom rečju, predviđen za upis LSB, pa MSB tako i treba upisati pri upisu vrednosti brojanjapa MSB tako i treba upisati pri upisu vrednosti brojanja
Ako se navede samo LSB ili MSB u Kontrolnoj reči, onda Ako se navede samo LSB ili MSB u Kontrolnoj reči, onda treba upisati samo tu jednu vrednost – najviše 8-bitnutreba upisati samo tu jednu vrednost – najviše 8-bitnu
LSB – least significiant byte – niži bajtLSB – least significiant byte – niži bajt MSB – most significiant byte – viši bajtMSB – most significiant byte – viši bajt
Tajmer 82c54Tajmer 82c54
Programiranje Tajmera 82c54 - nastavakProgramiranje Tajmera 82c54 - nastavak Kontrolna reč se upisuje u Kontrolna reč se upisuje u Control WordControl Word registar na na registar na način čin
opisan sledećom tabelom:opisan sledećom tabelom:
Time se određuje brojač, mod rada, i način brojanja, pri čemu je: Time se određuje brojač, mod rada, i način brojanja, pri čemu je: CS=0 RD = 1 WR = 0CS=0 RD = 1 WR = 0 A1,A0 A1,A0=1=1 , , kao u sledećoj tabeli:kao u sledećoj tabeli:
Tajmer 82c54Tajmer 82c54
Opis bitova Kontrolne rečiOpis bitova Kontrolne reči
Tajmer 82c54Tajmer 82c54
Algoritam radaAlgoritam rada
Tajmer 82c54Tajmer 82c54
Programiranje mikrokontroleraProgramiranje mikrokontrolera
Upis kUpis kôôda u mikrokontroler može da se vrši preko ISP kabla da u mikrokontroler može da se vrši preko ISP kabla i ISP konektora na pločici ili korišćenjem programatora. U i ISP konektora na pločici ili korišćenjem programatora. U ovom slučaju korišćen je programator ovom slučaju korišćen je programator MEC ProgramMate MEC ProgramMate UNP2 Universal ProgrammerUNP2 Universal Programmer i i software software MEC PG4UWMEC PG4UW
Tajmer 82c54Tajmer 82c54
Programiranje mikrokontroleraProgramiranje mikrokontrolera – – nastavak – nastavak – osnovni osnovni prozor programa MEC PG4UWprozor programa MEC PG4UW
Tajmer 82c54Tajmer 82c54
Programiranje mikrokontroleraProgramiranje mikrokontrolera – – nastavak – nastavak – selekcija selekcija AT89S8253 mikrokontroleraAT89S8253 mikrokontrolera
Tajmer 82c54Tajmer 82c54
Programiranje mikrokontroleraProgramiranje mikrokontrolera – – nastavak – nastavak – odabir odabir HEX fajlaHEX fajla
Tajmer 82c54Tajmer 82c54
Programiranje mikrokontroleraProgramiranje mikrokontrolera – – nastavak – nastavak – početak početak programiranjaprogramiranja
Ovde treba čekirati opciju Ovde treba čekirati opciju FLASH + EEPROMFLASH + EEPROM
Tajmer 82c54Tajmer 82c54
Programiranje mikrokontrolera – nastavak – Programiranje mikrokontrolera – nastavak – upis upis kôdakôda u u
mikrokontrolermikrokontroler
Tajmer 82c54Tajmer 82c54
Primeri za Tajmer 82c54Primeri za Tajmer 82c54
Dati su primeri rada Tajmera u svih 6 režima (modova), Dati su primeri rada Tajmera u svih 6 režima (modova), zajedno sa zajedno sa kôdkôdomom i talasnim oblicima izlaznog signala. Dati i talasnim oblicima izlaznog signala. Dati su ksu kôôdovi za Tajmer 1; za Tajmer 2 je sve isto samo što dovi za Tajmer 1; za Tajmer 2 je sve isto samo što treba promeniti vrednosti na Portu P3 i Portu P2, u treba promeniti vrednosti na Portu P3 i Portu P2, u kôdu, kôdu, u u skladu sa prethodnim tabelamaskladu sa prethodnim tabelama
Tajmer 82c54Tajmer 82c54
MOD0: Generisanje Prekida po završetku brojanjaMOD0: Generisanje Prekida po završetku brojanja
Nakon upisa Kontrolne reči Izlaz (OUT) je, inicijalno, u stanju Nakon upisa Kontrolne reči Izlaz (OUT) je, inicijalno, u stanju logičke nule, i tu ostaje dok brojač ne dostigne nulu. Izlaz 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. onda ide u stanje logičke jedinice i tu ostaje do novog upisa. Gate=1 Gate=1 dozvoljava rad, Gate=0 zabranjuje, ali Gate nema dozvoljava rad, Gate=0 zabranjuje, ali Gate nema uticaja na Izlaz. uticaja na Izlaz. Nakon upisa Kontrolne reči i vrednosti brojanja, vrednost Nakon upisa Kontrolne reči i vrednosti brojanja, vrednost brojanja će se učitati na sledeći Klok impuls, koji ne brojanja će se učitati na sledeći Klok impuls, koji ne smanjuje tu vrednost; pa za vrednost brojanja N, Izlaz neće smanjuje tu vrednost; pa za vrednost brojanja N, Izlaz neće otići u stanje logičke jedinice pre N+1 Klok impulsa posle otići u stanje logičke jedinice pre N+1 Klok impulsa posle upisa inicijalne vrednosti brojanja.upisa inicijalne vrednosti brojanja.
Tajmer 82c54Tajmer 82c54
KôdKôd #include <AT898252.H>#include <AT898252.H>sbit Izlaz = P1^0; sbit Izlaz = P1^0; sbit Pin = P1^2; sbit Pin = P1^2; sbit GATE1_Pin = P1^4; sbit GATE1_Pin = P1^4; sbit GATE2_Pin = P1^5; sbit GATE2_Pin = P1^5; unsigned int k;unsigned int k;unsigned int l;unsigned int l;void main(void)void main(void){{
P1=1;P1=1; GATE1_Pin = 1;GATE1_Pin = 1;
GATE2_Pin = 1;GATE2_Pin = 1;// Inicijalizacija sistema// Inicijalizacija sistemaEA = 0; // GIE = 0EA = 0; // GIE = 0RCAP2H = 0xFF;RCAP2H = 0xFF; // 0xFFFA za 12Mhz XTAL; na PIN-u 1.0 500Khz // 0xFFFA za 12Mhz XTAL; na PIN-u 1.0 500Khz RCAP2L = 0xFA;RCAP2L = 0xFA;T2CON &= 253;T2CON &= 253; // C/T2 treba da bude Clear// C/T2 treba da bude Clear T2MOD |= 2;T2MOD |= 2; // T2OE = 1;// T2OE = 1;//T2CON |= 4;//T2CON |= 4; // TR2 = Start Timer// TR2 = Start TimerTR2 = 1;TR2 = 1;
Tajmer 82c54Tajmer 82c54
Nastavak kNastavak kôôdada// Programiranje eksternog TAJMERA - 82c54, T1// Programiranje eksternog TAJMERA - 82c54, T1 u modu 0u modu 0for(k=0; k<=7000; k++);for(k=0; k<=7000; k++);// Timer 0 - deljenje 500KHz sa 500 ( 1F4 )// Timer 0 - deljenje 500KHz sa 500 ( 1F4 )P3 = 0x0F;P3 = 0x0F;P2 = 0x36;P2 = 0x36; // kontrolna rec // kontrolna recP3 = 0x0B;P3 = 0x0B;
P3 = 0x0F;P3 = 0x0F;P2 = 0xF4; // lsb vrednosti brojanjaP2 = 0xF4; // lsb vrednosti brojanjaP3 = 0x08;P3 = 0x08;P3 = 0x0F;P3 = 0x0F;P2 = 0x01;P2 = 0x01; //msb vrednosti brojanja//msb vrednosti brojanjaP3 = 0x08;P3 = 0x08;P3 = 0x0F;P3 = 0x0F;for(l=0; l<=7000; l++);for(l=0; l<=7000; l++);// Timer 1// Timer 1P3 = 0x0F;P3 = 0x0F;P2 = 0x50; //kontrolna recP2 = 0x50; //kontrolna recP3 = 0x0B;P3 = 0x0B;
P3 = 0x0F;P3 = 0x0F;P2 = 0x04;P2 = 0x04; //lsb vrednosti brojanja//lsb vrednosti brojanjaP3 = 0x09;P3 = 0x09;P3 = 0x0F;P3 = 0x0F; while(1)while(1){{
}}}}
Tajmer 82c54Tajmer 82c54
Talasni obliciTalasni oblici
CW = Kontrolna reč
Tajmer 82c54Tajmer 82c54
MOD1: Monostabilni multivibrator koji se hardverski ponovo MOD1: Monostabilni multivibrator koji se hardverski ponovo
okidaokida IIzlaz će, inicijalno, biti u stanju logičke jedinice. Izlaz će zlaz će, inicijalno, biti u stanju logičke jedinice. Izlaz će
preći u stanje logičke nule pod dejstvom Klok impulsa i uz 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 trigerovanje gejta i počeće brojanje, pri čemu izlaz ostaje u stanju logičke nule dok tajmer ne dostigne nulu. Izlaz će 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 onda otići u stanje logičke jedinice i tamo ostati do sledećeg Klok impulsa i trigera. Vrednost brojanja od N rezultuje u Klok impulsa i trigera. Vrednost brojanja od N rezultuje u trajanju od N Klok impulsa. Gate ne utiče na izlaz. Proces se trajanju od N Klok impulsa. Gate ne utiče na izlaz. Proces se može ponoviti, bez ponovnog upisa vrednosti brojanja u može ponoviti, bez ponovnog upisa vrednosti brojanja u brojač, novim trigerovanjem.brojač, novim trigerovanjem.
Napomena: Trigerovanje se ostvaruje prebacivanjem Napomena: Trigerovanje se ostvaruje prebacivanjem džampera Gate 1, na pločici sa tajmerom 82c54, u srednji džampera Gate 1, na pločici sa tajmerom 82c54, u srednji položaj(GND) i vraćanjem na 5V.položaj(GND) i vraćanjem na 5V.
Tajmer 82c54Tajmer 82c54
KôdKôd#include <AT898252.H>#include <AT898252.H>sbit Izlaz = P1^0; sbit Izlaz = P1^0; sbit Pin = P1^2; sbit Pin = P1^2; sbit GATE1_Pin = P1^4; sbit GATE1_Pin = P1^4; sbit GATE2_Pin = P1^5; sbit GATE2_Pin = P1^5; unsigned int k;unsigned int k;unsigned int l;unsigned int l; void main(void)void main(void){{
P1=1; P1=1; // Inicijalizacija sistema// Inicijalizacija sistemaEA = 0; // GIE = 0EA = 0; // GIE = 0RCAP2H = 0xFF;RCAP2H = 0xFF; // 0xFFFA za 12Mhz XTAL; na PIN-u 1.0 500Khz // 0xFFFA za 12Mhz XTAL; na PIN-u 1.0 500Khz RCAP2L = 0xFA;RCAP2L = 0xFA;T2CON &= 253;T2CON &= 253; // C/T2 treba da bude Clear// C/T2 treba da bude Clear T2MOD |= 2;T2MOD |= 2; // T2OE = 1;// T2OE = 1;//T2CON |= 4;//T2CON |= 4; // TR2 = Start Timer// TR2 = Start TimerTR2 = 1;TR2 = 1;
Tajmer 82c54Tajmer 82c54
Nastavak kNastavak kôdôdaa// Programiranje eksternog TAJMERA - 82c54, T1 u modu 1// Programiranje eksternog TAJMERA - 82c54, T1 u modu 1
for(k=0; k<=7000; k++);for(k=0; k<=7000; k++);//Timer 0 - deljenje sa 500//Timer 0 - deljenje sa 500P3 = 0x0F;P3 = 0x0F;P2 = 0x36; //kontrolna recP2 = 0x36; //kontrolna recP3 = 0x0B;P3 = 0x0B;
P3 = 0x0F;P3 = 0x0F;P2 = 0xF4; //lsbP2 = 0xF4; //lsbP3 = 0x08;P3 = 0x08;P3 = 0x0F;P3 = 0x0F;P2 = 0x01; //msbP2 = 0x01; //msbP3 = 0x08;P3 = 0x08;P3 = 0x0F;P3 = 0x0F;for(l=0; l<=7000; l++);for(l=0; l<=7000; l++);//Timer 1//Timer 1P3 = 0x0F;P3 = 0x0F;P2 = 0x52; //kontrolna recP2 = 0x52; //kontrolna recP3 = 0x0B;P3 = 0x0B;
P3 = 0x0F;P3 = 0x0F;P2 = 0x03; //lsbP2 = 0x03; //lsbP3 = 0x09;P3 = 0x09;P3 = 0x0F;P3 = 0x0F; while(1)while(1){{}}
}}
Tajmer 82c54Tajmer 82c54
Talasni obliciTalasni oblici
Tajmer 82c54Tajmer 82c54
MOD2: Delitelj sa MOD2: Delitelj sa NN
U ovom režimu brojač radi kao delitelj sa N. Izlaz je, inicijalno, u 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, stanju logičke jedinice. Kada se vrednost brojanja smanji na 1, izlaz prelazi u stanje logičke nule i tu ostaje za vreme jednog izlaz prelazi u stanje logičke nule i tu ostaje za vreme jednog impulsa Kloka. Izlaz ponovo prelazi u stanje logičke jedinice, impulsa Kloka. Izlaz ponovo prelazi u stanje logičke jedinice, brojač ponovo učita vrednost brojanja i proces se ponavlja brojač ponovo učita vrednost brojanja i proces se ponavlja periodično. Za vrednost brojanja N, sekvenca se ponavlja na periodično. Za vrednost brojanja N, sekvenca se ponavlja na svakih N Klok impulsa. svakih N Klok impulsa. Gate=1 dozvoljava brojanje, Gate=0 zabranjuje. Gate=1 dozvoljava brojanje, Gate=0 zabranjuje. Ako se Gate prebaci na logiAko se Gate prebaci na logičku nulu u toku izlaznog impulsa, čku nulu u toku izlaznog impulsa, Izlaz odmah prelazi u logičku nulu. Triger ponovo učita brojač Izlaz odmah prelazi u logičku nulu. Triger ponovo učita brojač sa inicijalnom vrednošću na sledeći Klok impuls. Izlaz prelazi u sa inicijalnom vrednošću na sledeći Klok impuls. Izlaz prelazi u logičku nulu nakon N Klok impulsa posle trigerovanja. *logičku nulu nakon N Klok impulsa posle trigerovanja. *Nakon upisa Kontrolne reči i inicijalne vrednosti brojanja, brojač 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 ć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.nule i tamo je N Klok impulsa nakon upisa vrednosti brojanja.
* Napomena: Ovaj slučaj se ostvaruje prebacivanjem * Napomena: Ovaj slučaj se ostvaruje prebacivanjem
džampera u srednji položaj (GND) i vraćanjem na 5V.džampera u srednji položaj (GND) i vraćanjem na 5V.
Tajmer 82c54Tajmer 82c54
KKôdôd#include <AT898252.H>#include <AT898252.H>sbit Izlaz = P1^0; sbit Izlaz = P1^0; sbit Pin = P1^2; sbit Pin = P1^2; sbit GATE1_Pin = P1^4; sbit GATE1_Pin = P1^4; sbit GATE2_Pin = P1^5; sbit GATE2_Pin = P1^5; unsigned int k;unsigned int k;unsigned int l;unsigned int l;void main(void)void main(void){{
P1=1;P1=1; GATE1_Pin = 1;GATE1_Pin = 1;
GATE2_Pin = 1;GATE2_Pin = 1;// Inicijalizacija sistema// Inicijalizacija sistemaEA = 0; // GIE = 0EA = 0; // GIE = 0RCAP2H = 0xFF;RCAP2H = 0xFF; // 0xFFFA za 12Mhz XTAL; na PIN-u 1.0 500Khz // 0xFFFA za 12Mhz XTAL; na PIN-u 1.0 500Khz RCAP2L = 0xFA;RCAP2L = 0xFA;T2CON &= 253;T2CON &= 253; // C/T2 treba da bude Clear// C/T2 treba da bude ClearT2MOD |= 2;T2MOD |= 2; // T2OE = 1;// T2OE = 1;//T2CON |= 4;//T2CON |= 4; // TR2 = Start Timer// TR2 = Start TimerTR2 = 1;TR2 = 1;
Tajmer 82c54Tajmer 82c54
Nastavak kNastavak kôdôdaa
// Programiranje eksternog TAJMERA - 82c54, T1// Programiranje eksternog TAJMERA - 82c54, T1 u modu 2u modu 2 for(k=0; k<=7000; k++);for(k=0; k<=7000; k++);
//Timer 0 - deljenje sa 500//Timer 0 - deljenje sa 500P3 = 0x0F;P3 = 0x0F;P2 = 0x36;P2 = 0x36; //kontrolna rec//kontrolna recP3 = 0x0B;P3 = 0x0B;
P3 = 0x0F;P3 = 0x0F;P2 = 0xF4; //lsbP2 = 0xF4; //lsbP3 = 0x08;P3 = 0x08;P3 = 0x0F;P3 = 0x0F;P2 = 0x01;P2 = 0x01; //msb//msbP3 = 0x08;P3 = 0x08;P3 = 0x0F;P3 = 0x0F;for(l=0; l<=7000; l++);for(l=0; l<=7000; l++);//Timer 1//Timer 1P3 = 0x0F;P3 = 0x0F;P2 = 0x54; //kontrolna recP2 = 0x54; //kontrolna recP3 = 0x0B;P3 = 0x0B;P3 = 0x0F;P3 = 0x0F;
P2 = 0x03;P2 = 0x03; //lsb//lsbP3 = 0x09;P3 = 0x09;P3 = 0x0F;P3 = 0x0F; while(1)while(1){{
}}}}
Tajmer 82c54Tajmer 82c54
Talasni obliciTalasni oblici
Tajmer 82c54Tajmer 82c54
MOD3: Generator pravougaonih impulsaMOD3: Generator pravougaonih impulsa
Sličan Modu 2, ali je izlaz povorka pravougaonih impulsa iste Sličan Modu 2, ali je izlaz povorka pravougaonih impulsa iste širine, i to samo u slučaju parne inicijalne vrednosti brojanja N. širine, i to samo u slučaju parne inicijalne vrednosti brojanja N. Ovo je periodičan režim rada i imamo pravougaone impulse sa Ovo je periodičan režim rada i imamo pravougaone impulse sa periodom od N Klok ciklusa. periodom od N Klok ciklusa.
Gate=1 dozvoljava brojanje, Gate=0 zabranjuje.Gate=1 dozvoljava brojanje, Gate=0 zabranjuje. Ako se Gate prebaci na logiAko se Gate prebaci na logičku nulu u toku izlaznog impulsa, čku nulu u toku izlaznog impulsa,
izlaz odmah prelazi u logičku nulu. Triger ponovo učita brojač izlaz odmah prelazi u logičku nulu. Triger ponovo učita brojač sa inicijalnom vrednošću na sledeći Klok impuls. **sa inicijalnom vrednošću na sledeći Klok impuls. **Nakon upisa Kontrolne reči i inicijalne vrednosti brojanja, Nakon upisa Kontrolne reči i inicijalne vrednosti brojanja, brojač će se učitati na sledeći Klok impuls.brojač će se učitati na sledeći Klok impuls.Imamo dva slučaja: parna i neparna vrednost brojanjaImamo dva slučaja: parna i neparna vrednost brojanjaParno N:Parno N:
Izlaz je inicijalno u stanju logičke jedinice. Vrednost brojanja 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 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 impuls. Kada se odbroji Izlaz menja vrednost i brojač se ponovo učita sa inicijalnom vrednošću brojanja. Proces se ponovo učita sa inicijalnom vrednošću brojanja. Proces se ponavlja u beskonačnosti.ponavlja u beskonačnosti.
Tajmer 82c54Tajmer 82c54
MOD3: Generator pravougaonih impulsaMOD3: Generator pravougaonih impulsa - nastavak - nastavak
Neparno N:Neparno N: Izlaz je, inicijalno, u stanju logičke jedinice. Inicijalna Izlaz je, inicijalno, u stanju logičke jedinice. Inicijalna
vrednost minus jedan (paran broj) se učita na Klok impuls i vrednost minus jedan (paran broj) se učita na Klok impuls i smanji za dva na sledeći Klok impuls. Posle vremena od smanji za dva na sledeći Klok impuls. Posle vremena od jednog Klok impulsa nakon odbrojavanja tajmera, izlaz jednog Klok impulsa nakon odbrojavanja tajmera, izlaz prelazi u stanje logičke nule i brojač se ponovo učita sa prelazi u stanje logičke nule i brojač se ponovo učita sa inicijalnom vrednošću minus jedan. Zatim se novim Klok inicijalnom vrednošću minus jedan. Zatim se novim Klok impulsom vrednost brojanja umanji za dva. Kada se izvrši impulsom vrednost brojanja umanji za dva. Kada se izvrši brojanje, Izlaz ponovo prelazi u logičku jedinicu i brojač je brojanje, Izlaz ponovo prelazi u logičku jedinicu i brojač je ponovo učitan sa vrednošću brojanja minus jedan. Proces ponovo učitan sa vrednošću brojanja minus jedan. Proces se ponavlja u beskonačnosti. Izlaz će biti u stanju logičke 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 jedinice (N+1)/2, i u stanju logičke nule (N-1)/2, od zadate vrednosti brojanja.vrednosti brojanja.
**** Napomena: Ovaj slucaj se ostvaruje prebacivanjem Napomena: Ovaj slucaj se ostvaruje prebacivanjem džampera u srednji položaj (GND) i vraćanjem na 5V.džampera u srednji položaj (GND) i vraćanjem na 5V.
Tajmer 82c54Tajmer 82c54
KKôdôd
#include <AT898252.H>#include <AT898252.H>sbit Izlaz = P1^0; sbit Izlaz = P1^0; sbit Pin = P1^2; sbit Pin = P1^2; sbit GATE1_Pin = P1^4; sbit GATE1_Pin = P1^4; sbit GATE2_Pin = P1^5; sbit GATE2_Pin = P1^5; unsigned int k;unsigned int k;unsigned int l;unsigned int l;void main(void)void main(void){{
P1=1;P1=1; GATE1_Pin = 1;GATE1_Pin = 1;
GATE2_Pin = 1;GATE2_Pin = 1; // Inicijalizacija sistema// Inicijalizacija sistemaEA = 0; // GIE = 0EA = 0; // GIE = 0RCAP2H = 0xFF;RCAP2H = 0xFF; // 0xFFFA za 12Mhz XTAL; na PIN-u 1.0 500Khz // 0xFFFA za 12Mhz XTAL; na PIN-u 1.0 500Khz RCAP2L = 0xFA;RCAP2L = 0xFA;T2CON &= 253;T2CON &= 253; // C/T2 treba da bude Clear// C/T2 treba da bude Clear T2MOD |= 2;T2MOD |= 2; // T2OE = 1;// T2OE = 1;//T2CON |= 4;//T2CON |= 4; // TR2 = Start Timer// TR2 = Start TimerTR2 = 1; TR2 = 1;
Tajmer 82c54Tajmer 82c54
Nastavak kNastavak kôdôdaa// Programiranje eksternog TAJMERA - 82c54, T0 i T1// Programiranje eksternog TAJMERA - 82c54, T0 i T1 u modu 3 u modu 3
for(k=0; k<=7000; k++);for(k=0; k<=7000; k++);//Timer 0 - deljenje sa 500//Timer 0 - deljenje sa 500P3 = 0x0F;P3 = 0x0F;P2 = 0x36;P2 = 0x36; //kontrolna rec //kontrolna recP3 = 0x0B;P3 = 0x0B;
P3 = 0x0F;P3 = 0x0F;P2 = 0xF4;P2 = 0xF4; //lsb //lsbP3 = 0x08;P3 = 0x08;P3 = 0x0F;P3 = 0x0F;P2 = 0x01;P2 = 0x01; //msb//msbP3 = 0x08;P3 = 0x08;P3 = 0x0F;P3 = 0x0F;
for(l=0; l<=7000; l++);for(l=0; l<=7000; l++);//Timer 1//Timer 1 - deljenje frekvencije od 1KHz sa 4- deljenje frekvencije od 1KHz sa 4P3 = 0x0F;P3 = 0x0F;P2 = 0x56;P2 = 0x56; //kontrolna rec//kontrolna recP3 = 0x0B;P3 = 0x0B;
P3 = 0x0F;P3 = 0x0F;P2 = 0x04; //lsbP2 = 0x04; //lsbP3 = 0x09;P3 = 0x09;P3 = 0x0F;P3 = 0x0F; while(1)while(1){{ }}
}}
Tajmer 82c54Tajmer 82c54
Talasni obliciTalasni oblici
Tajmer 82c54Tajmer 82c54
MOD4: Softversko-trigerovani režim radaMOD4: Softversko-trigerovani režim rada
Izlaz će, inicijalno, biti u stanju logičke jedinice. Kada brojač Izlaz će, inicijalno, biti u stanju logičke jedinice. Kada brojač odbroji, Izlaz će otići u stanje logičke nule za vreme od odbroji, Izlaz će otići u stanje logičke nule za vreme od jednog Klok impulsa i zatim će ponovo otići u jedinicu. jednog Klok impulsa i zatim će ponovo otići u jedinicu. Brojanje počinje upisom vrednosti brojanja. Brojanje počinje upisom vrednosti brojanja. Gate=1 dozvoljava brojanje, Gate=0 zabranjuje i ne utiče Gate=1 dozvoljava brojanje, Gate=0 zabranjuje i ne utiče na Izlaz.na Izlaz.Nakon upisa Kontrolne reči i vrednosti za brojanje, brojač se Nakon upisa Kontrolne reči i vrednosti za brojanje, brojač se učitava na sledeći Klok impuls, koji ne smanjuje vrednost učitava na sledeći Klok impuls, koji ne smanjuje vrednost brojanja, i za vrednost brojanja N Izlaz ne ide u stanje brojanja, i za vrednost brojanja N Izlaz ne ide u stanje logičke jedinice sve dok ne prođe N+1 impulsa Kloka, od logičke jedinice sve dok ne prođe N+1 impulsa Kloka, od trenutka upisa vrednosti brojanjatrenutka upisa vrednosti brojanja
Tajmer 82c54Tajmer 82c54
KKôdôd #include <AT898252.H>#include <AT898252.H>sbit Izlaz = P1^0; sbit Izlaz = P1^0; sbit Pin = P1^2; sbit Pin = P1^2; sbit GATE1_Pin = P1^4; sbit GATE1_Pin = P1^4; sbit GATE2_Pin = P1^5; sbit GATE2_Pin = P1^5; unsigned int k;unsigned int k;unsigned int l;unsigned int l;void main(void)void main(void){{
P1=1;P1=1; GATE1_Pin = 1;GATE1_Pin = 1;
GATE2_Pin = 1;GATE2_Pin = 1;// Inicijalizacija sistema// Inicijalizacija sistemaEA = 0; // GIE = 0EA = 0; // GIE = 0RCAP2H = 0xFF;RCAP2H = 0xFF; // 0xFFFA za 12Mhz XTAL; na PIN-u 1.0 500KHz // 0xFFFA za 12Mhz XTAL; na PIN-u 1.0 500KHzRCAP2L = 0xFA;RCAP2L = 0xFA;T2CON &= 253;T2CON &= 253; // C/T2 treba da bude Clear// C/T2 treba da bude Clear T2MOD |= 2;T2MOD |= 2; // T2OE = 1;// T2OE = 1;//T2CON |= 4;//T2CON |= 4; // TR2 = Start Timer// TR2 = Start TimerTR2 = 1;TR2 = 1;
Tajmer 82c54Tajmer 82c54
Nastavak kNastavak kôdôdaa// Programiranje eksternog TAJMERA - 82c54, T1 // Programiranje eksternog TAJMERA - 82c54, T1 u modu 4u modu 4
for(k=0; k<=7000; k++);for(k=0; k<=7000; k++);//Timer 0 - deljenje sa 500//Timer 0 - deljenje sa 500P3 = 0x0F;P3 = 0x0F;P2 = 0x36;P2 = 0x36; //kontrolna rec//kontrolna recP3 = 0x0B;P3 = 0x0B;
P3 = 0x0F;P3 = 0x0F;P2 = 0xF4;P2 = 0xF4; //lsb //lsbP3 = 0x08;P3 = 0x08;P3 = 0x0F;P3 = 0x0F;P2 = 0x01;P2 = 0x01; //msb //msbP3 = 0x08;P3 = 0x08;P3 = 0x0F;P3 = 0x0F;for(l=0; l<=7000; l++);for(l=0; l<=7000; l++);//Timer 1//Timer 1P3 = 0x0F;P3 = 0x0F;P2 = 0x58;P2 = 0x58; //kontrolna rec//kontrolna recP3 = 0x0B;P3 = 0x0B;
P3 = 0x0F;P3 = 0x0F;P2 = 0x03;P2 = 0x03; //lsb//lsbP3 = 0x09;P3 = 0x09;P3 = 0x0F;P3 = 0x0F; while(1)while(1){{
}}}}
Tajmer 82c54Tajmer 82c54
Talasni obliciTalasni oblici
Tajmer 82c54Tajmer 82c54
MOD5: Hardversko-trigerovani reMOD5: Hardversko-trigerovani režim radažim rada Izlaz će biti, inicijalno, u stanju logičke jedinice. Brojanje Izlaz će biti, inicijalno, u stanju logičke jedinice. Brojanje
počinje rastućom ivicom gejta. Kada se izvrši brojanje, Izlaz 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 ć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.klok impuls, nakon čega se vraća u stanje logičke jedinice.
Nakon upisa Kontrolne reči i inicijalne vrednosti brojanja, Nakon upisa Kontrolne reči i inicijalne vrednosti brojanja, brojač će biti učitan nakon Klok impulsa, kome prethodi brojač će biti učitan nakon Klok impulsa, kome prethodi trigerovanje gejta. Ovaj Klok impuls ne smanjuje vrednost trigerovanje gejta. Ovaj Klok impuls ne smanjuje vrednost brojanja, pa za inicijalnu vrednost brojanja N, Izlaz ne ide u brojanja, pa za inicijalnu vrednost brojanja N, Izlaz ne ide u stanje logičke nule sve dok ne prođe N+1 Klok impulsa stanje logičke nule sve dok ne prođe N+1 Klok impulsa posle trigerovanja. Sekvenca brojanja je retrigerabilna. Gejt posle trigerovanja. Sekvenca brojanja je retrigerabilna. Gejt ne utiče na izlaz.ne utiče na izlaz.
Trigerovanje se ostvaruje prebacivanjem džampera u Trigerovanje se ostvaruje prebacivanjem džampera u srednji položaj (GND) i vraćanjem na 5Vsrednji položaj (GND) i vraćanjem na 5V
Tajmer 82c54Tajmer 82c54
KKôdôd#include <AT898252.H>#include <AT898252.H>sbit Izlaz = P1^0; sbit Izlaz = P1^0; sbit Pin = P1^2; sbit Pin = P1^2; sbit GATE1_Pin = P1^4; sbit GATE1_Pin = P1^4; sbit GATE2_Pin = P1^5; sbit GATE2_Pin = P1^5; unsigned int k;unsigned int k;unsigned int l;unsigned int l;void main(void)void main(void){{
P1=1;P1=1;// Inicijalizacija sistema// Inicijalizacija sistemaEA = 0; // GIE = 0EA = 0; // GIE = 0RCAP2H = 0xFF;RCAP2H = 0xFF; // 0xFFFA za 12Mhz XTAL; na PIN-u 1.0 // 0xFFFA za 12Mhz XTAL; na PIN-u 1.0 500Khz 500Khz RCAP2L = 0xFA;RCAP2L = 0xFA;T2CON &= 253;T2CON &= 253;// C/T2 treba da bude Clear// C/T2 treba da bude Clear T2MOD |= 2;T2MOD |= 2; // T2OE = 1;// T2OE = 1;//T2CON |= 4;//T2CON |= 4; // TR2 = Start Timer// TR2 = Start TimerTR2 = 1;TR2 = 1;
Tajmer 82c54Tajmer 82c54
Nastavak kNastavak kôdôdaa// Programiranje eksternog TAJMERA - 82c54, T1 u modu 5// Programiranje eksternog TAJMERA - 82c54, T1 u modu 5
for(k=0; k<=7000; k++);for(k=0; k<=7000; k++); //Timer 0 - deljenje sa 500//Timer 0 - deljenje sa 500 P3 = 0x0F;P3 = 0x0F;
P2 = 0x36;P2 = 0x36; //kontrolna rec//kontrolna recP3 = 0x0B;P3 = 0x0B;
P3 = 0x0F;P3 = 0x0F;P2 = 0xF4; //lsbP2 = 0xF4; //lsbP3 = 0x08;P3 = 0x08;P3 = 0x0F;P3 = 0x0F;P2 = 0x01; //msbP2 = 0x01; //msbP3 = 0x08;P3 = 0x08;P3 = 0x0F;P3 = 0x0F;for(l=0; l<=7000; l++);for(l=0; l<=7000; l++);//Timer 1//Timer 1P3 = 0x0F;P3 = 0x0F;P2 = 0x5A;P2 = 0x5A; //kontrolna rec //kontrolna recP3 = 0x0B;P3 = 0x0B;
P3 = 0x0F;P3 = 0x0F;P2 = 0x03;P2 = 0x03; //lsb //lsbP3 = 0x09;P3 = 0x09;P3 = 0x0F;P3 = 0x0F; while(1)while(1){{}}
}}
Tajmer 82c54Tajmer 82c54
Talasni obliciTalasni oblici
Tajmer 82c54Tajmer 82c54
Zadatak za studenteZadatak za studente
Proveriti ispravnost rada Tajmera 82c54 u svim MOD-ovima Proveriti ispravnost rada Tajmera 82c54 u svim MOD-ovima radarada
Tajmer 82c54Tajmer 82c54
Mod 0Mod 0
Pokrenuti sa CD-a iz direktorijuma, Kod/Timer-82c54/Mod Pokrenuti sa CD-a iz direktorijuma, Kod/Timer-82c54/Mod 0/Timer 1 fajl 0/Timer 1 fajl Timer1_Mod 0.Uv2Timer1_Mod 0.Uv2, , ((µµVision Project FileVision Project File))
Tajmer 82c54Tajmer 82c54
Testiranje Tajmera u Modu 0Testiranje Tajmera u Modu 0
Upisati, umesto postojeće, novu vrednost za brojanje, koja Upisati, umesto postojeće, novu vrednost za brojanje, koja je zadata u vežbije zadata u vežbi
Potrebno je, u redu 53Potrebno je, u redu 53,, umesto vrednosti 4 na portu P2 umesto vrednosti 4 na portu P2 (P2 (P2 == 0x040x04;; //LSB vrednosti brojanja) upisati novu vrednost, i sa //LSB vrednosti brojanja) upisati novu vrednost, i sa Project/Rebuild Project/Rebuild aall ll ttarget arget ffilesiles iizvršiti kompajliranje, nakon zvršiti kompajliranje, nakon čega se kreira HEX fajl čega se kreira HEX fajl Timer1_Mod 0.Timer1_Mod 0.hex, hex, kojim će se kojim će se mikrokontroler isprogramiratimikrokontroler isprogramirati
Tajmer 82c54Tajmer 82c54
Testiranje Tajmera u Modu 0 - nastavakTestiranje Tajmera u Modu 0 - nastavak Osnovni prozor Keil-a, gde se vrši, potrebna, promena Osnovni prozor Keil-a, gde se vrši, potrebna, promena
vrednosti brojanja tajmeravrednosti brojanja tajmera
Tajmer 82c54Tajmer 82c54
Testiranje Tajmera u Modu 0 - nastavakTestiranje Tajmera u Modu 0 - nastavak
Posmatrati pomoPosmatrati pomoću osciloskopa talasne oblike na Fću osciloskopa talasne oblike na F_OUT0 i _OUT0 i F_OUT1, F_OUT1, na pločici sa tana pločici sa tajjmerom 82c54 merom 82c54 i uoi uočiti odnos čiti odnos frekvencijafrekvencija
Skicirati te talasne oblikeSkicirati te talasne oblike
Tajmer 82c54Tajmer 82c54
Testiranje Tajmera 82c54 u ostalim modovima radaTestiranje Tajmera 82c54 u ostalim modovima rada
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 taj tajmer testira