+ All Categories
Home > Documents > Primena mikroprocesora u energetici - Mikroprocesori i ...€¦ · Usled te potrebe razvija se i...

Primena mikroprocesora u energetici - Mikroprocesori i ...€¦ · Usled te potrebe razvija se i...

Date post: 27-May-2018
Category:
Upload: dohuong
View: 220 times
Download: 1 times
Share this document with a friend
36
Primena mikroprocesora u energetici – mikroprocesori i mikrokontroleri 1 Primena mikroprocesora u energetici - Mikroprocesori i mikrokontroleri - Rev Date DCO Originator Description X1 09/25/06 --- dr Darko Marcetic mikroprocesori i mikrokontroleri - First draft X2 10/09/07 --- dr Darko Marcetic mikroprocesori i mikrokontroleri - second draft X2 21/01/09 --- dr Darko Marcetic mikroprocesori i mikrokontroleri – third draft 1 Razvoj mikroprocesora ........................................................................................................................ 2 2 Mikroprocesorski sistem ..................................................................................................................... 4 2.1. Osnovna konfiguracija mikroprocesorskog sistema ..............................................................................4 2.2. Princip rada mikroprocesorskog sistema ................................................................................................5 2.3. Blok šema i način rada mikroprocesora ..................................................................................................6 2.3.1. Delovi tipične centralne procesorske jedinice ili mikroprocesora....................................................................... 6 2.3.2. Primeri sinhronizacije rada mikroprocesora......................................................................................................... 8 2.3.3. Osnovni mehanizam rada mikroprocesora– linearno izvršenje programa ............................................................ 8 2.3.4. Osnovni mehanizam rada – grananje programa skok (jump) instrukcijom .......................................................... 9 2.3.5. Osnovni mehanizam rada – grananje programa pozivom podprograma –CALL ............................................... 10 2.3.6. Osnovni mehanizam rada – grananje programa prilikom prekida ...................................................................... 11 2.4. Programska memorija i memorija za podatke .....................................................................................13 2.5. Adresni prostori u mikroprocesorskom sistemu ..................................................................................14 3 Mikrokontrolerski sistem .................................................................................................................. 17 3.1. Paralelni port ...........................................................................................................................................18 3.2. Serijski port ..............................................................................................................................................19 3.3. Brojački sistemi (timer/counter) ............................................................................................................21 3.4. Analogno/digitalni konvertor u sklopu μC ............................................................................................23 3.4.1. Način rada ADC sa sukcesivnim aproksimacijama ............................................................................................ 23 3.4.2. Tipična primena A/D sa metodom sukcesivnih aproksimacija u sklopu mikrokontrolera ................................. 23 3.4.3. Dva načina sinronizacije rada A/D konvertora i CPU u okviru mikrokontrolera .............................................. 24 3.4.4. Sample & Hold kolo ADC sa metodom sukcesivnih aprokximacija .................................................................. 25 3.4.5. Ulazni analogni multiplekser u sklopu bloka za A/D konverziju ....................................................................... 26 3.4.6. Microchip ADC modul primenjen kod dsPIC30F4011/4012 familije ............................................................... 27 3.5. PWM signal generator u sklopu mikrokontrolera ...............................................................................28 3.6. Kontroler prekida ....................................................................................................................................31 3.7. Watchdog timer........................................................................................................................................31 3.8. POR - Power on reset ..............................................................................................................................32 4 Princip je isti , ostaju nijanse.. .......................................................................................................... 33 4.1. Jedan složen mikrokontroler/DSP–periferije unutar dsPIC 4011 ......................................................33 4.2. Jedan složen CPU– primer dsPIC 4011 .................................................................................................34 4.3. Jedan složen DSP–periferije unutar TI DSP 2812...............................................................................35 4.4. Jedan složen CPU– primer DSP familija TI DSP 28x ..........................................................................36
Transcript

Primena mikroprocesora u energetici – mikroprocesori i mikrokontroleri 1

Primena mikroprocesora u energetici - Mikroprocesori i mikrokontroleri -

Rev Date DCO Originator Description X1 09/25/06 --- dr Darko Marcetic mikroprocesori i mikrokontroleri - First draft X2 10/09/07 --- dr Darko Marcetic mikroprocesori i mikrokontroleri - second draft X2 21/01/09 --- dr Darko Marcetic mikroprocesori i mikrokontroleri – third draft

1 Razvoj mikroprocesora ........................................................................................................................ 2

2 Mikroprocesorski sistem ..................................................................................................................... 4

2.1. Osnovna konfiguracija mikroprocesorskog sistema ..............................................................................4

2.2. Princip rada mikroprocesorskog sistema ................................................................................................5

2.3. Blok šema i način rada mikroprocesora ..................................................................................................6 2.3.1. Delovi tipične centralne procesorske jedinice ili mikroprocesora ....................................................................... 6 2.3.2. Primeri sinhronizacije rada mikroprocesora......................................................................................................... 8 2.3.3. Osnovni mehanizam rada mikroprocesora– linearno izvršenje programa ............................................................ 8 2.3.4. Osnovni mehanizam rada – grananje programa skok (jump) instrukcijom .......................................................... 9 2.3.5. Osnovni mehanizam rada – grananje programa pozivom podprograma –CALL ............................................... 10 2.3.6. Osnovni mehanizam rada – grananje programa prilikom prekida ...................................................................... 11

2.4. Programska memorija i memorija za podatke .....................................................................................13

2.5. Adresni prostori u mikroprocesorskom sistemu ..................................................................................14

3 Mikrokontrolerski sistem .................................................................................................................. 17

3.1. Paralelni port ...........................................................................................................................................18

3.2. Serijski port ..............................................................................................................................................19

3.3. Brojački sistemi (timer/counter) ............................................................................................................21

3.4. Analogno/digitalni konvertor u sklopu µµµµC ............................................................................................23 3.4.1. Način rada ADC sa sukcesivnim aproksimacijama ............................................................................................ 23 3.4.2. Tipična primena A/D sa metodom sukcesivnih aproksimacija u sklopu mikrokontrolera ................................. 23 3.4.3. Dva načina sinronizacije rada A/D konvertora i CPU u okviru mikrokontrolera .............................................. 24 3.4.4. Sample & Hold kolo ADC sa metodom sukcesivnih aprokximacija .................................................................. 25 3.4.5. Ulazni analogni multiplekser u sklopu bloka za A/D konverziju ....................................................................... 26 3.4.6. Microchip ADC modul primenjen kod dsPIC30F4011/4012 familije ............................................................... 27

3.5. PWM signal generator u sklopu mikrokontrolera ...............................................................................28

3.6. Kontroler prekida ....................................................................................................................................31

3.7. Watchdog timer........................................................................................................................................31

3.8. POR - Power on reset ..............................................................................................................................32

4 Princip je isti , ostaju nijanse.. .......................................................................................................... 33

4.1. Jedan složen mikrokontroler/DSP–periferije unutar dsPIC 4011 ......................................................33

4.2. Jedan složen CPU– primer dsPIC 4011 .................................................................................................34

4.3. Jedan složen DSP–periferije unutar TI DSP 2812 ...............................................................................35

4.4. Jedan složen CPU– primer DSP familija TI DSP 28x ..........................................................................36

Primena mikroprocesora u energetici – mikroprocesori i mikrokontroleri 2

1 Razvoj mikroprocesora

Prvi mikroprocesori Mikroprocesor je programabilna digitalna elektronska komponenta. On obuhvata sve funkcije centralne procesorske jedinice (CPU) u jednom integrisanom kolu. Prvi mikroprocesor je radio sa 4-bitnim podacima, dok se danas uveliko koriste 64-bitni mikroprocesori. Mikroprocesor uglavnom služi u PC okruženju, ali i u industriji gde se koristi u embedded systemima (kompjuterski sistemi specijalne namene namenjeni za izvršenje jedne ili više specijalnih funkcija). Pre nastanka mikroprocesora, tipičan CPU se realizuje spajanjem više diskretnih IC i tranzistora. Prvi mikroprocesor predstavlja celu CPU u jednom čipu, čime se umanjuje cenu i uvećava pouzdanost rada sistema. Ovo je bilo tako dobro rešenje da mikroprocesor dalje doživljava pravi bum. Evolucija mikroprocesora približno prati Moorov zakon po kome se njegova kompleksnost, uz istu cenu, dvostruko uvećava svakih 18 meseci. Tri kompanije sa tri projekta približno u isto vreme dolaze do prvog mikroprocesora: kompanija Garrett AiResearch sa Central Air Data Computer, kompanija Intel's sa 4004 i kompanija Texas Instruments sa TMS 1000. Godine mog roñenja, 1968, Garrett AiResearch počinje projekat digitalnog sistema namenjenog za zamenu postojećeg elektromehaničkog sistema korišćenog za kontrolu leta lovca F-14 Tomcat, za američku mornaricu. Dizajn baziran na MOSFET–ima je završen 1970 , sadrži više paralelnih mikroprocesora i sistem radi sa 20-bitnim podacima. Ali, mormarica ne dozvoljava da se ovaj rad objavi sve do 1997 tako da ovo rešenje nije poznato. Texas instruments (TI) razvija 4-bit mikroprocesor TMS 1000 kao i prvi embedded sistem, verziju TMS1802NC koja je namenjena za rad u kalkulatoru (specijalna primena). Intel razvija svoj prvi 4-bit mikroprocesor 4004, Novembra 15, 1971.

Prvi 8-bitni mikroprocesori

Nakon 4004 Intel proizvodi 1972 godine 8008, prvi 8-bitni microprocessor. Zatim nastaju veoma uspešni Intel 8080 (1974) i Zilog Z80. Konkurencija na tržištu se pojačava pojavom mikroprocesora Motorola 6800 , avgust 1974, na osnovu kojeg se dalje razvija u MOS tehnologiji 6052, 1975, koji predstavlja oštru konkurenciju Z80 tokom 80-tih godina. Oba mikroprocesora, Z80 and 6502, su jeftina i prosta, i imali su potrebu za dodatnim okruženjem (kontroler memorije , itd..). Usled te potrebe razvija se i potrebno okruženje čime dolazi do nastanka prvog kućnog kompjutera. CMOS verzija (umanjeni gubici i grejanje) mikroprocesora 65C02 nastaje 1982 godine.

Prvi 16-bitni mikroprocesori

Prvi 16-bit mikroprocesor (sa više čipova) je bio National Semiconductor IMP-16, 1973. Prvi 16-bit mikroprocesor u jednom čipu pravu TI , TMS 9900. Nakon njega nastaje i TMS 9980, koji je konkurencija Intelovog 8080, Western Design Center (WDC) razvija CMOS verziju 65816 , kao 16-bitnu verziju WDC CMOS 65C02 u 1984. 65816 postaje osnova Apple IIgs i Super Nintendo Entertainment System, što ga čini najpopularnijim 16-bitni dizajnom. Na osnovu 8080, Intel je načinio 16-bitni Intel 8086, prvi član x86 familije koja postaje osnova modernih PC-a. Prenošenje software–a sa 8080 na 8086 je bilo prilično jednostavno, što uvećava popularnost 8086. 8088, verzija 8086 sa spoljnom 8-bitnom magistralom za podatke se ugrañuje u IBM PC. model 5150. Nakon 8086 i 8088, Intel razvija 80186, 80286 i 1985, 32-bitni 80386. Veoma važna stvar u vezi ove serije je kompatabilnost, mogućnost primene jednog programskog paketa na svim verzijama mikroprocesora ove serije.

Primena mikroprocesora u energetici – mikroprocesori i mikrokontroleri 3

Prvi 32-bitni mikroprocesori

