Professional Documents
Culture Documents
Dspic30f 4011 Srpski
Dspic30f 4011 Srpski
Priručnik
MIKROPROCESORI
Periferne Karakteristike:
• Uvir-Izvor visoke struje na izlazu U/I pinova: 25 mA/25 mA
• Režim tajmera sa programabilnim reskalerom:
- Pet 16-bitnih tajmera/brojača; opciono par
16-bitni tajmeri u 32-bitnim tajmerskim režimima
• 16-bitne Capture ulazne funkcije
• 16-bitne izlazne funkcije za Poređenje/PWM
• 3-žični SPI™ režim (podržava 4 Frejm režima)
• I2C™ režim podržava Multi-Master/Slave režim i 7-bitno/10-bitno adresiranje
• 2 UART režima sa FIFO Baferima
• 1 CAN režim, 2.0B kompatibilan
Analogne Karakteristike:
• 10-bitni Analogno-Digitalni konvertor (A/D) sa 4 S/H ulaza:
- Odnos konverzije od 500 Ksps
- 9 ulaznih kanala
- Konverzija je moguća u toku Sleep i Idle režima
• Programabilno generisanje Brown-out Detection i Reseta
CMOS Tehnologija:
• Mala snaga, velika brzina Fleš tehnologije
• Širok spektar operativnog napona (2.5V do 5.5V)
• Industrijski i Prošireni temperaturni rasponi
• mala snaga potrošnje
MIKROPROCESORI
* Ova tabela daje sumu perifernih karakteristika dsPIC30F6010. Ostali uređaji dsPIC30F
familije pretvarača snage i kontrole motora su prikazani samo u svrhe poređenja
Dijagram pinova:
MCLR 1 40 AVDD
EMUD3/AN0/VREF+/CN2/RB0 2 39 AVSS
EMUC3/AN1/VREF-/CN3/RB1 3 38 PWM1L/RE0
AN2/SS1/CN4/RB2 4 37 PWM1H/RE1
AN3/INDX/CN5/RB3 5 36 PWM2L/RE2
AN4/QEA/IC7/CN6/RB4 6 35 PWM2H/RE3
AN5/QEB/IC8/CN7/RB5 7 34 PWM3L/RE4
AN6/OCFA/RB6 8 33 PWM3H/RE5
dsPIC30F4011
AN7/RB7 9 32 VDD
AN8/RB8 10 31 VSS
VDD 11 30 C1RX/RF0
VSS 12 29 C1TX/RF1
OSC1/CLKIN 13 28 U2RX/CN17/RF4
OSC2/CLKO/RC15 14 27 U2TX/CN18/RF5
EMUD1/SOSCI/T2CK/U1ATX/CN1/RC13 15 26 PGC/EMUC/U1RX/SDI1/SDA/RF2
EMUC1/SOSCO/T1CK/U1ARX/CN0/RC1 PGD/EMUD/U1TX/SDO1/SCL/RF3
4 16 25
FLTA/INT0/RE8 17 24 SCK1/RF6
EMUD2/OC2/IC2/INT2/RD1 18 23 EMUC2/OC1/IC1/INT1/RD0
OC4/RD3 19 22 OC3/RD2
VSS 20 21 VDD
Tabela 1-1 daje kratki opis uredjaja U/I pinova i finkcija koje su multipleksirane pinu porta.
Višestruke funkcije mogu da se jave na jednom pinu porta. Kada dođe do multipleksiranja,
funkcionalni zahtevi perfiernog modula mogu poništiti tok podataka na pinu porta.
MIKROPROCESORI
Pin Buffer
Pin Name Description
Type Type
Legenda: CMOS = CMOS kompatibilni ulaz ili izlaz Analogni = Analogni ulaz
ST = Schmitt Okidač ulaz sa CMOS nivoima O = Izlaz (Output)
I = Ulaz (Input) P = Snaga (Power)
MIKROPROCESORI
Legenda: CMOS = CMOS kompatibilni ulaz ili izlaz Analogni = Analogni ulaz
ST = Schmitt Okidač ulaz sa CMOS nivoima O = Izlaz (Output)
I = Ulaz (Input) P = Snaga (Power)
Opšti pregled arhitekture Centralne procesne jedinice (CPU)
Jezgro poseduje 24-bitnu instrukcijsku reč. Programski brojač je širok 23 bita, a bit
najmanje važnosti (LSb) je uvek čist, tj. resetovan (vidi Odeljak 3.1), dok se bit
najveće važnosti (MSb) ignoriše tokom normalnog izvršavanja programa, osim u
slučaju određenih specijalizovanih instrukcija.
Na taj način, programski brojač može da adresira do 4M instrukcijskih reči
korisničkog programskog prostora. Instrukcijski mehanizam pretpreuzimanja (pre-
fetch) se koristi da bi se pomoglo održavanju protoka. Konstrukcije petlji u
programu, i free from loop count management overhead su podržani korišćenjem
instrukcija DO i REPEAT a obe instrukcije se mogu prekinuti (interaptibilne su) u
svakom trenutku. Niz radnog registra sastoji se od 16x16-bitnih registara, od kojih
svaki može da se ponaša kao adresni registar, registar podataka ili ofset registar.
Jedan radni registar (W15) radi kao softverski pokazivač steka za prekide i pozive.
Prostor podataka iznosi 64 Kbytes (32K reči), i podeljen je u 2 bloka koji se nazivaju
and X i Y memorija podataka. Svaki brok ima svoju nezavisnu Jedinicu za
generisanje adresa (AGU, Address Generation Unit). Većina instrukcija se izvršava
isključivo kroz jedinicu za generisanje adresa X memorije, što omogućava
pojavljivanje jednog unificiranog prostora podataka. Klasa multipikovanja i
akumulacije (Multiply-Accumulate Class, MAC) DSP instrukcija dualnog izvora
izvršava se i kroz jedinicu za generisanje adresa X memorije i kroz jedinicu za
generisanje adresa Y memorije, deleći na taj način adresni prostor na dva dela (Vidi
Odeljak 3.2.). Granica između prostora podataka X i Y zavisi od uređaja i korisnik je
ne može menjati. Svaka reč podataka sastoji se od 2 bajta, a većina instrukcija
može da adresira podatke bilo kao reči, bilo kao bajte.
Postoje dva metoda pristupanju podacima koji se nalaze sačuvani u programskoj
memoriji.
• Gornjih 32 Kbyte memorijskog prostora podataka može se preslikati u donju
polovinu (korisnički prostor) programskog prostora na bilo kojoj granici 16K
programske reči, što definiše 8-bitni registar Vidljivosti stranice programskog
prostora (Program Space Visibility Page, PSVPAG). Ovo omogućava bilo koji
prostor programa za pristup instrukcijama, kao da je reč o prostoru podataka, sa
ograničenjem da pristup zahteva još jedan dodatni ciklus. Nadalje, ovim metodom
može se pristupiti samo donjim bitima (16 bita) bilo koje instrukcijske reči.
• SWWLinear indirektno adresiranje stranica sa 32K-rečima unutar porogramskog
prostora je takođe moguće, korišćenjem bilo kog radnog registra, preko instrukcija
čitanja i upisa iz tabele. Instrukcije čitanja i upisa iz tabele mogu se koristiti da se
pristupi svim bitima (24 bita) instrukcijske reči. Overhead-free cirkularni baferi
(adresiranje po modulu) podržani su i u X i u Y adresnom prostoru. Primarna
namera ovoga je da se overhead petlji ukloni iz DSP algoritama. Jedinica za
generisanje adresa X takođe podržava reverzno bitno (bit-reversed) adresiranje na
efektivnim odredišnim adresama, što značajno olakšava preraspoređivanje ulaznih i
izlaznih podataka za radix-2 FFT algoritme.
MIKROPROCESORI
dsPIC® uređaji sadrže softverski stek. W15 je dodeljeni sofverski stek pointer (SP),
i on će se automatski modifikovati putem obrade izuzetaka i poziva potprograma i
povrataka iz potprograma. Međutim, W15 se može referencirati pomoću bilo koje
instrukcije na isti način kao i ostali W registri. Ovo pojednostavljuje čitanje, pisanje i
manipulaciju pokazivačem steka (npr. stvaranje stek frejmova).
W15 se tokom Reseta inicijalizuje na 0x0800. Korisnik može reprogramirati SP
tokom inicijalizacije, na bilo koju lokaciju unutar prostora podataka. W14 je
predviđen za stek frejm pointer, na način kako to definišu LNK i ULNK instrukcije.
Međutim, W14 se može referencirati pomoću bilo koje instrukcije na isti način kao i
ostali W registri.
Jezgro dsPIC-a ima 16-bitni Status Register (SR), a njegov LSb se naziva Bit
najmanje važnosti Statusnog Registra (SRL), dok se njegov MSb naziva Bit
najveće važnosti Statusnog Registra (SRL),. Vidi Sliku 2.1. za spoljašnji izgled SR.
SRL sadrži sve statusne flegove MCU ALU operacija (uključujući i bit Z), kao i
statusne bite nivoa prioriteta prekida CPU, IPL<2:0>, i bit statusa aktivnosti
REPEAT-a, RA. tokom izvršenja obrade, SRL se konkatenira sa MSb programskog
brojača, da bi formirao vrednost kompletne reči, koja se onda stekuje. Gornji bit SR
registra sadrži bite statusa DSP sabirača/oduzimača, bit aktivne petlje DO-a (DA), i
bit statusa prenosa cifara (DC).
Programski brojač je širok 23 bita. Bit 0 uvek je čist. Na taj način, PC može da
adresira do 4M instrukcijskih reči.
Primedba: Da bi se zaštitili od pristupa steku koji nisu pravilno poređani, W15<0> je
uvek čist.
MIKROPROCESORI
W3
W4
DSP Registri
operanada W5
W6
W7
Radni registri
W8
DSP adresni W9
registri W10
W11
W12/DSP Offset
W13/DSP Zapis
W14/Frejm Pointer
W15/Stek Pointer
DSP AccA
Akumulatori AccB
PC22 PC0
0 Programski brojač
7 0
TBLPAG Adresa tabele podataka
7 0
PSVPAG Adresa vidljivosti programskog prostora
15 0
RCOUNT REPEAT brojač petlje
15 0
DCOUNT DO brojač petlje
22 0
DOSTART DO početna adresa petlje
22 0
DOEND DO krajnja adresa petlje
15 0
CORCON Registar konfiguracije jezgra
SRH SRL
2.4.1 MNOŽAČ
Klasa instrukcija MAC (sa izuzetkom MPY, MPY.N, ED i EDAC) može opciono
učitati zaokruženu verziju visoke reči (biti od 31 do 16) akumulatora koji nije ciljan
instrukcijom u memoriji prostora podataka. Ovo upisivanje se vrši preko X
magistrale u kombinovani X i Y adresni prostor. Pocržani su sledeći adresni režimi:
1. W13, direktno u registar:
Zaokruženi sadržaj neciljanog akumulatora se upisuje u W13 kao 1.15 razlomak.
2. [W13]+=2, indirektno u registar sa kasnijim inkrementiranjem (Register Indirect
with Post-Increment)
Zaokruženi sadržaj neciljanog akumulatora se upisuje u adresu koju pokazuje W13
kao 1.15 razlomak.
W13 se tada inkrementira za 2 (za upis reči).
Vektor Tabela
Prekida
Vektor Tabele
Memorijski 00007E
prostor Rezervisano 000080
korisnika Alternativna Tabela Vektora 000084
0000FE
000100
Korisnička Fleš
Programska Memorija
(16K instrukcija)
007FFE
7FFC00
Rezervisano
(čitanje 0)
7FFBFE
7FFC00
EEPROM podaci
(1 kbajt)
7FFFFE
800000
Rezervisano
Memorijski 8005BE
prostor UNITD (32 instr.) 8005C0
konfiguracije 8005FE
800600
Rezervisano
F7FFFE
Registri konfiguracije F80000
uredjaja F8000E
F80010
Rezervisano
FEFFFE
DEVID (2) FF0000
FFFFFE
MIKROPROCESORI
Ova arhitektura uzima 24-bita široku programsku memoriju. Kao posledica toga,
instrukcije su uvek poravnate. Međutim, ako je u pitanju modifikovana Harvard
arhitektura, podaci takođe mogu biti predstavljeni u programskom prostoru. Postoje
2 metoda pomoću kojih se programu može pristupiti: preko specijalnih instrukcija iz
tabele, ili putem ponovnog preslikavanja 16K porogramskog prostora reči u gornju
polovinu prostora podataka (Vidi Odeljak 3.1.2.). Instrukcije TBLRDL i TBLWTL
nude direktne metode čitanja i pisanja reči najmanje važnosti unutar programskog
prostora, bez prolaska kroz prostor podataka. Instrukcije TBLRDH i TBLWTH su
jedini metod kod koga se gornjim bitovima (gornjih 8 bita) programskog prostora
može pristupiti kao podacima. Programski brojač se inkrementira za 2 za svaku
uzastopnu 24-bitnu programsku reč. Ovo omogućava adresama programske
memorije da se direktno preslikaju u adrese prostora podataka. Programska
memorija može se, stoga, posmatrati kao adresni prostor sa dužinom od dve 16-
bitne reči, koje se nalaze jedna do druge, a svaka ima isti adresni spektar. TBLRDL
i TBLWTL pristupaju prostoru koji sadrži reč podataka koja ima najmanju važnost, a
TBLRDH i TBLWTH pristupaju prostoru koji sadrži bajt podataka koja ima najveću
važnost,
Slika 3.2. prikazuje kako se stvara EA za operacije iz tabele i pristupe prostoru
podataka (PSV = 1). Ovde se P<23:0> odnosi na reč programskog prostora, dok se
D<15:0> odnosi na reč prostora podataka.
Skup Instrukcija iz tabele je obezbeđen da bi pomerio podatke koji su veličine bajta
ili reči u programski prostor ili iz njega.
PC Adresa 23 16 8 0
0x000000 0000 0000
PC Adresa 23 16 8 0
0x000000 0000 0000
Fantomski bajt u
programskoj memoriji TBLRDH.B (Wn<0> = 0)
(cita se kao 0) TBLRDH.B (Wn<0> = 1)
Gornjih 32 Kbajta prostora podataka može se opciono preslikati u bilo koju stranicu
programskog prostora 16 K - reči. Ovo omogućava transparentan pristup
sačuvanim konstantnim podacima iz prostora podataka X, bez potrebe da se koriste
specijalne instrukcije (npr. instrukcije TBLRDL/H, TBLWTL/H). Pristup
programskom prostoru kroz prostor podataka dešava se ako se MSb efektivne
adrese programskog prostora setuje, i ako je omogućena vidljivost programskog
prostora, pomoću setovanja PSV bita u registru upravljanja jezgrom (CORCON).
Fukcije CORCON-a se razmatraju u Odeljku 2.4, pod nazivom DSP Engine.
Pristupanje podacima u ovom području dodaje jedan ekstra ciklus instrukciji koja se
izvršava, budući da su neophodna 2 preuzimanja iz programske memorije.
Primetimo da je gornji deo adresabilnog prostora podataka uvek deo prostora
podataka X. Stoga, kada DSP operacije koriste preslikavanje programskog prostora
da bi pristupile ovom regionu memorije, prostor podataka Y mora u tipičnom slučaju
da sadrži promenljive podatke za DSP operacije, dok prostor podataka X mora u
tipičnom slučaju da sadrži koeficijentne (konstnatne) podatke. Iako se svaka adresa
prostora podataka koja je veća od 0x8000, preslikava direktno u odgovarajuću
adresu programske memorije (vidi Sliku 3.5.), samo se najnižih 16 bita 24-bitne
programske reči koriste da bi se u njih smestili podaci. Gornjih 8 bita se moraju
programirati tako da prisile nedozvoljene instrukcije da održe robustnost mašine. Za
detalje kodiranja instrukcija treba konsultovati dsPIC30F Programmer’s Reference
Manual (DS70030).
Primetimo da inkrementiranjem programskog brojača za 2 za svaku programsku
memorijsku reč, 15 bita najmanje važnosti adresa prostora podataka se direktno
preslikavaju u 15 bita najmanje važnosti odgovarajućih adresa programskog
prostora. Ostali biti su obezbeđeni putem registra stranice vidljivosti programskog
prostora (Program Space Visibility Page register), PSVPAG<7:0> (Slika 3-5).
Jezgro ima dva prostora podataka. Prostori podataka mogu se smatrati bilo
odvojenim (za neke DSP instrukcije), bilo unificiranim linearnim adresnim spektrom
(za MCU instrukcije). Prostorima podataka se pristupa korišćenjem dve Jedinice za
generisanje adresa (Address Generation Units (AGUs)), i odvojenim putevima
podataka.
MSB LSB
0x0000
2 Kbajta 0x0001 SFR prostor
SFR prostora 0x07FE
0x07FF 0x0800
0x0001
\
0x0FFE
0x0FFF
0x1000
0x8001 0x8000
X data
neimplementirano
(X)
Opciono mapirano
u programskoj
memoriji
0xFFFF 0xFFFE
Slika 3-7: Prostor podataka za MCU i DSP (MAC klase) primer instrukcija
(X prostor)
(X prostor)
(X prostor)
neiskorišteno
tako da se upisi vrše kroz X magistralu. Konsekventno, upis se može izvršiti na bilo
koju adresu u celom prostoru podataka.
Y prostor podataka može se isključivo koristiti za operacije pretpreuzimanja
podataka asocirane sa MAC klasom instrukcija. Takođe, on podržava adresiranje
po modulu za automatizovane cirkularne bafere. Naravno, sve druge isntrukcije
mogu da pristupe Y prostoru podataka kroz put podataka X, kao deo kompozitnog
linearnog prostora. Granica između X i Y adrsnog prostora se definiše na način
prikazan na Slici 3.6. i korisnik je ne može programirati.
Ukoliko EA pokaže na podatak van sebi dodeljenog adresnog prostora, ili na
lokaciju van fizičke memorije, vratiće se kao rezultat reč ili bajt koji sadrži sve nule.
Npr. iako je Y adresni prostor vidljiv za sve ne-MAC isntrukcije koje koriste bilo koji
režim adresiranja, pokušaj MAC instrukcije da pokupi podatke iz tog prostora,
koristeći W8 i W9 (pokazivače u X prostoru), će vratiti 0x0000.
MS bajt LS bajt
15 8 7 0
0001 Bajt 1 Bajt 0 0000
0003 Bajt 3 Bajt 2 0002
0005 Bajt 5 Bajt 4 0004
Sva učitavanja bajtova u bilo koji W registar se vrše u bajt najmanje važnosti. Bajt
najveće važnosti se ne modifikuje.
Instrukcije sa ekstenzijom znaka (sign-extend (SE)), su obezbeđene da bi se
omogućilo korisnicima da prevedu 8-bitne označene podatke na 16-bitne označene
vrednosti. alternativno, za neoznačene 16-bitne podatke, korisnici mogu da očiste
(resetuju) bajt najveće važnosti bilo kog W registra putem izvršenja instrukcije nulte
ekstenzije, zero-extend (ZE) na odgovarajućoj adresi. Iako većina instrukcija ima
sposobnost da radi na podacima veličine bajta ili veličine reči, trebalo bi primetiti da
neke instrukcije, uključujući DSP instrukcije, mogu da rade samo na rečima.
dsPIC uređaji sadrže softverski stek. W15 se koristi kao pokazivač steka (Stack
Pointer). Pokazivač steka uvek pokazuje na prvu raspoloživu slobodnu reč i raste
od nižih vrednosti adresa prema višim adresama. On pre-dekrementira za uzimanje
MIKROPROCESORI
0x0000 15 0
POP: [--W15]
PUSH: [W15++]
PREKIDI (INTERAPTI)
dsPIC30F4011/4012 ima 30 izvora prekida i četiri 4 procesorska izuzeća (traps),
koji moraju biti raspoređeni po šemi prioriteta. CPU je zadužen za čitanje
generisanje Tabele Vektora Prekida (IVT) i prenos adrese koja se sadrži u vektoru
prekida u okviru programskog brojača. Vektor prekida se prenosi sa programske
sabirnice u programski brojač, putem 24-bitnog multipleksera na ulazu
programskog brojača.
Tabela Vektora Prekida (IVT) i Alternativna Tabela Vektora Prekida (AIVT) se
smeštaju u blizini početka programske memorije (0x000004). IVT i AIVT su
prikazani na slici 5.1.
Kontroler prekida je zadužen za pretprocesiranje prekida i procesora izuzeća
(trapova), pre nego što oni budu poslati u jezgro procesora.
Periferni prekidi i trapovi su omogućeni, dodeljeni su im prioriteti i kontrolišu se
koriščenjem centralizovanih registara specijalne funkcije:
• IFS0<15:0>, IFS1<15:0>, IFS2<15:0>
Svi flegovi zahteva za prekidom se održavaju u ova tri registra. Ovi flegovi su
setovani svojim odgovarajućim periferalima ili spoljnim signalima i oni se prazne
softverski.
• IEC0<15:0>, IEC1<15:0>, IEC2<15:0>
Svi kotrolni bitovi za omogućavanje prekida se održavaju u ova 3 registra. Ovi
kontrolni bitovi se koriste da pojedinačno omoguće prekide sa periferala ili spoljnih
signala.
• IPC0<15:0>... IPC11<7:0>
Nivo prioriteta koji dodeljuje korisnik svakom prekidu se čuva centralno u ovih 12
registara.
• IPL<3:0> Trenutni nivo prioriteta CPU se eksplicitno čuva u IPL bitovima. IPL<3>
je prisutan u CORCON registru, dok je IPL<2:0> prisutan u statusnom registru (SR
u jezgru procesora.
• INTCON1<15:0>, INTCON2<15:0>
Globalne funkcije za kontrolu prekida se izvode iz ovih registara. INTCON1 sadrži
kontrole i statusne flegove za procesorska izuzeća. INTCON2 registar kontroliše
ponašanje spoljnog signala zahteva prekida i koristi alternativnu vektorsku tabelu.
Svi izvori prekida mogu biti dodeljeni jednom od 7 nivoa prioriteta, od 1 do 7, preko
IPCx registara. Svaki izvor prekida je povezan sa vektorom prekida. Nivoi 7 i 1
predstavljaju najviši i najniži maskiran prioritet, respektivno.
Ako je NSTDIS bit (INTCON1<15>) setovan, neće doći do gomilanja prekida. Tako,
ako se prekid trenutno servisira, procesiranje novih prekida je onemogućeno, čak i
ako je novi prekid višeg prioriteta od onog koji se trenutno obrađuje. Određeni
prekidi imaju specijalne upravljačke bitove za karakteristike kao što su ivično ili
nivoom okidani prekidi, promena prekida, itd. Kontrola ovih karakteristika ostaje na
perifernom modulu koji generiše prekid.
DISI instrukcija se može koristiti da onemogući procesiranje prekida nivoa prioriteta
6 i nižih za određeni broj instrukcija, u toku kojih DISI bit (INTCON2<14>) ostaje
setovan. Kada se prekid servisira, PC se puni adresom koja se čuva na vektorskoj
lokaciji u programskoj memoriji koja odgovara prekidu. Postoje 63 različita vektora u
MIKROPROCESORI
5.3 Trap-ovi
Trapovi se mogu smatrati nemaskiranim prekidima koji ukazuju na softversku ili hardversku
grešku, što je u vezi sa unapred definisanim prioritetom kao što je pokazano na slici 5.1. Oni
služe da bi korisniku omogućili način da ispravi neispravan rad u toku debagovanja i kada se
radi u okviru aplikacije. Treba primetiti da se mnogi od ovih trap stanja mogu detektovati
samo kada se dese. S toga, problematičnoj instrukciji je dozvoljeno izvršenje pre
procesiranja trap izuzetka. Ako korisnik odluči da se povrati iz neispravnog rada, rezultat
neispravnog rada koji je izazvao trap mora biti ispravljen. Postoji 8 fiksnih nivoa prioriteta za
trap: nivoi 8 do 15, koji pokazuju da je IPL3 uvek setovan u toku procesiranja trapa. Ako
korisnik trenutno ne izvršava trap, i setuje IPL<3:0> bitove na vrednost ‘0111’ (nivo 7), tada
su svi prekidi onemogućeni, ali se trapovi i dalje procesiraju.
Rezervisano
Oscilator Fail Trap vektor
Adresni Error Trap vektor
Rezervisan vektor
Rezervisan vektor
Rezervisan vektor
Vektor prekida 0
Vektor prekida 1
---
---
---
Vektor prekida 52
Vektor prekida 53
Rezervisan vektor
Rezervisan vektor
Rezervisan vektor
Rezervisan vektor
Rezervisan vektor
Rezervisan vektor
Vektor prekida 0
Vektor prekida 1
---
---
---
Vektor prekida 52
Vektor prekida 53
MIKROPROCESORI
0x0000 15 0
Stek raste u pravcu više adrese
POP: [--W15]
PUSH: [W15++]
Napomena 1: Korisnik uvek može sniziti prioritet upisivanjem nove vrednosti u SR. IS rutina mora
isprazniti bitove flega prekida u IFSx registru snižavanjem prioriteta procesorskog prekida, da bi se
izbegli rekurzivni prekidi.
2: IPL3 bit (CORCON<3>) je uvek prazan kada se procesiraju prekidi. On se setuje samo u toku
izuzeća trapova.
RETFIE (povratak iz prekida) instrukcija će odstekovati programski brojač i statusne register
da bi se processor vratio u stanje pre sekvence prekida.
Svaki bit i njemu asocirani podaci i kontrolni registri koji nsu validni za dati uredjaj će biti
onemogućeni. Ovo znači da će se odgovarajući LATx i TRISx registri i port pinovi čitati kao
nule. Kada se pin deli sa drugim periferalom ili funkcijom koja je definisana samo kao ulaz, to
se ipak smatra kao dodeljeni port pošto ne postoji drugi konkurentni izvor izlaza. Primer je is
INT4 pin. Format registara za PORTX je prikazan u tabeli 8-1.
TRISX (kontrola pravca podataka) registar kontroliše pravac pinova. LATX registar snabdeva
podacima izlaze, i on se može čitati/pisati. Čitanje PORTX registra daje stanje ulaznih
pinova, dok se upisivanjem u PORTX registar modifikuje sadržaj LATX registra. Paralelni U/I
port koji deli pin sa periferalom je, generalno, podredjen periferalu. Izlaz periferala bafera
podataka i kontrolni signali se obezbedjuju paru multipleksera. Multiplekseri vrše selekciju da
li periferal ili asocirani port select imaju vlasništvo nad izlaznim podacima i kontrolnim
signalima U/I pad ćelije. Slika 8-2 pokazuje kako su portovi podeljeni sa ostalim periferalima,
i asociranim U/I ćelijama (pad) sa kojima su povezane. Tabela 8-1 pokazuje formate
registara za deljene portove, od PORTB do PORTG.
Ovaj deo opisuje 16-bitni GP opšte namene, Tajmer1 modul i operativne modove.
Slika 9-1 predstavlja pojednostavljen blok dijagram 16-bitnog Tajmer1 modula.
Sledeći delovi predstavljaju detaljan opis, uključujući setup i kontrolne registre kao i
vezane blok dijagrame za operativne modove tajmera.
Tajmer1 modul je 16-bitni tajmer koji može da posluži kao brojač za real-time takt, ili da radi
kao slobodan interval tajmer/brojač. 16-bitni tajmer ima sledeće modove:
• 16-bitni Tajmer
• 16-bitni sinhroni brojač
• 16-bitni asinhroni brojač
Dalje, podržane su sledeće operativne karakteristike:
• Tajmer gate rad
• Selektivna prescaler podešenja
• Rad tajmera u toku CPU Idle i Sleep modova
• Prekid na 16-bitnom periodičnom registru ili opadajućoj ivici spoljnog gate signala
Napomena: Tajmer1 je ‘Tip A’ tajmer. Treba pogledati specifikaciju ua Tip A tajmer u delu
24.0 Električne karakteristike, ovog dokumenta. Ovi operativni modovi su odredjeni
podešenjima odgovarajućih bitova u 16-bitnom SFR, T1CON. Slika 9-1 predstavlja blok
dijagram 16-bitnog modula tajmera.
16-bitni Tajmer Mod: U 16-bitnom Tajmer modu, tajmer se inkrementira na svaku ciklus
instrukcija do odgovarajuće vrednosti, prethodno učitane u periodični registar PR1, onda se
resetuje na 0 i nastavlja da broji. Kada se CPU prebaci u Idle mod, tajmer će prestati da
inkrementira, ukoliko TSIDL (T1CON<13>) bit = 0. Ako je TSIDL = 1, logika tajmera modula
će obnoviti sekvencu inkrementiranja nakon završetka CPU Idle moda.
16-bitni mod sinhronog brojača: tajmer se inkrementira na rastuću ivicu primenjenog spoljnog
takt signala, koja je sinhronizovana sa internim faznim taktom. Tajmer broji do odgovarajuće
vrednosti prethodno učitane u PR1, onda se resetuje na 0 i nastavlja. Kada se CPU prebaci
u Idle mod, tajmer prestaje da inkrementira, osim ukoliko njegov TSIDL bit = 0. Ako je TSIDL
= 1, logika modula tajmera će obnoviti sekvencu inkrementiranja nakon završetkaCPU Idle
moda.
16-bitni mod asinhronog brojača: tajmer se inkrementira na svaku rastuću ivicu primenjenog
spoljnog takt signala. Tajmer broji do odgovarajuće vrednosti prethodno učitane u PR1, onda
se resetuje na 0 i nastavlja. Kada je tajmer konfigurisan za asinhroni mod rada i CPU se
prebaci u Idle mod, tajmer prestaje da inkrementira ako je TSIDL bit = 1.
normalni Tajmer i Brojač mod i omogućiti tajmer Carrry-out wake-up dogadjaj. Kada
CPU udje u Sleep mod, RTC će nastaviti da radi, ukoliko je 32 kHz spoljni kristalni
oscilator aktivan i kontrolni bitovi nisu promenjeni. TSIDL bit mora biti ispražnjen na
‘0’ kako bi RTC nastavio rad u Idle modu.
32-bitni tajmer se može postaviti u režim Gated Time Accumulation. Ovaj režim
omogućava internom TCY da inkrementira respektivni tajmer kada je ulazni signal
gejta (T2CK pin) visok. Kontrolni bit TGATE (T2CON<6>) mora biti setovan da
omogući ovaj režim. Kada se nalazi u ovom režimu, Timer2 je originalni izvor takta.
Timer3 ignoriše postavke TGATE-a. Tajmeru mora biti omogućen rad (TON = 1) a
izvor takta tajmera mora biti setovan na interno (TCS = 0). Opadajuća ivica
eksternog signala završava operaciju brojanja, ali ne resetuje tajmer. Korisnik mora
da resetuje tajmer da bi ponovo počeo da broji od nule.
Ulazni takt (FOSC/4 ili eksterni takt) tajmera ima opciju preskaliranja od 1:1, 1:8,
1:64, i 1:256, što selektuju kontrolni biti TCKPS<1:0> (T2CON<5:4> i
T3CON<5:4>). Za 32-bitni rad tajmera, izvorni takt obezbeđuje Timer2. Operacija
preskaliranja za Timer3 nije primenjiva na ovaj režim. Brojač preskalera se čisti
(resetuje) svaki put kada se desi nešto od sledećeg:
• upis u registre TMR2/TMR3
• čišćenje bilo TON (T2CON<15> ili T3CON<15>) bita na ‘0’
• Reset uređaja, kao što je POR i BOR
Međutim, ukoliko je tajmer onemogućen (TON = 0), onda se preskaler koji pripada
Timer2-u ne može resetovati, dok god je takt preskalera u zastoju.
TMR2/TMR3 se ne čiste kada se upisuje u T2CON/T3CON.
Tokom Sleep režima CPU, tajmer neće raditi, budući da su unutrašnji klokovi
(taktovi) isključeni.
reči napreduju za jednu poziciju u okviru buffera. Ukoliko se desi da je FIFO pun sa
četiri capture dogadjaja i peti se desio pre čitanja FIFO, overflow uslov će se desiti i
ICOV bit će biti setovan na logičku ‘1’. Peti capture dogadjaj je izgubljen i nije
sačuvan u FIFO. Ni jedan dodatni dogadjaj neće biti uhvaćen dok sva 4 dogadjaja
nisu pročitana iz bafera. Ako je FIFO čitanje izvršeno posle poslednjeg čitanja i ni
jedan novi dogadjaj nije primljen, čitanje će dati neodredjene rezultate.
Period
Duty ciklus
TMR=PR3 TMR=PR3
T3IF=1 T3IF=1
TMR3 = Duty ciklus (OCxR)
(fleg prekida) (fleg prekida)
OCxR=OCxRS OCxR=OCxRS
Ovaj deo opisuje Interfejs Modula Kvadratnog Enkodera (QEI) i njegovih modova
rada. QEI modul omogućava interfejsu da inkrementira enkodere da bi se dobila
mehanička pozicija podataka.
Tokom Sleep režima CPU-a, tajmer neće raditi, budući da su unutrašnji klokovi
(taktovi) isključeni.
Primedba: promena režima rada (npr. od QEI na Tajmer ili obratno) neće dotaći
sadržaj registra brojača tajmera/pozicije (Timer/Position Count Register)
Primedba: Ovaj tajmer ne podržava režim eksternog asinhronog brojanja (External
Asynchronous Counter mode). Korišćenjem eksternog izvora takta, takt će se
automatski sinhronizovati na interni instrukcijski takt.
14.7 Rad modula QEI tokom Idle (praznog) režima CPU-a
Kako QEI modul može da funkcioniše kao interfejs za kvadraturni enkoder, ili kao
16-bitni tajmer, sledeći odeljak opisuje rad modela u oba režima.
Kada se CPU postavi u Idle (doslovno: prazan hod) režim, modul QEI će raditi
ukoliko je QEISIDL bit (QEICON<13>) = 0. Ovaj bit po defaultu se nalazi na logičkoj
‘0’ po izvršenju POR i BOR. Za zaustavljanje modula QEI tokom Idle režima,
QEISIDL treba setovati i postaviti na ‘1’.
Kada se CPU postavi u Idle (doslovno: prazan hod) režim, modul QEI će biti
konfigurisan na 16-bitni tajmerski režim. 16-bitni tajmer će raditi ako je QEISIDL bit
(QEICON<13>) = 0. Ovaj bit po defaultu se nalazi na logičkoj ‘0’ po izvršenju POR i
BOR. Za zaustavljanje modula tajmera tokom Idle režima, QEISIDL treba setovati i
postaviti na ‘1’. Ako se QEISIDL bit očisti, tajmer će funkcionisati normalno, kao da
se nije ni ulazilo u Idle režim CPU-a.
Bit flega prekida QEI, QEI Interrupt Flag bit, QEIIF, je asertovan kada se dogodi bilo
koji od prethodno navedenih događaja. QEIIF bit mora biti softverski ošičćen. QEIIF
se nalazi unutar IFS2 Statusnog registra. Omogućavanja prekida se vrši putem
respektivnog bita omogućavnja prekida (Enable bit), QEIIE. QEIIE bit se nalazi
unutar IEC2 upravljačkog registra.
statusni bit Read Only, PTDIR, koji indicira tekući smer brojanja PWM vremenske
baze. Ako je PTDIR nula, PTMR broji nagore. Ako je PTDIR setovan, PTMR broji
nadole. PWM vremenska baza se konfiguriše putem PTCON SFR. PWM
vremenska baza se aktivira/deaktivira setovanjem/resetovanjem PTEN bita u
PTCON SFR. PTMR se ne resetuje, a PTEN bit se resetuje softverski. PTPER SFR
postavlja period brojanja za PTMR. Korisnik mora da upiše 15-bitnu vrednost u
PTPER<14:0>. Kada se vrednost u PTMR<14:0> poklopi sa vrednošću u
PTPER<14:0>, vremenska baza će se ili resetovati na 0, ili će obrnuti smer brojanja
na sledećem taktnom ciklusu. Koja će se akcija preduzeti, zavisi od režima rada
vremenske baze. PWM vremenska baza se može konfigurisati na 4 različita režima
rada:
• Režim slobodnog rada
• Single Shot režim
• Režim kontinualnog brojanja nagore/nadole
• Režim kontinualnog brojanja nagore/nadole sa prekidima za dvostruko ažuriranje
Ova 4 režima rada se selektuju pomoću PTMOD<1:0> bita u PTCON SFR. Režim
kontinualnog brojanja gore/dole i Režim kontinualnog brojanja nagore/nadole sa
prekidima za dvostruko ažuriranje podržavaju generisanje PWM-a sa centriranim
uravnavanjem. Single Shot režim omogućava PWM modulu da podržava
upravljanje taktom (impulsom) izvesnih električnih komutativnih (Electronically
Commutative Motors (ECM)).
Signali prekida koje generiše PWM vremenska baza zavise od odabira selekcionih
bita režima (PTMOD<1:0>) i bita postskalera (PTOPS<3:0>) u PTCON SFR.
Primedba: Ako je registar perioda postavljen na 0x0000, tajmer će prestati da broji,
neće biti generisan ni prekid ni triger specijalnog događaja, čak ni kada je vrednost
specijalnog događaja takođe 0x0000. Modul neće ažurirati registar perioda, ako je
on već na 0x0000; stoga, korisnik mora da deaktivira modul da bi ažurirao registar
perioda.
15.1.1 REŽIM SLOBODNOG RADA
U režimu slobodnog rada PWM vremenska baza broji nagore sve dok se vrednost u
registru perioda vremenske baze, Time Base Period register (PTPER), ne poklopi.
PTMR registar se resetuje na sledećoj ulaznoj ivici ulaznog takta a vremenska baza
će nastaviti da broji naviše sve dok PTEN bit ostaje setovan. Kada je PWM
vremenska u režimu slobodnog rada (PTMOD<1:0> = 00), događaj prekida se
generiše svaki put kada se desi poklapanje sa PTPER registrom i tada se PTMR
registar resetuje. Biti selekcija postskalera mogu se koristiti u ovom režimu tajmera
da bi redukovali učestalost događaja prekida.
U režimu Single Shot brojanja, PWM vremenska baza počinje da broji kada je bit
PTEN setovan. Kada se vrednost u PTMR registru poklopi PTPER registrom,
PTMR registar se resetuje na sledećoj ulaznoj ivici ulaznog takta a PTEN bit će biti
resetovan hardverski da bi se zadržala vremenska baza. Kada je PWM vremenska
baza u režimu Single Shot brojanja (PTMOD<1:0> = 01), događaj prekida se
generiše svaki put kada se desi poklapanje sa PTPER registrom i tada se PTMR
registar resetuje na sledećoj ulaznoj ivici ulaznog takta i PTEN bit će biti resetovan.
Biti selekcija postskalera nemaju nikakva uticaj u ovom režimu tajmera.
Ulazni takt ka PTMR (FOSC/4), ima opciju preskaliranja od 1:1, 1:8, 1:64, i 1:256,
što selektuju kontrolni biti PTCKPS<1:0> u PTCON SFR. Brojač preskalera se čisti
svaki put kada se desi nešto od sledećeg:
• upis u registar PTMR
• upis u PTCON registar
• Reset bilo kog uređaja
If the PWM time base is configured for one of the Up/Down Count modes, the PWM
period will be twice the value provided by Equation 15-1.
The maximum resolution (in bits) for a given device oscillator and PWM frequency
can be determined using Equation 15-2:
Ako je PWM vremenska baza konfigurisana za jedan od režima kontuinualnog
brojanja nagore/nadole, PWM period će biti dvostruko veći od vrednosti koju
dobijamo Jednačinom 15.1.
Maksimalna rezolucija (u bitima) za dati oscilator uređaja i PWM frekvenciju može
biti određena Jednačinom 15.2.
Ivično uravnati PWM signali se dobijaju pomoću modula kada je PWM vremenska
baza u Režimu slobodnog rada ili Single Shot režimu. Za ivično uravnate PWM
izlaze, izlaz ima period koji je određen vrednošću u PTPER a duty ciklus je određen
odgovarajućom vrednošću u registru duty ciklusa (Vidi Sliku 15.2.). Izlaz PWM-a je
aktivno pobuđen na početku perioda (PTMR = 0) a neaktivan je kada se vrednost u
registru duty ciklusa poklopi sa PTMR.
Ako je vrednost određenog registra duty ciklusa jednaka nuli, tada je izlaz na
odgovarajućem PWM pinu neaktivna za celi PWM period. Kao dodatak, izlaz na
PWM pinu biće neaktivan za ceo PWM period ako je vrednost registra duty ciklusa
veća nego vrednost koja se čuva u PTPER registru.
TPWM =TCY • (PTPER + 1)
(PTMR Preskalirana Vrednost)
Rezolucija = log (2 • TPWM / TCY)
log (2)
SLIKA 15.2.: IVIČNO URAVNATI PWM
PTPER
PTMR
vrednost
Duty ciklus
Period
Ivično uravnati PWM signali se dobijaju pomoću modula kada je PWM vremenska
baza u Režimu slobodnog rada ili Single Shot režimu. Za ivično uravnate PWM
izlaze, izlaz ima period koji je određen vrednošću u PTPER, a duty ciklus je
određen odgovarajućom vrednošću u registru duty ciklusa (Vidi Sliku 15.2.). Izlaz
PWM-a je doveden u aktivno stanje na početku perioda (PTMR = 0) a neaktivan je
kada se vrednost u registru duty ciklusa poklopi sa PTMR.
Ako je vrednost određenog registra duty ciklusa jednaka nuli, tada je izlaz na
odgovarajućem PWM pinu neaktivna za celi PWM period. Kao dodatak, izlaz na
PWM pinu biće neaktivan za ceo PWM period ako je vrednost registra duty ciklusa
veća nego vrednost koja se čuva u PTPER registru.
TPWM =TCY • (PTPER + 1)
(PTMR Preskalirana Vrednost)
Rezolucija = log (2 • TPWM / TCY)
log (2)
kada PWM vremenska baza broji unapred (PTDIR = 0) i kada se vrednost duty
ciklusa poklopi sa vrednosšću u registru PTMR.
Ako je vrednost određenog registra duty ciklusa jednaka nuli, tada je izlaz na
odgovarajućem PWM pinu neaktivna za celi PWM period. Kao dodatak, izlaz na
PWM pinu biće aktivan za ceo PWM period ako je vrednost registra duty ciklusa
jednaka vrednosti koja se čuva u PTPER registru.
PTPER
PTMR
vrednost
Duty ciklus
Period
Generisanje mrtvog vremena može se obezbediti kada bilo koji od PWM I/O para
pinova radi u komplementarnom izlaznom režimu rada. Izlazi PWM-a koriste Push-
Pull pobudna kola. Zbog nemogućnosti strujnih izlaznih uređaja da se svičuju
trenutno, mora se obezbediti izvesni period vremena između događaja isključenja
jednog od izlaza PWM u komplementarnom paru i događaja uključenja drugog
tranzistora.
PWM modul omogućava da se isprogramiraju dva različita mrtva vremena. Ova dva
različita mrtva vremena mogu se iskoristiti na jedan od dva načina (dva metoda)
opisana kasnije, da bi se povećala fleksibilnost korisnika:
• Izlazni signal PWM može se optimizovati za različita vremena isključenja na
tranzistorima na niskoj i visokoj strani, na komplementarnom paru tranzistora. Prvo
mrtvo vreme se umeće između događaja isključenja nižeg tranzistora iz
komplementarnog para i događaja uključenja gornjeg tranzistora. Drugo mrtvo
vreme se umeće između događaja isključenja gornjeg tranzistora iz
komplementarnog para i događaja uključenja donjeg tranzistora.
MIKROPROCESORI
• Mogu se dodeliti dva mrtva vremena pojedinim PWM I/O parovima pinova. Ovaj
režim rada omogućava PWM modulu da pobuđuje različite kombinacije
tranzistora/opterećenja sa svakim komplementarnim PWM I/O parom pinova.
Svaki komplementarni izlazni par za PWM modul ima 6-bitni brojač unazad koji se
koristi da bi proizveo umetanje mrtvog vremena. Kao što je prikazano na Slici 15.4.,
svaka jedinica za vrtvo vreme ima detektor opadajuće i rastuće ivice koji je povezan
sa izlazom poređenja duty ciklusa.
PWMxH
PWMxL
Biti premošćenja PWM izlaza dozvoljavaju korisniku da manuelno podesi PWM I/O
pinove na specifična logička stanja, nezavisno od jedinica za poređenje duty
ciklusa. Svi upravljački biti asocirani sa PWM izlaznom funkcijom premošćavanja se
nalaze sadržani u registru OVDCON register. gornja polovina registra OVDCON
sadrži 6 bita, POVDxH<3:1> i POVDxL<3:1>, koji određuju koji PWM I/O pinovi će
biti premošćeni. Donja polovina registra OVDCON takođe sadrži 6 bita,
POUTxH<3:1> i POUTxL<3:1>, koji određuju stanje PWM I/O pinova kada određeni
izlaz biva premošćen putem POVD bita.
Kada se PWMxL pin dovede u aktivno stanje preko registra OVDCON, izlazni signal
se silom dovodi na to da bude komplementaran sa odgovarajućim PWMxH pinom u
paru. Umetanje mrtvog vremena se još uvek vrši kada se PWM kanali premošćuju
manuelno.
Ako je OSYNC bit u PWMCON2 registru setovan, sva izlazna premošćaanja koja
su izvršena putem OVDCON registera se sinhronizuju na PWM vremensku bazu.
Sinhrona premošćavanja izlaza se dešavaju u sledećim vremenima:
• Režim ivičnog uravnanja, kada je PTMR nula.
• Režimi centralnog uravnanja, kada je PTMR nula i kada se vrednost PTMR
poklapa sa PTPER.
Postoji jedan pin greške, FAULT pin (FLTA) asociran sa PWM modulom. Kada je
asertovan, ovi pinovi mogu biti opciono dovesti svaki od PWM I/O pinova u željeno
definisano stanje.
FLTACON SFR ima 3 upravljačka bita koja određuju da li određeni par PWM I/O
pinova treba da bude pod upravom FAULT ulaznog pina greške. Da bi se aktivirao
specifični par pinova PWM I/O za premošćenje greške, odgovarajući biti treba da
budu setovani u registru FLTACON. Ako su svi biti aktivacije očišćeni u registru
FLTACON, tada odgovarajući ulazni pin greške nema uticaja na PWM modul i pin
može biti iskorišćen kao pin opšte prekida namene ili I/O pin.
Primedba: logika pina greške može da radi nezavisno od PWM logike. Ako su svi
biti aktivacije očišćeni u registru FLTACON, tada odgovarajući ulazni pin greške
nema uticaja na PWM modul i pin može biti iskorišćen kao pin opšte prekida
namene. Pin greške ima i svoj vektor prekida, bit flega prekida i bite prioriteta
prekida koji su sa njim asocirani.
Registar specijalnih funkcija FLTACON ima 6 bita koji određuju stanje svakog PWM
I/O pina kada je ovaj premošćen putem FAULT ulaza. Kada su ovi biti očišćeni
(resetovani), PWM I/O se dovodi u neaktivno stanje.
Ukoliko je bit setovan, PWM I/O pin će biti doveden u aktivno stanje. Aktivno i
neaktivno stanje se referenciraju na polarite definisan za svaki PWM I/O pin (HPOL
i LPOL biti upravljanja polaritetom). Poseban slučaj postoji kada se I/O par PWM
modula nalazi u Komplementarnom režimu a oba pina su programirana tako da
budu aktivna u stanju greške FAULT. PWMxH pin uvek ima prioritet u
komplementarnom režimu, tako da oba I/O pina ne mogu biti dovedena u aktivno
stanje istovremeno.
ciklusa i bafer perioda PWM vremenske baze, PTPER. Nikakva promena duty
ciklusa ili vrednosti perioda neće imati nikakav uticaj sve dok je UDIS = 1.
PWM modul ima triger specijalnih događaja koji omogućava da A/D konverzije budu
sinhronizovane sa PWM vremenskom bazom. Vreme A/D semplovanja i konverzije
može biti isprogramirano tako da se desi na bilo kojoj tački unutar PWM perioda.
Triger specijalnih događaja PWM omogućava korisniku da minimizira kašnjenje
između vremena kada se dobiju rezultati A/D konverzije i vremena kada se ažurira
vrednost duty ciklusa. Triger specijalnih događaja PWM ima SFR po imenu
SEVTCMP, i 5 upravljačkih bita da upravlja svojim radom. Vrednost PTMR za koju
triger specijalnih događaja PWM treba da reaguje je učitana u SEVTCMP registar.
Kada je PWM vremenska baza u režimu brojanja nagore/nadole, potreban je i
dodatni upravljački bit da bi specificirao fazu brojanja za triger specijalnih događaja.
Faza brojanja se selektuje korišćenjem upravljačkog bita SEVTDIR u SEVTCMP
SFR. Ako je SEVTDIR bit resetovan, triger specijalnih događaja će reagovati
prilikom ciklusa brojanja unapred na PWM vremenskoj bazi. Ako je SEVTDIR bit
setovan, triger specijalnih događaja će reagovati prilikom ciklusa brojanja unazad
na PWM vremenskoj bazi. Upravljački biti SEVTDIR nemaju uticaja osim ukoliko
PWM vremenska baza nije konfigurisana tako da radi u režimu brojanja
nagore/nadole.
Ulazni pin FAULT A ima sposobnost da probudi CPU iz Sleep režima. PWM modul
generiše prekid ako je pin greške FAULT doveden na niski nivo tokom Sleep
režima. is
PTCON SFR sadrži upravljački bit PTSIDL. Ovaj bit određuje da li će PWM modul
will nastaviti da radi ili će se zaustaviti kada uređaj uđe u Idle režim. Ako je PTSIDL
= 0, modul će nastaviti da radi. Ako je PTSIDL = 1, module će prestati sa radom sve
dok CPU ostaje u Idle režimu.
Prvo, mora se selektovati dužina podatka, parnost i broj bita zaustavljanja (stop biti)
Onda se moraju aktivirati prekidi transmisije i prijema (Transmit and Receive
Interrupt) i biti prioriteta se setuju u registrima UxMODE i UxSTA. Takođe, mora se
upisati i odgovarajuća bod-brzina u UxBRG registar.
2. Aktivira se UART setovanjem UARTEN bita (UxMODE<15>).
3. Setuje se UTXEN bit (UxSTA<10>), i na taj način se aktivira transmisija.
4. Upisuje se bajt koji se želi preneti u niži bajt UxTXREG. Vrednost će odmah biti
prenesena registru Transmit Shift (UxTSR) i serijski niz bita će biti prenet tokom
sledeće rastuće ivice bod-takta. Alternativno, bajt podataka se može upisati dok je
UTXEN = 0, posle čega korisnik može da setuje UTXEN. Ovo će izazvati da serijski
tok prenosa bita počne odmah, zato što će bod-takt početi od čistog resetovanog
stanja.
5. Prekid transmisije će se generisati zavisno od vrednosti uporavljačkog bita
prekida UTXISEL (UxSTA<15>).
Da bi se izvršio prijem 8-bitnog ili 9-bitnog podatka, moraju se izvršiti sledeći koraci:
1. Setuje se UART:
Prvo, mora se selektovati dužina podatka, parnost i broj bita zaustavljanja (stop biti)
Onda se moraju aktivirati prekidi transmisije i prijema (Transmit and Receive
Interrupt) i biti prioriteta se setuju u registrima UxMODE i UxSTA. Takođe, mora se
upisati i odgovarajuća bod-brzina u UxBRG registar.
2. Aktivira se UART setovanjem UARTEN bita (UxMODE<15>).
3. Generiše se interapt prijema kada se jedan ili više reči podataka prime, zavisno
od postavki prekida (interapta) koje specificiraju biti URXISEL (UxSTA<7:6>).
4. Čita se OERR bit da bi se odredilo da li se desila greška preopterećenja
(overrun). OERR bit mora biti resetovan sofverski.
5. Čita se primljeni podatak iz UxRXREG. Akt čitanja UxRXREG će pomeriti
sledeću reč na vrh prijemnog FIFO-a, a vrednosti PERR i FERR će biti ažurirane.
Prijemni bafer je dubok 4 reči. Uključujući i Prijemni Shift Registar (UxTSR), korisnik
ima efektivni FIFO (First In First Out) bafer dubine 5. URXDA (UxSTA<0>) = 1 daje
oznaku da li prijemni bafer ima raspoloživih podataka. URXDA = 0 implicira da je
prijemni bafer prazan. Ukoliko korisnik pokuša da čita iz praznog bafera, pročitaće
stare vrednosti iz bafera i nikakva pomeranja podataka se neće odigrati unutar
bafera. FIFO se resetuje tokom bilo kog resetovanja uređaja, ali na njega nema
nikakav uticaj to što uređaj ulazi u režim uštede energije, ili iz njega izlazi.
a) Ako je URXISEL<1:0> = 00 ili 01, prekid se generiše svaki put kada se reč
prenosi od Prijemnog Shift Registra (UxRSR) u prijemni bafer. U prijemnom baferu
se može nalaziti jedan ili više karaktera.
b) Ako je URXISEL<1:0> = 10 prekid se generiše kada se reč prenosi od Prijemnog
Shift Registra (UxRSR) u Prijemni bafer, koji, kao rezultat prenosa, sadrži 3
karaktera.
c) Ako je URXISEL<1:0> = 11, prekid se setuje kada se reč prenosi iz Prijemnog
Shift Registra (UxRSR) u Prijemni bafer, koji, kao rezultat prenosa, sadrži 4
karaktera, tj. postaje pun.
Svičovanje između dva režima prekida tokom rada je moguće, iako u opštem
slučaju nije preporučljivo tokom normalnog rada.
FERR bit (UxSTA<2>) se setuje ako je detektovana ‘0’ umesto stop bita. Ako se
selektuju 2 stop bita, oba stop bita moraju biti ‘1’, inače se setuje FERR. Read-only
FERR bit se baferuje zajedno sa primljenim podacima. On se čisti prilikom svakog
Reseta.
PERR bit (UxSTA<3>) se setuje ako je parnost primljene reči neispravna. Ovaj bit
greške primenljiv je samo ako je je selektovan režim parnosti (neparan ili paran).
Read-only PERR bit se baferuje zajedno sa primljenim podacima. On se čisti
prilikom svakog Reseta.
Kada je prijemnik aktivan (tj. između inicijalne detekcije startnog bita i završetka
staop bita), RIDLE bit (UxSTA<4>) je ‘0’. Između detekcije stop bita i detekcije
sledećeg start bita, RIDLE bit je ‘1’, indicirajući da je UART u statusu Idle.
18.5.5 PREKIDANJE PRIJEMA
Prijemnik će brojati i čekati određeni broj vremena bita na osnovu vrednosti koje su
isprogramirane u PDSEL (UxMODE<2:1>) i STSEL (UxMODE<0>) bitima.
Ukoliko je prekidanje prijema duže od 13 vremena bita, prijem se smatra završenim
posle onoliko vremena bita koliko je specificirano u PDSEL i STSEL. URXDA bit se
setuje, FERR se setuje, učitavaju se nule u prijemni FIFO, generišu se prekidi i
setuje se odgovarajući RIDLE bit. Kada modul primi signal dugačkog brejka (pauze,
prekidanja), i prijemnik detektuje start bit, bite podataka i neispravni stop bit (koji
setuje FERR), prijemnik mora da čeka na validni stop bit pre nego što potraži
sledeći start bit. On ne sme da pretpostavi da će uslov prekidanja biti na sledećem
startnom bitu. Brejk (prekidanje) se smatra karakterom koji sadrži sve nule, s tim što
FERR bit setovan. Karakter prekidanja se učitava u bafer. Neće biti daljnjeg prijema
pre nego što se primi stop bit. Primetimo da RIDLE odlazi na visoki nivo kada stop
bit još nije primljen
Setovanje LPBACK bita omogućava ulazak u ovaj specijalni režim, u kome je UxTX
interno povezan sa UxRX pinom. Kada se konfiguriše za loopback režim UxRX pin
se diskonektuje sa interne UART prijemne logike. Međutim UxTX pin još uvek radi
normalno.
Da bi se selektovao ovaj režim treba:
a) Konfigurisati UART za željeni režim rada.
b) Setovati LPBACK = 1 da bi se Loopback režim aktivirao.
c) Aktivirati transmisiju na način definisan u Odeljku 18.3.
Kada uređaj uđe u Sleep režim, svi izvori takta koji vode ka modulu se gase i ostaju
na logičkoj ‘0’. Ako se ulazak u Sleep režim dogodi dok je transmisija još uvek u
toku, tada se transmisija obustavlja. UxTX pin se dovodi na logičku ‘1’. Na sličan
način, ako se ulazak u Sleep režim dogodi dok je prijem još uvek u toku, tada se
prijem obustavlja. UxSTA, UxMODE, transmisioni i prijemni registri i baferi i UxBRG
registar nisu dotaknuti Sleep režimom i on na njih nema uticaja. Ako se bit buđenja
(Wake bit), (UxMODE<7>) setuje pre nego što uređaj uđe u Sleep režim, tada će
opadajuća ivica na UxRX pinu generisati prekid prijema. Bit režima selekcije
prekida prijema (Receive Interrupt Select Mode bit (URXISEL) nema uticaja na ovu
funkciju. Ako se aktivira prekid prijema, onda će ovo probuditi uređaj iz režima
Sleep. UARTEN bit mora biti setovan da bi se generisao prekid buđenja.
Za UART, USIDL bit selektuje da li će modul zaustaviti rad kada uređaj uđe u Idle
režim, ili će modul nastaviti u Idle režimu. Ako je USIDL = 0, modul će nastaviti rad
tokom Idle režima. Ako je USIDL = 1, onda će modul zaustaviti rad kada uređaj uđe
u Idle režim
Nekoliko grupa upravljačkih bita slektuju sekvencu u kojoj A/D povezuje ulaze sa
sample/hold kanalima, upisuje u bafer memoriju i generiše prekide. Sekvencom
upravljaju sempling taktovi. SIMSAM bit upravlja sekvencom dobavljanja (akvizicije)
i konverzije za višestruke kanale. Ako je SIMSAM bit jednak ‘0’, dva od 4
selektovana kanala se dobavljaju i konvertuju sekvencijalno, sa 2 od 4 sempling
takta. Ako je SIMSAM bit jednak ‘1’ dva od 4 selektovana kanala se dobavljanju
istovremeno, sa jednim sempling taktom. Kanali se onda konvertuju sekvencijalno.
Očigledno, ako postoji samo 1 selektovani kanal, SIMSAM bit nije primenljiv..
CHPS biti selektuju koliko će se kanala semplovati. Ovaj broj može da varira od 1, 2
do 4 kanala. Ako CHPS selektuje 1 kanal, CH0 kanal će biti semplovan na sempling
taktu i biće konvertovan. Rezultat se čuva u baferu. Ako CHPS selektuje 2 kanala,
kanali CH0 i CH1 kanali će biti semplovi i konvertovani. Ako CHPS selektuje 2
kanala, CH0, CH1, CH2 and CH3 kanali će biti semplovi i konvertovani.
SMPI biti selektuju broj sekvenci dobavljanja i konverzija koji će bit izvršen pre
nego što se dogodi prekid. Ovo može da varira od 1 odabirka po prekidu, pa sve do
16 odabiraka po prekidu. Korisnik ne može da programira CHPS i SMPI bita koja
specificira više od 16 konverzija po prekidu, ili 8 konverzija po prekidu, zavisno od
BUFM bita. BUFM bit će, kada se setuje, podeliti 16-bitni bafer rezultata
(ADCBUF0...ADCBUFF) u grupe od po 8 reči. Upis u bafer od po 8 reči biće
promenjen prilikom svakog događaja prekida. Korišćenje BUFM bita zavisiće od
toga koliko puta je moguće pomeriti podatke iz bafera posle prekida, na način
određen aplikacijom. Ako procesor može brzo da iščita pun bafer unutar
vremenskog intervala koji je potreban da se dobavi i konvertuje jedan kanal, BUFM
bit će biti jednak ‘0’ i po jednom prekidu se može izvršiti do 16 konverzija. Procesor
će imati jedno vreme odabiranja i konverzije da pomeri 16 konverzija. Ako procesor
ne može da iščita bafer unutar vremenskog intervala koji je potreban da se dobavi i
konvertuje jedan kanal, BUFM bit će biti jednak ‘1’. Na primer, ako je SMPI<3:0>
(ADCON2<5:2>) = 0111, onda će se 8 konverzija učitati u 1/2 bafera, posle čega će
se odigrati prekid. Sledećih 8 konverzija će se učitati u drugu 1/2 bafera. Procesor
će imati celo vreme između prekida da pomeri 8 konverzija.
ALTS bit se može koristiti da izmeni ulaze selektovane tokom sekvence
odabiranja.Ulazni multiplekser ima dva skupa odabiračkih ulaza: MUX A i MUX B.
Ako je ALTS bit ‘0’, samo će ulazi na MUX A biti selektovani za odabiranje. ako je
ALTS bit ‘1’ i SMPI<3:0> = 0000, na prvoj sekvenci dobavljanja i konverzije, ulazi
na MUX A će biti selektovani, a na sledećoj sekvenci dobavljanja i konverzije biće
selektovani ulazi na MUX B.
CSCNA bit (ADCON2<10>) će dopustiti ulazima CH0 kanala da budu naizmenično
skenirani preko selektovanog broja analognih izlaza za grupu MUX A. Ulazi se
selektuju putem registra ADCSSL. Ako je određeni bit u ADCSSL registru jednak
‘1’, odgovarajući ulaz će biti selektovan. Ulazi se uvek skeniraju od nižih ka višima
posle svakog prekida. Ako je broj slektovanih ulaza vreći od broja odabiraka koji se
uzimaju po prekidu, ulazi sa većim brojevima se ne koriste.
20.4 Programiranje starta konverzionog trigera
A/D konverzija zahteva 12 TAD. Izvor takta The source A/D konverzije se odabira
softverski korišćenjem 6-bitnog brojača. Postoje 64 moguće opcije za TAD.
Dakle:
ADCS<5:0> = 9
________________________________________
Aktuelni TAD = TCY/2 (ADCD<5:0> + 1)
= 33 nsec/2 (9+1)
= 165 nsec
Analogni ulazni model za 10-bitni A/D konvertor prikazan je na Slici 20.2. Ukupno
vreme odabiranja za A/D je funkcija internog vremena smirivanja pojačavača, VDD-
a uređaja i vremena pražnjenja kondenzatora za zadržavanje. Da bi A/D konvertor
dosegao svoju specificiranu tačnost, kondenzatoru za zadržavanje (CHOLD) mora
biti dopupšteno da se potpuno napuni na nivo napona na analognom ulaznom pinu.
impedansa sorsa (RS), impendansa interkonekcije (RIC), i impedansa internog
prekidača odabiranja (RSS) se kombinuju da bi direktno uticale na vreme koje se
zahteva da bi se napunio kondenzator CHOLD. Kombinovana impedansa analognih
izvora mora stoga biti dovoljno mala da bi se kondenzator zadržavanja napunio do
kraja unutar odabranog vremena odabiranja. Da bi se minimizirao efekat curenja na
pinu na tačnost A/D konvertora, maksimalna preporučena impedansa sorsa RS, je
5 k.. Posle selekcije (promene) kanala analognog ulaza, funkcija odabiranja se
mora završiti pre nego što započne konverzija. Interni kondenzator zadržavanja će
biti u stanju pražnjenja pre nego što započne bilo koja operacija odabiranja.
Korisnik mora da dozvoli 1 TAD period vremena odabiranja TSAMP, između
konverzija koji dozvolio, opet, da se svaki odabirak dobavi. Ovo vreme odabiranja
se kontroliše manuelno u softveru, pomoću setovanja ili resetovanja SAMP bita, ili
se njime može automatski upravljati A/D konvertora.
U automatskoj konfiguraciji, korisnik mora da obezbedi dovoljno vremena između
konverzionih trigera tako da se zadovolji minimalno vreme odabiranja. Konsultovati
Odeljak Električnih specifikacija za zahteve u vezi sa TAD-om i vremenom
odabiranja.
Kada uređaj uđe u Sleep režim, svi izvori takta koji vode u modul su isključeni i
ostaju na logičkoj ‘0’. Ako se u režim Sleep uđe usred konverzije, konverzija se
prekida. Konvertor neće nastaviti sa delimično obavljenom konverzijom kada
jednom izađe Sleep režima.
Na sadržaj registra ne utiče to što uređaj ulazi ili izlazi iz Sleep režima.
A/D modul može da radi tokom Sllep režima ako je izvor takta A/D postavljen na RC
(ADRC = 1). Kada se detektuje izvor takta RC A/D modul čeka jedan instrukcijski
ciklus pre nego što započne konverziju. Ovo omogućava da se izvrši SLEEP
instrukcija, što opet eliminiše sve digitalne signale buke prilikom svičovanja, a koja
nastaje prilikom konverzije.
Kada se konverzija završi, bit Done će biti setovan i rezultat će biti učitan u
ADCBUF.
Ako je aktiviran A/D prekid, uređaj će se probuditi iz Sleep režima. Ako A/D prekid
nije aktiviran, A/D modul će onda biti isključen, iako će ADON bit ostati setovan.
Reset uređaja prisiljava sve registre da odu u svoje resertovano stanje. Ovo
primorava A/D modul da se isključi, i obustavlja se svaka konverziona i akviziciona
sekvenca. Vrednosti koje se nalaze u ADCBUF registrima se ne menjaju. Registar
A/D rezultata registar će sadržavati nepoznate podatke posle mehaničkog reseta
isključenjem sa napajanja.
Rezultat A/D je širok 10 bita. RAM bafera podataka je takođe širok 10 bita. 10-bitni
podaci se mogu čitati putem jednog od 4 različita formata. Biti FORM<1:0>
selektuju format. Svaki od izlaznih formata prevodi se u 16-bitni rezultat na
magistrali podataka. Ispis podataka će uvek biti u celobrojnom formatu sa desnim
uravnanjem.
MIKROPROCESORI
Korišćenje registara ADPCFG i TRIS upravlja radom A/D port pinova. Port pinovi
koje želimo za analogne ulaze moraju imati svoje odgovarajuće TRIS bite setovane
(ulaz). Ako je TRIS bit resetovan (izlaz), nivo digitalnog izlaza (VOH i VOL) će biti
konvertovan.
Rad A/D je nezavisan od stanja CH0SA<3:0>/CH0SB<3:0> bita i TRIS bita. Kada
se čita iz PORT registara, svi pinovi konfigurisani kao analogni ulazni kanali biće
pročitani kao da su u resetovanom stanju. Ponovi konfigurisani kako digitalni ulazi
neće konvertovati analogni ulaz. Analogni nivoi bilo kog pina se definišu kao
digitalni ulazi (uključujući ANx pinove), što može izazvati da ulazni bafer konzumira
struju koja prevazilazi specifikacije uređaja.
Analogni ulazi imaju diode na VDD VSS kao ESD zaštitu. Ovo zahteva da analogni
ulaz bude između VDD i VSS. Ako je ulazni napon prevazišao ovaj raspon za više
od 0.3V (u bilo kom smeru), jedna od dioda postaje direkno polarizovana i može
oštetiti uređaj ako se premaši specifikacija uređaja. Unutrašnji RC filter se dodaje
ponekad da bi se inicijalizovao ulazni signal. Treba selektovati R komponentu da bi
se osiguralo da zahtevi za vreme odabiranja budu ispunjeni. Bilo koje eksterne
komponente koje se konektuju (putem visoke impedanse) na analogni ulazni pin
(kondenzator, Cenerova dioda, itd.) trebalo bi da imaju veoma malu struju curenja
na pinu.
• Prvi izvorni operand, koji je uobičajeno registar ‘Wb’ bez ikakvog modifikatora
adrese
• Drugi izvorni operand, koji je uobičajeno registar ‘Ws’ bez ikakvog modifikatora
adrese, ili sa njim
• Destinacija rezultata, koja je uobičajeno registar ‘Wd’ bez ikakvog modifikatora
adrese, ili sa njim
Međutim, fajl registri orijentisani na bajtove ili reči obično imaju dva operanda.
• Fajl registar određen vrednošću ‘f’
• Destinaciju, koja može biti bilo fajl registar ‘f’ ili W0 registar, što se označava kao
‘WREG’
Međutim, doslovne instrukcije koje uključuju aritmetičke ili logičke operacije koriste
neke od sledećih operanada:
• Prvi izvorni operand, koji je registar ‘Wb’ bez ikakvog modifikatora adrese
• Drugi izvorni operand, koji je doslovna vrednost
• Destinacija rezultata, (samo ako nije identična kao i prvi izvorni operand) koja je
uobičajeno registar ‘Wd’ bez ikakvog modifikatora adrese, ili sa njim.
Sve instrukcije su od jedne reči, osim izvesnih instrukcija koje sadrže 2 reči, a one
su načinjene takvima da bi sve neophodne informacije bile sadržane u tih 48-bita. U
drugoj reči, 8 MSb-a su nule. Ako se druga reč izvršava kao instrukcija (sama po
sebi), izvršiće se kao NOP. Većina instrukcija od jedne reči izvrši se u jednom
instrukcionom ciklusu, osim ako uslovni test ne pokaže istinitost, ili se programski
brojač ne promeni kao rezultat instrukcije. U tim slučajevima, izvršenje zahteva 2
instrukciona ciklusa sa dodatnim instrukcionim ciklusom koji se izvršava kao NOP.
Značajni izuzeci su BRA (bezuslovna/sračunata grana), indirektni CALL/GOTO, sva
čitanja iz tabela i upisi u tabele, i instrukcije RETURN/RETFIE koje su instrukcije od
jedne reči, i koje zahtevaju 2 ili 3 ciklusa. Određene instrukcije koje uključuju
preskakanje sledeće instrukcije zatevaju bilo 2, bilo 3 ciklusa, ako se vrši
preskakanje, zavisno od toga da li instrukcija koja se preskače predstavlja jednu reč
ili instrukciju od 2 reči. Nadalje, pokreti dvostrukih reči zahtevaju dva ciklusa.
Instrukcije od dve reči se izvršavaju u dva instrukcijska ciklusa.
Base # of
Assembly # of Status Flags
Instr Assembly Syntax Description cycle
Mnemonic words Affected
# s
MIKROPROCESORI
Base # of
Assembly # of Status Flags
Instr Assembly Syntax Description cycle
Mnemonic words Affected
# s
29 DISI DISI #lit14 Disable Interrupts for 1 1 None
k instruction cycles
30 DIV DIV.S Wm,Wn Signed 16/16-bit 1 18 N,Z,C, OV
Integer Divide
DIV.SD Wm,Wn Signed 32/16-bit 1 18 N,Z,C, OV
Integer Divide
DIV.U Wm,Wn Unsigned 16/16-bit 1 18 N,Z,C, OV
Integer Divide
DIV.UD Wm,Wn Unsigned 32/16-bit 1 18 N,Z,C, OV
Integer Divide
31 DIVF DIVF Wm,Wn Signed 16/16-bit 1 18 N,Z,C, OV
Fractional Divide
32 DO DO #lit14,Expr Do code to PC+Expr, 2 2 None
lit14+1 times
DO Wn,Expr Do code to PC+Expr, 2 2 None
(Wn)+1 times
33 ED ED Wm*Wm,Acc,Wx,Wy,Wxd Euclidean Distance ( 1 1 OA,OB,OAB,
no accumulate)
SA,SB,SAB
34 EDAC EDAC Wm*Wm,Acc,Wx,Wy,Wxd Euclidean Distance 1 1 OA,OB,OAB,
SA,SB,SAB
35 EXCH EXCH Wns,Wnd Swap Wns with Wnd 1 1 None
36 FBCL FBCL Ws,Wnd Find Bit Change from 1 1 C
Left (MSb) Side
37 FF1L FF1L Ws,Wnd Find First One from 1 1 C
Left (MSb) Side
38 FF1R FF1R Ws,Wnd Find First One from 1 1 C
Right (LSb) Side
39 GOTO GOTO Expr Go to address 2 2 None
GOTO Wn Go to indirect 1 2 None
40 INC INC f f=f+1 1 1 C,DC,N,OV,Z
INC f,WREG WREG = f + 1 1 1 C,DC,N,OV,Z
INC Ws,Wd Wd = Ws + 1 1 1 C,DC,N,OV,Z
41 INC2 INC2 f f=f+2 1 1 C,DC,N,OV,Z
INC2 f,WREG WREG = f + 2 1 1 C,DC,N,OV,Z
INC2 Ws,Wd Wd = Ws + 2 1 1 C,DC,N,OV,Z
42 IOR IOR f f = f .IOR. WREG 1 1 N,Z
IOR f,WREG WREG = f .IOR. 1 1 N,Z
WREG
IOR #lit10,Wn Wd = lit10 .IOR. Wd 1 1 N,Z
IOR Wb,Ws,Wd Wd = Wb .IOR. Ws 1 1 N,Z
IOR Wb,#lit5,Wd Wd = Wb .IOR. lit5 1 1 N,Z
43 LAC LAC Wso,#Slit4,Acc Load Accumulator 1 1 OA,OB,OAB,
SA,SB,SAB
44 LNK LNK #lit14 Link frame pointer 1 1 None
45 LSR LSR f f = Logical Right Shift 1 1 C,N,OV,Z
f
LSR f,WREG WREG = Logical 1 1 C,N,OV,Z
Right Shift f
LSR Ws,Wd Wd = Logical Right 1 1 C,N,OV,Z
Shift Ws
LSR Wb,Wns,Wnd Wnd = Logical Right 1 1 N,Z
Shift Wb by Wns
LSR Wb,#lit5,Wnd Wnd = Logical Right 1 1 N,Z
Shift Wb by lit5
46 MAC MAC Wm*Wn,Acc,Wx,Wxd,Wy,Wyd,Multiply and 1 1 OA,OB,OAB,
Accumulate
AWB SA,SB,SAB
MAC Wm*Wm,Acc,Wx,Wxd,Wy,WydSquare and 1 1 OA,OB,OAB,
Accumulate
SA,SB,SAB
47 MOV MOV f,Wn Move f to Wn 1 1 None
MOV f Move f to f 1 1 N,Z
MOV f,WREG Move f to WREG 1 1 N,Z
MOV #lit16,Wn Move 16-bit literal to 1 1 None
Wn
MOV.b #lit8,Wn Move 8-bit literal to 1 1 None
Wn
MOV Wn,f Move Wn to f 1 1 None
MOV Wso,Wdo Move Ws to Wd 1 1 None
MOV WREG,f Move WREG to f 1 1 N,Z
MOV.D Wns,Wd Move Double from 1 2 None
W(ns):W(ns+1) to Wd
MOV.D Ws,Wnd Move Double from 1 2 None
Ws to W(nd+1):W(nd)
48 MOVSAC MOVSAC Acc,Wx,Wxd,Wy,Wyd,AWB Pre-fetch and store 1 1 None
MIKROPROCESORI
accumulator
49 MPY MPY Wm*Wn,Acc,Wx,Wxd,Wy,Wyd Multiply Wm by Wn to 1 1 OA,OB,OAB,
Accumulator
SA,SB,SAB
MPY Wm*Wm,Acc,Wx,Wxd,Wy,WydSquare Wm to 1 1 OA,OB,OAB,
Accumulator
SA,SB,SAB
50 MPY.N MPY.N Wm*Wn,Acc,Wx,Wxd,Wy,Wyd -(Multiply Wm by Wn) 1 1 None
to Accumulator
Base # of
Assembly # of Status Flags
Instr Assembly Syntax Description cycle
Mnemonic words Affected
# s
51 MSC MSC Wm*Wm,Acc,Wx,Wxd,Wy,Wyd,Multiply and Subtract 1 1 OA,OB,OAB,
from Accumulator
AWB SA,SB,SAB
52 MUL MUL.SS Wb,Ws,Wnd {Wnd+1, Wnd} = 1 1 None
signed(Wb) *
signed(Ws)
MUL.SU Wb,Ws,Wnd {Wnd+1, Wnd} = 1 1 None
signed(Wb) *
unsigned(Ws)
MUL.US Wb,Ws,Wnd {Wnd+1, Wnd} = 1 1 None
unsigned(Wb) *
signed(Ws)
MUL.UU Wb,Ws,Wnd {Wnd+1, Wnd} = 1 1 None
unsigned(Wb) *
unsigned(Ws)
MUL.SU Wb,#lit5,Wnd {Wnd+1, Wnd} = 1 1 None
signed(Wb) *
unsigned(lit5)
MUL.UU Wb,#lit5,Wnd {Wnd+1, Wnd} = 1 1 None
unsigned(Wb) *
unsigned(lit5)
MUL f W3:W2 = f * WREG 1 1 None
53 NEG NEG Acc Negate Accumulator 1 1 OA,OB,OAB,
SA,SB,SAB
NEG f f=f+1 1 1 C,DC,N,OV,Z
NEG f,WREG WREG = f + 1 1 1 C,DC,N,OV,Z
NEG Ws,Wd Wd = Ws + 1 1 1 C,DC,N,OV,Z
54 NOP NOP No Operation 1 1 None
NOPR No Operation 1 1 None
55 POP POP f Pop f from top-of- 1 1 None
stack (TOS)
POP Wdo Pop from top-of-stack 1 1 None
(TOS) to Wdo
POP.D Wnd Pop from top-of-stack 1 2 None
(TOS) to
W(nd):W(nd+1)
POP.S Pop Shadow 1 1 All
Registers
56 PUSH PUSH f Push f to top-of-stack 1 1 None
(TOS)
PUSH Wso Push Wso to top-of-1 1 None
stack (TOS)
PUSH.D Wns Push W(ns):W(ns+1) 1 2 None
to top-of-stack (TOS)
PUSH.S Push Shadow 1 1 None
Registers
57 PWRSAV PWRSAV #lit1 Go into Sleep or Idle 1 1 WDTO,Sleep
mode
58 RCALL RCALL Expr Relative Call 1 2 None
RCALL Wn Computed Call 1 2 None
59 REPEAT REPEAT #lit14 Repeat Next 1 1 None
Instruction lit14+1
times
REPEAT Wn Repeat Next 1 1 None
Instruction (Wn)+1
times
60 RESET RESET Software device 1 1 None
Reset
61 RETFIE RETFIE Return from interrupt 1 3 (2) None
62 RETLW RETLW #lit10,Wn Return with literal in 1 3 (2) None
Wn
63 RETURN RETURN Return from 1 3 (2) None
Subroutine
64 RLC RLC f f = Rotate Left 1 1 C,N,Z
through Carry f
RLC f,WREG WREG = Rotate Left 1 1 C,N,Z
through Carry f
RLC Ws,Wd Wd = Rotate Left 1 1 C,N,Z
through Carry Ws
65 RLNC RLNC f f = Rotate Left (No 1 1 N,Z
Carry) f
RLNC f,WREG WREG = Rotate Left 1 1 N,Z
(No Carry) f
RLNC Ws,Wd Wd = Rotate Left (No 1 1 N,Z
Carry) Ws
66 RRC RRC f f = Rotate Right 1 1 C,N,Z
through Carry f
RRC f,WREG WREG = Rotate 1 1 C,N,Z
Right through Carry f
RRC Ws,Wd Wd = Rotate Right 1 1 C,N,Z
through Carry Ws
67 RRNC RRNC f f = Rotate Right (No 1 1 N,Z
Carry) f
RRNC f,WREG WREG = Rotate 1 1 N,Z
Right (No Carry) f
RRNC Ws,Wd Wd = Rotate Right 1 1 N,Z
(No Carry) Ws
68 SAC SAC Acc,#Slit4,Wdo Store Accumulator 1 1 None
SAC.R Acc,#Slit4,Wdo Store Rounded 1 1 None
Accumulator
69 SE SE Ws,Wnd Wnd = sign extended 1 1 C,N,Z
Ws
70 SETM SETM f f = 0xFFFF 1 1 None
SETM WREG WREG = 0xFFFF 1 1 None
SETM Ws Ws = 0xFFFF 1 1 None
Base # of
MIKROPROCESORI