Najpoznatiji 32-bitni mikroprocesor je MC68000, 1979. Nazivan je 68K, imao je 32-bitne registre i 32-nitnmui arhitekturu, ali 16-bitnu internu magistralu za podatke, kao i 16-bitnu spoljnu magistralu da bi se umanjio broj pinova. Imao je i 24-bitnu adresnu magistralu (16 megabajta adresnog prostora –ogromno za to vreme) i za to vreme veoma veliku brzinu rada. Ugrañivan u Apple Lisa i Macintosh, Atari ST i Commodore Amiga. Intelov prvi 32-bitni mikroprocesor je iAPX 432, 1981, ali nije uspeo usled loših performansi. Motorola nastavlja razvoj 32-bitnhih procesora sa MC68010 i MC68020. MC68020 nastaje u 1985 godini i ima 32-bitnu magistralu za podatke i adrese.

Prvi 64-bitni mikroprocesori

Iako su počeli da se javljalju već 90-tih godina, 64-bit mikroprocesori ulaze u PC računare tek nakon 2000 godine. AMD čini prvi 64-bit procesor AMD64, 2003 godine. Zatim Intel pravi x86-64 čip, i time počinje era 64-bitnih procesora. Oba procesora mogu da rade i sa 32-bitnim aplikacijama kao i sa novim 64-bitnim software-om. Nastaju 64-bit Windows XP, Windows vista x64, Linux and Mac OS X , koji rade sa 64 bita i maksimalno koriste ove procesore.

Primena mikroprocesora u energetici – mikroprocesori i mikrokontroleri 4

2 Mikroprocesorski sistem Mikroprocesorski sistem se sastoji od mikroprocesora i njemu pridruženih komponenti. Pored mikroprocesora, kao programabilne digitalne elektronske komponente, sistem poseduje oscilator koji taktuje rad celog sistema, memorije koje obezbeñuju program za izvršenje, memorije koje čuvaju potrebne podatke, ulazno izlazne portove kao i magistrale preko kojih se podaci razmenjuju.

2.1. Osnovna konfiguracija mikroprocesorskog sistema Osnovna konfiguracija mikroprocesorskog (µP) sistema.

Magistrala za podatke

Adresna magistrala

Kontrolna magistrala

Ulazi/ izlazi

OSC - CPU -

mikroprocesor ROM RAM

IO ports

A D A D A D A D

C C C C

Slika 1.1. Osnovna konfiguracija mikroprocesorskog sistema

Osnovni (i obavezni) delovi jednog mikroprocesorskog sistema

1 Sistemski sat (clock generator) Oscilator koji svojim impulsima sinhronizuje rad CPU. Period clock-a definiše vreme izvršenja mikroinstrukcije (više mikroinstrukcija čini mikrokod jedne instrukcije).

2 Mikroprocesor - centralna procesorska jedinica, radi na osnovu clock signala, uzima instrukciju na koju pokazuje programski brojač, postavlja kontrolne signale potrebne za izvršenje te instrukcije, itd...

3 Magistrale: magistrala za podatke, adresna magistrala i kontrolna magistrala. Sve tri magistrale vrše paralelni prenos podataka.

4 Obavezne periferije: 4.1. programska memorija ROM ( ili FLASH, EEPROM , EPROM)

U njoj se nalazi program koji treba izvršiti. Ova memorija mora da čuva svoj sadržaj i po nestanku napona napajanja.

4.2. memorija za podatke RAM (može biti SRAM ili DRAM) U ovoj memoriji se čuvaju programske promenjive i privremeni rezultati aritmetičko/logičkih operacija. Da bi se program brže izvršavao poželjno je da je ova memorija brza, ali ne mora da sačuva svoj sadržaj po nestanku napona napajanja.

4.3. ulazni/izlazni portovi (IO ports). Služe za komunikaciju sa svetom. Nema smisla da mi tu nešto pametno radimo unutar

nečeg jako malog i obično crnog koje se usput i jako greje. Preko ulaznih portova CPU prima komande, čita merne veličine itd, dok preko izlaznih šalje rezultate, generiše signale itd. Portovi CPU su digitalni dok se po tipu prenosa signala mogu svrstati u paralelni i serijske.

Primena mikroprocesora u energetici – mikroprocesori i mikrokontroleri 5

2.2. Princip rada mikroprocesorskog sistema

Sa inžinjerske tačke gledišta, 1) mikroprocesor radi na osnovu kodiranih instrukcija, 2) da bi izvršio ono što instukcija od njega traži koristi kodirane podatke i 3) po potrebi odgovara na dogañaje iz spoljnog sveta. Ponašanje mikroprocesora je definisano programom čiji se delovi (instrukcije) taktovano uzimaju iz programske memorije. Da bi neke od ovih instrukcija izvršio, mikroprocesor mora da koristi podatke koji se takoñe nalaze u nekoj memoriji.

Kod mikroprocesorskog sistema postoji samo jedna adresna magistrala i samo jedan magistrala za podatke na koju se povezuju i programska memorija i memorija za podatke. Obe memorije koriste istu magistralu za razmenu podataka sa mikroprocesorom formirajući von Neumann arhitekturu mikroprocesorskog sistema. Von Neumann arhitektura zahteva razdvajanje programa od podataka tako što se oni postavljaju u različite delove memorijskog prostora. Koristeći različite adrese, CPU zna da uskoro ka njoj stiže instukcija ili podatak

Centralna procesorska jedinica dobija instrukcije iz memorije, dekoduje ih i sekvencijalno vrši preko instrukcija programirane zadatke. Po potrebi koristi i podatke koje uzima iz memorije za podatke. Sve se radi sekvencijalno u vremenu, skoro ništa ne može da se desi istovremeno u mikroprocesoru.

Mikroprocesor konstantno ponavlja jedan isti ciklus operacija • uzimanje instrukcije (fetching instruction phase) • dekodavanje instrukcije (decode phase) • izvršenje instrukcije (execute phase)

Osnovni instrukcijski " fetch –decode–execute " ciklus je prikazan na sledećoj slici.

Memorija

CPU Decode & execute

1. fetch phase (faza uzimanja)

2. decode&execute (faza izvršenja)

Fetch instruction

decode instruction

execute instruction

Slika 1.2. Fetch-decode-execute ciklus mikroprocesora Fetch–decode–execute ciklus se izvršava u ekvidistantnim vremenskim trenucima taktovanjem CPU (clock).

• fetch phase CPU čita sledeću instukciju iz memorije i po njenom prijemu privremeno je sačuva u instrukcijskom registru (registar naredbi). Praćenje memorijske lokacije instrukcije koju treba izvršiti je toliko važno da svaka CPU ima za to specijalno dodeljen registar zvani programski brojač (PC –program counter). PC se uvećava za jedan svaki put nakon fetch faze i spremno pokazuje na sledeću lokaciju.

• Decode phase CPU dekoduje instukciju unutar registra naredbi i postavlja potrebne kontrolne signala. Za dekodovanje se koristi specijalni blok dekoder naredbi.

• Execute phase CPU izvršava instukciju i pri tom uglavnom koristi ALU (aritmetičku logičku jedinicu) i akumulator . Tip izvršenja zavisi od same instrukcije. Ukoliko je potrebno, CPU se ponovo obraća spoljnoj memoriji za podatke da bi prikupila za izvršenje potrebne promenjive. Na primer uzima promenjive A i B jer je dobila zadatka da ih sabere. Mikroprocesor mora posedovati specijalne interne registre koji služe za privremeno skupljanje potrebnih podataka za izvršenje raznih instrukcije (podatak stiže iz memorije ali pre izvršenja instrukcije ga treba negde privremeno smestiti unutar CPU)

Sve ovo opisano dovodi do tipične blok šeme jednog mikroprocesora.

Primena mikroprocesora u energetici – mikroprocesori i mikrokontroleri 6

2.3. Blok šema i način rada mikroprocesora Mikroprocesor obuhvata sve funkcije centralne procesorske jedinice (CPU) u jednom integrisanom kolu i jeste centralna komponenta unutar jednog mikroprocesorskog sistema. Na slici 1.2 data je blok šema jednog tipičnog mikroprocesora. CPU na sledećoj slici je generalizovana i smatra se da:

• obrañuje N-bitne podatke, N = 8 , 16 , 32 , 64 bita. • poseduje M-bitnu adresnu magistralu, i samim tim može da adresira maksimalno 2M različitih lokacija. Na

primer u slučaju 10-bitne adresne magistrale imamo adresni prostor od 1Kb ,16 bitova � 64 Kb , itd.. • obrañuje K-bitne instrukcije, sa povećanjem broja K se uvećava broj mogućih instrukcija, ali se ujedno i

usložnjava tumačenje istih i usporava realizacija jedne instrukcije.

REG. NAREDBI (K - bitni)

DEKODER NAREDBI

SP (M-bitni)

PC (M-bitni)

INTERNI REGISTRI

(N-bitni)

ALU

STATUS REG

ADDR buffer

CTRL buffer

DATA buffer

Unutrašnja magistrala za podatke (data bus) OSC

Unutrašnja adresna magistrala (address bus)

M-bita

N-bita

Kontroler prekida

ACCH ACCL

(2xN)-bita

ACC BUFF

reset

Slika 1.3. Osnovna šema tipične centralne procesorske jedinice

2.3.1. Delovi tipične centralne procesorske jedinice ili mikroprocesora

1. Programski brojač (PC counter). Programski brojač pokazuje na sledeću naredbu koju treba izvršiti (to je pointer na naredbu koji sadrži njenu adresu). U zavisnosti od potrebnog adresnog prostora to može biti 10, 12,16,24,32-bitni brojač. Obično su naredbe postavljaju u programsku memoriju u nizu sukcesivnih lokacija (jedna za drugom) pa se PC automatski inkremenira (uvećava za 1) kada se naredba izvrši. U slučaju da se program grana, jump, call instrukcije, ili dolaskom interrupt i reset signala u PC se upisuje nova adresa na koju se program grana. Start programa je neophodno linkovati na adresu na koju pokazuje PC nakon reseta, uobičajeno 0x0000 mada to zavisi od izbora proizvoñača µC.

2. Registar naredbi. Neophodan za slučaj kada programske instrukcije i podaci dele istu magistralu. Ovaj registar prima novu naredbu i prosleñuje je ka dekoderu naredbi. Veličina registra je jednaka veličini jedne programske reči , naredbe, i može biti 8 bita, 16 bita, 24 bita ili više bita.

3. Dekoder naredbi Ovo je mozak CPU (centralna procesorska jedinica). Dekoder naredbi dekoduje naredbu i postavlja odgovarajuće kontrolne signale da bi se ova naredba izvršila. Postoje dve osnovne realizacije 3.1. Mikrokod Izvršenje naredbe se deli na mikroinstrukcije koje su upisane u internoj ROM memoriji. Novodošla naredba predstavlja ROM adresu na kojoj se nalazi mikro kôd, za izvršenje ove naredbe. Pri

Primena mikroprocesora u energetici – mikroprocesori i mikrokontroleri 7

svakom jednom periodu clock signala izvršava se jedna mikro instrukcija zadavanjem odgovarajućih signala. Više mikroinstrukcija čini mikrokod jedne instrukcije. Mikrokod je sporiji (neophodno je više clock perioda za izvršenje cele naredbe) ali CPU sa mikrokodom može da postavi više kontrolnih signala u različitim vremenskim trenucima i time može da poseduje složenije instrukcije. 3.2. Kombinaciona mreža koja u jednom clock ciklusu dekoduje naredbu i postavlja sve potrebne kontrolne signale, čitanje (RD) registara je na pozitivnu ivicu clock signala, pisanje rezultata (WR) na negativnu.. Kombinaciona mreža je brža i naredbe se mogu izvršiti u jednom clock ciklusu ali realizacija je komplikovana i može ograničini količinu ostvarivih naredbi. Dekoder naredbi u oba slučaja generiše unutrašnje i spoljne kontrolne signale. Po završetku naredbe dekoder naredbi inkrementira ili upisuje novu vrednost u PC i ciklus se ponavlja .

4. Aritmeti čko logička jedinica (ALU) i akumulator registar Akumulator je privilegovani interni registar CPU. Obično sadrži 8,16 ili 32 bita. U slučaju 16-bitnih procesora/DSP obično je 32-bitni da bi podržao operaciju 16-bitnog množenja, 16b x 16b = 32b. Ovaj registar je okružen krugovima za aritmetiku i logičke operacije (ALU) koji su sposobni da izvršavaju aritmetičke naredbe sabiranja, oduzimanja, množenja, inkrementiranja, dekrementiranja, negacije kao i logičke naredbe OR, AND, NOT, etc.. Uobičajeno je i da je moguće pomeranje (shift) bitova unutar akumulatora ulevo ili u desno za odreñeni broj mesta. Na kraju, često se i neke složenije IO naredbe referišu samo na akumulator (upis/čitanje u/iz spoljni RAM, na primer). Stanje akumulatora nakon neke instrukcije setuje odgovarajuće bitove (programske zastavice - flags) u statusnom registru. Parity, overflow etc.. Odreñeni kontrolni bitovi CPU definišu rad akumulatora, na primer da li se dozvoljava prekoračenje opsega (overflow) podatka nakon sabiranja / oduzimanja / pomeranja ili se podatak zadržava na limitu.

5. Statusni registar. Registar u kome se čuvaju programski flagovi čija vrednost uglavnom reflektuje stanje ALU ili podatka u akumulatoru.

6. Interni registri . Postoji odgovarajuće kašnjenje u izvršenju kôda svaki put kada se pristipa spoljnoj memoriji za podatke. Zato većina µC poseduje odreñenu količinu internih registara kojima se brže pristupa (registarsko adresiranje je u internoj i manjoj memorijskoj mapi) i koji su uobičajeno bolje povezani sa akumulatorom i sa ALU. U asembleru imamo punu slobodu da koristimo interne registre. Stvar je dobrog kompajlera i linkera za više programske jezike da iskoristi ove registre i da ubrzaju izvršenje programa. U C jeziku postoji i naredba register, koja obaveštava linker da mi želimo datu promenjivu da držimo u internom registru CPU.

7. Pokazivač stack-a (SP -stack pointer). Stack je skup sukcesivnih memorijskih lokacija (ne fiksan broj) u memoriji za podatke koje rade na principu LIFO (last in first out). Osnovna uloga stek memorije je da privremeno sačuva povratnu adresu programa koja se koristi nakon izvršenja podprograma ili prekida. Stek se takoñe koristi i da se privremeno sačuvaju registri i promenjive ili da se preko njega predaju argumenti pozvanoj fukciji. Sam pokazivač steka se uvećava sa svakim novim upisom na stek (push) i tako uvek pokazuje adresu na kojoj je trenutno vrh steka. U slučaju čitanja steka (pop) vrednost pokazivača steka se umanjuje za jedan. CPU može posedovati posebnu internu RAM memoriju predviñenu za stek ili je neohodno inicijalizovati i rezervisati odreñeni prostor u data memoriju za stek. U oba slučaja se mora znati koliko memorijskih lokacija je rezervisano za stack i paziti da se ne popuni. Stack se širi pri svakom pozivu podprograma, interruptu, kao i pri svakoj dodatnoj push naredbi i treba znati koliko će se maksimalno širiti (da ne prebriše neke druge podatke ili da drugi podaci ne prebrišu njega- program ne bi znao gde da se vrati). Ako nešto stavimo na stek moramo kasnije i da vratimo, inače se stack sa više takvih poziva širi.

8. Izlazni buffer -i Ovi registri služe da pojačaju signale na izlazu CPU, a u slučaju neaktivnosti odvajaju unutrašnju od spoljne magistrale.

9. Kontroler prekida Vrši obradu spoljnih prekida. Definiše njihov prioritet i dozvolu. U slučaju dolaska dozvoljenog prekida, obaveštava CPU koja prekida izvršenje tekućeg programa i izvršava prekidnu rutinu.

Primena mikroprocesora u energetici – mikroprocesori i mikrokontroleri 8

2.3.2. Primeri sinhronizacije rada mikroprocesora Sve operacije u okviru mikroprocesora se izvržavaju na osnovu sistemskog sata (clock signala). Prvo, sam PC counter se clock-uje na osnovu sistemskog sata i brzina prelaska na novu adresu zavisi upravo od njegove brzine. Drugo, rad sa memorijama je sinhronizovan preko sistemskog sata tako da se i nova instrukcija programa dobija sinhrono sa satom. (Ukoliko je memorija sporija, sat se može i usporiti preko clock divider kola koje umanjuje frekvenciju za 2, 4, 8 .... ).

Clock

Promena stanja PC brojača, postavljanje nove adrese na magistralu i selekcija programske memorije

Čitanje koda instrukcije i smeštanje u registar instrukcija

Tclock

TROM

t

Slika 1.4. Primer sinhronizacije rada PC brojača, memorije i CPU.

Treće, obrada podataka unutar ALU je takoñe sinhronizovana sa clock signalom. rad sa memorijama je sinhronizovan preko sistemskog sata tako da se i nova instrukcija programa dobija sinhrono sa satom.

Clock

ALU čita operande A i B

Upis rezultata u izlazne registre ACCH , ACCL i statusa u STATUS regista

Tclock

TALU

t

Čitanje novih operanada

Slika 1.5. Primer sinhronizacije rada unutar ALU.

Tokom TALU (pola ciklusa clocka) operandi prolaze kroz potrebne aritmetičko-logičke krugove i rezultat se formira. Taj rezultat se upisuje na silaznu ivicu clock signala u izlazne registre. Na novu uzlaznu ivicu clock-a je upis novih operanada. Ovo omogućuje izvršenje operacije A = A + B koja predstavlja osnovu digitalne obrade signala. Ona se izvršava kao A (kT) = A (kT-T) + B(kT-T) u kojoj se koristi rezultat A iz prethodne periode (kT-T). Operandi za ovu operaciju se upisuju na pozitivnu ivicu periode kT, tako da je moguće koristi rezultat iz prethodnog clock ciklusa, upisan tokom negativne ivice clock-a.

2.3.3. Osnovni mehanizam rada mikroprocesora– linearno izvršenje programa Svaki mikroprocesor poseduje instrukcijski set. Svaka instrukcija (naredba) ima svoj brojni kôd, koji se dekoduje u dekoderu naredbi. Instrukcije se dele na više grupa: instrukcije dodele vrednosti, zatim aritmetičke, logičke, instrukcije skoka itd.. Program pisan u mašinskom jeziku najbliži je svetu instrukcija. Ovaj program predstavlja skup sukcesivno napisanih instrukcija u mašinskom jeziku (asembler).

Primena mikroprocesora u energetici – mikroprocesori i mikrokontroleri 9

Dole je dat primer malog linearnog programa. Kôd je linearan ako ne poseduje instrukcije skoka, i linearno se izvršava. 0x0000 CLR ACC 0x0001 MOV ACC.#6 0x0002 MOVX 0x7FFF, ACC 0x0003 0x0004 ADD ACC, B Donja tabela prikazuje strukturu programske memorije nakon upisa ovog programa. Prva kolona daje vrednost programskog brojača, druga kolona samu instrukciju, treća kôd instrukcije koji se magistralom dovodi iz memorije do dekodera naredbi na dalje dekodovanje i zatim i izvršenje. Nova vrsta predstvalja pomeraj programskog brojača za jedan (inkrement ) koji sada pokazuje na sledeću instrukciju. Pretpostavljeno je da uC radi sa 16-bitnim programskim instrukcijama. Kodovi naredbi su izmišljeni radi opštosti. Svaka sličnost sa pravim instrukcijim kodovima nekog od poznatih µP je slučajna.

Adresa u ROM (ujedno i stanje PC brojača)

Kôd u asembleru Sadržaj ROM lokacije (popunjava linker)

Objašnjenje primera

0x0000 CLR ACC 0000 0000 xxxx xxxx kôd naredbe CLR A 0x0001 MOV ACC.#6 0000 0001 0000 0110 kôd naredbe MOV A,#N

plus broj N 0x0002 MOVX 0x7FFF, ACC 0000 0010 xxxx xxxx kôd naredbe MOVX address,ACC 0x0003 0111 1111 1111 1111 sa koje adrese? 0x0004 ADD ACC, B 0000 0011 xxxx xxxx kôd naredbe ADD ACC,B

2.3.4. Osnovni mehanizam rada – grananje programa skok (jump) instrukcijom Naredba bezuslovnog skoka dovodi do paralelnog upisa u programski brojač. U slučaju nadolaska takve naredbe, PC se ne inkrementira za jedan, već paralelno puni, nakon čega program skače po memoriji i ne izvršava se više linearno ! Objasniti punjenje programskog brojača. Dole je dat mali program sa naredbom apsolutnog skoka (long jump) i relativnog skoka (short jump). 0x0000 INC ACC 0x0001 LJMP LAB_1 0000 1111 xxxx xxxx kôd naredve LJMP 0011 0000 0000 00001 adresa skoka Nastavak ovog dela programa se ne izvršava ----------- 0x0301 LAB_1:

INC ACC 0x302 SJMP LAB_2 0000 1110 0000 0101 kôd naredbe SJMP + relativni skok +5 0x307 LAB_2: Primer pokazuje dve različite instrukcije (dva različita kôda) za long i short jump. Za long jump je dodatno neohodna i 16-bitna adresa skoka, sadržana na sledećoj memorijskoj lokaciji. Za short jump naredbu nema potrebe da se adresa skoka piše na sledećoj lokaciji jer ona sadržana u donjih 8-bitova instrukcije i već je pristigla u dekoder zajedno sa naredbom. Struktura programske memorije u slučaju long jump naredbe. Prva programska reč je kôd naredbe, dok je druga odmah ispod nje adresa destinacije skoka). Naprosto , u instrukciji nije bilo mesta za 16-bitnu adresu skoka.

Primena mikroprocesora u energetici – mikroprocesori i mikrokontroleri 10

Adresa Kôd naredbe long jump Preostali bitovi nebitni 0x0300 0 0 0 1 1 1 1 0 x x x x x x x x

Adresa adresa skoka – 0x2001 0x0301 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 1

Struktura programske memorije u slučaju short jump naredbe. Dovoljna je samo jedna memorijska lokacija da se postavi kôd naredbu short jump koji ujedno sadrži i broj relativnog skoka ( ± 128 lokacija, zapisan u donjih 8 bitova).

Adresa Kôd naredbe short jump Preostali bitovi definišu relativni skok ± 128

0x0300 0 0 0 1 1 1 1 1 0 1 0 1 1 1 0 0 Postoje veoma važne naredbe uslovnog skoka. U sledećem primeru, program skače na labelu LAB_1 samo ako vrednost u akumulatoru nije jednaka nuli (koriščeno NE- not equal). Mogući su i uslovi tipa E, LT, GT, LE, GE, itd..

MOV ACC, RESULT IF NE JUMP LAB_1 Program koji se izvršava ukoliko je akumulator bio jednak nuli

LAB_1: Program koji se izvršava ukoliko akumulator nije bio jednak nuli

2.3.5. Osnovni mehanizam rada – grananje programa pozivom podprograma –CALL Poziv podprograma (funkcije, subrutine) je specijalna vrsta programskog skoka, pri kojoj je neophodno zapamtiti pozivnu adresu pre skoka. Mikroprocesor koristi tu zapamćenu adresu da vrati program, nakon izvršenja podprograma, na pozivno mesto. Time se nakon pozvanog i izvršenog podprograma nastavlja dalje izvršenje osnovnog programa. Korišćenjem sistema podprograma smanjuje se količina upotrebljene programske memorije i olakšava programiranje ali usporava se izvršenje programa. Sistem izvršenja podprogram je usko povezano sa mehanizmom stack-a. Stack je specijalan rezervisan deo memorije osmišljen za pamćenje pozivne adrese. Po dekodovanju CALL instrukcije:

1. Adresa sledeće instrukcije se automatski pamti u stack memoriji (potiskuje (push) na stek). Adresa sledeće instrukcije je obično adresa CALL instrukcije + 2 pošto je prva sledeća memorijska lokacija nakon CALL naredbe popunjena adresom podprograma koji se poziva,

2. adresa podprograma se čita iz programske memorije. Ona je linkovana (upisana) u program memoriji odmah nakon CALL instrukcije),

3. ova nova adresa se paralelno upisuje u PC pokazivač koji nakon tog upisa pokazuje na prvu instrukciju podprograma kao sledeću instrukciju za izvršenje,

4. podprogram se izvršava, 5. na kraju podprograma uvek se koduje specijalna instrukcija RTS (Return from Subroutine) koja

inicira mehanizam za povratak u glavni program. Tim mehanizmom se u PC pokazivač upisuje adresa zapamćena na stack-u (automatski pop sa stack-a). Ovim se nastavlja sledeća instrukcija upisana nakon CALL instrukcije.

Funkcija često zahteva i ulazne argumente i izlazne argumente, na primer, Y=sin(X). Predhodno opisan mehanizam to nije predvideo. Prenošenja argumenata od glavnog programa ka podprogramu (i obrnuto) je takoñe moguće primenom mehanizma stack-a, mada se mogu koristiti i neki interni registar procesora. Način zavisi od tipa višeg

Primena mikroprocesora u energetici – mikroprocesori i mikrokontroleri 11

programskog jezika (C vrši prenos argumenata preko stack-a ). Kod asemblera nema pomoći, moramo sami da vodimo računa kako se prenose argumenti. U svakom slučaju, ulazni argumenti za funkciju moraju biti spremni i na odgovarajućem mestu pre instrukcije CALL , tj pre koraka 1., dok podprogram mora pripremiti rezultat (izlazni argument) pre RTS naredbe, tj pre koraka 4.

Primer malog programa sa CALL naredbom.

MOV ACC, #20 // glavni program puni argument pre poziva CALL LAB_1 // Prvo se pamti se sledeca adresa na stack-u, zatim se sa // novom adresom (LAB_1) puni PC i program skače MOVX RESULTAT, ACC // glavni program koristi rezultat fukcije ----------- LAB_1:

- Podprogram koji se može pozivati više puta INC ACC // Podprogram koristi ACC koji je u ovom slučaju ulazni ali i izlazni argument RTS // return from soubroutine inicira vraćanje sačuvane prg. adrese sa steak-a

Važno je uočiti obaveznu RTS naredbu čiji dolazak u dekoder naredbi pokreće mehanizam povratka iz podprograma. Programski brojač se puni adresom sa stack memorije , ako treba preuzimaju se i argumenti i program nastavlja gde je stao pre poziva podprograma. Naredbe CALL i RTS su par, i tek posle RTS naredbe stack pointer se vraća na prvobitnu poziciju i ciklus je završen. Ukoliko ove dve naredbe nisu u paru, pokazivač stack-a sa svakim novim pozivom podprograma počinje da ‘luta’ po memoriji za podatke, čineči program nestabilnim i nepredvidivim.

2.3.6. Osnovni mehanizam rada – grananje programa prilikom prekida Neki spoljni dogañaj zahteva pažnju µC i neophodno ga je istovremeno obraditi. Primer: ako primetimo da nam gori kuća, verovatno bi bilo pametno načiniti prekid i prekinuti gledanje TV. Program za opsluženje ovog prekida bi predstavljao trčanje ka najbližem izlazu. Ili, još bolje, zaustaviti TV program, u prekidnoj rutini ugasiti požar i nastaviti gde smo stali sa TV programom. U mikroprocesorskom sistemu postoji niz dogañaja koji zahtevaju trenutnu pažnju i obradu od strane µP. Postoje prekidi na kojima se zasniva ’normalan rad’ sistema kao na primer: 1. prekoračenje brojača koji rad kao timer. Brojač radi na osnovu sistemskog clock-a čija je perioda poznata i time

se koristi za merenje tačno odreñenih vremenskih intervala. Ovim brojač radi u režimu timer - merač vremena. Svaki put kada brojač dostigne odreñenu vrednost postavlja signal prekida. Ovim dobijamo signal prekida u tačno odreñenim vremenskim intervalima, a u prekidnoj rutini postavljamo program koji je neophodno izvršavati u svakoj novoj periodi odabiranja sistema (čitanje ulaza, račun digitalnog zakona upravljanja, postavljanje izlaza).

2. prekid AD konvertora. Ukoliko je podatak spreman, AD konvertor nam daje prekid koji mi koristimo da preuzmeno novi odbirak.

3. Prekid serijskog porta. Serijski port je periferija na bazi shift registra koja serijski podatak sa serijske veze postavlja u paralelni registar. Time se oslobaña µC potrebe za praćenjem serijske linije i obradom pojedinačnih bitova. Ali, jednom kada je ceo podatak na raspolaganju, serijski port postavlja prekid i u ovoj prekidnoj rutini µC preuzima i obrañuje pristigli podatak.

4. itd.. popuniti tokom pregleda korisničkih uputstava .. Sa druge strane, postoje i izvori prekida koji uobičajeno izazivaju fault stanje sistema, kao na primer: 1. spoljni reset Spoljni reset se tretira kao prekid. Program prekida da se izvršava i počinje od početka. Jedina

razlika prekida usled spoljnog reseta u odnosu na sve ostale prekide je da se stack briše i potpuno se gubi povratna adresa.

Primena mikroprocesora u energetici – mikroprocesori i mikrokontroleri 12

2. software fault ukoliko dekoder naredbe primi pogrešnu naredbu (kôd koji nije predviñena u dekoderu instrukcija) generiše se softverski prekid da bi se ovaj dogañaj obradio.

3. prekomerna struja motora, napon jednosmernog meñukola, temperatura IGBT modula – pojedina merna veličina je izvan dozvoljenog opsega. Neophodno je koristiti spoljni komparator čiji izlaz je povezan sa jednim od ulaza za prekide µC.

4. itd.. popuniti tokom pregleda primene u pogonima.. Prekid nije svemoćan, obrada (servisiranje) prekida mora da sačeka da se izvrši instrukcija. Instrukcija je nedeljiva celina! Neki se prekidi mogu maskirati (MI), neki ne (NMI). Postoje različiti izvori prekida tako da µP i µC uglavnom poseduju kontroler prekida. Kontroler prekida latch-uje signal prekida, daje signal CPU da prekid postoji i oslobaña zahtev za prekid kada se prikid usluži. Kontroler prekida takoñe odlučuje o prioritetu prekida, o mogućnosti prekidanja prekida nižih prioriteta, kao i o samom maskiranju (zabrani) pojedinih izvora prekida.

Glavni program (main)

reset

Signal prekida

Servisna rutina prekida

početak servisne rutine

RTI

A

C

B

1 2 3 4

Slika 1.6. Opis mehanizma prekida. Prikazani su glavni program i prekidna rutina jednog prekida.

Stack memorija je takoñe veoma važan deo i mehanizma prekida.

1. maskirani prekid se ignoriše, 2. µC prihvata nemaskirani prekid u trenutku A , ali prvo završava instrukciju u toku (3), 3. zatim postavlja na stack (pamti) adresu sledeće naredbe glavnog programa (isto kao u slučaju poziva

podprograma), 4. u PC se zatim postavlja adresu vektora prekida. Postoji tabela vektora prekida, koja za svaki izvor

prekida ima unapred definisanu adresu skoka – vektor prekida. Na toj adresi korisnik treba da linkuje prekidnu rutinu za servisiranje tog prekida,

5. pre skoka na vektor prekida, µP uobičajeno postavlja i razne interne registre na stack, statusni registar obavezno, time čuvajući njihov sadržaj u toku prekidne rutine. Po završetka prekidne rutine, oni se takoñe automatski vraćaju sa stack-a i glavni program može da nastavi bez greške,

6. konačno, prekidna rutina za taj prekid počinje da se izvršava B, 7. nakon završetka prekidne rutine i naredbe RTI (return from interrupt) ukida se signal za opsluženje

prekida i automatski vraća sa stack-a adresa sledeće instrukcije C. Automatski se vraćaju i svi interni registri koji su na početku prekida sačuvani, stack je opet prazan,

8. i program nastavlja dalje, instukcija (4). Šta bi se desilo kada uC ne bi automatski sačuvao statusni registar? Kako bi se to moglo rešilo?

Primena mikroprocesora u energetici – mikroprocesori i mikrokontroleri 13

2.4. Programska memorija i memorija za podatke

Tipične poluprovodničke memorije korišćene u mikroprocesorskom sistemu se mogu podeliti na 1. memorije namenjene za skladištenje podataka ili 2. programa i programskih konstanti. Za podatke se koristi RAM tip memorije, dok se za program koriste FLASH , ROM, EPROM ili EEPROM tipovi memorije. U slučaju RAM memorije vreme pristupa pri upisu i čitanju su istog reda veličine, dok električni programabilne programske memorije (FLASH i EEPROM) karakteriše dugačko vreme za brisanje i programiranje lokacija. RAM memorija ne čuva sadržaj nakon nestanka napajanja, FLASH, ROM, EPROM ili EEPROM čuvaju i program je spreman za čitanje odmah nakon dolaska napajanja i reseta sistema.

adrese podaci RAM

CS RD WR

A0

An-1

D0

Dm-1

komande

adrese podaci FLASH

ili ROM

EPROM EEPROM

CS OE PRG

A0

An-1

D0

Dm-1

komande

Smer samo za programiranje

(ne važi za ROM)

Slika 1.7. Memorija za podatke i memorija za program

Veoma važan parametar jedne memorije je vreme pristupa. Za ciklus čitanja (RD - read) vreme pristupa predstavlja vreme postavljanja podataka na data magistralu nakon aktivacije OE ili RD signala. Predpostavlja se da je potrebna adresa već postavljena na adrisnu magistralu pre OE signala. Za ciklus pisanja (WR-write) vreme pristupa predstavlja vreme neophodno da se podaci namenjeni za upis zadrže na data magistrali uz aktivan WR ili PRG signal. Primer vremenskih dijagrama za RD ciklus RAM memorije je dat na sledećoj slici. Mikroprocesor prvo postavlja adresu željenog podatka na adresnu magistralu, zatim postavlja aktivan READ signal i selektuje RAM čip. Ovim je RAM čip pobuñen i otvara izlazne registre. Počinje postavljanje podataka na izlaz, vezan za magistralu podataka. Ovi podaci nisu trenutno postavljeni, neophodno je odgovarajuće vreme da se izlazi otvore, parazitne kapacitivnosti napune i signali stabilišu. Tek tada imamo tačne podatke (valid data) koje mikroprocesor može da čita sa magistrale i da ih prihvati. Nakon toga, neophodno je dodatno vreme da podaci na magistrali za podatke postanu validni, i nakon tog vremena µP čita magistralu za podatke i prihvata željeni podatak. Mikroprocesor takoñe radi u realnom vremenu i ne može ove podatke trenutno da pročita, Zato je neophodno da memorija zadrži podatke na migistrali neko vreme. Vremenski dijagram čitanja RAM memorije je prikazan na sledećoj slici, sa CS i RD signalim active low, znači logička 0 (ispod 2V za TTL) je aktivan signal.

Primena mikroprocesora u energetici – mikroprocesori i mikrokontroleri 14

vreme postavljanja adresa od strane CPU

CS

RD

ADDR

DATA

Ukupno vreme čitanja

N adresnih linija

M linija za podatke

Završen proces čitanja magistrale za podatke. CPU ukida CS i RD.

vreme postavljanja podataka od strane RAM

vreme čitanja

podaci ne def.

Slika 1.8. Vreme pristupa prilikom čitanja RAM - vremenski dijagrami

2.5. Adresni prostori u mikroprocesorskom sistemu

U mikroprocesorskom sistemu (slika 1.1) postoji više periferija (RAM, ROM, portovi ,itd..) sa kojima mikrorpocesor treba da razmenjuje podatke preko magistrale za podatke. Da bi se znalo sa kim mikroprocesor hoće da komunicira koristi se adresna magistrala. Kôd adrese definiše periferni ureñaj, kao i samu memorijsku lokaciju u tom ureñaju, sa kojom µP želi da razmeni podatke. µP postavlja odgovarajuću adresu na adresnu magistralu i posle odreñenog vremena očekuje odgovor od prozvanog spoljnog ureñaja na magistrali za podatke (u slučaju RD operacije) ili sam postavlja podatke očekujući da ih prozvani ureñaj prihvati (u slučaju WR operacije). Da bi se izbegla kolizija (sudar podataka i kratak spoj) na magistrali za podatke svaki ureñaj sa kojim µC komunicira treba da ima jasno definisano mesto u adresnoj mapi, ne sme doći do preklapanja ! Količina bitova na adresnoj magistrali definiše adresni prostor jednog mikroprocesora. U sledećem primeru uzimamo da mikroprocesor raspolaže sa 16 adresnih linija, čime mu je na raspolaganju adresni prostor od 216 =65536 različitih adresa, i samim tim može da komunicira sa 65536 različitih lokacija sa podacima. Koliki su podaci, to je sada nebitno, zavisi od veličine magistrale za podatke, za µP , µC i DSP je uobičajeno 8, 16 , 32 ili 64. Nadalje, u mikroprocesorskom sistemu su i jedan ROM i jedan RAM, oba sa 16K prostora. Iz tog razloga oba ureñaja imaju 14 adresnih ulaza, jer poseduju 214 memorijskih lokacija. Ako bi jednostavno povezali prvih 14 adresnih linija (A0 – A13) mikroprocesora ka ROM i RAM adresnim ulazima, i aktivirali oba ureñaja, obe memorije bi se javljale za svaku adresu i došlo bi do kolizije na magistrali za podatke. Da bi izbegli ovu situaciju, koristimo preostale dve adresne linie (A14 i A15) da bi razdvojili ROM i RAM na dva različita adresna prostora. Jedno od rešenja je sledeće:

Selektuj ROM samo ako važi A15=0 i A14 = 0 � važi za sve brojeve adresa od 0x0000 – 0x3FFF Selektuj RAM samo ako važi A15=0 i A14 = 1 � važi za sve brojeve adresa od 0x4000 – 0x7FFF

Ovo je lako realizovati NI i I kolima.

A15

A14

CS ROM

CS RAM

Slika 1.9. Primer selekcije ROM i RAM sa po 16K podataka, u 16-bitnom adresnom prostoru.

Primena mikroprocesora u energetici – mikroprocesori i mikrokontroleri 15

Sa ovako povezanim CS ulazima, preostale dve kombinacije adresnih , MSB A15=1 i A14 = 0 , A15=1 i A14 = 0, ne pobuñuju ni jednu od ove dve memorije (ne daju nulu signala CS) i gornjih 32K adresnog prostora je ostalo slobodno za druge periferne ureñaje. Možemo, na primer postaviti jedan ulazno/izlazni port u gornji deo adresne mape (0x8000-0xFFFF). Port poseduje jednu digitalnu reč i jedan podatak, i samim tim za njegovo adresiranje je dosta rezervisati samo jednu adresu, na primer adresu 0xABCD.Ukoliko µC pozove baš ovu adresu port registar će biti selektovan, i port će postaviti (RD) ili primiti (WR) podatke sa magistrale za podatke

A15 - A0

CS PORTA DIGITALNI KOMPARATOR

0xABCD

Slika 1.10. Primer selekcije paralelnog porta na adrei 0xABCD.

Pisanje u ovaj paralelni port je sada prosto, na primer MOVX 0xABCD, #0xFF Nakon ove instrukcije svih 8 pinova porta (u slučaju 8-bitne magistrale za podatke) su postavljeni na active high level (svi na nivo logičke jedinice). Čitanje sa porta je takoñe popraćeno istom adresom u instrukciji, jedino je smer podataka promenjen. MOVX ACC, 0xABCD Sadržaj pinova paralelnog porta se čita i postavlja u akumulator.

Blok dijagram rešenje za ovaj sistem je ilustrovan na sledećoj slici

magistrala za podatke

adresna magistrala

Kontrolna magistrala

Ulaz ili izlaz

OSC CP

ROM 16K

IO port 1 byte

16-bitna

ROM chipselect

RAM chipselect

2 bita

2 bita

IO PORT chipselect

16- bitna

CS Data Adr Data CS

14- bitna

RAM 16K

CS Data Adr

14- bitna

Slika 1.11. Primer hardverskog rešenja jednog µP sa ROM 16K, RAM 16K i dva porta

Na slici se jasno vidi da za čip selekt logiku većih ROM i RAM treba manje adresnih linija (samo 2) dok za čip selekciju IO porta koji treba da odgovara samo na jednu od 216 kombinacija, koriste se sve adresne linije. ROM čip biva prozvan za 16K adresnih kombinacija, a koja od tih 16K će biti na magistrali za podatke, odlučuje se u okviru same ROM memorije na osnovu adresnih podataka i internih dekodera. Da se ne bi desila kolizija na adresi za podatke, pravilno je isplanirana adresna mapa, data na sledećoj slici. Dodat je još jedan IO port, na adresi 0xABCF.

Primena mikroprocesora u energetici – mikroprocesori i mikrokontroleri 16

0x0000

0x8000

0xFFFF

0x4000

16K 0x0000-0x3FFF

16K 0x4000-0x7FFF

Programska memorija (ROM 16K)

memorija za podatke (RAM 16K)

Dva IO porta, 1 adresa za svaki port Port 1 � 0xABCD Port 2 � 0xABCF

0xABCD 0xABCF

Prazan prostor

Prazan prostor

Slika 1.12. Primer adresne mape jednog µP sa ROM 16K, RAM 16K i dva IO porta.

Primena mikroprocesora u energetici – mikroprocesori i mikrokontroleri 17

3 Mikrokontrolerski sistem Mikrokontroler je mikroprocesor sa periferijama, sve u jednom integrisanom kolu. Mikrokontroler nastaje nakon što su ljudi shvatili šta im sve treba pored mikroprocesora u jednom sistemu specijalne namene. Tipični blokovi mikrokontrolera namenjenog kontroli motora, pored mikroprocesora, magistrala i clock izvora su:

� unutrašnja ROM (FLASH) programska memorija. Nema potrebe za spoljnom magistralom. Unutrašnje memorije su danas uglavnom FLASH i kreću se reda veličine 4K, 8K, 16K, 64K, 128K.

� unutrašnja RAM . Nema potrebe za spoljnom magistralom. Unutrašnje RAM se kreću u rasponu 256 bytes, 512, pa sve do 1K, 2K, 16K, 32K.

� Više IO portova . Portovi su opšte namene, mogu biti input/output, i radi uštede pinova obično multipleksirani sa alternativnim funkcijama.

� Više nezavisnih brojača impulsa / merača vremena (counter/timer). Ogromna primena, neophodno je meriti razna vremena, menjati izlaze u realnom vremenu, meriti broj pridošlih impulsa...

� Više različitih serijskih portova UART, SPI, I2C, CAN bus. Služe za razmenu podatak, prijem komandi, čitanje udaljenih senzora.

� A/D konvertor sa S&H kolom i multipleksiranim ulazima. A/D je neophodna deo digitalno upravljanog elektromotronog pogona. Bez njega nema veze izmeñu kontinualnog i digitalnog dela sistema.

� Kontroler prekida � Motor control unit (drugačije nazivan Event generator ili PWM generator). Služi da generiše razne

verzije n-faznog PWM signala. Služi i da primi razne verzije digitalnih signala sa senzora, kao na primer signal se enkodera, tahometra, itd..

� Specijalne periferije i. Watchdog timer

ii. POR – power on reset circuit

podaci

Kontrola

Ulazi/izlazi

OSC - CPU -

mikroprocesor FLASH RAM

Event manager

C A D C A D C A D C A D

PWM ka invertoru

Signal sa senzora

brojači

Impulsi za brojanje senzora

A/D konvertor

Signali za merenje

clock

Paralelni portovi

C A D

Serijski portovi

WD

Kontroler prekida

Spoljni izvori prekida reset

POR

Mikrokontroler

Slika 1.13. Tipični delovi mikrokontrolera namenjenog kontroli motora (adresne linije nisu prokazane)

Primena mikroprocesora u energetici – mikroprocesori i mikrokontroleri 18

3.1. Paralelni port Rani mikroprocesori nisu imali ugrañene paralelne portove i za paralelni prenos podataka ka spoljnom svetu se koristilo posebno integrisano kolo. Integrisano kolo PIA 8255 je posedovali tri izlazno/ulazna porta i kontrolni registar za definisanje smera podataka. To je već zaboravljeno u slučaju mikrokontrolera, gde je broj integrisanih izlazno/ulaznih portova sasvim dovoljan. Paraleni port je sa strane mikrokontrolera običan registar sa svojim mestom u memorijskoj mapi. Njegovi (izlazi/ulazi) su preko pinova povezani sa spoljnim svetom i menjaju se obični upisom promenjive na adresu porta. Upis jedinice u jedan bit port registra (SET) se direktno manifestuje pojavom +5V na odgovarajućem izlaznom pinu, dok upis nule u taj bit (CLEAR) dovodi do pojave napona 0V. Povezivanje paralelnog porta sa mikroprocesorom je prikazano na donjoj slici levo. Dekoder adrese porta je takoñe integrisan i jedino što je neophodno znati je adresa samog porta. Na desnoj slici je prikazana realizacija jednog izlazno-ulaznog pina koji predstavlja jedan logički bit porta (jedan port je skupina više pinova, može posedovati 4, 8 bitova, 16 bitova).

Add. decod. CS

Paralelni IO port

P1.0 P1.1 P1.2 P1.3 P1.4 P1.5 P1.6 P1.7

RD/WR CPU data bus

CPU address bus

CPU control bus

CPU

Izlazni bafer

Slika 1.14. Povezivanje paralelnog porta u uC

Slika 1.15. Tipična HW realizacija jednog IO pina porta sa alternativnom funkcijom (primer za 8051)

Ulazno/izlazni port se uobičajeno može čitati, pisati ili postaviti u stanje visoke impedance. Takoñe, radi uštede pinova, svaki pin IO porta uobičajeno poseduje i alternativnu funkciju, kojom se neki periferni blok µC povezuje sa spoljnim pinovima. Na programeru je da odluči šta mu treba i da li će pin da koristi kao port ili

Primena mikroprocesora u energetici – mikroprocesori i mikrokontroleri 19

kao ulaz-izlla neke periferije. Na primer, pin na sledećoj slici može biti bit IO porta ili jedan ulaz AD konvertora. Ukoliko nema potrebe za ovim A/D ulazom, možemo koristiti pin kao ulaz ili kao izlaz, uglavnom kao digitalni port. Postoje specijalni registri kojima se konfigurišu izlazni pinovi µC. Pinovi se uobičajeno konfigurišu odmah nakon reseta i konfiguracija se ne menja tokom rada.

Jedan od ADC ulaza

IO port

Selekcija (vrši se programski): 0 - port ili 1 - alternativna funkcija

Spoljni pin µC

Slika 1.16. Primer multipleksiranja jednog port bita i jednog A/D ulaza na jednom pinu mikrokontrolera.

3.2. Serijski port Serijski port je pojednostavljeno gledano pomerački registar (shift) sa paralelnim upisom/čitanjem sa strane CPU (serijski port je običan registar u mikrokontrolerskoj memorijskoj mapi) a serijskim upisom/čitanjem sa strane serijske linije (RX i TX). U sebi obično sadrži interni baud rate generator (softverski se programira pri konfigurisanju serijskog porta) i kontrolnu logiku za paralelni upis/čitanje, dodavanje start, stop i parity bitova, baferisanje podataka, kao i generisanje RX prekida (kada je poslednji bit dolazećeg podatka primljen) i TX prekida (kada je poslednji bit poslatog podatka otišao na liniju).

Add. decod. CS

Serijski IO port RX linija

TX linija

clock

RD/WR

prekid (TX or RX)

Dozvola prekida serijskog porta

CPU data bus

CPU address bus

CPU control bus

CPU

PISO

SIPO

logika

Slika 1.17. Povezivanje serijskog porta sa mikroprocesorom unutar mikrokontrolera.

Primena mikroprocesora u energetici – mikroprocesori i mikrokontroleri 20

Dodatne napomene: • Serijski port uobičajeno daje signale nivoa 0V i 5V. PC serijski port radi sa ±12V podacima. Za vezu

sa PC je potreban dodatni hardver, MAX232 kolo koje vrši prilagoñenje naponskih nivoa ili modem, • Ubičajen serijski protokol je RS232 (definiše broj bitova poruke, start bit, stop bit (broj stop bitova 0,1

ili 2), parity bit (odd ili even parity), brzinu serijske veze (baudrate: 2800 4800 9600 17200 itd.) • CPU je rasterečena čekanja odlaska i nadolaska pojedinih bitova podatka. CPU vrši običan paralelni

upis (ili čitanje) u serijski registar (na primer u registar serial buffer - SBUF) što je dovoljan znak za automatski start serijske poruke, serijski port preuzima dalju kontrolu nad slanjem,

• Način pisanja programa za rad sa serijskim portom: - pulling, ne preporučuje se, procesor ne bi radio ništa drugo nego čekao dolazak podatka - serijski prekid: prvi tip prekida po prijemu (RI), drugi tip prekida po slanju zadnjeg bita

na liniju (TI).

Slika 1.18. Primer blok dijagrama serijskog porta – Siemens 80535 procesor.

Primena mikroprocesora u energetici – mikroprocesori i mikrokontroleri 21

3.3. Brojački sistemi (timer/counter) Brojačka periferna jedinica je neophodni deo svakog mikrokontrolera. Ova jedinica oslobaña mikrokontrolersku CPU skoro svih aktivnosti u vezi merenja vremena (timer mod rada) ili broja pristiglih impulsa (counter mod rada). CPU treba samo da konfiguriše i startuje brojač da broji odreñeno vreme. Dok se ovo vreme broji, CPU može da radi neki drugi posao sve dok se ne dobije signal prekida po isteku potrebnog vremena. Slično, ukoliko je potrebno brojati nadolazeće impulse, CPU konfiguriše brojački sistem u counter mode, zatim nastavlja da radi neki drugi posao, povremeno koristeći broj pristigli impusa (čitajući neki registar brojača) za potreban račun. Timer/counter je obično isto kolo koje ili broji sistemski clock za koji znamo trajanje pa je to vreme (timer) ili broji prispele impulse na neki ulazni pin pa je to brojač (counter). Stvar je samo u konfigurisanju, t.j. u programiranju kontrolnog registra brojačkog sistema. 1. timer mode Brojač radi na osnovu sistemskog clock-a čija je perioda poznata i time se koristi za merenje tačno

odreñenih vremenskih intervala. Ovim brojač radi u režimu timer - merač vremena. Svaki put kada brojač dostigne odreñenu vrednost postavlja signal prekida. Ovim dobijamo signal prekida u tačno odreñenim vremenskim intervalima, a u prekidnoj rutini postavljamo program koji je neophodno izvršavati u svakoj novoj periodi odabiranja sistema (čitanje ulaza, račun digitalnog zakona upravljanja, postavljanje izlaza). Većina novijih mikrokontrolera poseduju složene brojačke periferije koje omogućuju automatski reload brojačkog kola, tako da brojač jednom konfigurisan, nema potrebe ponovo startovati ili dopunjavati mu registre.

2. counter mode Brojač broji pristigle impulse. Primer: Broj pristiglih impulsa sa optičkog enkodera u odreñenom vremenskom intervalu je proporcionalan brzini motora. Za merenje brzine je neophodno kofigurisati jedan brojač u timer modu, i drugi postaviti u counter mod. Po isteku vremena koje nam meri timer, ulazimo u prekidnu rutinu koju timer inicira, čitamo vrednost brojača, računamo brzinu. Resetujemo brojač da bi ponovo merio brzinu u toku sledeće periode (ovo poslednje je lep školski primer, ali nije dobro rešenje u praksi).

Sistemski sat (clock)

Brojački ulaz (ulazni pin)

Selekcija: 0 - timer ili 1 - counter

Delitelj frekvencije 1:2:4:8:16

Brojački izlaz CLK

Brojački ulaz

Broj za poreñenje (definiše periodu prekida)

Dig. komparator

Preset brojača (paralelni upis !) može i automatski , po prekidu)

Dozvola prekida brojača

prekid

Output buffer TIMER_COUNT

1

2

3

TIMER_PERIOD

TIMER_COUNT

Slika 1.19. Opšta šema brojačkog sistema sa osnovnim funkcijama Primer primene jednog sistemskog brojača u timer modu je dat na sledećoj slici. Saržaj brojača se inkrementira (uvećava za jedan) sa svakim novim clock ciklusom, periode Tclk. Nakon što se brojčana vrednost brojača poklopi sa vrednošću zapisanom u registru TIMER_PERIOD brojač se resetuje, i generiše se prekid. Prošlo je odreženo vreme. Koliko je to vreme

clks TPERIODTIMERT ⋅= _

Primena mikroprocesora u energetici – mikroprocesori i mikrokontroleri 22

TIMER_PERIOD = 1000

2

1

0

1000

999

998

Ts 2Ts

Prekid 2

Tclk

Prekid 1

TIMER_COUNT

t

Ts

t

CLOCK

2

1

0

TIMER_PERIOD = 1000 TIMER_COUNT

IMPULSI t

1000

999

998

t

a) Timer mod b) Counter mod Slika 1.20. Način rada brojačkog modula u timer modu i u counter modu

Koju vrednost treba upisati u TIMER_PERIOD registar da bi se dobila perioda Ts ?

s

clk

clk

s

f

f

T

TPERIODTIMER ==_

Na primer, ako želimo peridu odabiranja od 1 ms, što je jednako frekvenciji od 1000 Hz, za clock od 1 MHz, u brojački registar TIMER_PERIOD treba upisati

10001000

1_ ==

Hz

MHzPERIODTIMER

Primer brojačkog sistema primenjenog u Microchip mikroprocesorskoj familiji dsPIC30F4011/4012.

Slika 1.21. 16 –bitni Timer 2 blok dijagram - dsPIC30F4011/4012 Data Sheet

Primena mikroprocesora u energetici – mikroprocesori i mikrokontroleri 23

3.4. Analogno/digitalni konvertor u sklopu µµµµC

A/D konvertor pretvara kontinualni električni naponski signal na svom ulazu u digitalnu reč na svom izlazu. A/D nalazi veliku primenu u elektromotornim pogonima, i u industiji uopšte, i koristi se pri merenju veličina kao što su struja, napon, temperatura, brzina, itd.

A/D konvertor unutar mikrokontrolera se uglavnom dizajnira tako da vrši konverziju signala u naponskom opsegu jednakom naponu napajanja samog mikrokontrolera. Opseg od , na primer 0 – 5 V, se pretvara u digitalnu reč sa n-bita, gde je n uobičajeno broj 8, 10, 12. Veći broj n donosi manji kvantni nivo. Kvantni nivo je jednak najmanjem priraštaju analognog signala koji AD može detektovati tj. to je vrednost LSB u izlaznoj digitalnoj reči. Uvećanje broja n donosi bolju rezoluciju i preciznost, ali uvećava cenu mikrokontrolera. Iskustvo pokazuje da je n=10 (rezultat u opsegu Vmin → 0 Vmax →1023) dovoljno za merenje u većini pogona i industijskih procesa.

U elektromotornom pogonu se mnogi proračuni moraju vršiti u realnom vremenu tako da je vreme A/D konverzije jednog signala veoma bitan podatak. Vreme jedne konverzije ADC modernog DSP oko 200 ns, u slučaju više sukcesivnih konverzija sledeća traje samo 80 ns. Vreme konverzije ADC u tipičnog mikrokontrolera je reda veličine 1 µs. Postoje dva osnovna tipa A/D konvertora.

• Flash A/D konvertori: Konverzija je izuzetnog brza jer za svako stanje postoji odgovarajući komparator. Za Flash A/D treba puno hardvera, tako da su jako skupi. Često su brži i od samog procesora. Inicira se AD konverzija i u sledećoj naredbi rezultat je već spreman. Zbog cene se uglavnom se ne ugrañuju ni u mikroprocesore ni u DSP.

• A/D konvertor sa metodom sukcesivnih aproksimacija. Više se koristi pošto se izgrañuju sa manje

hardwera pa su pristupačnije cene. Rade postepeno, odlučuju za svaki bit rezultata posebno, bit po bit, počevši od MSB. Rade na osnovu internog clock signala, zahtevaju dodatno S&H kolo da se nivo signala ne promeni tokom konverzije. Način konverzije ih čini relativno su sporim ali ta brzina (čak i ispod 100 ns za konverziju) je sasvim dovoljna za većčinu primena. Mikrokontroler je uglavnom brži od A/D konverzije, tako da koristi handshake signali (signali rukovanja) kao što su START CONVERSION i BUSY (ili prekid) da bi se sinhronizovao rad CPU sa A/D konvertorom.

3.4.1. Način rada ADC sa sukcesivnim aproksimacijama

Ovde bi trebalo objasniti osnovni rad SAR ADC, mislim da je urañeno na vežbama.

3.4.2. Tipična primena A/D sa metodom sukcesivnih aproksimacija u sklopu mikrokontrolera

A/D konvertor sa metodom sukcesivnih aproksimacija ne može trenutno da izvrši konverziju signala. Ovaj A/D konvetor u svakom ciklusu internog clock signala odlučuje o jednom bitu rezultata, za 10-bitni konvertor treba barem 10 clock ciklusa. Ovaj tip A/D konvertora zahteva na svom ulazu dodatno sample&hold kolo (S&H- odabirač i zadržač signala) na čijem se izlazu zadržava isti nivo signala tokom konverzije. Sa strane CPU, takoñe je neophodna dodatna logika koja sinhronizuje rad CPU i sporijeg A/D konvertora. CPU definiše trenutak starta A/D konverzije (signal START), ali kraj iste signalizira sam A/D konvertor (signal BUSY ili mehanizam prekida).

Radi dalje uštede pri izradi mikrokontrolera, koja rezultuje u nižoj ceni, uglavnom se ugrañuje samo jedan A/D konvertor u mikrokontroler. Merenje (A/D konverzija) više analognih ulaza se omogućuje primenom analognom multipleksera, koji u odgovarajućem trenutku prosleñuje izabrani analogni signal ka jedinom A/D konvertoru. Postoje jeftinije varijante ovog sistema sa jednim S&H kolom na ulazu A/D konvertora, i više, na svakom analognom ulazu po jedno S&H kolo. Druga varijanta je skuplja ali omogućuje istovremeno odabiranje više veličina (veoma važno!).

Na sledećoj slici je prikazan blok dijagram tipičnog sistema za A/D konverziju. Pored samog A/D konvertora, prikazano je i S/H kolo, signala za sinhronizaciju rada CPU i A/D, kao i analogni multiplekser.

Primena mikroprocesora u energetici – mikroprocesori i mikrokontroleri 24

AD_data Digitalni rezultat

A/D konvertor

Registri µµµµC namenjeni za rad sa A/D periferijom

Vin

Analog MUX (8/1)

selektor ulaza

Vref+

Vref−−−−

(GND)

START

BUSY

S&H AD_BIT_START

AD_BIT_BUSY

S&H_BIT_START

AD_IN_SELECT

AN1

AN0

AN7

Slika 1.22. Tipičan blok u sklopu mikrokontrolera za A/D konverziju više analognim ulaza. Algoritam rada sa prikazanim sistemom za A/D konverziju.

Odabir analognog kanala AD_IN_SELECT= 3

Startovanje S&H BIT_S&H_START =TRUE

Startovanje A/D S&H_BIT_START =TRUE

(1)

Startovanje A/D AD_BIT_START =TRUE

Čekanje kraja konverzije AD_BIT_BUSY ?

FALSE

TRUE

Preuzimanje rezultata REZULTAT = AD_data

Slika 1.23. Tipičan algoritam rada sa A/D sistemom.

3.4.3. Dva načina sinronizacije rada A/D konvertora i CPU u okviru mikrokontrolera Vreme AD konverzije nije trenutno. Uobičajeno je mnogo duže od jednog ciklusa clock signala CPU. To znači da nije moguće u jednoj instrukciji startovati A/D konverziju, i u drugoj instrukciji već preuzeti gotov rezultat. Busy signal je upravo smišljen kao obaveštenje za CPU da podatak nije spreman. U prikazanom algoritmu CPU čeka da se stanje na busy liniji ne promeni, i tek onda preuzima podatak. Ovo se zove pulling A/D konvertora i jedno je od mogućih rešenja sinhronizacije CPU i konvertora. Ovo je prosto programsko rešenje, ali ujedno i veoma nepraktično jer CPU ne radi ništa čekajuči kraj A/D konverzije. Proizvoñači mikrokontrolera sa A/D ulazima nude i drugo rešenje, primenom sistema prekida. Pored busy signala, A/D blok poseduje i mogućnost generisanja signala prekida. Ovaj signal se generiše po završetku poslednje A/D konverzije i na taj način se obaveštava CPU da je podatak spreman. Ovo rešenje je složenije, ali mnogo optimalnije.

Primena mikroprocesora u energetici – mikroprocesori i mikrokontroleri 25

Da bi se ovo rešenje primenilo, prekid sa A/D konvertora se mora dozvoliti i mora se napisati odgovarajuća prekidna rutina za preuzimanje rezultata. Na sledećoj slici je detaljnije prikazan deo koji služi za sinhronizaciju A/D konvertora i CPU.

AD_data Digitalni rezultat

A/D konvertor

Registri mikrokontrolera namenjeni za sinhronizaciju sa A/D periferijom

Vin

Vref+

Vref−

START

BUSY

AD_BIT_START

AD_BIT_BUSY

AD_PREKID

+5V

PREKID

Kontroler prekida

DOZVOLI_AD_PREKID

Slika 1.24. Dva načina sinhronizacije CPU i A/D sistema.

Primeri mašinskog programa za dva načina sinhronizacije CPU i A/D sistema.: 1. pulling porta U ovom slučaju postoji samo glavni program setb AD_BIT_START ; Procesor inicira AD konverziju wait_validAD: jnb AD_BIT_BUSY,wait_validAD ; Čeka da padne BUSY mov Rezultat, AD_data ; uzima rezultat (Ovaj prg. radi ali možda treba ukinuti signal AD_BIT_START da se ne ponovi A/D konverzija) Dosta jednostavna realizacija (ne koristi se prekid i program se linearno izvršava u vremenu).Ali, gubi se vreme. Koristi se kad ionako nemamo šta da radimo ili kad vreme za rad nije kritično..Još primitivnija varijanta programa bi bila bez korišćenja BUSY signala. Umesto druge linije pišemo poziv na podprogram za fiksno vreme čekanja. lcall DELAY_AD ; čeka neko vreme za koje je siguran da će AD da odradi 2. prekid AD konvertora U glavnom programu se samo inicira AD konverzija: setb AD_BIT_START ; Procesor inicira AD konverziju glavni program dalje ne gubi vreme, radi nešto drugo. U prekidnoj rutini (prekid_AD) se preuzima rezultat: prekid_AD: mov Rezultat, AD_data ; uzme rezultat setb stigao_noviAD ; obaveštava da glavni prg. zna da je podatak spreman reti ; povratak iz prekida

3.4.4. Sample & Hold kolo ADC sa metodom sukcesivnih aprokximacija

Da bi se pravilno izvršilo odabiranje signala koriste se sample& hold (S&H) kola. S&H kolo odabira signal (uzima odbirak) dovoljno brzo i drži ga dovoljno dugo (naboj kondenzatora) da se izvrši analogno-digitalna

Primena mikroprocesora u energetici – mikroprocesori i mikrokontroleri 26

konverzija u samom ADC. S&H kolo se sadrži od kontrolisanog analognog prekidača i kondenzatora. Dok je prekidač zatvoren, kondenzator se puni na vrednost signala (sample process), kada se prekidač otvori, kondenzator zadržava (hold) odabrani nivo signala do sledećeg otvaranja. Kada je sample proces završen, dolazi do hold režima rada. Ako se signal u meñuvremenu promeni, ta promena neće biti uočena. Vrlo je bitno odabrati periodu odabiranja (Ts) takvu da ne postoje značajne spektralne komponente signala koji želimo čitati na učestanostima većim od Niquistove učestanosti za tu periodu - 1/(2Ts).

Vin Vout S&H AD ulaz

t Ts 2Ts 3Ts

Vin

Vout

Sample signal

Slika 1.25. Prikaz S&H procesa

Mikrokontroler namenjen pogonima uobičajeno nema samo jedno, već više S&H kola. Ovo je veoma značajno u sistemima sa obaveznim simultanim odabiranjem dva ili više signala. Na primer, ukoliko imamo dve LEM sonde za čitanje struje motora, smeštene u dve faze motora, neophodno je njhove signale čitati istovremeno jer je samo tada moguće rekonstuisati struju treće faze. Ukoliko bi klasično izvršili odabiranje jednog po jednog kanala ne bi dobili rezultate u istom vremenskom trenutku (za N-tu veličinu bi odbirak zakasnio za prvom za N TADC). Zato je važno da u istom željenom trenutku sačuvamo sve ana,logne signale (S&H kolima) i zatim jedan po jedan obrañujemo u A/D konvertoru i prevodimo u digitalne reči. A/D konvertor će i dalje raditi sporo i signali se ne obrañuju u isto vreme, ali su odabrani u istom vremenskom trenutku. Bez S&H na svakom analognom ulazu ovo bi bilo nemoguće.

Uobičajen kompromis pri izradi mikrokontrolera je A/D koji poseduje dva S&H kola.

3.4.5. Ulazni analogni multiplekser u sklopu bloka za A/D konverziju

U digitalno regulisanom ureñaju je uobičajeno potrebno meriti više analogoih veličina, kao na primer par struja, napona , temperatura, razne analogne reference, stvarna brzina, itd. Radi uštede u mikrokontroler se ugrañuje samo jedan A/D konvertor koji je povezan sa više analognih ulaznih pinova preko analognog multipleksera.

Osnovni dizajn softvera za rad sa A/D konvertorom ostaje isti, jedino je neophodno pre startovanja A/D konverzije selektovati željeni analogni kanal. Uštede sa ovakvom kofiguracijom (novčane i dimenzionalne) su velike a ograničenja minimalna jer obično i uzimamo jedan po jedan kanal a ne sve istovremeno. Ipak, u slučaju kritične brzine odabiranja, treba uvek uzeti u obzir da je vreme obrade u slučaju N kanala N puta veće nego u konfiguraciji sa N AD konvertora!! Ovaj problem se delimično umanjuje korišćenje sample&hold kola

Moderni DSP uobičajeno poseduju dva ADC, svaki sa pridruženim S&H kolom i svojim analognim multiplekserom 8/1. Ovim se dobijaju 16 potencijalnih analognih ulaza, od kojih se po dva mogu čitati simultano (u istom trenutku).

Primena mikroprocesora u energetici – mikroprocesori i mikrokontroleri 27

3.4.6. Microchip ADC modul primenjen kod dsPIC30F4011/4012 familije Prikaz složenog A/D sistema.

Slika 1.26. 10-bit High-speed ADC u dsPIC30F4011/4012

Primena mikroprocesora u energetici – mikroprocesori i mikrokontroleri 28

3.5. PWM signal generator u sklopu mikrokontrolera

Za generisanje jednosmernog napona promenjive amplitude ili n-faznog prostoperiodičnog naponskog signala promenjive amplitude i frekvencije koristi se modulator širine impulsa ili PWM (pulse-width modulation) generator. Ovaj periferni modul je nezamenjiv deo mikroprocesora ili DSP namenjenih kontroli motora. Uobičajeno je trofazni, sa tri nezavisne PWM grane (izlaza) kojima se može upravljati trofaznim AM ili PM motorima. Svaka od grana, u zavisnosti od upisanog faktora ispune za tu granu, potpuno nezavisno od CPU konstantno generiše PWM signal koji odgovara upisanom faktoru ispune. Ovaj signal je moguće komplementirati i voditi na driver jedne grane invertera ili dc/dc konvertora (gornji i donji IGBT tranzistor rade u komplementarnom modu).

Jedan PWM period je nedeljivi vremenski okvir, i fakor ispune je potrebno upisati samo jednom, na početku nove PWM periode. PWM signal generator u toku sledećeg PWM perioda automatski generiše odgovarajući PWM signal. Ukoliko imamo tri takve grane, možemo paralelno zadati srednje vrednosti napona tri grane PWM invertora, važeće u svakoj novoj PWM periodi. U slučaju jedne grane, naponski PWM signal je prikazan na sledećoj slici

Slika 1.27. Rad jedne grane naponskog invertora.

Uprošćeno, srednja vrednost izlaznog napona proporcionalna je upisanom faktoru ispune, DCPWM

onSRi U

T

tU = .

Kako radi PWM modul ? U analognoj tehnologiji se PWM signal generiše iz kontinualnog nosećeg signala (testera ili trougao) dobijenog na izlazu signal generatora. Perioda ovog signala (Tpwm) je definisana izborom kondenzatora C, amplitude struje strujnog izvora kao i položaj potenciometra P1. Generisani testerasti signal se dalje poredio sa referentnim signalom (koji reprezentuje naponsku komandu ili analogni ekvivalent faktora ispunu) korišćenjem analognog komparatora. Naravno, postojao je problem signalnog šuma ili promene parametara ovih kola.

Output buffer

PWM pin

PWM base generator

Tpwm

PWM signalpin

+

+

P1

Strujni izvor

C + −−−−

+ −−−−

+

Definiše faktor ispune

Izbor C, struje i P1 definiše Tpwm

P2

Signal generator (testera)

Slika 1.28. Analogni PWM generator – e tako ne treba raditi.

Primena mikroprocesora u energetici – mikroprocesori i mikrokontroleri 29

Postoje dva osnovna tipa nosioca PWM signala, to su testerasti i trougaoni nosioc.

PWM signal

Faktor ispune

PWM signal

Faktor ispune

Slika 1.29 PWM signal sa testerastim i trougaonim nosiocem.

U digitalnoj tehnici se čitava priča o generisanju PWM signala završava u jednom zasebnom perifernom modulu,

koji se ugrañuje u mikrokontroler ili DSP. Ovaj modul potpuno samostalno generiše PWM signal i oslobaña mikroprocesor (korisnički program) ove aktivnosti. U ovom modulu se analogni signal generator nosećeg PWM signala zamenjuje timer modulom koji definiše Tpwm i mnogo je precizniji i otporniji na šum. Perioda PWM signala se definiše tokom inicijalizacije upisom u registar PWM PERIOD i izborom delitelja frekvencije. Nadalje, analogni komparator je zamenjen digitalnim, čiji izlaz je potpuno definisan i neosetlji na šum. Faktor ispune PWM signala se definiše upisom u PWM duty cycle registar, čiji se sadržaj u svakom novom PWM clock periodu poredi sa vrednošću PWM timera. Uprošćena digitalna periferija za automatsko generisanje PWM signala jedne grane je data na sledećoj slici. Tačnost digitalno generisanog PWM signala zavisi od periode clock signala i od broja bitova PWM registara.

Tclk Delitelj frekvencije 1:2:4:8:16

CLK PWM TIMER registar

(PTMR)

PWM PERIOD registar (PTPER)

Dig. komparator

Output buffer

PTPER

RESET

Upis PTPER

Dig. komparator

PWM duty cycle registar (PDC)

Upis PDC

PWM pin

1

2

PWM base generator

Tpwm

PWM signalpin

Slika 1.30 Uprošćen blok dijagram PWM modula u sklupu mikrokontrolera namenjenog kontroli motora..

PWM jedinica pomaže pri generisanju različitih izlazanih signala. Bitno je da mikroprocesor pripremi odgovarajući modulišući faktor ispune za svaku novu PWM periodu. Time on moduliše noseći PWM signal, koji automatski bez pomoći i opterećenja procesora generiše PWM modul. U zavisnosti od tipa modulišućeg signala dobija se DC ili AC signal i regulišu se različiti tipovi motora, kao što je prikazano na sledećoj slici.

Primena mikroprocesora u energetici – mikroprocesori i mikrokontroleri 30

0 4ms 8ms 12ms 16ms 20ms 0

VDC

0

1

t (s)

Trougaoni PWM nosioc i jednosmerna referenca

Izlazni PWM signal

t (s)

0 4ms 8ms 12ms 16ms 20ms 0

VDC

0

1

t (s)

Trougaoni PWM nosioc i modulišući pp signal 50Hz)

Izlazni PWM signal jedne grane invertora

t (s)

Slika 1.31 Testerasti i trougaoni nosioc.

Na sledećoj slici je prikazan deo blok dijagrama Microchip PWM modula (dsPIC30F4011/4012 , Data Sheet High-Performance, 16-Bit Digital Signal Controllers).

Slika 1.32 blok dijagram PWM modula u sklupu dsPIC30F4011/4012

Primena mikroprocesora u energetici – mikroprocesori i mikrokontroleri 31

3.6. Kontroler prekida

U mikrokontrolerskom sistemu postoji više izvora prekida. Rad CPU ponekad treba prekinuti ako je jedan od brojača odbrojao, ili kada je neki impuls detektovan, kada je A/D konverzija završena, kada je pristigao podatak sa serijske veze, itd. U principu, svaka periferija ima nekoliko svojih razloga za prekid.

Neko treba da kontroliše sve ove izvore prekida. Taj neko je interrupt controller , kontroler prekida. Uobičajeno je da ovaj kontroler poseduje barem dva konfiguraciona registra. Jedan je registar kojim se dozvoljava ili zabranjuje pojedini izvor prekida (jedan bit za jedan izvor, 1 – prekid je dozvoljen, 0 – prekid je zabranjen). Obično postoji i globalni bit dozvole, na slici dole EA (enable all). Ukoliko EA nije setovan, ni jedan prekid nije dozvoljen. Drugi registar služi za podešavanje prioriteta pojedinih prekida. Ovim se definiše koji se prekid prvi servisira, i da li neki prekid može prekinuti prekid koji se trenutno servisira. Kod složenih jedinica postoji i dodatni konfiguracioni registar, koji služi za podešavanje načina rada kontrolera prekida, podešava se dozvola ili zabrana ugnježnjavanja prekida, podešava se da li su prekidi aktivni na nivo ili na ivicu, itd..

Primeri kontrolera prekida za mikrokontrolere 8051 i 80535 su dati na sledećim slikama.

Slika 1.28. Kontroler prekida kod mikrokontroler 8051.

3.7. Watchdog timer

Watchdog (pas čuvar) je u osnovi potpuno nezavisni sistemski brojač (može biti 16-bitni, 32-bitni). Jednom

dozvoljen njegov rad, postavlja ovaj brojač u režim neprekidnog brojanja ka gore. U momentu kada watchdog dostigne unapred zapisanu vrednost generiše se reset signal za µC. Da se ovo ne bi desilo, korisnički program mora periodično da osvežava odgovarajući registar (ili registre) watchdog sistema, i da time inicira reset brojačkog sistem na početnu poziciju. Ukoliko korisnički program ovo ne uradi , smatra se da je program ‘odlutao’, da sistem nije više stabilan i da je najbolje resetovati µC. Jednostavan primer za ovu situaciju je greška u čitanju jednog bita adrese skoka. Ovo je moguće usled šuma u sistemu, uglavnom nastaje usled loše projektovane procesorske pločice. Program se grana na lokaciju koja nije predviñena, tamo nema programa , obično se takve instrukcije tretiraju kao NOP, program ne radi ništa predviñeno, a ujedno ni ne osvežava watchdog i watchdog resetuje sistem.

Primena mikroprocesora u energetici – mikroprocesori i mikrokontroleri 32

Stanje watchdog brojačkog registra

Vreme

0xFFFF

WD resetovan od strane software-a

Dozvoljen rad WD

Software više ne osvežava WD

Generisan reset µC

Slika 1.30. Način rada watchdog timer-a

U slučaju mikrokontrolera Siemens 80535 sledi izvod iz korisničkog uputstva: This feature is provided as a means of graceful recovery from a software upset. After an external reset, the watchdog timer is cleared and stopped. It can be started and cleared by software, but it cannot be stopped during active mode of the device. If the software fails to clear the watchdog timer at least every 65532 machine cycles (about 65 ms if a 12 MHz oscillator frequency is used), an internal reset will be initiated. The reset cause (external reset or reset caused by the watchdog) can be examined by software. To clear the watchdog, two bits in two different special function registers must be set by two consecutive instructions (bits IEN0.6 and IEN1.6). This is done to prevent the watchdog from being cleared by unexpected opcodes. It must be noted, however, that the watchdog timer is halted during the idle mode and power down mode of the processor (see section "Power Saving Modes" below).

3.8. POR - Power on reset

Svi µP, µC ili DSP su predviñeni da rade u odreñenom opsegu napajanja. Uobičajeno jednosmerno napajanje potrebno za µP i µC je 5V, ±10%. Uobičajeno jednosmerno napajanje za novu generaciju DSP je 3,3V, ±10%. Prilikom uspostavljanja napajanja, kao i prilikom nestanka, jednosmerni napon vrši ekskurziju od ili ka 0V. U tom režimu rad CPU, memorije, kao i svih ostalih delova sistema je potpuno nedefinisan, i može prouzrokovati neželjene izlazne signale. Ovo je veoma opasno, pogotovo za mikrokontrolerski sistem koji kontroliše rad celokupnog elektromotornog pogona. Da bi se ovaj problem rešio, u µC ili DSP se ugrañuje dodatno kolo (POR) koje zadržava ureñaj u resetu dok se ne postigne potrebni nivo napajanja. Ukoliko ureñaj ne poseduje ovo dodatno kolo problem je moguće rešiti spoljašnjim POR kolom.

µµµµC Port

Vcc RST Napajanje van opsega

?????

POR RESET

0000

Primena mikroprocesora u energetici – mikroprocesori i mikrokontroleri 33

4 Princip je isti , ostaju nijanse..

Ideja ovog poglavlja je da malo uplaši studente. Predstavljene su veoma složena CPU unutar Microchip mikrokontrolera/DSP dsPIC4011 i sve periferije unutar dsPIC4011. Takoñe, dat je prikaz CPU unutar Texas Instruments DSP TI 28xx familije, kao i blok dijagram periferija unutar TI 2812 DSP.

Ovde nipošto ne učiti napamet dijagrame, treba samo uočiti neke sličnosti sa stvarima koje su pričane. Ima i dosta razlika pošto su i dsPIC4011 i TI 28012 digitalni signal procesori koji poseduju odvojene magistrale za program i podatke, posebne blokove za množenje kao i čitave blokove memorije za podatke i program već pridružene samoj CPU.

4.1. Jedan složen mikrokontroler/DSP–periferije unutar dsPIC 4011

Microchip dsPIC4011 poseduje razne periferije: nekoliko brojačkih modula (Timers), 10-Bit ADC sa više multipleksiranih ulaza, Motor Control PWM za generisanje upravljačkih signala, QEI za brojanje impulsa, Input/Output compare module, razne serijske portove: CAN, SPI1, SPI2, UART1, UART2. Uporedi sa slikom 1.13.

Primena mikroprocesora u energetici – mikroprocesori i mikrokontroleri 34

4.2. Jedan složen CPU– primer dsPIC 4011 � 16-Bit ALU � poseban 40 bitni DSP engine (Multiplier/Shifter with 40-Bit result) � 32-Bit Barrel Shifter . 24 - bitni program counter (tri bajta PCU PCH PCL), Instrukcijski dekoder (Instruction decode and Control), Interrupt controller (Kontroler prekida), programska statusna reč – PSV.. Uporedi deo oko ALU sa slikom 1.3. Radi kompletnosti, slika prikazuje i interni RAM (2 x 1kByte) , interni FLASH (48kByte) i interni EEPROM. Takoñe su prikazani razni RESET moduli, POR, Watchdog, etc..

Primena mikroprocesora u energetici – mikroprocesori i mikrokontroleri 35

4.3. Jedan složen DSP–periferije unutar TI DSP 2812 Uporedi sa slikom 1.13.

Primena mikroprocesora u energetici – mikroprocesori i mikrokontroleri 36

4.4. Jedan složen CPU– primer DSP familija TI DSP 28x

� 32-Bit ALU/Accumulator � 16 ⋅ 16-Bit Multiplier With a 32-Bit Product � 0 to 16-Bit Barrel Shifter Uporedi deo oko ALU sa slikom 1.3.


Recommended