+ All Categories
Home > Documents > 58907199 Curs Atmega 16 III Tet

58907199 Curs Atmega 16 III Tet

Date post: 02-Jun-2018
Category:
Upload: geo-dan
View: 220 times
Download: 0 times
Share this document with a friend
138
Universitatea POLITEHIC A din Bucuresti PROIECT DE DIPLOMĂ  Facultatea TRANSPORTURI Catedra Telecomenzi şi Electronică în Transporturi 2007  CAPITOLUL 1  ARHITECTURA MICROCONTROLERULU I ATmega16 1.1 Introducere ATmega 16 este un microcontroler CMOS de 8 – biţi de mică putere bazat pe arhitectura !SC A" imbunataţita# $ispune de un set de 1%1 instrucţiuni &i %' de regi&tri de uz general# Cele %' de registre sunt direct adr esa bil e de (ni tat ea )og ica Ar itmeti ca *A) (+, per mi ţ -nd acc esa rea a doua reg ist re independente intr.o singura instrucţiune# Se obţine ast/el o e/icienţa sporita in e0ecuţie *de pana la zece ori mai rapide decat microcontr orelerele conenţionale C!SC+# ATmega16 este un microcontroler !SC pe 8 biţi realizat de /irma Atmel# Caracteristicile principale ale acestuia sunt2 .1634 de memorie 5lash reinscripti bilă pentru stocarea programelor .134 de memorie AM .1'4 de memorie 77OM .două numărătoare9temporizatoare de 8 biţi .un numărător9tempori zator de 16 biţi .conţine un conertor analog – digital de 1: biti, cu intrări multiple .conţine un comparator analogic .conţine un modul (SAT pentru comunicaţie serială *port serial+ .dispune de un cronometru cu oscilator intern .o/eră %' de linii !9O organizate ;n patru porturi *A, 4, C, $+# Structura internă generală a controlerului este prezentată ;n 5igura 1# Se poate obsera că e0istă o magistrală generală de date la care sunt conectate mai multe module2 .unitatea aritmetică &i logică *A)(+ .registrele generale .memoria AM &i memoria 77OM
Transcript
Page 1: 58907199 Curs Atmega 16 III Tet

8/10/2019 58907199 Curs Atmega 16 III Tet

http://slidepdf.com/reader/full/58907199-curs-atmega-16-iii-tet 1/138

Universitatea POLITEHICA din Bucuresti PROIECT DE DIPLOMĂ  Facultatea TRANSPORTURI

Catedra Telecomenzi şi Electronică în Transporturi 2007  

CAPITOLUL 1

  ARHITECTURA MICROCONTROLERULUI ATmega16

1.1 Introducere

ATmega 16 este un microcontroler CMOS de 8 – biţi de mică putere bazat pe arhitectura!SC A" imbunataţita#

$ispune de un set de 1%1 instrucţiuni &i %' de regi&tri de uz general# Cele %' de registre suntdirect adresabile de (nitatea )ogica Aritmetica *A)(+, permiţ-nd accesarea a doua registreindependente intr.o singura instrucţiune# Se obţine ast/el o e/icienţa sporita in e0ecuţie *de pana lazece ori mai rapide decat microcontrorelerele conenţionale C!SC+#ATmega16 este un microcontroler !SC pe 8 biţi realizat de /irma Atmel# Caracteristicile principaleale acestuia sunt2

.1634 de memorie 5lash reinscriptibilă pentru stocarea programelor 

.134 de memorie AM

.1'4 de memorie 77OM

.două numărătoare9temporizatoare de 8 biţi

.un numărător9temporizator de 16 biţi

.conţine un conertor analog – digital de 1: biti, cu intrări multiple

.conţine un comparator analogic

.conţine un modul (SAT pentru comunicaţie serială *port serial+

.dispune de un cronometru cu oscilator intern

.o/eră %' de linii !9O organizate ;n patru porturi *A, 4, C, $+#Structura internă generală a controlerului este prezentată ;n 5igura 1# Se poate obsera că e0istă omagistrală generală de date la care sunt conectate mai multe module2.unitatea aritmetică &i logică *A)(+.registrele generale.memoria AM &i memoria 77OM

Page 2: 58907199 Curs Atmega 16 III Tet

8/10/2019 58907199 Curs Atmega 16 III Tet

http://slidepdf.com/reader/full/58907199-curs-atmega-16-iii-tet 2/138

Universitatea POLITEHICA din Bucuresti PROIECT DE DIPLOMĂ  Facultatea TRANSPORTURI

Catedra Telecomenzi şi Electronică în Transporturi 2007  

.liniile de intrare *porturile – !9O )ines+ &i celelalte blocuri de intrare9ie&ire# Aceste ultime modulesunt controlate de un set special de registre, /iecare modul a-nd asociat un număr de registrespeci/ice#

Memoria 5lash de program ;mpreună cu ;ntreg blocul de e0tragere a instrucţiunilor, decodare

&i e0ecuţie comunică printr.o magistrală proprie, separată de magistrala de date menţionată mai sus#Acest tip de organizare este con/orm principiilor unei arhitecturi <arad &i permite controlerului săe0ecute instrucţiunile /oarte rapid#

Modul o=er.do=n saleaza conţinutul registrelor, dar blocheaza Oscilatorul, dezacti-ndtoate celelalte /uncţii al chip.ului pană la urmatoarea !ntrerupere 70terna sau eset hard=are# !nmodul o=er.sae, timer.ul asincron continua sa mearga, permiţind user.ului sa menţina o baza detimp in timp ce restul dispozitiului este oprit#

!n modul Standb> , Oscilatorul /uncţionează ;n timp ce restul despozitiului este oprit# Acestlucru permite un start /oarte rapid combinat cu un consum redus de energie# !n modul standb>e0tins*70tended Stanb> Mode+, atat Oscilatorul principal cat &i timer.ul asincron continuă să/uncţioneze#

Memoria /lash *On.chip+ permite să /ie reprogaramată printr.o inter/aţă serială S! , decatre un programator de memorie nonolatilă conenţional, sau de către un program de boot On.chip ce ruleaza pe baza A"# rogramul de boot poate /olosi orice inter/ata pentru a incarca programul de aplicaţie in memoria 5lash #

Combin-nd un C( !SC de 8 biţi cu un 5lash !n.s>stem auto –programabil pe un chipmonolithic, ATmega 16 este un microcontroler puternic ce o/era o solutie e0trem de /le0ibilă &i cuun cost redus ;n comparaţie cu multe altele de pe piaţa#

ATmega 16 A" este susţinut de o serie completa de instrumente de program &i dedezoltare a sistemului, care include2 compilatoare C, macroasambloare, programe debug9 simulareetc#

6

Page 3: 58907199 Curs Atmega 16 III Tet

8/10/2019 58907199 Curs Atmega 16 III Tet

http://slidepdf.com/reader/full/58907199-curs-atmega-16-iii-tet 3/138

Universitatea POLITEHICA din Bucuresti PROIECT DE DIPLOMĂ  Facultatea TRANSPORTURI

Catedra Telecomenzi şi Electronică în Transporturi 2007  

Structura interna :

?

Page 4: 58907199 Curs Atmega 16 III Tet

8/10/2019 58907199 Curs Atmega 16 III Tet

http://slidepdf.com/reader/full/58907199-curs-atmega-16-iii-tet 4/138

Universitatea POLITEHICA din Bucuresti PROIECT DE DIPLOMĂ  Facultatea TRANSPORTURI

Catedra Telecomenzi şi Electronică în Transporturi 2007  

e!crierea "ini#or:

 

"CC – Sursa de curent@$ – Masa

Port A $PA% .. PA&'ort.ul A sere&te drept port de intrări analogice pentru Conertorul A9$#ort.ul A sereste de asemenea &i ca un port bidirecţional !9O de 8 biţi,;n cazul ;n care

Conertorul A9$ nu este /olosit# inii de port pot /i conectaţi opţional la "CC prin rezistori interni,*selectaţi pentru /iecare bit+# 4u//er.ele de ie&ire ale ortului A au caracteristici de ampli/icare #

Port ( $P(%.. P(&'ortul 4 este un port !9O de 8 biţi bidirecţional cu rezistori interni *opţionali+#

4u//er.ele de ie&ire ale ort.ului 4 au caracteristici de ampli/icare#ort.ul 4 indepline&te de asemenea /uncţii speciale ale microcontrolerului ATmega 16

Port C $PC%)PC&'ortul C este un port !9O de 8 bţti bidirecţional cu rezistori interni *opţionali+#

4u//er.ele de ie&ire ale ort.ului C au caracteristici de ampli/icare#$aca inter/aţa BTA@ *de depanare+ este actiată, rezistorii pinilor C*T$!+, C%*TMS+ si

C'*TC3+ or /i actiaţi, chiar daca are loc o resetare#

ort.ul C indepline&te de asemenea /uncţii ale inter/eţei BTA@ &i alte /uncţii speciale aleATmega 16#

Port $P%)P&' ortul $ este un port !9O de 8 biţi bidirecţional cu rezistori interni conectaţi optional la "CC

*selectaţi pentru /iecare bit+# 4u//er.ele de output ale ort.ului $ au caracteristici de ampli/icare#ort.ul $ indepline&te de asemenea /uncţii speciale ale ATmega 16#

8

Page 5: 58907199 Curs Atmega 16 III Tet

8/10/2019 58907199 Curs Atmega 16 III Tet

http://slidepdf.com/reader/full/58907199-curs-atmega-16-iii-tet 5/138

Universitatea POLITEHICA din Bucuresti PROIECT DE DIPLOMĂ  Facultatea TRANSPORTURI

Catedra Telecomenzi şi Electronică în Transporturi 2007  

Re!et(n niel scăzut la acest pin mai mare ca durată decat o aloare prestabilită, a genera o

iniţializare#*TAL 1: !ntrare pentru ampli/icatorul inersor al Oscilatorului*TAL +: !e&ire pentru ampli/icatorul inersor al Oscilatorului#

A,CC: A"CC este pin de alimentare pentru ort.ul A si Conertorului A9$# Trebuie conectate0tern la "cc, chiar dacă A$C nu este /olosit# $aca A$C este /olosit , ar trebui conectat la "cc printr.un /iltru trece .Dos#ARE- 2A75 este pinul de re/erinţa analogica pentru Conertorul A9$

1.+ Nuc#eu# CPU A,R 

En aceasta parte se discută despre arhitectura, nucleului A", ;n general# 5uncţia principalăa nucleului C( este aceea de a asigura e0ecuţia corectă a programului# $in acest moti , nucleul

C( este capabil să acceseze memoriile, e0ecute calcule, controleze peri/ericele &i sa controleze;ntreruperile#

5ig#%#1 $iagrama bloc a nucleului C( A" 

entru a ma0imiza per/ormanţa ,A" /olose&te o arhitectura <arard2

F

Page 6: 58907199 Curs Atmega 16 III Tet

8/10/2019 58907199 Curs Atmega 16 III Tet

http://slidepdf.com/reader/full/58907199-curs-atmega-16-iii-tet 6/138

Universitatea POLITEHICA din Bucuresti PROIECT DE DIPLOMĂ  Facultatea TRANSPORTURI

Catedra Telecomenzi şi Electronică în Transporturi 2007  

.cu memorii separate &i magistrale pentru program &i in/ormaţii# !nstrucţiunile din memoria programului sunt e0ecutate ;ntr.un singur niel ;n timp ce o instrucţiune este e0ecutată, urmatoareaeste preadusa de la memoria de program# Acest concept permite e0ecutarea instrucţiunilor la /iecareciclu de ceas# Memoria de program este o memorie /lash reprogramabilă#

Cel mai accesat registru conţine %'G8 biţi, scopul este de a accesa registrele ;ntr.un singur

ciclu de ceas #Acest singur timp de acces se datorează unitaţi A)( *Aithmetic )ogic (nit+# Entr.otipică unitate A)( operaţia are loc ast/el2 operanzi sunt sco&i din registru se e/ectuează operaţia sirezultatul este introdus ;n regi&tri toate acestea ;ntr.un singur ciclu de ceas#

Hase din cele %' de registre pot /i /olosite ca trei registre de 16 biţi cu acess indirect lain/ormaţii, permit-nd ast/el calcularea e/icienta a adresei#(na dintre aceste adrese poate /i /olosita pentru *tabele de cautare +, a cauta tabele, ;n memoria /lash# Aceste noi /uncţii adaugate registrelorsunt la al 16 bit I, J si K descris mai tarziu in aceasta parte#

A)( e/ectuează *suportă+ operaţii aritmetice &i logice ;ntre registre sau ;ntre o constantă &iun registru# $upă e/ectuarea unei operaţii aritmetice registrul a/isează rezultatul operaţiei#

rogramul /urnizează sărituri condiţionate, necondiţionate &i apelări de instricţiuni capabilesă acceseze tot spaţiul de adresă# MaDoritatea instruţunilor A" sunt /ormate dintr.un cuant 16 biti+# 5iecare memorie de program conţie o instrucţine de 16 sau %' de biţi#

Spaţiul memoriei /lash de program este ;mparţit ;n două secţiuni, secţiunea 4OOT &isecţiune de aplicare a programelor# Secţiunea 4OOT are biţi speciali pentru protecţia la scriere &icitire9scriere# !nstrucţiunea SM cu aDutorul căreia se scrie ;n memoria /lash de aplicaţii trebuie sa/ie ;n secţiunea 4OOT#

En timpul ;ntreruperileor sau a apelări subrutinelor, adresa de ;ntoarcere este conţinuta peStacL# StacL.ul este eecti alocat ;n ;n/ormaţiile generale SAM &i ;n consecinţă mărimea StacL.ului este limitată doar de marimea totală a SAM &i de uzura ei# Toţi utilizatori de program trebuiesă iniţializeze S*StacL ointer+ ;nainte ca subrutina sau ;ntreruperea să /ie e0ecutata# StacL ointer.ul se poate citi9scrie ;n spaţiul de !9O# !n/ormaţiile din SAM pot /i accesate cu u&urinţa prin celecinci moduri di/erite de adresare suportate de arhitectura A"#

Spaţiile de memorie ;n arhitectura A" sunt liniare &i normale#Modulele ;ntreruperilor au registrele de control ;n spaţiul !9O &i ;n Status egister se a/la

 bitul de ;ntreupere globală# Toate ;ntreruperile au prioritate ;n /uncţie de locul ;n tabelul de ectoride ;ntrerupere ai ;ntreruperilor lor# Cu cat este mai Dos situat ;n tabel ectorul ;ntreruperi cu at-t acea;ntrerupere are prioritate mai mare# rioritatea mai mare o are ;ntreruperea cu ectorul cel mai slab plasat in tabel#

Spaţiul de memorie !9O conţine 6 de arese pentru /uncţiuni peri/erice ale C( ca2controlul registrelor, indicatorul S!, sau alte /uncţii de !9O# Memoria !9O poate /i accesată directsau indirect #

1.+.1 ALU Unitatea Aritmetica Logica

Cea mai inaltă per/ormanţă a A" A)( este aceea că lucrează direct cu cele %' de registre#!n timpul unui singur ciclu de ceas se e/ectueaza operaţii aritmetice ;ntre registre sau ;ntre registre &io constanta , acestea sunt e0ecutate imediat# Operaţiile pe care le e0ecuta unitatea A)( sunt;mparţite ;n trei mari categorii2 aritmetice, logice &i /uncţiuni de bit# (nele implementări alearhitecturi pot e/ectua &i multiplicări cu sau /ară semn &i9sau ;n regim de /racţie# Mai multe detalii segăsesc ;n Setul de !nstrucţiuni#

1:

Page 7: 58907199 Curs Atmega 16 III Tet

8/10/2019 58907199 Curs Atmega 16 III Tet

http://slidepdf.com/reader/full/58907199-curs-atmega-16-iii-tet 7/138

Universitatea POLITEHICA din Bucuresti PROIECT DE DIPLOMĂ  Facultatea TRANSPORTURI

Catedra Telecomenzi şi Electronică în Transporturi 2007  

1.+.+ Regi!tru# de !tare

Situaţia registrului conţine in/ormaţii despre ultima operaţie aritmetica e/ectuată# Aceastăin/ormaţie poate /i /olosită pentru a alterna de la program la e0ecutarea unei alte operaţii mai prioritară# Situaţia registrului este actualizată după /iecare e0ecuţie a unei operaţii aritmetice, a&a

cum se speci/ică ;n Setul de !nstructiuni# Aceasta poate duce ;n multe cazuri la ne/olosirea concretaa /iecărei instrucţiuni ;n parte ci a unui cod mai compact de instrucţiuni care e/ectuează mai rapidoperaţia#

Situaţia registrului nu este automat stocată c-nd apare o ;ntrerupere de rutină &i mai apoirestaurată c-nd se ;ntoarce la program# Acest lucru trebuie manipulat de program# 

A" Status egister este de/init ca2

(itu# %I /#o0a# Interru"t Ena0#e *Entreruperi @lobale ermise+@!7.trebuie să /ie /i0at ast/el ;ncat ;ntreruperile să /ie permise# Controlul ;ntreruperilor

indiiduale se /ace dintr.un registru separat# $acă @!7 este &ters niciuna dintre ;ntreruperileindiiduale nu sunt permise independent# 4itul ! este &ters de hard după ce s.a iit o ;ntrerupere &ieste corectat de 7T! pentru a permite accesul unei subsecente a;ntreruperi# 4itul ! poatedeasemenea sa /ie /i0at &i &ters de aplicaţie cu aDutorul instrucţiunilor S7! &i C)! a&a cum suntdescrise ;n Setul de !nstrucţiuni

(itu# 6T (it Co" Storage *bitul copiere.depozitare stocare+

!nstructiunile bitului de copiere 4)$ *4it )oa$.bit de incărcare+ &i4ST *4it Store.bit de stocare+ /olose&te bitul T ca sursă sau destinaţie pentru bitul acţionat# (n bitdin registru poate /i copiat ;n T cu aDutorul instrucţiunilor 4ST, &i un bit din T poate /i copiat ;nregistru cu aDutorul instrucţiuni 4)$#

(itu# 2H Ha#3 Carr -#ag *!ndicator de transport la Dumatate+Acesta indică transportul la Dumatate ;n cazul unor operaţii aritmetice# Bumatate de transport

este /olosit ;n aritmetica 4C$# entru in/ormaţii detaliate a se edea Setul de !nstrucţiumi#

(itu# 4S Sign (it S5N , *bitul de semn+4itul S este mereu e0clusi sau situat ;ntre indicatorul negati &i indicatorul de rezerare

"# A se edea Setul de !nstrucţiuni pentru in/ormaţii detaliate#

(itu# , T7o8! Com"#ement O9er3#o7 -#ag!ndicatorul de rezerare susţine operaţii aritmetice#

(itu# +N Negati9e -#ag *indicatorul negati+!ndicatorul negati indică un rezultat negati ;n cadrul operaţiilor aritmetice sau logice

(itu# 1 ero -#ag *indicatorul de zero+

11

Page 8: 58907199 Curs Atmega 16 III Tet

8/10/2019 58907199 Curs Atmega 16 III Tet

http://slidepdf.com/reader/full/58907199-curs-atmega-16-iii-tet 8/138

Universitatea POLITEHICA din Bucuresti PROIECT DE DIPLOMĂ  Facultatea TRANSPORTURI

Catedra Telecomenzi şi Electronică în Transporturi 2007  

!ndicatorul de zero indică zero atunci cand rezultatul operaţiilor logice sau aritmetice estezero#

(itu# & Carr -#ag *indicatorul de transport+!ndicatorul de transport indică transport ;n cadrul operaţiilor logice sau aritmetice#

1.+. Regi!tre#e de u; genera#

egistru /i&ier este optim pentru setul de instrucţiuni al arhitecturii A" !SC# En scopul realizări per/ormanţei &i /le0ibilitaţi cerute, urmatoarele !9O sunt ;ndeplinite de registru /i&ier2.8 biţi actionaţi la intrare rezultă 8 biţi la intrare.'×8 biţi acionaţi la ie&ire rezultă 8 biţi la intrare.'G8 biţi actionaţi la ie&ire rezultă 16 biţi la intrare.16 biţi actionaţi la ie&ire rezultţ 16 biţi la intrare#

5ig#%#' Structura celor %' de regi&tri &i cadrul C(

MaDoritate instrucţiunilor care acţionează pe registrul /i&ier au acces direct la toate registrele&i marea lor maDoritate sunt instrucţiuni cu un singur ciclu #

A&a cum se ede in /igura %#' /iecărui registru i se atribuie &i o adresa de memorie,localiz-ndu.l direct ;n cele %' de locaţii# $e&i nu e0istă implementată /izic ca locaţie SAM,organizarea acestei memorii dă o buna /iabilitate pentru accesul la registre, &i registrele I,J,K pot /isetate pentru a căuta oricare registru#

1.+.4 Regi!tre#e *< =<

egistrele '6###%1 au c-tea /uncţiuni adăugat pe langa cele generale# Aceste registe au 16 biţi de adresă pentru accesarea indirecta a datelor#Cele trei regisre pentru adresarea indirecta suntregitrele I, J, K care sunt descrise in /igura %#%#

1'

Page 9: 58907199 Curs Atmega 16 III Tet

8/10/2019 58907199 Curs Atmega 16 III Tet

http://slidepdf.com/reader/full/58907199-curs-atmega-16-iii-tet 9/138

Universitatea POLITEHICA din Bucuresti PROIECT DE DIPLOMĂ  Facultatea TRANSPORTURI

Catedra Telecomenzi şi Electronică în Transporturi 2007  

5ig#%#% egistrele I, J, K

1.+.2 Stac> Poiter *!ndicatorul de stia+ 

Stia este /olosită ;n principal pentu ;magazinarea temorară a datelor# entru ;magazinareaariabilelor locale &i pentru redarea adreselor după e/ectuarea ;ntreruperilor sau a subrutinelor#!n/ormatia care este pusă ;n stiă este pusă ;ntotdeauna deasupra celorlalte deDa e0istente# Stia esteimplementată pentru a trece de la locaţii de memorie superioare la locaţii de memorie Doase#

!ndicatorul de stiă indică spatiul de date din memoria SAM a stiei unde sunt localizate;ntreruperile &i subrutinele# Acest spatiu trebuie de/init de program ;nainte de a se e0ecuta reosubrutina sau ;ntrerupere# !ndicatorul de stiă este decrementat de 1 c-nd se introduce alte date ;nsiă prin instrucţiunea (S<, &i decrementat de ' c-nd adresele de reenire la program suntintroduse ;n stiă cu subrutinele sau cu instruţtiunile# !ndicatorul de stiă este incrementat de 1 c-nddatele sunt &terse din stiă cu instrucţiunea O, &i incrementat de ' c-nd datele sunt scoase dinstiă &i se reine din subrutina 7T sau din intreruperea 7T!#

!ndicatorul de stiă A" este implementat ca /iind două registre de 8 bţti ;n spaţiul alocat !9O# umărul de biţi /olosiţi sunt suboronaţi implementări# Spaţiul de adrese la unele implamentări alearhitecturi A" sunt a&a de mici ;nc-t nu este necesar dec-t S).ul# En acest caz registrul S< numai este prezent /igura %#

 

5ig#%# !ndicatorul de stiă

1.+.6 E?ecu@ia n tim" a in!truc@iuni#or

Această parte descrie ;n general timpul adresat e0ecutări instrucţiunilor# A" C( estecondusă de ceasul C( generat direct de la sursă# u se /olose&te nici un ceas interor#

1%

Page 10: 58907199 Curs Atmega 16 III Tet

8/10/2019 58907199 Curs Atmega 16 III Tet

http://slidepdf.com/reader/full/58907199-curs-atmega-16-iii-tet 10/138

Universitatea POLITEHICA din Bucuresti PROIECT DE DIPLOMĂ  Facultatea TRANSPORTURI

Catedra Telecomenzi şi Electronică în Transporturi 2007  

5igura %# ne prezintă ;n paralel o instrucţiune proocată &i instrucţiunea de e0ecuţie permisăde arhitectura <ar=ard &i accesul rapid la regitrele /i&ier# Acesta este conceptul de bază pentru aobţine mai mult de 1 M!S 9M<z &i cele mai bune rezultate din punct de edere /uncţiuni9cost ,/uncţiuni9timp &i /uncţiuni9unitate#

5ig#%# !nstrucţiuni paralele de e0ecutie

5igura %#6 ne arată timpul de registriu# Entr.un singur ciclu de ceas o operaţie A)( /olose&te 'registre pentru a e0ecuta calculul respecti# !ar rezultatul este stocat ;napoi ;n registrul de destinaţie #

  5ig#%#6 Operaţii A)( ;ntr.un singur ciclu de ceas

1.+.% Mani"u#area ntreru"eri#or Bi re!etri#or

A" /urnizează mai multe tipuri de ;ntreruperi# Aceste ;ntreruperi &i ectorul de resetare auc-te un ector de proram /iecare a/lat ;n spaţiul memoriei de program# Tuturor ;ntreruperilor le suntalocate indiidual biţi care trebuiesc scri&i logic o dată cu bitul @!7 ;n starea registrului ;n scopul de permite ;ntreruperea# En /uncţie de starea ;n care se a/lă rogram Counter.ul, ;ntreruperile pot /iinalidate, atunci c-nd 4)4 :' sau 4)41' sunt programate #Această rubrică ;mbunatăţe&tesecuritatea#Cele mai Doase adrese din memoria de program sunt de/inite ca ectori de resetare &i ;ntrerupere# En/uncţie de listă se determină &i nielurile de prioritate ale di/eritelor ;ntreruperi #Cu c-t intrerupereaare nielul mai Dos cu at-t prioritatea este mai mare# 7S7T are cea mai mare prioritate, iar dupăaceasta este !TO.cererea de ;ntrerupere e0terna :# "ectori de ;ntrerupere pot /i mutaţi la ;nceputulsecţiunii 4oot 5lash prin setarea bitului !"S7) din registrul global de control al ;ntreruperilor*@!C+# "ectorul de 7S7T poate /i deasemenea mutat la ;nceputul aceleia&i sectiuni prin programarea 4OOTST#

1

Page 11: 58907199 Curs Atmega 16 III Tet

8/10/2019 58907199 Curs Atmega 16 III Tet

http://slidepdf.com/reader/full/58907199-curs-atmega-16-iii-tet 11/138

Universitatea POLITEHICA din Bucuresti PROIECT DE DIPLOMĂ  Facultatea TRANSPORTURI

Catedra Telecomenzi şi Electronică în Transporturi 2007  

C-nd se ;ntampla o ;ntrerupere @!7 bitul ! este &ters &i toate ;ntreruperile sunt inalidate#(tilizatorul de so/t=are poate scrie 1 logic ;n bitul ! pentru a permite e0ecutarea ;ntreruperilor#Toate ;ntreruperile permise pot, la randul lor, ;ntrerupe ;ntreruperile de rutina# 4itul ! este automatcorectat c-nd 7T! este e0ecutat#

Sunt practic două tipuri de ;ntreruperi # rimul tip este declan&at *dat+ de eenimentele care

setează indicatorul de ;ntrerupere# entru aceste ;ntreruperi rogram Counter.ul este trimis la ectoride ;ntrerupere ;n scopul e0ecutări ;ntreruperi de rutină &i hard=are.ul sterge indicatorul de;ntrerupere corespunzator# !ndicatorul de ;ntrerupere poate /i &ters &i prin scrierea 1 logic# $acă se;ntampla o ;ntrerupere ;n timpul ;n care bitul care permite ;ntreruperea este &ters, atunci indicatorulde ;ntrerupere a /i setat să retină ;ntreruperea pană c-nd aceasta a putea /i permisă , sauindicatorul este &ters de so/t=are# En caz similar se procedează atunci cand este orba de &tergereaindicatorului @!7 *@lobal !nterrupt 7nable+ #

Cel de.al doilea tip de ;ntreruperi este dat at-ta timp c-t condiţia de ;ntrerupere este prezentă# Aceste ;ntreruperi nu au neapărat indicator de ;ntrerupere# $aca condiţia de ;ntreruperedispare ;nainte ca ;ntreruperea să /ie permisă, ;ntreruperea nu a mai /i e0ecutată#

Cand A" iese dintr.o ;ntrerupere se intoarce la programul principal &i mai e0ecută o datainstrucţiunile ;nainte de a intereni alta ;ntrerupere#

Starea registrului nu este automat stocat cand apare o ;ntrerupere de rutină, nici cand reinedin ;ntreruperea de rutină# Acesta trebuie susţinut de so/t=are#

C-nd se /olose&te instrucţiunea C)! pentru inalidarea ;ntreruperilor, ;ntreruperea a /iinalidată imediat# ici o ;ntrerupere nu a mai /i e0ecutată după acţionarea instrucţiuni C)!, chiardacă se ;ntamplă simultan cu instrucţiunea C)!# En e0emplu următor se arată cum aceasta poate /i/olosită pentru eitarea ;ntreruperilor ;n timpul scrieri memoriei 77OM#

 

C-nd se /olose&te instrucţiunea S7! pentru a permite ;ntreruperi, instrucţiunea S7! esterulată ;naintea oricarei instrucţiuni a/late ;n asteptare, a&a cum se arată ;n e0emplu#

1

Page 12: 58907199 Curs Atmega 16 III Tet

8/10/2019 58907199 Curs Atmega 16 III Tet

http://slidepdf.com/reader/full/58907199-curs-atmega-16-iii-tet 12/138

Universitatea POLITEHICA din Bucuresti PROIECT DE DIPLOMĂ  Facultatea TRANSPORTURI

Catedra Telecomenzi şi Electronică în Transporturi 2007  

1.+.D Tim"u# de ra!"un! #a ntreru"eri

aspunsul pentru e0ecutarea tuturor ;ntreruperilor permise de A" este dat ;n minim patrucicluri de ceas# $upa patru cicluri de ceas adresa ectorului de program pentru ;ntreruperea actualaeste e0ecutată# En timpul celor patru cicluri de ceas , rogram Counter.ul este ;n stiă# En modnormal ectorul sare la ;ntreruperea de rutină &i această saritură durează trei cicluri de ceas# $acă are

loc o ;ntrerupere ;n timpul e0ecutări unor instrucţiuni care durează mai multe cicluri de ceas aceastaa /i terminata ;nainte de a e0ecuta ;ntreruperea# $acă are loc o ;ntrerupere ;n timp ce MC( este ;nstand.b> e0ecutarea ;ntreruperi durează patru cicluri de ceas# Această cre&tere a timpului sedatorează /aptului că MC( este ;n stand.b> &i trebuie să iasă din această stare pentru a se e0ecuta;ntreruperea#

1. Organi;area memoriei

ATmega 16 A" are două spaţii de memorie principală, spaţiul pentru Memoria de $ate &i

 pentru Memoria de rogram# En plus, ATmega16 are &i o memorie neolatilă 77OM pentrumemorarea datelor# Toate cele trei tipuri de memorie sunt cu adresare liniară#

  5ig#%#? Memoria de program

ATmega 16 conţine o memorie /lash reprogramabilă *!n.s>stem On.chip+ de 16 3o pentru programe# $eoarece toate comenzile pentru A" sunt de 16 &i %' biţi, 5lash.ul este organizat ca

16

Page 13: 58907199 Curs Atmega 16 III Tet

8/10/2019 58907199 Curs Atmega 16 III Tet

http://slidepdf.com/reader/full/58907199-curs-atmega-16-iii-tet 13/138

Universitatea POLITEHICA din Bucuresti PROIECT DE DIPLOMĂ  Facultatea TRANSPORTURI

Catedra Telecomenzi şi Electronică în Transporturi 2007  

83016# entru securitatea so/t=are.ului , spaţiul pentru memoria de programe 5lash este ;mparţit ;ndoua secţiuni2 secţiunea de program boot &i secţiunea pentru programe de aplicaţie#

Memoria 5lash suportă cel putin 1:::: de cicluri de scriere9 &tergere# Counter.ul programului de la ATmega 16 *C+ are o lungime de 1% biţi, ceea ce permite adresarea uneimemorii de 8N1:' locaţii de 16 biţi#

1..1 Memoria de date SRAM

5igura de mai Dos arată cum este organizată memoria S$AM ATmega 16# rimele F6 delocaţii se re/eră la 5i&ierul de egistre, &i urmatoarele 1:' de locaţii sunt dedicate datelor interneS$AM#

egistrele generale '6, '?, '8, 'F, %:, %1 pot /i utilizate cu denumiri speci/ice2'62 I octet in/erior '?2 I octet superior  '82 J octet in/erior 'F2 J octet superior  %:2 K octet in/erior %12 K octet superior  

 5ig#%#8 Memoria de date S$AM

1..+ Memoria de date EEPROMATmega 16 conţine 1' octeţi de memorie de date 77OM# 7ste organizată ca spaţiu

separat de date, ;n care pot /i citiţi &i scri&i biţi indiiduali# 77OM.ul are o durata de iaţa de cel putin 1:,::: de cicluri scriere9&tergere#

1?

Page 14: 58907199 Curs Atmega 16 III Tet

8/10/2019 58907199 Curs Atmega 16 III Tet

http://slidepdf.com/reader/full/58907199-curs-atmega-16-iii-tet 14/138

Universitatea POLITEHICA din Bucuresti PROIECT DE DIPLOMĂ  Facultatea TRANSPORTURI

Catedra Telecomenzi şi Electronică în Transporturi 2007  

Acce!u# citire!criere EEPROMegi&trii de acces 77OM sunt ;n spaţiul !9O#C-nd se cite&te 77OM, C( este oprit timp de patru perioade de ceas ;nainte ca

următoarea comanda să /ie e0ecutată# C-nd se scrie 77OM, C( este oprit timp de două

 perioade de ceas ;nainte ca următoarea comandă să /ie e0ecutat#RegiBtrii de adre!a EEPROM F EEARH !i EEAR 

5ig#%#F agi&trii de adresă 77A< &i 77A)4iţii F – 1 sunt biţi rezeraţi ;n Atmega 16 &i or lua ;ntotdeauna aloarea :#4iţii : . 8 sunt biţi de adresa *total F bţti, deci se adresează :# 34+#

egi&trii de adresă de mai sus, EEARH si EEARL – speci/ică adresa 77OM pentru cele1' locaţii ale spţiului 77OM# )ocaţiile de memorie se adresează liniar de la : la 11#

entru operaţia de scriere a 77OM, registrul EER  conţine date care sa /ie scrise ;n77OM la adresa dată de registrul EEAR # entru operaţia de citire a 77OM, EER  conţinedate citite de pe 77OM la adresa dată de EEAR #

Regi!tru# de date EEPROM F EER 

5ig#%#1: 7gistrul de dete 77$ 

Regi!tru# de contro# EEPROM F EECR 

5ig#%#11 egistrul de date 77C (i@i %..4 aceBti 0i@i !unt 0i@i re;er9a@i #a ATmega 16 Bi au 9a#oarea ;ero.

(itu# EERIE: Acti9area EEPROM Read Interru"t

18

Page 15: 58907199 Curs Atmega 16 III Tet

8/10/2019 58907199 Curs Atmega 16 III Tet

http://slidepdf.com/reader/full/58907199-curs-atmega-16-iii-tet 15/138

Universitatea POLITEHICA din Bucuresti PROIECT DE DIPLOMĂ  Facultatea TRANSPORTURI

Catedra Telecomenzi şi Electronică în Transporturi 2007  

Scrierea ;n 77!7 a unui 1 logic, actieaza /uncţia lui 77OM ead> !nterrupt *pregatitde ;ntrerupereP+# Scrierea ;n 77!7 a unui : logic dezactieaza ;ntreruperea # 5uncţia 77OMead> !nterrupt generează o ;ntrerupere constanta c-nd 77Q7 este &ters#

(itu# + F EEMGE : EEPROM Ma!ter Grite Ena0#e $acti9area 3unc@iei "rinci"a#e de !criere

EEPROM'4itul 77MQ7 determină dacă setarea lui 77Q7 la unu generează scrierea lui 77OM#C-nd este setat 77MQ7, setarea lui 77Q7 a produce scriere de date ;n 77OM la adresaselectată# $acă 77MQ7 este zero, atunci setarea lui 77Q7 nu a aea nici un e/ect#

(itu# 1 F EEGE : EEPROM Grite Ena0#e $acti9area !crierii EEPROM'Semnalul de actiare a scrierii 77OM 77Q7 este semnalul de scriere a 77OM# C-nd

adresa &i datele sunt setate corect, bitul 77Q7 trebuie să /ie scris la unu pentru ca aloarea să /iescrisă pe 77OM# 4itul 77MQ7 trebuie să /ie scris la unu ;nainte ca unu logic să /ie scris pe77Q7, alt/el nu a aea loc nici o scriere a 77OM# (rmătoarea procedură trebuie urmată c-ndse scrie 77OM *ordinea pasilor % si nu este esenţială+2

1# A&teptaţi p-nă c-nd 77Q7 deine zero'# A&teptaţi p-nă c-nd SM7 din SMC deine zero%# Scrietţi noua adresa 77OM pe9la 77A *opţional+# Scrieţi noile date 77OM pe9 la 77$*opţional+# Scrieţi unu logic pe9la bitul 77MQ7 ;n timp ce se scrie 77Q7 ;n 77C 6# En patru cicluri de ceas dupa ce s.a setat 77MQ7 , scrieţi unu logic pe 9la 77Q7#

77OM nu poate /i programat ;n timp ce C( scrie memoria /lash# So/t=are.ul trebuie săeri/ice dacă programarea memoriei /lash este completă ;nainte de a iniţia o nouă scriere a77OM# asul doi este releant doar ;n cazul ;n care programul so/t=are conţine un 4oot )oader*actiator de bootP+ care permite C( să programeze memoria /lash# $acă memoria /lash nu esteniciodată updatată de catre C(, atunci pasul doi poate /i omis#

Atentie: o ;ntrerupere ;ntre pasii si 6 a anula ciclul de scriere ,căci actiarea Master a77OM a /i anulată# $acă o rutină de accesare a 77OM ;ntrerupe o altă accesare 77OM,atunci regi&tri 77A &i 77$ or /i modi/icaţi, ast/el cauz-nd anularea accesului ;ntrerupt al77OM4it : – 777 2 Actiarea citirii 77OM

C-nd se setează adresa corectă a registrului 77A, bitul 777 trebuie să /ie scris pe unulogic ca să declan&eze citirea 77OM# Accesul la citirea 77OM se /ace cu o comandă &i datelecerute sunt disponibile imediat# C-nd 77OM este citit, C( este oprit timp de patru cicluri;nainte ca următoarea comandă sa /ie e0ecutată#

Oscilatorul calibrat este /olosit la cronometrarea accesărilor 77OM# Tabelul 1 arată timpiinormali de programare a accesarilor 77OM din C(#

Tabelul 1

1F

Page 16: 58907199 Curs Atmega 16 III Tet

8/10/2019 58907199 Curs Atmega 16 III Tet

http://slidepdf.com/reader/full/58907199-curs-atmega-16-iii-tet 16/138

Universitatea POLITEHICA din Bucuresti PROIECT DE DIPLOMĂ  Facultatea TRANSPORTURI

Catedra Telecomenzi şi Electronică în Transporturi 2007  

1.. S"atiu# de memorie IO

Toate !9O.urile de la ATmega 16 &i peri/ericele sunt plasate ;n spaţiul !9O# )ocaţiile !9O suntaccesate de către comenzile ! &i O(T , trans/er-nd datele dintre cei %' de regi&trii de lucru &ispaţiul !9O# egi&trii !9O cuprinsi ;ntre alorile adreselor R:: . R15 sunt direct accesate /olosind

comenzile S4! &i C4!# )a ace&ti regi&trii aloarea biţilor unici poate /i eri/icată utiliz-nd comenzileS4!S &i S4!C#C-nd se utilizează instrucţiunile speci/ice ! &i O(T, trebuie /olosite adresele !9O din zona

R:: . R%5# C-nd se adresează9accesează regi&trii !9O ca spaţiu de date cu instrucţiunile )$ &i ST,trebuie adaugat la aceste adrese, R':, adica salt peste zona regi&trilor de uz general#

1.4 Contro#u# !i!temu#ui Bi re!et u#

1.4.1 Re!etarea A,R 

  e durata resetarii, toţi regi&trii !9O sunt setaţi la alorile lor iniţiale, &i programul ;ncepee0ecuţia de la eset "ector# !nstrucţiunea amplasată la eset "ector trebuie să /ie o instrucţiuneBM.salt absolut.la procedura de e/ectuare a resetării #En cazul ;n care programul nu permiteniciodata o sursă ;ntreruptă, nu sunt /olosiţi ;n acest caz !nterrupt "ectors, &i codul de programobi&nuit poate /i amplasat la aceste locaţii# Acela&i lucru se ;ntamplă ;n cazul ;n care eset "ectoreste ;n seţiunea Application ;n timp ce !nterrupt "ectors sunt ;n sectiunea 4oot sau iners# $iagramade circuit din /igura 1 prezintă logica de resetare# Tabelul ' de/ine&te parametrii electrici aicircuitului de resetare#

orturile !9O ale A" sunt imediat resetate la starea lor iniţiala atunci c-nd o sursă deresetare deine actia# Acest lucru nu necesită rularea nici unei surse de ceas#

$upa ce toate sursele de resetare au deenit inactie, este inocat un numărător de ;ntarzieri,care e0tinde !nternal eset# Acest lucru permite puterii să atingă un niel stabil ;nainte să ;nceapa ooperaţie normală# S/ar&itul perioadei de timp de lucru al numaratorului de ;ntarzieri este de/inită decatre utilizator prin C3S7) 5uses##

1.4.+ Sur!e de re!etare 

ATmega 16 are cinci surse de reset2Po7eron Re!et# MC( este resetat atunci c-nd tensiunea de alimentare este sub pragul o=er.oneset#E?terna# Re!et# MC( este resetat atunci c-nd un niel scăzut este present pe pinul 7S7T pentru

mai mult dec-t lungimea de impuls minimă#Gatcdog Re!et# MC( este resetat atunci c-nd e0piră perioada Qatchdog Timer &i c-nd Qatchdogeste ;n /uncţiune#(ro7nout Re!et# MC( este resetat atunci c-nd tensiunea de alimentare "CC  este sub pragul4ro=n.out eset *"4OT+ &i atunci c-nd este pus ;n /uncţiune 4ro=n.out $etector#TA/ A,R Re!et# MC( este resetat at-ta timp c-t e0istă unu logic ;n eset egister, unul dintrelanţurile de scanare ale sistemului BTA@#

':

Page 17: 58907199 Curs Atmega 16 III Tet

8/10/2019 58907199 Curs Atmega 16 III Tet

http://slidepdf.com/reader/full/58907199-curs-atmega-16-iii-tet 17/138

Universitatea POLITEHICA din Bucuresti PROIECT DE DIPLOMĂ  Facultatea TRANSPORTURI

Catedra Telecomenzi şi Electronică în Transporturi 2007  

5ig#%#1' Schema logică a resetări 

Tabelul '

 

 otă2 1#o=er.on eset nu a /uncţiona dec-t dacă tensiunea de alimentare a /ost subaloarea "OT *;n scădere+#  '# "4OT poate /i sub tensiunea minimă nominală de operare ;n cazul anumitorcomponente# entru componente de acest /el, componenta este testată pana la "CC"4OT ;n timpul procesului de producţie# Acesta garantează /aptul că 4ro=n.out eset se a produce ;nainte ca "CC

să scadă la o tensiune c-nd modul de /uncţionare al microcontrolerului nu mai este garantat# Testuleste realizat /olosind 4O$)7"7)1 pentru ATmega16) si 4O$)7"7): pentruATmega16#4O$)7"7)1 nu este aplicabil pentru ATmega16#

'1

Page 18: 58907199 Curs Atmega 16 III Tet

8/10/2019 58907199 Curs Atmega 16 III Tet

http://slidepdf.com/reader/full/58907199-curs-atmega-16-iii-tet 18/138

Universitatea POLITEHICA din Bucuresti PROIECT DE DIPLOMĂ  Facultatea TRANSPORTURI

Catedra Telecomenzi şi Electronică în Transporturi 2007  

1.4. Pornire Re!etPo7eron Re!et 

(n impuls o=er.on eset este generat printr.un circuit de detecţie On.chip ielul dedetecţie este de/init ;n tabelul '# O este actiat de /iecare dată c-nd "CC  este sub nielul dedetecţie# Circuitul O poate /i /olosit pentru a declan&a Start.up eset, c-t &i pentru a detecta

absenţa tensiunii de alimentare# 5igura %#1%(n circuit o=er.on eset*O+ asigură /aptul că dispozitiul este resetat din o=er.on#

Ating-nd tensiunea de prag o=er.on eset inoca numărătorul de ;nt-rzieri, care determină c-ttimp dispozitiul este ţinut ;n 7S7T după ce "CC urcă# Semnalul de 7S7T este actiat din nou,/ară nici o ;ntarziere, atunci c-nd "CC descre&te sub nielul de detecţie#

5ig#%#1% MC( Start.up, 7S7T

 

5ig#%#1 MC( Start.up, 7S7T 70tended 70ternall>

1.4.4 Re!et e?ternE?terna# Re!et

 70ternal eset este generat de un niel scăzut pe pinul 7S7T# !mpulsurile eset mai multdec-t lungimea minimă de impuls *tabelul '+ a genera un reset, chiar dacă ceasul nu mai rulează#!mpulsurile mai scurte nu mai sunt garantate pentru a genera un reset# Atunci c-nd semnalul aplicatatinge tensiunea eset Treshold."ST.la -r/ul său poziti, numărătorul de ;nt-rzieri porne&te MC(după ce a e0pirat perioada de timp tTO(T#

''

Page 19: 58907199 Curs Atmega 16 III Tet

8/10/2019 58907199 Curs Atmega 16 III Tet

http://slidepdf.com/reader/full/58907199-curs-atmega-16-iii-tet 19/138

Universitatea POLITEHICA din Bucuresti PROIECT DE DIPLOMĂ  Facultatea TRANSPORTURI

Catedra Telecomenzi şi Electronică în Transporturi 2007  

5ig#%#1 70ternal eset

1.4.2 Monitori;area nu9e#u#ui ten!iunii de a#imentare 

ATmega16 are ;ncorporate un circuit On.chip 4ro=n.out $etection *4O$+ pentrumonitorizarea nielului tensiunii "CC pe durata /uncţionarii prin compararea acesteia cu un niel /i0de declan&are# ielul de declan&are pentru 4O$ poate /i selectat prin contopirea 4O$)7"7) sa/ie '#?" *4O$)7"7) neprogramat+, sau #:"*4O$)7"7) programat+# ielul de declan&are areun histerezis pentru a asigura o detecţie 4ro=n.out $etection liberă# <isterezisul de pe nielul dedetecţie ar trebui să /ie interpretat ca /iind

"4OT "4OT "<JST9' &i "4OT.  "4OT – "<JST9'

Circuitul 4O$ poate /i ;nchis9deschis prin /uziunea 4O$7# Atunci c-nd 4O$ este deschis*4O$7 programat+, si "CC descre&te la o aloarea sub nielul de declan&are *"4OT in /igura %#16+,

4ro=n.out eset este actiat imediat# Atunci c-nd "CC cre&te peste nielul de declana&re * "4OT in/igura %#16+, numărătorul ;nt-rzierilor porne&te MC( după ce perioada de timp tTO(T a e0pirat#

Circuitul 4O$ a detecta numai o cădere a "CC ;n cazul ;n care tensiunea răm-ne sub nielulde declan&are pentru un timp mai mare t4O$ prezentat in tabelul '# 

5ig#%#16 $etecţie 4ro=n.out

'%

Page 20: 58907199 Curs Atmega 16 III Tet

8/10/2019 58907199 Curs Atmega 16 III Tet

http://slidepdf.com/reader/full/58907199-curs-atmega-16-iii-tet 20/138

Universitatea POLITEHICA din Bucuresti PROIECT DE DIPLOMĂ  Facultatea TRANSPORTURI

Catedra Telecomenzi şi Electronică în Transporturi 2007  

1.4.6 Gatcdog Re!et 

Atunci c-nd Qatchdog e0piră, a genera un impuls de reset scurt pe durata unui ciclu C3#)a a-r/ul de cădere al acestui impuls, timerul de ;ntarziere ;ncepe să numere perioada de Time.out#

 5ig#%#1? Qatchdog reset

1.4.% Regi!tru# Contro# MCU Bi StareMCUCSR  MC(CS /urnizează in/ormaţie asupra careia sursa de reset a proocat un reset MC(#

 5ig#%#18 egistrul MC(CS 

(itu# 4 TR- Re!et -#agAcest bit este setat ;n cazul ;n care un reset este proocat de un unu logic ;n registrul BTA@

eset selectat prin instrucţiunea BTA@ A"U7S7T# Acest bit este resetat de către un reset o=er.on, sau prin scrierea unui zero logic la indicator#

(itu# GR-: Gatcdog Re!et -#agAcest bit este setat ;n cazul ;n care se produce o resetare a Qatchdog# 4itul este resetat

 printr.un o=er.on eset, sau prin scrierea unui zero logic la indicator#

(itu# + (OR-: (ro7nout Re!et -#ag

Acest bit este setat ;n cazul ;n care se produce 4ro=n.out eset# 4itul este resetat prino=er.on eset, sau prin scrierea unui zero logic la indicator#

(itu# 1 E*TR-: E?terna# Re!et -#agAcest bit este setat ;n cazul ;n care se produce 70ternal eset# Acest bit este resetat prin

o=er.on eset, sau prin scrierea unui zero logic la indicator# (itu# & POR-: Po7eron Re!et -#ag

'

Page 21: 58907199 Curs Atmega 16 III Tet

8/10/2019 58907199 Curs Atmega 16 III Tet

http://slidepdf.com/reader/full/58907199-curs-atmega-16-iii-tet 21/138

Universitatea POLITEHICA din Bucuresti PROIECT DE DIPLOMĂ  Facultatea TRANSPORTURI

Catedra Telecomenzi şi Electronică în Transporturi 2007  

Acest bit este setat ;n cazul ;n care se produce o=er.on eset# 4itul este resetat numai prinscrierea unui zero logic la /anion#

entru a /olosi eset 5lags pentru a identi/ica o condiţie de reset, utilizatorul ar trebui săcitească &i apoi să reseteze MC(CS c-t mai repede posibil ;n program# En cazul ;n care registruleste &ters ;nainte să se producă o alta resetare, sursa de resetare se poate găsi prin e0aminarea eset

5lags#1.4.D Ten!iunea intern de re3erin@

  ATmega 16 prezintă un spaţiu de re/erinţă intern# Această re/erinţă este /olosită pentrudetecţie 4ro=n.out , &i poate /i /olosită ca &i ie&ire la comparatorul analogic sau A$C# e/erinţa de'#6" la A$C este generată de către spaţiul de re/erinţă#

 Tensiunea de re/erinţă are un timp de declan&are care poate in/luenţa modul ;n care ar trebui/olosit#Timpul de pornire este dat ;n tabelul %# entru a economisi energie, re/erinţa nu este;ntotdeauna actiată# e/erinţa este actiată pe durata următoarelor situaţii21#Atunci c-nd 4O$ este actiat *prin programarea 4O$7 5use+#'#Atunci c-nd re/erinţa este conectată la comparatorul analogic *prin setarea bitului AC4@ ;nACS+#%#Atunci c-nd A$C este actiat#

Cu toate acestea, atunci c-nd 4O$ nu este actiat, după setarea bitului AC4@ sau actiareaA$C, utilizatorul trebuie ;ntotdeauna să permită actiarea re/erinţei ;naintea /olosirii ie&iriicomparatorului analogic sau A$C.ului# entru a reduce consumul de energie ;n modul o=er.do=n,utilizatorul poate eita cele trei condiţii de mai sus pentru a se asigura ca re/erinţa este inactia;nainte de intrarea ;n modul o=er.mode#

Tabelul %#

 

1.4.J Timeru# Gatcdog 

Timerul Qatchdog , /igura %#1F, este sincronizat de la un oscillator on.chip separat carerulează la 1Mhz# Aceasta este aloarea tipică la "CC  "# "edeţi datele de caracterizare pentrualori tipice la alte niele ale"CC# rin controlarea demultiplicatorului Qatchdog Timer, interalulQatchdog eset se poate aDusta a&a cum se arata ;n tabelul 1?# !nstrucţiunea Q$.Qatchdog eset.resetează timerul Qatchdog# Timerul Qatchdog este deasemenea resetat atunci c-nd este dezactiat&i atunci c-nd se produce Chip eset# Opt perioade de ciclu di/erite pot /i selectate pentru adetermina perioada de resetare# En cazul ;n care perioada de resetare e0piră /ară un alt Qatchdogeset, ATmega 16 resetează &i e0ecută din eset "ector#

entru a preeni dezactiarea neintentionata a Qatchdog, o secenta speciala de oprire trebuie să /ieurmată atunci c-nd Qatchdog este dezactiat# e/erire la descrierea registrului de control al timer.ului Qatchdog pentru mai multe detalii#

'

Page 22: 58907199 Curs Atmega 16 III Tet

8/10/2019 58907199 Curs Atmega 16 III Tet

http://slidepdf.com/reader/full/58907199-curs-atmega-16-iii-tet 22/138

Universitatea POLITEHICA din Bucuresti PROIECT DE DIPLOMĂ  Facultatea TRANSPORTURI

Catedra Telecomenzi şi Electronică în Transporturi 2007  

5ig#%#1F Timerul Qatchdog

Regi!tru# de contro# a# timeru#ui Gatcdog

 5ig#%#': egistrul de control la Qatchdog.ului

(itu# %..2 Re!: Re!er9ed (it!Ace&ti biţi sunt biţi rezeraţi ;n ATmega16 &i or /i ;ntotdeauna citiţi ca /iind zero#

(itu# 4GTOE :Gatcdog Turno33 Ena0#eAcest bit trebuie sa /ie setat atunci c-nd bitul Q$7 este scris la zero logic# En altă situaţie,

Qatchdog nu a /i dezactiat# Endata scris la unu, hard=are a &terge acest bit după patru cicluri deceas# e/erire la descrierea bitului Q$7 pentru o procedura de dezactiare a Qatchdog#

(itu# GE: Garcdog Ena0#eAtunci c-nd Q$7 este scris la unu logic, timerul Qatchdog este actiat, &i ;n cazul ;n care Q$7

este scris la zero logic, /uncţia timerului Qatchdog este dezactiată# Q$7 poate /i &ters numai ;ncazul ;n care bitul Q$TO7 are nielul logic unu# entru a dezactia &i a actia timerul Qatchdog ,trebuie urmată următoarea procedura2

1# En cazul aceleia&i operaţii, scrieţi un unu logic la Q$TO7 &i Q$7# (n unu logic trebuie sa/ie scris la Q$7 chiar dacă este setat la unu i;nainte să ;nceapa operatia de dezactiare#

'# En cadrul următoarelor patru cicluri de ceas, scrieţi un zero logic la Q$7# Acest lucrudezactiează Qatchdog.ul#

(i@i +..& GP+< GP1< GP&: Gatcdog Timer Pre!ca#er +< 1 Bi &4iţii Q$', Q$1, &i Q$: determină demultiplicarea timerului Qatchdog atunci c-nd

timer.ul Qatchdog este actiat# "alorile di/erite de demultiplicare &i perioadele lor de timeoutcorespunzătoare sunt prezentate ;n tabelul #

Tabelul #

'6

Page 23: 58907199 Curs Atmega 16 III Tet

8/10/2019 58907199 Curs Atmega 16 III Tet

http://slidepdf.com/reader/full/58907199-curs-atmega-16-iii-tet 23/138

Page 24: 58907199 Curs Atmega 16 III Tet

8/10/2019 58907199 Curs Atmega 16 III Tet

http://slidepdf.com/reader/full/58907199-curs-atmega-16-iii-tet 24/138

Universitatea POLITEHICA din Bucuresti PROIECT DE DIPLOMĂ  Facultatea TRANSPORTURI

Catedra Telecomenzi şi Electronică în Transporturi 2007  

Această secţiune descrie mecanismul ;ntreruperilor ;ndeplinite de ATmega 16#

1.2.1 ,ectorii ntreru"ere ai Atmega 16

  Tabelul

 Note: 1# Atunci c-nd /uzibilul 4OOTST este programat,mecanismul trece la adresa 4oot )oader pe eset#

'# Atunci c-nd bitul !"S) din @!C este setat,ectorul ;ntrerupere a /i mutat la ;nceputulsecţiunii 4oot 5lash#Adresa /iecărui ector ;ntrerupere a /i adresa din tabelul de maisus,adaugată la ;nceputul adresei din secţiunea 4oot 5lash#

'8

Page 25: 58907199 Curs Atmega 16 III Tet

8/10/2019 58907199 Curs Atmega 16 III Tet

http://slidepdf.com/reader/full/58907199-curs-atmega-16-iii-tet 25/138

Universitatea POLITEHICA din Bucuresti PROIECT DE DIPLOMĂ  Facultatea TRANSPORTURI

Catedra Telecomenzi şi Electronică în Transporturi 2007  

Tabelul de mai Dos e0empli/ică eset and !nterrupt "ectors identi/icaţi ;n combinaţii ariate alesetărilor 4OOTST &i!"S7)#$acă programul nu o/eră o sursă de ;ntrerupere , ectorii ;ntrerupere nu or /i utilizaţi &i

codurile de program uzuale pot /i amplasate ;n aceste locaţii# Acesta este &i cazul ;n care ectoruleset este ;n secţiunea Aplicaţie, ;n timp ce ectorii ;ntrerupere se a/lă ;n secţiunea 4oot sau ice

ersa#  Tabelul 6

Not : Siguranţa 4OOTST pentru V1W logic este neprogramată iar pentru V:W logic este

 programată#5orma generală a programării adreselor pentru ectorii eset &i !ntrerupere ;n cazul Atmega 16este 2

'F

Page 26: 58907199 Curs Atmega 16 III Tet

8/10/2019 58907199 Curs Atmega 16 III Tet

http://slidepdf.com/reader/full/58907199-curs-atmega-16-iii-tet 26/138

Universitatea POLITEHICA din Bucuresti PROIECT DE DIPLOMĂ  Facultatea TRANSPORTURI

Catedra Telecomenzi şi Electronică în Transporturi 2007  

Atunci c-nd siguranţa 4OOTST este neprogramată lungimea secţiunii 4oot este setată la'L biţi iar bitul !"S7) din registrul @!C este setat ;naintea oricărei posibilităţi de apariţie a unei

;ntreruperi# En acest caz /orma generală a programării adreselor ectorilor eset &i !ntrerupere este 2

Atunci c-nd siguranţa 4OOTST este programată &i secţiunea 4oot are lungimea setată la'L biţi /orma generală a programării adreselor ectorilor eset &i Entrerupere este 2

Atunci c-nd siguranţa 4OOTST este programată secţiunea 4oot este setată la lungimea de'L biţi &i bitul !"S7) din registrul @!C este setat ;naintea oricărei posibilităţi de apariţie a unei;ntreruperi , /orma generală a programării adreselor ectorilor eset &i Entrerupere este 2

%:

Page 27: 58907199 Curs Atmega 16 III Tet

8/10/2019 58907199 Curs Atmega 16 III Tet

http://slidepdf.com/reader/full/58907199-curs-atmega-16-iii-tet 27/138

Universitatea POLITEHICA din Bucuresti PROIECT DE DIPLOMĂ  Facultatea TRANSPORTURI

Catedra Telecomenzi şi Electronică în Transporturi 2007  

1.6 Tran!3eru# ntreru"eri#or ntre a"#ica@ie Bi !"a@iu# (oot

egistrul general de control al ;ntreruperilor supraeghează identi/icarea ectorului;ntrerupere este2

5ig#'1 egistrul @!C 

1.6.1 Regi!tru# genera# de contro# a# intreru"eri#or

(it 1 F I,SEL: Interru"t ,ector Se#ect

Atunci c-nd bitul !"S7) este : , ectorul ;ntrerupere este amplasat la ;nceputul memoriei5lash#C-nd acest bit este setat *pornit+, ectorul ;ntrerupere trece la ;nceputul secţiunii 4oot )oadera memoriei 5lash#Adresa nouă a ;nceputului secţiunii 4oot )oader este determinată de siguranţele4OOTSK# entru a se eita modi/icări nedorite ale ectorilor ;ntrerupere , pentru schimbarea bitului!"S7) trebuie urmată procedura următoare2

1#rogramarea bitului !nterrupt "ector Change 7nable *!"C7+ ;n unu#'#e parcursul a patru cicluri , se scrie alorea dorită pentru !"S7) pe durata trecerii ;n

zero a bitului !"C7#Entreruperile or /i automat dezactiate atunci c-nd această secţiune se e0ecută#Entreruperile

sunt dezactiate ;n ciclul ;n care !"C7 este setat,răm-n-nd dezactiate p-nă c-nd instrucţiunea de

scriere a bitului !"S7) este e0ecutată#En cazul ;n care bitul !"S7) nu este programat , ;ntreruperileor răm-ne dezactiate pe durata celor cicluri# 4itul ! din Status – egister nu a /i a/ectat dedezactiarea automată a ;ntreruperilor#

Not : $acă ectorii ;ntrerupere se găsesc ;n secţiunea 4oot )oader &i 4oot )ocL bit 4)4:' este programat ;ntreruperile sunt dezactiate pe durata e0ecuţiei aplicaţiei#$acă ectorii ;ntrerupere segăsesc ;n secţiunea aplicaţiei &i 4oot )ocL bit 4)4:' este programat , ;ntreruperile sunt dezactiate pe durata e0ecuţiei secţiunii 4oot )oader##(it & F I,CE: Interru"t ,ector Cange Ena0#e

%1

Page 28: 58907199 Curs Atmega 16 III Tet

8/10/2019 58907199 Curs Atmega 16 III Tet

http://slidepdf.com/reader/full/58907199-curs-atmega-16-iii-tet 28/138

Universitatea POLITEHICA din Bucuresti PROIECT DE DIPLOMĂ  Facultatea TRANSPORTURI

Catedra Telecomenzi şi Electronică în Transporturi 2007  

4itul !"C7 trebuie programat 1P logic pentru a ;mpiedica schimbarea bitului !"S7)#4itul !"C7este decodat hard=are pe durata a patru cicluri după programarea sa ,sau după programarea bitului!"S7)#Setarea bitului !"C7 a dezactia ;ntreruperile,ezi descrierea detaliată a !"S7) de mai sus#

1.% Porturi#e IO1.%.1 Introducere

Toate porturile A" , utilizate ca porturi digitale !9O ;ndeplinesc /uncţiile de citire9scriere &i pot /i modi/icate#Cu instrucţiunile S4! &i C4S direcţia unui port.pin poate /i schimbată /ără ca acest

lucru să a/ecteze ceilalţi pini#Aceste caracteristici se păstrează &i ;n cazul modi/icării alorii dedrier*dacă este con/igurat ca o ie&ire+ sau de actiare9dezactiare dacă rezistorii suntdezactiaţi*dacă este con/igurat ca o intrare+#5iecare bu//er de ie&ire are caracteristici de driesimetrice cu ambele capacităţi ale sursei#inul drier.ului are su/icientă putere pentru o a/i&aredirectă#Toţi pinii porturilor au /iecare rezistori de pull.up selectabili cu rezere de putere#Toţi pinii!9O au diode de protecţie la ambele surse de curent digitale si ;mpăm-ntare#

5ig#%#'' Schema echialentă a pinilor !9O

%'

Page 29: 58907199 Curs Atmega 16 III Tet

8/10/2019 58907199 Curs Atmega 16 III Tet

http://slidepdf.com/reader/full/58907199-curs-atmega-16-iii-tet 29/138

Universitatea POLITEHICA din Bucuresti PROIECT DE DIPLOMĂ  Facultatea TRANSPORTURI

Catedra Telecomenzi şi Electronică în Transporturi 2007  

Toţi regi&trii &i biţii la care se /ace re/erire ;n această secţiune sunt prezentaţi la /ormagenerală#(n niel scăzut V0W reprezintă numărul literei portului &i un niel scăzut VnW reprezintănumărul de bit#)a utilizarea regi&trilor &i biţilor ;n program, /orma precisă trebuie să /ie OT4% pentru bitul numărul % al portului 4, iar /orma generală este OT0n# entru /iecare port !9O suntalocaţi trei regi&trii,c-te unul pentru egistrul de $ate.OT0,egistrul 5lu0ului de $ate.$ata

$irection egister – $$0,&i portul de intrare al pinilor.ort !nput ins – !0# ort !nput ins !9Oeste read onl> iar $ata egister &i $ata $irection egister sunt read9=rite#Adiţional bitul ull.up$isable – ($ ;n S5!O c-nd este setat ,dezactiează rezistenţele pull.up pentru toţi pinii ;n toate porturile#

MaDoritatea pinilor porturilor sunt multiple0aţi cu /uncţii alternatie pentru caracteristicilemecanismelor de la peri/erie#!nteracţionarea /iecărei /uncţii alternatie cu /iecare port este prezentată ;n 5uncţii alternatie ale porturilorP#

Not2imposibilitatea de accesare a uneia dintre /uncţiile alternatie ale unuia dintre porturi nua/ectează utilizarea celorlaţi pini ;n portul respecti ca general digital !9O#

1.%.+ Porturi IOorturile sunt bi.direcţionale cu pull.up opţional intern#5igura %#'% prezintă /uncţionarea

unui port !9O, a pinului 0n2

  5ig %#'% @eleral digital !9O

%%

Page 30: 58907199 Curs Atmega 16 III Tet

8/10/2019 58907199 Curs Atmega 16 III Tet

http://slidepdf.com/reader/full/58907199-curs-atmega-16-iii-tet 30/138

Universitatea POLITEHICA din Bucuresti PROIECT DE DIPLOMĂ  Facultatea TRANSPORTURI

Catedra Telecomenzi şi Electronică în Transporturi 2007  

Not : Q0, Q$0, 0, 0, &i $0 sunt comuni tuturor pinilor ;n interiorul aceluiasi port#clL!9O,S)77, &i ($ sunt comuni tuturor porturilor#

1.%. Con3igurarea "ini#or

5iecare port este alcătuit din trei regi&trii 2 $$0n, OT0n,&i !0n#iţii $$0n sunt adresaţide $$0 !9O , biţii OT0n sunt adresaţi de OT0 !9O , biţii !0n sunt adresaţi de !0 !9O#

4itul $$0n din registrul $$0 selectează direcţia acestui pin#$acă $$0n este setat V1W logicatunci 0n este con/igurat ca pin de ie&ire#$aca $$0 este setat V:W logic 0n este con/igurat ca pinde intrare#

$aca OT0n este con/igurat V1W logic atunci c-nd pinul este setat ca pin de intrare ,rezistorul pull.up este actiat#entru ca rezistorul pull.up sa treacă ;n poziţia o// , OT 0n trebuiesă /ie setat ;n V:W logic sau pinul trebuie să /ie con/igurat ca un pin de ie&ire#Atunci c-nd /uncţiaeset deine actiă,portul pinilor are trei stări,chiar dacă ceasul nu /uncţionează#

$acă OT0n este con/igurat V1W logic atunci c-nd pinul este setat ca pin de ie&ire portul pinilor este unu# $acă OT0n este setat V:W logic atunci c-nd pinul este con/igurat ca pin de ie&ire portul pinilor este zero#

)a schimbarea ;ntre cele trei stări *X$$0n, OT0nY :b::+ &i ie&irea pe niel ;nalt*X$$0n,OT0nY :b11+, o stare intermediară cu posibilitatea pull.up *X$$0n, OT0nY:b:1+sau ie&irea la niel scăzut *X$$0n, OT0nY :b1:+ trebuie sa apară#En mod normal posibilitatea stării de pull.up este total acceptată,la /el cum o impedanţă ;naltă nu a sesiza di/erenţa;ntre un drier puternic &i un pull.up#$acă nu se ;nt-mplă acest lucru bitul ($ ;n registrul S5!O poate /i setat pentru dezactiarea tuturor pull.ups din toate porturile#

Schimbul dintre o intrare cu pull.up &i o ie&ire cu niel scăzut a genera aceea&i problemă#(tilizatorul trebuie să /olosească oricare din cele trei stări *X$$0n, OT0nY :b::+ sauie&irea de niel ;nalt *X$$0n, OT0nY :b11+ ca o etapă intermediară#

Tabelul ? rezumă controalele semnalelor pentru alorile pinilor 2

 

1.%.4 Citirea 9a#ori#or "ini#or

!ndependent de setările bitului $$0n – $ata $irection portul pinului poate /i citit prin !0negister bit#En /igura %#' se arată că !0n egister bit &i precedentul declic constituie un sincronizator# Acestaintroduce o ;nt-rziere dacă pinul /izic ;&i schimbă aloarea aproape de ma0imul ceasului intern

%

Page 31: 58907199 Curs Atmega 16 III Tet

8/10/2019 58907199 Curs Atmega 16 III Tet

http://slidepdf.com/reader/full/58907199-curs-atmega-16-iii-tet 31/138

Universitatea POLITEHICA din Bucuresti PROIECT DE DIPLOMĂ  Facultatea TRANSPORTURI

Catedra Telecomenzi şi Electronică în Transporturi 2007  

#5igura ' prezintă o diagramă de timp a sincronizării atunci c-nd se cite&te o solicitare e0ternă aalorii unui pin#Ma0imul &i minimul propagării unei ;nt-rzieri sunt indicate de tpd,ma0 &i tpd,min#

5ig#%#'

Se consideră perioada ceasului ;ncep-nd de la prima cădere a sistemului#$eclicul este ;nchisatunci c-nd ceasul este la un niel scăzut &i /uncţionează normal la un niel ridicat a&a cum se indică;n partea ha&urată a regiunii SJC )ATC<P a semnalului#"aloarea semnalului este schimbatăatunci c-nd mecanismul ceasului /uncţionează la un niel scăzut#5iecare succesiune pozitiă aceasului se contorizează ;n !0n egister#

Cele două săgeţi tpd,ma0 &i tpd,min,indică o singură tranziţie a semnalului asupra pinuluice a /i ;nt-rziată ;ntre Z &i 1Z din perioada timpului impus#)a citirea alorii pinului trebuie

e0ecutată instrucţiunea VnoW a&a cum se arată ;n 5igura %#'#!nstrucţiunea Vout W setează SJC)ATC<P pe partea pozitiă a ceasului#En acest caz ;nt-rzierea tpd ce trece prin sincronizator este deo perioadă#

5ig#%#'

%

Page 32: 58907199 Curs Atmega 16 III Tet

8/10/2019 58907199 Curs Atmega 16 III Tet

http://slidepdf.com/reader/full/58907199-curs-atmega-16-iii-tet 32/138

Universitatea POLITEHICA din Bucuresti PROIECT DE DIPLOMĂ  Facultatea TRANSPORTURI

Catedra Telecomenzi şi Electronică în Transporturi 2007  

(rmătorul e0emplu de codare prezintă modul de setare pentru ort 4 pin : &i nielul 1ridicat, nielul ' &i % scăzut de asemenea de/ine&te pinii portului de la la ? ca intrare cu pull.upsasociate pinilor 6 &i ? ai portului#"alorile pinilor rezultate sunt citite din nou,;nsă pentru păstrarea alorilor precedente este necesară

instrucţiunea ! no" #

Not : En programare sunt /olosite două registre temporare pentru minimizarea duratei de timp de lasetările pinilor :,1,6 si ? cu pull.up &i de/inirea biţilor ' &i % la niel scăzut precum &i rede/inirea bitilor : &i 1 ca drier la niel ;nalt#

1.%.2 Modu# !#ee" Bi intrarea digita#Con/orm prezentării din 5igura %#'% ,intrarea digitală a semnalului poate /i la masă cu o

intrare cu trigger schmitt#Semnalul denumit S)77 ;n /igură , este comandat de unitatea MC( Sleep Controller ;n

modul o=er.$o=n, modul o=er.sae ,modul Standb>, &i modul 70tended Standb> pentrueitarea consumului mare de putere ;n cazul ;n care unele semnale de intrare prezintă /luctuaţii last-nga sau se găsesc pe un niel aproape de "CC9'#

%6

Page 33: 58907199 Curs Atmega 16 III Tet

8/10/2019 58907199 Curs Atmega 16 III Tet

http://slidepdf.com/reader/full/58907199-curs-atmega-16-iii-tet 33/138

Universitatea POLITEHICA din Bucuresti PROIECT DE DIPLOMĂ  Facultatea TRANSPORTURI

Catedra Telecomenzi şi Electronică în Transporturi 2007  

S)77 este suprascris de pinii portului &i comunică cu pinii ;ntreruperilor e0terne#$acă ocerere de ;ntrerupere e0ternă nu este actiă, S)77 este acti pentru ace&ti pini#S)77 este deasemenea suprascris de o arietate de /uncţii alternatie#$aca pinul unei ;ntreruperi e0terneasicrone,prezent pe un niel logic ;nalt*V1W+, con/igurat ca Entrerupere asupra oricărei schimbărilogice asupra pinului P, nu este disponibil, atunci corespondenţa 70ternal !nterrupt 5lag a /i setată

c-nd ;n modul sleep apare o cerere logică de schimbare#1.%.6 -unc@ii a#ternati9e a#e "orturi#or

MaDoritatea pinilor porturilor au /uncţii alternatie associate cu @eneral $igital !9O#5igura%#'% prezintă modul ;n care pinul portului semnalului de control pornind de la 5igura %#'6simpli/icată poate /i suprascris de /uncţiile alternatie#70istă cazuri ;n care suprascrierea semnaluluisă nu se realizeze pentru toţi pinii portului dar /igura de mai Dos o/eră o descriere generală care poate/i aplicată tuturor pinilor porturilor ai microcontrolerelor din /amilia A"#

  5igura %#'6 5uncţii alternatie ale porturilor 

%?

Page 34: 58907199 Curs Atmega 16 III Tet

8/10/2019 58907199 Curs Atmega 16 III Tet

http://slidepdf.com/reader/full/58907199-curs-atmega-16-iii-tet 34/138

Universitatea POLITEHICA din Bucuresti PROIECT DE DIPLOMĂ  Facultatea TRANSPORTURI

Catedra Telecomenzi şi Electronică în Transporturi 2007  

Not: Q0, Q$0, 0, 0, &i $0 sunt comune tuturor pinilor aceluia&i port## clL!9OS)77, &i ($ sunt comune tuturor porturilor#Toate celelalte semnale sunt unice pentru /iecare pin#

Tabelul 8 rezumă toate /uncţiile de suprascriere a semnalului#inii &i porturile prezentate ;n 5igura

%#' nu sunt prezenţi ;n tabelul urmator #Semnalele de suprascriere sunt generate ;n modulele internecu /uncţiile alternatie#

Tabelul 8# Semnalele suprascrise pentru /uncţiile alternatie umele semnalului umele complet $escriere

(O7 ull.up Oerride 7nable

$acă semnalul este setat,pull.up enable este controlat desemnalul (O" #$acă acestsemnal este nul,pull.up esteacti c-nd X$$0n, OT0n,($Y :b:1:#

(O" oprit

$acă (O7 este acti,pull.up este actiat9dezactiatatunci c-nd (O" este pornit9oprit,indi/erent desetările $$0n, OT0n, &iregistrul de biţi ($ #

$$O7 $ata $irection Oerride

7nable

$acă semnalul esteacti,ie&irea $rier 7nableeste controlată de semnalul

$$O"#$acă acest semnaleste nul ie&irea drier.uluieste actiă prin egistrul de bit $$0n#

$$O" $ata $irection Oerride"alue

$acă $$O7 este acti,ie&ireadrier.ului esteactiată9dezactiată c-nd$$O" este pornit9opritindi/erent de setărileregistrului de bit $$0n#

"O7ort "alue Oerride 7nable

$acă acest semnal este acti

&i ie&irea drier.ului esteactiată aloarea portului esteactiată de semnalul"O"#$acă semnalul "O7este pornit &i iesirea drier.ului este actiă ort "alueeste controlat egistrul de bitOT0n#

"O" ort "alue Oerride "alue $acă "O7 este acti

%8

Page 35: 58907199 Curs Atmega 16 III Tet

8/10/2019 58907199 Curs Atmega 16 III Tet

http://slidepdf.com/reader/full/58907199-curs-atmega-16-iii-tet 35/138

Universitatea POLITEHICA din Bucuresti PROIECT DE DIPLOMĂ  Facultatea TRANSPORTURI

Catedra Telecomenzi şi Electronică în Transporturi 2007  

aloarea portului estecomandată de "O" ,indi/erent de setărileegistrului de bit OT0n#

$!7O7 $igital !nput 7nable Oerride7nable

$acă acest bit este acti

!ntrarea $igitala Actiă estecontrolată de semnalul$!7O"#$acă acest semnaleste oprit,!ntrarea $igitalăActiă este determinată destările MC( . ormalMode ,Slee Modes#

$!7O" $igital !nput 7nable Oerride"alue

$acă $!7O7 este acti!ntrarea $igitală esteactiată9dezactiată c-nd$!7O" este pornit9oprit

indi/erent de stările MC( ormal Mode ,Slee Modes#

$!$igital !nput

Aceasta este intrarea digitală pentru /uncţiile alternatie#En/igură semnalul este conectatla ie&irea cu mecanism dedeclan&are,;nsă ;nainteasincronizatorului#!ntrareadigitală este utilizată ca ceasmodulul cu /uncţiilealternatie /olosindu.se de

 propriul sincronizator#

A!OAnalog !nput9 output

Aceasta este !ntrarea9!e&ireaanalogică la9de la /uncţiilealternatie#Semnalul esteconectat direct la pad &i poate/i /olosită bidirecţional#

(rmatoarele secţiuni descriu /uncţiile alternatie pentru /iecare port,corelate cu suprascriereasemnalelor pentru /uncţiile alternatie#"ezi descrierea /uncţiilor alternatie pentru mai multe detalii#

S"ecia# -unction IO Regi!ter F S-IOR :

5ig#%#'? egistrul S5!O 

%F

Page 36: 58907199 Curs Atmega 16 III Tet

8/10/2019 58907199 Curs Atmega 16 III Tet

http://slidepdf.com/reader/full/58907199-curs-atmega-16-iii-tet 36/138

Universitatea POLITEHICA din Bucuresti PROIECT DE DIPLOMĂ  Facultatea TRANSPORTURI

Catedra Telecomenzi şi Electronică în Transporturi 2007  

C-nd acest bit este setat V1W porturile !9O sunt dezactiate chiar dacă registrele OT0n &i$$0n sunt con/igurate pentru a le actia *X$$0n, OT0nY :b:1+#"ezi con/igurarea pinilor pentru mai multe detalii despre aceste caracteristici#

1.%.% -unc@ii a#ternati9e a#e "ortu#ui A

ortul A are asociate /uncţii alternatie la /el ca intrarea analogică A$C#Aceste /uncţii sunt prezentate ;n Tabelul F# $acă unul din pinii portului A este con/igurat ca o ie&ire este esenţial să nucomute pe durata unei operaţii# Acest lucru ar putea a/ecta rezultatul /inal al operaţiei#

Tabelul F

Tabelul 1: &i Tabelul 11 prezină /uncţiile alternatie ale ortului A la suprascrierea semnaluluidescris ;n 5igura %# '

Tabelul 1:

:

Page 37: 58907199 Curs Atmega 16 III Tet

8/10/2019 58907199 Curs Atmega 16 III Tet

http://slidepdf.com/reader/full/58907199-curs-atmega-16-iii-tet 37/138

Universitatea POLITEHICA din Bucuresti PROIECT DE DIPLOMĂ  Facultatea TRANSPORTURI

Catedra Telecomenzi şi Electronică în Transporturi 2007  

Tabelul 11

 

1.%.D -unc@ii a#ternati9e a#e "ortu#ui (

Tabelul 1'

Con/iguraţia pinilor alternanţi este după cum urmează 2

SC F Port (< (it %SC32 Master ClocL output, Slae ClocL input pin pentru canalul S! #$acă S! este setat ca

slae atunci pinul este con/igurat ca o intrare indi/erent de setările lui $$4?#En cazul ;n care esteconectat ca master direcţia datelor ale acestui pin este controlată de $$4?#Atunci c-ndpnul stecomandat d p! să /ie o intrare, pull.up poate /i ;n continuare controlat de bitul OT4?#

MISO F Port (< (it 6M!SO2 Master $ata input, Slae $ata output pin pentru canalul S!# Atunci c-nd S! este

setat ca master pinul este con/igurat ca o intrare indi/erent de setările lui $$46#C-nd este setat ca

1

Page 38: 58907199 Curs Atmega 16 III Tet

8/10/2019 58907199 Curs Atmega 16 III Tet

http://slidepdf.com/reader/full/58907199-curs-atmega-16-iii-tet 38/138

Universitatea POLITEHICA din Bucuresti PROIECT DE DIPLOMĂ  Facultatea TRANSPORTURI

Catedra Telecomenzi şi Electronică în Transporturi 2007  

slae,direcţia datelor acestui pin este comandată de $$46#C-nd pinul este comandat de S! să /ie ointrare,pull.up poate /i ;n continuare comandat de bitul OT46#

MOSI F Port (< (it 2MOS!2 S! Master $ata output, Slae $ata input pentru canalul S!#Atunci c-nd S! este

actiat ca slae,pinul este con/igurat ca o intrare indi/erent de setările lui $$4#Atunci c-nd esteactiat ca master direcţia datelor acestui pin este controlată de $$4#En cazul ;n care acest pin este/orţat de S! să /ie o intrare,pull.up poate /i controlat ;n continuare de bitul OT4#

SS F Port (< (it 4SS2 Slae Select input#Cand S! este conectat ca slae,pinul este con/igurat ca o intrare

indi/erent de setările lui $$4#Ca slae S! este actiat atunci c-nd acest pin conduce slab#Atuncic-nd S! este actiat ca master, direcţia datelor acestui pin este controlată de $$4#C-nd acest pineste comandat de S! să /ie o intrare,pull.up poate /i ;n continuare controlat de OT4#

AIN1OC& F Port (< (it A!1, Analog Comparator egatie !nput#Seteaza pinul portului ca pe o intrare, cu pull.up

intern cu trans/er oprit pentru a se eita ca portul digital să interacţioneze cu /uncţiilecomparatorului#

OC:, Output Compare Match output inul 4% poate /i con/igurat ca intrare e0ternă pentruTimer9Counter: Compare Match#entru a ;ndeplini această /uncţie pinul 4% trebuie con/igurat ca oie&ire *$$4% set *one++#

inul OC: este de asemenea o ie&ire pentru QM modul de /uncţionare al timer.ului#

 AIN&INT+ F Port (< (it +A!:, Analog Comparator ositie input#Se con/igurează pinul portului ca o intrare cu pull.

up intern cu trans/er oprit pentru eitarea inter/erenţelor dintre /uncţionarea portului digital cu/uncţionarea unui Comparator#

!T', 70ternal !nterrupt Source '2 pinul 4' poate /i con/igurat ca o sursă de ;ntrereperie0ternă pentru MC(#

T1 F Port (< (it 1T1, Timer9Counter1 Counter Source#

T&*C F Port (< (it &T:, Timer9Counter: Counter Source#IC3, (SAT 70ternal ClocL#egistrul $ata $irection *$$4:+ eri/ică dacă ceasul este

setat la ie&ire *$$4: este acti+ sau la ie&ire *$$4: inacti+#inul IC3 este acti doar atunci c-nd(SAT operează ;n modul sincron#

Tabelul 1% &i Tabelul 1 prezintă /uncţiile alternatie ale portului 4 la suprascriereasemnalelor#

S! MST !(T &i S)A"7 O(T(T constituie semnalul M!SO,;n timp ce MOS! este;mpărţit ;n S! MST O(T(T &i S! S)A"7 !(T#

'

Page 39: 58907199 Curs Atmega 16 III Tet

8/10/2019 58907199 Curs Atmega 16 III Tet

http://slidepdf.com/reader/full/58907199-curs-atmega-16-iii-tet 39/138

Universitatea POLITEHICA din Bucuresti PROIECT DE DIPLOMĂ  Facultatea TRANSPORTURI

Catedra Telecomenzi şi Electronică în Transporturi 2007  

Tabelul 1%

Tabelul 1

1.%.J -unc@ii a#ternati9e "entru Port C

inii portului C cu /uncţiile lor alternatie sunt prezentaţi ;n Tabelul 1#$acă inter/aţa BTA@este actiă rezistorii pull.up ai pinilor C*T$!+, C%*TMS+ &i C'*TC3+ or /i actiaţi chiar dacăo resetare a aea loc#

%

Page 40: 58907199 Curs Atmega 16 III Tet

8/10/2019 58907199 Curs Atmega 16 III Tet

http://slidepdf.com/reader/full/58907199-curs-atmega-16-iii-tet 40/138

Universitatea POLITEHICA din Bucuresti PROIECT DE DIPLOMĂ  Facultatea TRANSPORTURI

Catedra Telecomenzi şi Electronică în Transporturi 2007  

Tabelul 1

Con/iguraţia pinilor alternanţi este urmatoarea2

 TOSC+ F Port C< (it %TOSC', Timer Oscillator pin '2 C-nd bitul AS' ;n ASS este acti pentru pornirea ceasului

Timer9Counter',;n modul asincron pinul C? este deconectat de la port &i deine ie&ire pentruoscilator#En acest mod Cr>stal Oscillator este conectat la acest pin &i pinul nu poate /i /olosit ca !9O#

 TOSC1 F Port C< (it 6TOSC1, Timer Oscillator pin 12 C-nd bitul AS' ;n ASSr este acti pentru pornirea ceasului

;n modul asincron,pinul C6 este deconectat de la port &i deine intrare pentru oscilator#En acestmod Cr>stal Oscillator este conectat la acest pin iar pinul nu mai poate /i /olosit ca !9O#

 TI F Port C< (it 2T$!, BTA@ Test $ata !n2 intrarea serială trans/eră datele ;n !nstruction egister sau ;n $ataegister#C-nd inter/aţa BTA@ este actiă pinul nu mai poate /i /olosit ca !9O#

TO F Port C< (it 4T$O, BTA@ Test $ata Out2 !e&irea serială din !nstruction register sau $ata egister#C-nd

inter/aţa BTA@ este actiă pinul nu mai poate /i /olosit ca !9O#

TMS F Port C< (it TMS, BTA@ Test Mode Select2Acest pin este /olosit pentru controlul /lu0ului prin

mecanismul TA#C-nd inter/aţa BTA@ este actiă pinul nu mai poate /i /olosit ca !9O#

 TC F Port C< (it +TC3, BTA@ Test ClocL2 BTA@ comunică sincron cu TC3#C-nd inter/aţa BTA@ este actiă

 pinul nu mai poate /i /olosit ca !9O#

SA F Port C< (it 1S$A, T=o.=ire Serial !nter/ace $ata2 C-nd bitul TQ7 ;n TC este acti pentru T=o.=ire

Serial !nter/ace,

Page 41: 58907199 Curs Atmega 16 III Tet

8/10/2019 58907199 Curs Atmega 16 III Tet

http://slidepdf.com/reader/full/58907199-curs-atmega-16-iii-tet 41/138

Universitatea POLITEHICA din Bucuresti PROIECT DE DIPLOMĂ  Facultatea TRANSPORTURI

Catedra Telecomenzi şi Electronică în Transporturi 2007  

inul C1 este deconectat de la port &i deine pin Serial $ata !9O pentru inter/aţa serială T=o.=ireSerial#En acest mod un /litru limitează semnalul la intrare la : ns pinul /uncţion-nd pe un canaldeschis cu această rată de limitare#C-nd acest pin este comanadat de inter/aţa T=o.=ire Serial!nter/ace,pull.up poate /i controlat ;n continuare de bitul OTC1#

SCL F Port C< (it &SC), T=o.=ire Serial !nter/ace ClocL2 C-nd bitul TQ7 ;n TQC este setat pentruactiarea inter/eţei T=o.=ire Serial pinul C: se deconectează de la port &i deine pinul SerialClocL !9O pentru inter/aţa T=o.=ire Serial# En acest mod un /iltru limitează la intrare semnalul la :ns pinul /uncţion-nd pe un canal deschis cu această rată de limitare#C-nd acest pin este comandat deinter/aţa T=o.=ire Serial , pull.up poate /i comandat ;n continuare de OTC:#

Tabelul 16 prezintă /uncţiile alternatie ale ortului C pentru suprascrierea semnalului#

Tabelul 16

Not :  En modul acti inter/aţa T=o.=ire Serial dezactiează pinii C: &i C1#Acest lucrunu este prezentat ;n /igură#5iltrele sunt conectate ;ntre ie&ire &i A!O modulul logic al TQ!#

1.%.1& -unc@ii a#ternati9e a#e "ortu#ui

inii ortului $ sunt prezentaţi ;n Tabelul 1?#

Tabelul 1?

Page 42: 58907199 Curs Atmega 16 III Tet

8/10/2019 58907199 Curs Atmega 16 III Tet

http://slidepdf.com/reader/full/58907199-curs-atmega-16-iii-tet 42/138

Page 43: 58907199 Curs Atmega 16 III Tet

8/10/2019 58907199 Curs Atmega 16 III Tet

http://slidepdf.com/reader/full/58907199-curs-atmega-16-iii-tet 43/138

Universitatea POLITEHICA din Bucuresti PROIECT DE DIPLOMĂ  Facultatea TRANSPORTURI

Catedra Telecomenzi şi Electronică în Transporturi 2007  

Tabelul 1F

 1.%.1& e!crierea regi!tre#or "entru Porturi#e IO

?

Page 44: 58907199 Curs Atmega 16 III Tet

8/10/2019 58907199 Curs Atmega 16 III Tet

http://slidepdf.com/reader/full/58907199-curs-atmega-16-iii-tet 44/138

Universitatea POLITEHICA din Bucuresti PROIECT DE DIPLOMĂ  Facultatea TRANSPORTURI

Catedra Telecomenzi şi Electronică în Transporturi 2007  

1.D Kntreru"eri e?terne

Entreruperile e0terne sunt comandate de pinii !T:, !T1, &i !T'#Entreruperile e0terne or/i actie chiar dacă pinii !T:, !T1, &i !T' sunt con/iguraţi ca ie&iri#Această caracteristică o/eră posibilitatea rulării unui so/t=are al ;ntreruperilor#Entreruperile e0terne pot /i declan&ate de un /rontscăzut sau ;nalt *niel+# !T' este accesat doar la niel ;nalt#Aceste caracteristici se găsesc ;nspeci/icaţiile pentru MC( Control egister –MC(C – &i MC( Control &i Status egister –MC(CS#C-nd o ;ntrerupere e0ternă este actiă &i con/igurată ca niel declan&ator *doar!T:9!T1+,;ntreruperea se a menţine ;n stare actiă c-t timp pinul se a/lă pe un niel scăzut#A se

8

Page 45: 58907199 Curs Atmega 16 III Tet

8/10/2019 58907199 Curs Atmega 16 III Tet

http://slidepdf.com/reader/full/58907199-curs-atmega-16-iii-tet 45/138

Universitatea POLITEHICA din Bucuresti PROIECT DE DIPLOMĂ  Facultatea TRANSPORTURI

Catedra Telecomenzi şi Electronică în Transporturi 2007  

nota că recunoa&terea scăderii sau cre&terii propagării ;ntreruperii asupra pinilor !T: sau !T1necesită e0istenţa unui ceas !9O#Entreruperile de niel scăzut asupra pinilor !T:9!T1 &i celsuperior pe !T1 sunt detectate asincron#Acest lucru implică /aptul că ;ntreruperile pot /uncţionaat-t ca parte din modul sleep c-t &i ca parte din modul idle#!9O nu /uncţionează ;n modurile sleepe0cepţie /ac-nd modul idle#

$acă un niel declan&ator de ;ntreruperi este utilizat pentru a porni modul o=er.do=nacesta trebuie menţinut ast/el pentru pornirea MC(#Acest lucru /ace ca MC( să /ie mai puţinsensibilă la zgomot#ielul modi/icat trebuie menţinut ast/el pentru ceasul QatchdogOscillator#erioada Qatchdog Oscillator este de 1 [s *nominal+ la #:" la '\C#MC( a porni dacăintrarea este pe nielul dorit pe perioada testării sau este con/irmată p-nă la s/ar&itul perioadei detimp#Enceputul timpului respecti este de/init de siguranţele S(T #En cazul ;n care nielul estechestionat de două ori de ceasul Qatchdog Oscillator dar dispare ;naintea terminării timpului,MC(ram-ne actiă,dar nici o ;ntrerupere nu se a genera#Cererea de niel trebuie menţinută un timpsu/icient să /inalizeze procedura de declan&are a nielului de ;ntreruperi#

1.D.1 MCU Contro# Regi!ter F MCUCR  2MC( Control egister conţine biţi de control pentru controlul sensului ;ntreruperilor &i

/uncţii generale ale MC(#

5ig#%#'8 egistrul MC(C 

(it < + F ISC11< ISC1&: Interru"t Sen!e Contro# 1 (it 1 and (it &Entreruperea e0ternă 1 este actiată de pinul e0tern !T1 daca S7@ !.bit &i corespondenţacu magistrala de ;ntreruperi @!C este setată#ielul &i /ronturile pinului e0tern !T1 careactiează ;ntreruperea sunt prezentate ;n Tabelul %#Enaintea atingerii -r/urilor, aloarea pinului!T1 este de două ori testată# $acă /rontul superior al ;ntreruperii este acti pulsurile care or duramai mult de o perioadă or genera ;ntreruperi# En cazul ;n care nielul in/erior este acti,pentru agenera o ;ntrerupere se e0ecută mai ;nt-i instrucţiunea curentă#

Tabelul ':

 (it 1< & F ISC&1< ISC&&: Interru"t Sen!e Contro# & (it 1 and (it &Entreruperea e0ternă : este actiată de pinul e0tern !T: dacă S7@ !./lag &i corespondenţa

cu magistrala ;ntreruperilor este setată#ielurile &i /ronturile pinului e0tern !T: care comandă;ntreruperea sunt de/inite ;n Tabelul %#"aloarea pinului !T: este testată ;naintea detectării

F

Page 46: 58907199 Curs Atmega 16 III Tet

8/10/2019 58907199 Curs Atmega 16 III Tet

http://slidepdf.com/reader/full/58907199-curs-atmega-16-iii-tet 46/138

Universitatea POLITEHICA din Bucuresti PROIECT DE DIPLOMĂ  Facultatea TRANSPORTURI

Catedra Telecomenzi şi Electronică în Transporturi 2007  

-r/urilor#$acă nielul superior al ;ntreruperii este acti,pulsurile a căror durată este mai mare de o perioadă or genera o ;ntrerupere#$acă nielul in/erior al ;ntreruperilor este acti, pentru a genera o;ntrerupere se e0ecută mai ;nt-i instrucţiunea curentă#

Tabelul '1

1.D.+ MCU Contro# Bi Statu! Regi!ter F MCUCSR 

5ig#%#'F egistrul MC(CS 

 (it 6 F ISC+: Interru"t Sen!e Contro# +As>nchronous 70ternal !nterrupt ' este actiată de pinul e0tern !T' S7@ !.bit &i

corespondenţa cu magistrala @!C este setată#$acă !SC' este setat V:W logic nielul superior al!T' actiează ;ntreruperea#ielurile lui !T' lucrează ;n modul asincron#ulsurile !T' mai micidecat minimul stabilit or genera o ;ntrerupere#)a schimbarea logică a bitului !SC' poate să apară o;ntrerupere# entru aceasta este recomandat să se dezactieze !T' prin trecerea ;n starea Vo//W ;n

registrul @!C a bitului !nterrupt 7nable#$upă aceea bitul !SC' poate /i modi/icat#En /inal bitul!T' !nterrupt 5lag trebuie dezactiat prin trecerea ;n V1W logic ;n registrul @!5 ;nainte de producerea unei noi ;ntreruperi#

Tabelul# ''

1.D. /enera# Interru"t Contro# Regi!ter F /ICR 

5ig#%#%: egistrul @!C 

:

Page 47: 58907199 Curs Atmega 16 III Tet

8/10/2019 58907199 Curs Atmega 16 III Tet

http://slidepdf.com/reader/full/58907199-curs-atmega-16-iii-tet 47/138

Universitatea POLITEHICA din Bucuresti PROIECT DE DIPLOMĂ  Facultatea TRANSPORTURI

Catedra Telecomenzi şi Electronică în Transporturi 2007  

(it % F INT1: E?terna# Interru"t Reue!t 1 Ena0#eC-nd biţii !T1 &i !.bit ;n Status egister *S7@+ sunt actii pinul e0tern de ;ntrerupere este

disponibil#4itul !nterrupt Sense Control1 19: *!SC11 si !SC1:+ ;n MC( @eneral Control egister *MC(C+actiează orice ;ntrerupere e0ternă indi/erent de nielul superior sau in/erior al !T1#Acţiunea

asupra acestui pin a genera o cerere de ;ntrerupere chiar dacă !T1 este con/igurat ca oie&ire#)egătura cu 70ternal !nterrupt e]uest 1 este realizată cu ectorul ;ntrerupere !T1#

 (it 6 F INT&: E?terna# Interru"t Reue!t & Ena0#eC-nd biţii !T: &i !.bit ;n Status egister *S7@+ sunt actii pinul e0tern de ;ntrerupere este

disponibil# 4iţii !nterrupt Sense Control: 19: *!SC:1 &i !SC::+ ;n MC( @eneral Control egister*MC(C+ actiează orice ;ntrerupere e0ternă indi/erent de nielul superior sau in/erior al !T1#Acţiunea asupra acestui pin a genera o cerere de ;ntrerupere chiar dacă !T: este con/igurat ca oie&ire# )egătura cu 70ternal !nterrupt e]uest : este realizată cu ectorul ;ntrerupere !T:#

(it 2 F INT+: E?terna# Interru"t Reue!t + Ena0#eC-nd !T' &i !.bit ;n Status egister *S7@+ sunt actii pinul e0tern de ;ntrerupere este

disponibil# 4itul !nterrupt Sense Control' !SC'+ ;n MC( Control Status egister *MC(CS+actiează orice ;ntrerupere e0ternă indi/erent de nielul superior sau in/erior al !T'# Acţiuneaasupra acestui pin a genera o cerere de ;ntrerupere chiar dacă !T' este con/igurat ca oie&ire#)egătura cu 70ternal !nterrupt e]uest ' este realizată cu ectorul ;ntrerupere !T'#

.D.4 /enera# Interru"t -#ag Regi!ter F /I-R 

5ig#%#%1 egistrul @!5 

(it % F INT-1: E?terna# Interru"t -#ag 1C-nd un niel sau o schimbare logică asupra pinului !T1 declan&ează o cerere de

;ntrerupere !T5: deine acti#$aca biţii !.bit ;n S7@ &i the !T: bit ;n @!C sunt actii MC( a/ace un salt la corespondenţa cu ectorul ;ntrerupere# 5lag.ul este inacti atunci c-nd se e0ecutărutina de ;ntreruperi#$e asemenea /lag.ul poate /i inacti prin atribuirea alorii logice V1W#Acest /lageste ;ntotdeauna acti atunci c-nd pinul !T: este con/igurat ca niel de ;ntrerupere#

(it 2 F INT-+: E?terna# Interru"t -#ag +C-nd un eeniment asupra pinului !T' declan&ează o cerere de ;ntrerupere !T5' a /i

actiat# $aca biţii !.bit ;n S7@ &i !T' bit ;n @!C sunt actii MC( a /ace un salt lacorespondenţa cu ectorul ;ntrerupere#

5lag.ul este inacti atunci c-nd se e0ecută rutina de ;ntreruperi# $e asemenea /lag.ul poate /iinacti prin atribuirea alorii logice V1W#A se nota că atunci c-nd ;n modul sleep ;ntreruperea pinului!T' este dezactiată intrarea bu//er.ului asupra acestui pin a /i dezactiată#Aceasta a duce laactiarea /lag.ului !T5'# 

1

Page 48: 58907199 Curs Atmega 16 III Tet

8/10/2019 58907199 Curs Atmega 16 III Tet

http://slidepdf.com/reader/full/58907199-curs-atmega-16-iii-tet 48/138

Universitatea POLITEHICA din Bucuresti PROIECT DE DIPLOMĂ  Facultatea TRANSPORTURI

Catedra Telecomenzi şi Electronică în Transporturi 2007  

1.J 160it TimerCounter

.blocul principal este unitatea de numărare bidirecţionala programată pe 16 biţi# En /igura %#%' este prezentată diagrama bloc a unităţii de numărare#

5ig# %#%'Semnalele2Count  incrementează9decrementează TCT1 cu 1#irection selectează interalul pentru incrementare sau decrementare##C#ear dezactiează TCT1 *trece toţi biţii ;n zero#+#c#>T1 ceasul Timer9CounterTOP semnalizează c-nd TCT1 a atins aloarea ma0imă#(OTTOM  semnalizează c-nd TCT1 a atins aloarea minimă#

 umărătorul pe 16 biţi este integrat ;n doua locaţii de memorie !9O pe 8 biţi2 Counter #i$%*TC&T'# +conţine cei opt biţi de pe nielul cel mai ;nalt al numărătorului, &i Counter Lo( *TCT1)+conţin-nd cei opt biţi de pe nielul in/erior#egistrul TCT1< este acţionat indirect de C(#C-ndC( eliberează o locaţie TCT1< !9Ose accesează bitul registrului temporar *T7M+#Acest registru este actualizat de TCT1< atuncic-nd TCT1)este citit,&i TCT1< este actualizat cu aloarea din registrul temporar c-nd TCT1) este scris#

Aceasta permite ca C( să e0ecute operaţiile de citire &i scriere pe durata unui singur ciclual ceasului# Scrierea ;n registrul TCT1 c-nd numărătorul este pornit poate duce la rezultatenea&teptate#Aceste cazuri sunt prezentate pe parcursul secţiunilor unde acestea sunt maiimportante#En /uncţie de operaţia care se dore&te a /i e0ecutată contorul estedezactiat,incrementat,decrementat pentru /iecare tact *clLT1+# clLT1 poate /i accesat de la o sursăde ceas internă sau e0ternă selectată de Cloc) *elect bits *CS1'2:+#Atunci c-nd *CS1'2: :+ nu esteselectată timer.ul este oprit# TCT1 poate /i comandată de C( indi/erent dacă clLT1 este acti saunu#C-nd C( suprascrie toate contoarele sunt dezactiate &i toate operaţiile de contorizare suntoprite#

Secenţa de numărare este comandată de +ave,or- .eneration Mode  biţii *Q@M1%2:+amplasată ;n egistrul A &i egistrul 4 Ti-er/Counter Control Re$isters A &i 4 *TCC1A siTCC14+#Cone0iunile sunt ;nchise ;ntre pornirea contorului &i generarea /ormelor de undă de cătreOutput Compare outputs OC10# Ti-er/Counter Over,lo( *TO"1+ /lag este actiat ;n /uncţie demodul de operare selectat de biţii Q@M1%2:#TO"1 poate /i utilizat pentru a genera o ;ntrerupere către C(#

'

Page 49: 58907199 Curs Atmega 16 III Tet

8/10/2019 58907199 Curs Atmega 16 III Tet

http://slidepdf.com/reader/full/58907199-curs-atmega-16-iii-tet 49/138

Universitatea POLITEHICA din Bucuresti PROIECT DE DIPLOMĂ  Facultatea TRANSPORTURI

Catedra Telecomenzi şi Electronică în Transporturi 2007  

1.J.1 In"ut Ca"ture Unit

Timer9Counter deţine o unitate numită !nput Capture (nit care poate prelua eentualeleeenimente e0terne,d-ndu.le un nume de identi/icare a timpului la care s.au produs#Semnalul e0tern

care indică producerea unui eeniment e0tern sau a mai multor,poate /i accesat de pinii !C1 saualternati de unitatea Analog Comparator#!denti/icatorul de timp poate /i utilizat pentru calcularea/recenţei,dut>.c>cle,&i alte caracteristici ale semnalului aplicat#En plus,identi/icatorul de timp poate/i utilizat pentru a crea un Durnal al ;ntreruperilor#

$iagrama bloc a !nput Capture (nit este prezentată ;n 5igura %#%%#7lementele care nu /ac parte ;n mod direct din diagrama bloc sunt descrise de culoarea gri#)itera Vn utilizată l-ngă registresau biţi indică numărul Timer9Counter 

5ig# %#%%

C-nd o schimbare are loc asupra nielului logic al pinului  Inut Cature in *!C1+ sauasupra  nalo$ Co-arator outut *ACO+,&i această schimbare este con/irmată de detectorul de-r/,atunci o captare a /i declan&ată#C-nd această captare este declan&ată cei 16 biţi ai alorilorcounter.ului *TCT1+ sunt transmi&i către  Inut Cature Re$ister *!C1+#  Inut Cature Fla$*!C51+ este setat de acela&i ceas care copiază aloarea TCT1

;n registrul !C1#$aca T!C!71 1 generează input capture interrupt# !C51 /lag este automatdezactiat atunci c-nd ;ntreruperea este e0ecutată#Alternati, !C51 /lag poate /i dezactiat printrecerea bitului !9O ;n V1W logic#

Citind alorile celor 16 biţi din Inut Cature Re$ister *!C1+ se realizeazaă prin citireanielului lo= &i citirea nielului high *!C1) si !C1<+#C-nd nielul lo= este citit nielul high estecopiat ;n registrul temporar T7M#C-nd C( cite&te !C1< ,locaţia !9O a accesa registrul T7M#

egistrul !C1 poate /i scris doar de Qae/orm @eneration care ;l utilizează pentrude/inirea alorii TO a contorului#4iţii +ave,or- .eneration -ode *Q@M1%2:+ trebuie setaţi

%

Page 50: 58907199 Curs Atmega 16 III Tet

8/10/2019 58907199 Curs Atmega 16 III Tet

http://slidepdf.com/reader/full/58907199-curs-atmega-16-iii-tet 50/138

Universitatea POLITEHICA din Bucuresti PROIECT DE DIPLOMĂ  Facultatea TRANSPORTURI

Catedra Telecomenzi şi Electronică în Transporturi 2007  

;nainte ca ;n registrul !C1 să /ie scrisă aloarea TO#)a scrierea ;n registrul !C1 bitul hightrebuie scris ;n locaţia !C1< !9O ;nainte ca bitul lo= să /ie scris ;n !C1)#

1.J.+ In"ut Ca"ture Trigger Source

Corpul principal al sursei declan&atoare pentru input capture unit este  Inut Cature in*!C1+# Timer9Counter1 poate /olosi ie&irea Analog Comparator ca sursă declan&atoare pentru inputcapture unit# Analog Comparator este setat ca sursă declan&atoare prin actiarea bitului  nalo$Co-arator Inut Cature *AC!C+ ;n registrul  nalo$ Co-arator Control and *tatus Re$ister*ACS+#)a schimbarea sursei declan&atoare se poate declan&a o captură# !nput capture /lag trebuiedezactiat ;naintea schimbării#

Ambele intrări  Inut Cature in *!C1+ si  nalo$ Co-arator outut *ACO+ sunt aleaceluia&i pin T1# $etectorul de niel este identic#Atunci c-nd noise canceler este acti,un niel logiceste inserat ;naintea detectorului de -r/,prin introducerea unei ;nt-rzieri pe durata a patrucicluri#!ntrarea pentru noise canceler &i detectorul de -r/ este ;ntotdeauna disponibilă ,doar dacăTimer9Counter nu este setat ;ntr.un mod de generare a undelor utilizat de registrul !C1 pentru ade/ini aloarea TO#

O intrare de captură poate /i declan&ata de pinul portului !C1#

1.J. Noi!e Cance#er

 oise canceler introduce imunitatea la zgomot utiliz-nd un /iltru digital#!ntrarea noise canceler este monitorizată ;n patru etape &i toate patru trebuie să /ie egale

 pentru a modi/ica ie&irea utilizată de detectorul de niel#oise canceler deine acti prin setarea bitului  Inut Cature &oise Canceler *!CC1+ ;n egistrul 4 Ti-er/Counter Control*TCC14+#Atunci c-nd noise canceler este acti se introduce o ;nt-rziere egală cu patru cicluri deceas la schimbarea ie&irii pentru actualizarea registrului !C1#oise canceler utilizează sistemul deceas &i nu este a/ectat de prescalare#

1.J.4 -o#o!irea In"ut Ca"ture Unit

rincipala sarcină a unităţii de capturare la intrare este de a pune la dispoziţie su/icientămemorie din cea a procesorului pentru apariţia de eentuale eenimente#Timpul dintre douăeenimente este critic#$acă procesorul nu a citit aloarea asociată capturii ;n egistrul !C1,;naintede apariţia unui nou eeniment !C1 a /i suprascris cu o nouă aloare#En acest caz aloareaasociată capturii a /i incorectă#

(tiliz-nd input capture interrupt,registrul !C1 poate /i citit ;naintea producerii rutinei;ntreruperilor#Chiar dacă input capture interrupt are prioritate ridicată,timpul ma0im de răspuns la;ntrerupere depinde de numărul ma0im de cicluri necesare tratării unei cereri de;ntrerupere#(tilizarea unităţii input capture ;n orice mod de operare atunci c-nd aloareaTO*rezoluţia+ este actiă pe durata operării,nu este recomandată#

$urata unui ciclu pentru un semnal e0tern impune ca declan&atorul de niel să /ie schimbatdupă /iecare captură# Schimbarea de niel trebuie să se realizeze ;nainte de citirea registrului!C1#)a schimbarea de niel input capture /lag *!C51+ trebuie dezactiat prin trecerea bitului !9O ;nV1W logic#entru măsurarea /recenţei,dezactiarea /lag.ului !C51 nu este recomandată *dacă o;ntrerupere este ;n curs+#

Page 51: 58907199 Curs Atmega 16 III Tet

8/10/2019 58907199 Curs Atmega 16 III Tet

http://slidepdf.com/reader/full/58907199-curs-atmega-16-iii-tet 51/138

Universitatea POLITEHICA din Bucuresti PROIECT DE DIPLOMĂ  Facultatea TRANSPORTURI

Catedra Telecomenzi şi Electronică în Transporturi 2007  

1.J.2 Out"ut Com"are Unit!

Comparatorul pe 16 biţi compară TCT1 cu ie&irea registrului Outut Co-are Re$ister*OC10+#$acă TCT este egal cu OC10 comparatorul semnalizează o potriire#Aceasta setează

Outut Co-are Fla$ *OC510+ pentru urmatorul ciclu de ceas# $acă OC!710 1, Output Compare /lag generează o ie&ire outputcompare interrupt#OC510 /lag este dezactiat automat atunci c-nd se e0ecută o ;ntrerupere# OC510 /lag poate /i deasemenea dezactiat prin trecerea ;n V1W logic a bitului !9O#@eneratorul de undă utilizează potriireade semnale pentru a genera o ie&ire ;n concordanţa cu biţii +ave,or- .eneration -ode *Q@M1%2:+&i Co-are Outut -ode *COM1012:+#Semnalele TO &i 4OTTOM sunt utilizate de generatorul deundă pentru tratarea cazurilor speciale cu alori e0treme ;n unele moduri de operare#O caracteristicăspecială a ie&irii unităţii de comparare permite de/inirea alorii TO pentru Timer9Counter#Aceastăaloare de/ine&te perioada de timp necesară generatorului de undă pentru e0ecutare#

5igura %#% prezintă diagrama bloc a unităţii output compare unit#)itera VnW asociată numeluiregistrului &i numelui bitului indică numărul asociat n 1 pentru Timer9Counter1,&i litera V0W indicăoutput compare unit *A94+#7lementele care nu /ac parte din blocul principal al unităţii output compare unit sunt reprezentate ;nculoarea gri#

5ig# %#%

egistrul OC10 are bu//er dublu la utilizarea unuia din cele doisprezece moduri  Pulse+idt% Modulation *QM+#En modul de operare Clear Ti-er on Co-are *CTC+ bu/err.ul dublu estedezactiat#4u//er.ul dublu sincronizează actualizarea registrului OC10 Compare egister cu cea a/ronturilor TO &i 4OTTOM din secenţa de numărare#Această sincronizare preine propagarea pulsurilor nesimetrice,cu lungimi di/erite,priind căderile libere la ie&ire#

Page 52: 58907199 Curs Atmega 16 III Tet

8/10/2019 58907199 Curs Atmega 16 III Tet

http://slidepdf.com/reader/full/58907199-curs-atmega-16-iii-tet 52/138

Universitatea POLITEHICA din Bucuresti PROIECT DE DIPLOMĂ  Facultatea TRANSPORTURI

Catedra Telecomenzi şi Electronică în Transporturi 2007  

Accesarea registrului OC10 poate /i comple0ă ;nsă nu ;n acest caz#Atunci c-nd bu//er.uldublu este acti C( are acces la registrul OC10 4u//er egister,iar ;n cazul ;n care estedezactiat,C( are acces direct la registrul OC10#Conţinutul registrului OC10 poate /i modi/icatdoar prin scriere*Timer9Counter nu actualizează automat acest registru ca ;n cazul registrelorTCT1 &i !C1#$in acest moti OC10 nu este citit de bitul /rontului ;nalt al registrului temporar

T7M#Enaintea manipulării celor 16 biţi este de pre/erat să se citească bitul de pe /rontul in/erior#Scrierea ;n registrul OC10 trebuie să se realizeze prin registrul T7M ;n cazul ;n care comparareacelor 16 biţi decurge ;n mod continuu#4itul de pe /rontul superior trebuie să /ie primul scris#Atuncic-nd adresa bitului !9O de pe /rontul superior este scrisă de către C(,registrul T7M se aactualiza cu aloarea care a /ost scrisa#C-nd bitul de pe /rontul in/erior *OC10)+ este scris de ceiopt biţi in/eriori,bitul superior a /i copiat l-nga cei opt biţi de pe /rontul superior sau ;n bu//er.ulOC10 ,sau ;n registrul OC10 Compare,totul ;n acela&i ciclu de ceas#

1.J.6 -orce Out"ut Com"are

En modul QM de generare a /ormelor de undă asignarea ie&irii comparatorului poate /iscrisă prin trecerea ;n V1W a bitului Force Outut Co-are *5OC10+#Acest lucru nu a actia steagulOC510 sau nu a actia9dezactia timer.ul,;nsă pinul OC10 a /i actualizat ;n cazul ;n care biţiiCOM112: stabilesc dacă pinii OC10 sunt actiaţi sau dezactiaţi#

1.J.% Com"are Matc (#oc>ing 0 TCNT1 Grite

Orice scriere a C( ;n registrul TCT1 a bloca orice potriire găsită ;n următorul ciclu altimer.ului chiar dacă timer.ul este oprit#Acest lucru permite OC10 să /ie iniţializat cu aceea&ialoare ca TCT1 /ără declan&area unei ;ntreruperi atunci c-nd Timer9Counter este acti#

1.J.D -o#o!irea Out"ut Com"are Unit

^in-nd cont că scrierea lui TCT1 ;n orice mod de operare a bloca orice comparare pentruun singur ciclu de ceas,e0istă riscuri la schimbarea unuia din canalele output compare ale luiTCT1 indi/erent dacă Timer9Counter este pornit sau oprit#$acă TCT1 este egal cu OC10rezultatul comparării a /i pierdut#gener-ndu.se o /ormă de undă gre&ită# TCT1 nu este egal cuTO ;n modul QM#ezultatul asignării pentru TO a /i ignorat &i contorul a continua cu:05555#TCT1 nu este egal cu 4OTTOM atunci c-nd contorul descre&te#Setările pentru OC10trebuie realizate ;nainte ca datele să /ie direcţionate către ie&ire#entru setarea lui OC10 cel mai u&ormod este prin utilizarea biţilor *5OC10+ ;n ormal mode#"aloarea OC10 se păstrează &i laschimbarea ;ntre modurile de generare a undelor#

Obseraţie 2biţii COM1012: nu /uncţionează ;mpreună cu aloarea de comparat#SchimbareaCOM1012: a aea e/ect imediat#

1.J.J Com"are Matc Out"ut Unit

4iţii Co-are Outut -ode *COM1012:+ au două /uncţii#@eneratorul de undă utilizează biţiiCOM1012: pentru a de/ini starea Output Compare *OC10+ la urmatoarea comparare#4iţii COM1012:controlează ie&irea pinului OC10#5igura %#% e0empli/ică e/ectul pe care ;l au setările biţilorCOM1012:#

6

Page 53: 58907199 Curs Atmega 16 III Tet

8/10/2019 58907199 Curs Atmega 16 III Tet

http://slidepdf.com/reader/full/58907199-curs-atmega-16-iii-tet 53/138

Universitatea POLITEHICA din Bucuresti PROIECT DE DIPLOMĂ  Facultatea TRANSPORTURI

Catedra Telecomenzi şi Electronică în Transporturi 2007  

egistrele !9O,biţii !9O,pinii !9O sunt descri&i cu negru ;nchis#$oar porturile !9O egistrelede control *$$ &i OT+ sunt a/ectaţi de COM1012:#Atunci c-nd se /ace re/erire la starea luiOC10 este orba de registrul intern OC10 &i nu despre pinul OC10#En cazul ;n care sistemul esteresetat,registrul OC10 este trecut ;n V: logic#

5ig#%#%

4iţii (SAT Character SiKe *(CSK'2:+ selectează numarul biţilor de date din cadru#4iţii (SAT arit> mode *(M12:+ actiează &i setează paritatea bitului#Selecţia ;ntre unul.doi biţi

de stop este realizată de bitul (SAT Stop 4it Select *(S4S+#eceptorul ignora cel de.al doilea bitde stop# 5rame 7rror.eroarea de cadru a /i detectată ;n cazurile ;n care primul bit de stop a /i zero#

1.1& USART F Ini@ia#i;are

(SAT trebuie iniţializata ;naintea de pornirea oricărei alte comunicaţii#rocesul normal deiniţializare constă ;n 2 stabilirea ratei baud,cadrului &i actiarea Transmiţătorului &i eceptorului ;n/uncţie de opţiuni#e durata iniţializarii steagul de ;ntrerupere trebuie dezactiat *la /el &i orice /el de;ntreruperi+#

entru o reiniţializare,orice transmisie trebuie să /ie ;ncheiată ;naintea modi/icării

registrelor#Steagul TIC eri/ică dacă toate transmisiile au /ost ;ncheiate, iar steagul IC eri/icădacă sunt date necitie ;n bu//er.ul receptorului#Steagul TIC trebuie dezactiat ;naintea oricăreitransmisii *;nainte ca ($ să /ie scris+#

(rmătorul e0emplu prezintă modul de iniţializare a (SAT#70emplul de cod stabile&teoperaţiile asincrone *nici o ;ntrerupere nu este actiă+ &i un anumit /ormat de cadru#ata baud esteutilizată ca /uncţie de parametri,stocată ;n registrele r16 2r1?#C-nd această /uncţie realizează operaţiade scriere ;n egistrul (CSC,bitul (S7) . *MS4+ trebuie setat potriit utilizării ;n locaţiile !9Ode către (4< &i (CSC#

?

Page 54: 58907199 Curs Atmega 16 III Tet

8/10/2019 58907199 Curs Atmega 16 III Tet

http://slidepdf.com/reader/full/58907199-curs-atmega-16-iii-tet 54/138

Universitatea POLITEHICA din Bucuresti PROIECT DE DIPLOMĂ  Facultatea TRANSPORTURI

Catedra Telecomenzi şi Electronică în Transporturi 2007  

Nota : 70emplul de cod prezentat include si /isierele header#

O rutină de iniţializare aansată include /ormate de cadre ca parametri,;ntreruperi dezactiateetc#Multe aplicaţii utilizează setari /i0e pentru baud, &i registre de control, ;n acest caz,programul deiniţializare /iind amplasat direct ;n cadrul rutinei,sau combinat cu alte programe de iniţializare pentru alte module !9O#

1.1&.1 ata Tran!mi!!ion F Te USART Tran!mitter

Transmiţătorul (SAT este actiat de bitul Trans-it Ena1le *TI7+ ;n registrul (CS4#C-ndtransmiţătorul este actiat,portul pinului T0$ este suprascris de (SAT transmisia realiz-ndu.secătre ie&irea serială# ata baud,modul de operare,/ormatul de cadru trebuie setate ;naintea ;nceperiitransmisiei#En modul sincron ceasul pinului IC3 a /i suprascris &i utilizat ca ceas de transmisie##

1.1&.+ Sending -rame! 7it 2 to D ata (it

O transmisie de date ;ncepe prin trecerea datelor de transmis ;n bu//er.ul de transmisie#C( poate;ncarca bu//er.ul de transmisie prin scrierea ;n locaţiile ($ !9O#4u//erul de date a /i mutat ;n

8

Page 55: 58907199 Curs Atmega 16 III Tet

8/10/2019 58907199 Curs Atmega 16 III Tet

http://slidepdf.com/reader/full/58907199-curs-atmega-16-iii-tet 55/138

Universitatea POLITEHICA din Bucuresti PROIECT DE DIPLOMĂ  Facultatea TRANSPORTURI

Catedra Telecomenzi şi Electronică în Transporturi 2007  

registrul Shi/t atunci c-nd acesta este pregătit pentru a transmite un nou cadru#egistrul Shi/t preiadatele dacă se a/lă ;n modul idle sau imediat după ultimul bit de stop al cadrului transmisanterior#C-nd registrul Shi/t este ;ncărcat cu noile date ă transmite un cadru complet cu ratastabilită de registrul baud,bitul ('I sau de IC3, ;n /uncţie de modul de operare#

(rmătorul e0emplu de codare prezintă o transmisie (SAT bazată pe testarea steagului

 Data Re$ister E-t *($7+#Atunci c-nd se /olosesc cadre cu lungimea mai mică de opt biţi, bitulcu semni/icaţia cea mai mare scris de ($ este ignorat#Enainte ca /uncţia să poată /i /olosită(SAT trebuie iniţializată#$atele ce urmează a /i transmise sunt memorate ;n egistrul 16#

Not : 5i&ierele header sunt incluse#

5uncţia a&teaptă ca bu//er.ul de transmisie să /ie liber prin eri/icarea steagului ($7;nainte de a /i ;ncărcat cu datele ce urmează a /i transmise#$acă este utilizat registrul liber de;ntreruperi ;ntrerupeile or /i scrise ;n bu//er#

1.1&. Tran!miterea cadre#or cu (itu# J de ate

$acă sunt utilizate caractere de F biţi (CSK ?, al F.lea bit TI48 trebuie scris ;n (CS4;nainte ca bitul de pe /rontul in/erior să /ie scris ;n ($#(rmătorul e0emplu de cod descrie /uncţiade transmisie pentru caractere de F biţi#$atele de transmis sunt memorate ;n registrele r16 2 r1?#

F

Page 56: 58907199 Curs Atmega 16 III Tet

8/10/2019 58907199 Curs Atmega 16 III Tet

http://slidepdf.com/reader/full/58907199-curs-atmega-16-iii-tet 56/138

Universitatea POLITEHICA din Bucuresti PROIECT DE DIPLOMĂ  Facultatea TRANSPORTURI

Catedra Telecomenzi şi Electronică în Transporturi 2007  

Not : 5uncţiile de transmisie sunt scrise ca /uncţii generale#7le pot /i optimizate dacă conţinutul(CS4 este i0#4itul TI48 al registrului (CS4 este utilizat dupa iniţializare#

Cel de.al F.lea bit poate /i utilizat pentru a indica adresa cadrului atunci c-nd se utilizeazăun multi procesor sau un alt protocol de manipulare, la /el ca ;n e0emplele de sincronizare#

1.1&.4 Indicatorii de tran!mi!ie !i intreru"eri

Transmiţătorul (SAT are două steaguri care indică cele două stări2 (SAT $ata egister7mpt> *($7+ &i Transmit Complete *TIC+.registrul de date liber &i transmisie completă#Ambelesteaguri pot /i /olosite pentru a genera ;ntreruperi#

Steagul $ata egister 7mpt> *($7+ indică atunci c-nd receptorul este gata să primeascădate#Acest bit este acti atunci c-nd bu//er.ul de transmisie este liber,&i dezactiat atunci c-nd bu//er.ul de transmisie deţine date care ;ncă nu au /ost mutate ;n registrul Shi/t#entru

compatibilitate cu alte mecanisme acest bit trebuie să /ie ;ntotdeauna V:W la scrierea ;n registrul(CSA#

Atunci c-nd bitul $ata egister empt> !nterrupt 7nable *($!7+ ;n (CS4 este V1W(SAT $ata egister 7mpt> !nterrupt se a e0ecuta c-t timp ($7 este acti *se presupune ca;ntreruperile sunt actie+ # ($7 este dezactiat prin scrierea ;n ($#Atunci c-nd se transmit;ntreruperi,egistrul de Entreruperi trebuie să scrie datele ;n ordine ;n ($, pentru a dezactia($7 &i egistrul de date trebuie să /ie liber,alt/el imediat după terminarea rutinei de ;ntreruperi onouă ;ntrrupere se a actia#

6:

Page 57: 58907199 Curs Atmega 16 III Tet

8/10/2019 58907199 Curs Atmega 16 III Tet

http://slidepdf.com/reader/full/58907199-curs-atmega-16-iii-tet 57/138

Universitatea POLITEHICA din Bucuresti PROIECT DE DIPLOMĂ  Facultatea TRANSPORTURI

Catedra Telecomenzi şi Electronică în Transporturi 2007  

Steagul Transmit Complete *TIC+ – Transmisie Completa, este V1W ;ntreg cadrul ;n egistrulShi/t este trans/erat la ie&ire &i bu//er.ul de transmisie este liber#Steagul TIC este eliberat automat lae0ecutarea unei ;ntreruperi, sau prin scrierea de V1W logic ;n adresa bitului#Steagul TIC este util pentru comunicaţia cu inter/aţa duple0 *la /el ca standardul S8+ unde o aplicaţie pentru a /itransmisă actiează receptorul &i eliberează magistrala de comunicaţie imediat după terminarea

transmisiei#C-nd bitul Transmit Compete !nterrupt 7nable *TIC!7+ ;n (CS4 este acti, (SATTransmit Complete !nterrupt a /i e0ecutată atunci c-nd steagul TIC deine acti *;ntreruperile se presupun actie+#En timpul e0ecuţiei acestei instrucţiuni,;n rutina de ;ntreruperi nu se elibereazăsteagul TIC,acest lucru realiz-ndu.se automat c-nd se e0ecută o ;ntrerupere

/eneratoru# de Paritate

@eneratorul de paritate decide paritatea biţilor pentru cadrul serial de date#Atunci c-nd(M1 1, transmiţătorul inserează paritatea biţilor ;ntre primul bit de date &i primul bit de stop dincadrul serial care a /ost transmis#

e;acti9area Tran!mi@toru#ui

$ezactiarea transmiţătorului*trecerea lui TI in zero+ se realizează după terminareatransmisiei,c-nd registrele Shi/t &i 4u//er sunt libere#

1.1&.2 Rece"toru# F Te USART Recei9er

eceptorul (SAT este acti prin trecerea bitului eceie 7nable *I7+ ;n registrul(CS4 ;n V1W logic# C-nd receptorul este acti, pinul 0$ este suprascris de (SAT &i receptoruldeenind intrare serială de date#ata baud,modul de operare,/ormatul de cadru trebuie setată ;naintede orice recepţie serială de date#$acă operaţia de sincronizare este ;n e0ecuţie,pinul IC3 a /iutilizat ca ceas de trans/er#

Recei9ing -rame! 7it 2 to D ata (it!

eceptorul prime&te date la detectarea unui bit de start#5iecare bit care urmează bitului destart a /i /olosit ca e0emplu pentru rata baud a ceasului IC3 &i transmis registrului Shi/t,;nainte ca primul stop de bit al cadrului să /ie recepţionat#(n bit de stop de o secundă a /i ignorat#Atunci c-nd primul bit de stop este recepţionat, un cadru serial complet a /i ;n registrul Shi/t,conţinutul acestuiregistru a /i mutat ;n bu//er.ul receptor#4u//er.ul receptor poate /i citit odată cu citirea adreselor($ !9O#

(rmătorul e0emplu de cod descrie /uncţia de recepţie bazată pe eri/icarea steaguluieceie Complete *IC+# )a utilizarea cadrelor mai mici de opt biţi cel mai semni/icant bit aldatelor citite de ($ trebuie trecut ;n zero#(SAT trebuie iniţializată ;nainte ca această /uncţie să/ie utilizată#

61

Page 58: 58907199 Curs Atmega 16 III Tet

8/10/2019 58907199 Curs Atmega 16 III Tet

http://slidepdf.com/reader/full/58907199-curs-atmega-16-iii-tet 58/138

Universitatea POLITEHICA din Bucuresti PROIECT DE DIPLOMĂ  Facultatea TRANSPORTURI

Catedra Telecomenzi şi Electronică în Transporturi 2007  

Not : 70emplul de cod conţine &i /isierele header#

Această /uncţie a&teaptă ca bu//er.ul receptor să conţină date prin eri/icarea steagului IC,;naintea citirii bu//er.ului &i returnării alorii#

Rece"@ia cadre#or de J 0i@i

$acă sunt utilizate caractere de F biţi *(CSK?+ cl de.al F.lea bit trebuie citit de la I48(CS4 ;naintea citirii bitului de pe /rontul in/erior de către ($#Aceea&i regulă se aplică &isteagurilor 57, $O si 7#Citirea stării se realizează de la (CSA &i citirea datelor de la ($#)acitirea adreselor ($ !9O starea bu//er.ului receptor 5!5O precum &i a biţilor TI48, 57, $O ,7stocaţi ;n 5!5O,or /i modi/icate#

(rmătorul e0emplu de cod descrie recepţionarea de către (SAT a /uncţiei caremanipulează caracterele de F biţi &i starea acestora#

6'

Page 59: 58907199 Curs Atmega 16 III Tet

8/10/2019 58907199 Curs Atmega 16 III Tet

http://slidepdf.com/reader/full/58907199-curs-atmega-16-iii-tet 59/138

Universitatea POLITEHICA din Bucuresti PROIECT DE DIPLOMĂ  Facultatea TRANSPORTURI

Catedra Telecomenzi şi Electronică în Transporturi 2007  

Not : rogramul conţine /isierele header#

5uncţia de recepţie realizează citirea tuturor registrelor !9O ;naintea oricărei ealuări#Aceasta duce lao utilizare optimă a bu//er.ului ţin-nd cont că adresa bu//er.ului citită a /i liberă să accepte datecur-nd#

Recei9e Com"ete -#ag and Interru"t

eceptorul (SAT are doar un steag pentru a indica starea#Steagul eceie Complete *IC+ – recepţie completă indică dacă mai sunt date necitite ;n

 bu//er.ul de receptţie# Acest steag este V1W unu c-nd bu//er.ul receptor este liber*nu conţine date

6%

Page 60: 58907199 Curs Atmega 16 III Tet

8/10/2019 58907199 Curs Atmega 16 III Tet

http://slidepdf.com/reader/full/58907199-curs-atmega-16-iii-tet 60/138

Universitatea POLITEHICA din Bucuresti PROIECT DE DIPLOMĂ  Facultatea TRANSPORTURI

Catedra Telecomenzi şi Electronică în Transporturi 2007  

necitite+#$acă receptorul este dezactiat *I7:+ bu//er.ul de recepţie a /i &ters &i bitul ICtrece ;n zero#

Atunci c-nd eceie Complete !nterrupt 7nable *IC!7+ ;n (CS4 este setat (SATeceie Complete !nterrupt se a e0ecuta p-nă c-nd steagul IC deine acti *toate ;ntreruperile se presupun actie+# C-nd ;ntreruperea generată de receptia datelor este ;n e0ecuţie, receptorul trebuie

să citească datele din ($ ;n ordine,pentru a dezactia steagul IC,alt/el o noua ;ntrerupere a /igenerată la terminarea secenţei#

1.1&. 6 Indicatoru# rece"toru#ui "entru erori

eceptorul (SAT are trei steaguri pentru indicarea erorilor 2 5rame 7rror *57+ – eroarea decadru, $ata Oerun *$O+ &i arit> 7rror *7+ – eroarea de paritate#Toate pot /i accesate de(CSA# Comun celor trei steaguri este că toate se a/lă ;n bu//er.ul de recepţie cu cadrele la care sere/eră /iecare# (CSA trebuie citit ;naintea bu//er.ului de recepţie *($+ ;n condiţiile ;n care citireaadreselor ($ !9O schimbă adresa bu//er.ului citit#O altă caracteristică a steagurilor de erori esteaceea că nu pot /i schimbate prin so/t=are prin scrierea ;n adresele respectie# Toate steaguriletrebuie setate ;n zero atunci c-nd (CSA este scrisă pentru actualizare cu iitoarele implementăriale (SAT#ici unul din cele trei steaguri nu poate genera ;ntreruperi#

Steagul 5rame 7rror indică starea primului bit de stop pentru următorul cadru stocat ;n bu//er.el receptor# C-nd bitul de stop este citit corect*unu+ steagul 57 este zero &i a /i unu atuncic-nd bitul de stop este citit incorect*zero+#Acest steag poate /i /olosit pentru a detecta condiţiile demanipulare,de ie&ire,de sincronizare#Steagul 57 nu este a/ectat de setările bitului (S4S ;n(CSC,receptorul ignor-ndu.le pe toate,cu e0cepţia primului bit de stop#entru asigurareacompatibilităţii cu alte mecansime,este de pre/erat ca acest bit să /ie setat zero la scrierea ;n(CSA#

Steagul $ata Oerun *$O+ indică condiţiile ;n care bu//er.ul receptor a pierdut date#Acestlucru se ;nt-mplă atunci c-nd receptorul este suprasolicitat,atunci c-nd un caracter a&teaptă ;nregistrul Shi/t,c-nd un nou bit de start este detectat#$acă steagul $O este acti acest lucru;nseamnă că unul sau mai multe cadre au /ost pierdute ;ntre ultimul cadru citit de la ($ ţiurmătorul cadru citit de la ($#entru compatibilitate cu iitoare mecanisme acest bit trebuietotdeauna scris zero la scrierea ;n (CSA#Steagul $O este dezactiat la recepţionarea unui cadrucomplet,mutat apoi ;n registrul shi/t la bu//er.ul receptor#

Steagul arit> 7rror *7+ indică eroarea de paritate a cadrului recepţionat ;n bu//er.ulreceptor $acă eri/icarea parităţii nu este posibilă steagul 7 este setat ;ntotdeauna zero#entruasigurarea compatibilităţii cu iitoarele mecanisme,la scrierea ;n (CSA acest steag trebuie setatzero#

 ,eri3icarea "arita@ii

Tester.ul de paritate este acti atunci c-nd bitul (SAT arit> mode *(M1+ estesetat#Tipul de paritate*impar sau par+ este selectat de bitul (M:#Atunci c-nd este acti,parit>checLer stabile&te paritatea cadrelor sosite &i compară rezultatele cu paritatea bitului din cadrulserial#ezultatele sunt stocate ăn bu//er.ul receptor ămpreuna cu datele recepţionate &i bi&ii destop#Steagul 7 poate /i citit prin so/t=are pentru a eri/ica dacă un cadru are erori#

6

Page 61: 58907199 Curs Atmega 16 III Tet

8/10/2019 58907199 Curs Atmega 16 III Tet

http://slidepdf.com/reader/full/58907199-curs-atmega-16-iii-tet 61/138

Universitatea POLITEHICA din Bucuresti PROIECT DE DIPLOMĂ  Facultatea TRANSPORTURI

Catedra Telecomenzi şi Electronică în Transporturi 2007  

C este acti dacă următorul caracter care poate /i citit de către bu//er.ul receptor are oeroare de paritate &i eri/icarea parităţii nu a /ost posibilă *(M1 1+#Acest bit este alabil ;nainteca bu//er.ul receptor să /ie citit#

e;acti9area rece"toru#ui

En opoziţie cu transmiţătorul, dezactiarea receptorului se realizează imediat#$atele care sea/lau ;n curs de recepţie or /i pierdute#)a dezactiare *I7 este zero+ receptorul nu a maisuprascrie /uncţia pinului 0$#4u//er.ul receptorului 5!5O a /i &ters dacă receptorul a /idezactiat#$atele rămase ;n receptor se or pierde#

-#u!ing te Recei9e (u33er

4u//er.ul receptorul 5!5O a /i &ters atunci c-nd receptorul a /i dezactiat,a#;# bu//er.ul a/i liber#$atele necitite se or pierde#$acă bu//er.ul trebuie &ters pe durata unei operaţii datorită,spree0emplu ;n caz de eroare, adresele ($ !9O trebuie citite ;nainte ca steagul IC să /iedezactiat#(rmătorul program prezintă &tergerea bu//er.ului receptorului#

Not :  rogramul presupune /aptul că partea speci/ică antetului este inclusă#

 Rece"@ia a!incron a date#or

(SAT deţine unităţi de ceas &i de date de recuperare pentru recepţia asincronă adatelor#Ceasul de recuperare este utilizat pentru sincronizarea ratei baud generată de ceasul intern curecepţionarea asincronă a cadrelor seriale la pinul 0$#7&antioanele de date recuperate &i /iltrele detipul trece Dos pentru /iecare bit recepţionat,duc la ;mbunătăţirea imunităţii receptorului lazgomot#ecepţia asincronă a seriei de operaţii depinde de precizia ratei de baud a ceasului,de rata derecepţie a cadrelor,precum &i de lungimea cadrelor*numarul de biţi+#

6

Page 62: 58907199 Curs Atmega 16 III Tet

8/10/2019 58907199 Curs Atmega 16 III Tet

http://slidepdf.com/reader/full/58907199-curs-atmega-16-iii-tet 62/138

Universitatea POLITEHICA din Bucuresti PROIECT DE DIPLOMĂ  Facultatea TRANSPORTURI

Catedra Telecomenzi şi Electronică în Transporturi 2007  

1.1&.% Recu"erarea a!incron a cea!u#ui

ecuperarea ceasului sincronizează ceasul intern cu recepţia cadrelor seriale#5igura %#%6 prezintă un e0emplu al eoluţiei bitului de start al unui cadru recepţionat#7&antionul de rată este de

16 ori rata baud ;n ormal Mode,&i de 8 ori rata baud pentru modul $ouble Speed – $ublu"iteză#Săgeţile orizontale indică ariaţia sincronizării potriită cazului ;n eoluţie#A se obseraariaţia mare ;n timp la utilizarea modului dublă iteză ('I 1#7&antioanele notate cu zero sunte&antioane /inale atunci c-nd linia I$ este ;n modul idle*nu e0istă nici o comunicaţie actiă+#

5ig#%#%6

Atunci c-nd ceasul de recuperare detectează o tranziţie de pe /rontul superior*idle+ pe /rontulin/erior*start+ pe linia lui 0$,bitul de start de detecţie a secenţei este iniţializat#7&antionul 1 indică primul e&antion zero#Ceasul de recuperare utilizează e&antioanele 8,F &i 1: ;n ormal Mode,&ie&antioanele ,,6 pentru modul dublă iteză*indicate cu numerele ;ncadrate ;n chenare+ pentru adecide dacă un bit de start a /ost recepţionat#$acă două sau mai multe din aceste trei e&antioane segăsesc pe /rontul superior *maDoritatea decide+ atunci bitul de start este respins ca un zgomot &i

receptorul porne&te să caute o tranziţie pe /rontul in/erior#

1.1&.D Recu"erarea a!incron a date#or

Atunci c-nd ceasul receptorului este sincronizat cu bitul de start, recepţia datelor;ncepe#(nitatea de recuperare a datelor utilizează un dispoziti cu 16 stări pentru /iecare bit ;nmodul normal de /uncţionare &i 8 stări pentru modul dublă iteză#5igura %#%? arată un e0emplu de biţi de date &i paritate#

5ig#%#%? 

66

Page 63: 58907199 Curs Atmega 16 III Tet

8/10/2019 58907199 Curs Atmega 16 III Tet

http://slidepdf.com/reader/full/58907199-curs-atmega-16-iii-tet 63/138

Page 64: 58907199 Curs Atmega 16 III Tet

8/10/2019 58907199 Curs Atmega 16 III Tet

http://slidepdf.com/reader/full/58907199-curs-atmega-16-iii-tet 64/138

Universitatea POLITEHICA din Bucuresti PROIECT DE DIPLOMĂ  Facultatea TRANSPORTURI

Catedra Telecomenzi şi Electronică în Transporturi 2007  

SM – numărul utilizat pentru a indica miDlocul e&antionului# SM F pentru ormal Mode &i SM ;n modul $ouble Speedslo= – este raportul cel mai mic pentru datele recepţionate care poate /i acceptat ;n relaţie cu rata baud de recepţie#/ast – este raportul cel mai ridicat pentru recepţia datelor care poate /i aceptat ;n relaţie cu rata

 baud de recepţie#

1.11 Programarea "ara#e#

1.11.1 Modu# de "rogramare

(rmătorul algoritm setează dispozitiul ;n Modul de rogramare aralel#

1# Se aplică # – # " ;ntre "cc &i @$,cu a&teptare de cel puţin 1:: [s#

'# 7S7T trece ;n V:W toogle ITA)1 de cel puţin 6 ori#%# Setează pinii rogUenable ;n ::::P &i a&teaptă cel puţin 1:: ns## Trece 11# . 1'#" to 7S7T# Orice actiitate asupra pinilor rogUenable pe durata a 1::

ns  după 1'" ce a /ost trecută pe 7S7T, a cauza un e&ec al programului la trecerea ;n

modul rogramare#Obseraţie 2 dacă con/iguraţiile 70ternal Cr>stal &i 70ternal C sunt selectate este posibilă

aplicarea pulsurilor ITA)1#En acest caz trebuie urmărit următorul algoritm2

1# Setarea pinilor rogUenable prezentaţi ;n Tabelul 1:? la pagina '8 ;n ::::P#'# Aplicarea # . #" ;ntre "CC &i @$ simultan cu 11# . 1'#" aplicate la 7S7T#

%# Se a&teaptă 1:: _s## eprogramarea siguranţelor pentru ca Ceasul 70tern să /ie selectat ca o sursă de ceas*C3S7)%2: :b::::+ $acă biţii )ocL sunt programaţi,o comandă Chip 7rase trebuie schimbată;naintea schimbării siguranţelor##

# !e&irea din program prin oprirea dispozitiului sau aduc-nd pinul 7S7T la :b:#6# !ntroducerea modului rogramare după algoritmul prezentat#

Con!idera@ii "entru o "rogramare e3icient 2

Sarcinile comenzilor &i adreselor sunt reţinute ;n dispoziti pe durata programării#entru o programare e/icientă a se ţine seama de următoarele 2

` Comenzile necesită actiare doar pentru scrieri sau citiri multiple din locaţiile de memorie#` 7ste interzisă scrierea alorii R55, care este conţinutul pentru 77OM *doar dacă

siguranţa 77SA"7 este programată ;i Htearsă dupa Chip 7rase#` Adresarea bitului de pe nielul superior trebuie realizată ;naintea programării sau citirii

unei /erestre de '6 de cuinte sau '6 b>te 77OM# Aceasta se aplică tot pentru citirea biţilorde transpunere#

68

Page 65: 58907199 Curs Atmega 16 III Tet

8/10/2019 58907199 Curs Atmega 16 III Tet

http://slidepdf.com/reader/full/58907199-curs-atmega-16-iii-tet 65/138

Universitatea POLITEHICA din Bucuresti PROIECT DE DIPLOMĂ  Facultatea TRANSPORTURI

Catedra Telecomenzi şi Electronică în Transporturi 2007  

1.11.+ Ci" Era!e

Chip 7rase a &terge memoriile 5lash &i 77OM*1+ plus biţii )ocL#4iţii )ocL nu suntresetaţi ;nainte ca memoria să /ie complet &tearsă# 4iţii siguranţelor nu se modi/ică# Chip 7rasetrebuie actiată ;nainte ca 5lash &i9sau

77OM sa /ie programate## ote2 1#Memoria 77OM este rezerată pe durata chip erase dacă siguranţa 77SA"7este programată#

Actiarea comenzii Chip 7rase 21# Setarea IA1, IA: ;n 1:P# Acest lucru /ace posibilă actiarea comenzii#'# Setarea 4S1;n :P#%# Searea $ATA ;n 1::: ::::P# Aceasta este comanda pentru Chip 7rase## Transmite c;tre ITA)1 un puls poziti# Aceasta actiează comanda##Transmite către Q un puls negati# Aceasta porne&te Chip 7rase# $J94SJ

/uncţioneaza pe /rontul in/erior##6# Se a&teapta ;nainte ca $J94SJ să treacă pe /rontul superior ;nainte de a se actia o nouă

comandă#

1.11. Programarea memoriei -#a!

)a programarea 5lash programul de date este inclus ;ntr.un bu//er de pagină#Aceasta permite programarea simultană a paginilor unui program#rogramarea memoriei 5lash2

 3 ctivarea co-en4ii de scriere 5+rite Flas%61# Setarea IA1, IA: ;n 1:P# Aceasta actiează comanda#'# Setează 4S1 ;n :P#%# Setează $ATA ;n :::1 ::::P# Această comandă este pentru scriere ;n 5lash . Qrite

5lash## Se transmite către ITA)1 un puls poziti# Se actiează comanda# B3 *e activea4 adresa lo( 1te 8 ddress Lo( 1te1# Setează IA1, IA: ;n ::P# Aceasta actiează adresele##'# Setează 4S1 ;n :P# Se selectează adresele lo=%# Setează $ATA Address lo= b>te *R:: . R55+## Se transmite către ITA)1 un puls poziti# Aceasta actiează adresele lo=e b>te#C3 ctivarea Data Lo( Bte1# Setează IA1, IA: ;n :1P# Se actiează datele#'# Setează $ATA $ata lo= b>te *R:: . R55+#%#Se transmite către ITA)1 un puls poziti# Se actiează datele# D3 ctivarea Data #i$% Bte1# Setează 4S1;n 1P# Se selectează high data#'# Setează IA1, IA: ;n :1P# Se actiează datele#%# Setează $ATA $ata high b>te *R:: . R55+## Se transmite către ITA)1 un puls poziti# Aceasta actiează data lo=##

  E3 Latc% Data1# Setează 4S1 ;n1P# Selectează data high#'# Se transmite către A@7) un puls poziti# Se eliberează datele#

6F

Page 66: 58907199 Curs Atmega 16 III Tet

8/10/2019 58907199 Curs Atmega 16 III Tet

http://slidepdf.com/reader/full/58907199-curs-atmega-16-iii-tet 66/138

Universitatea POLITEHICA din Bucuresti PROIECT DE DIPLOMĂ  Facultatea TRANSPORTURI

Catedra Telecomenzi şi Electronică în Transporturi 2007  

5# Se repetă 4 prin intermediul 7 ca ;ntregul bu//er să /ie umplut sau ;nainte ca datele din pagini să /ie actiate#

En timp ce adresele biţilor de pe /rontul superior adresează cuintele din pagină,adresele biţilor de pe /rontul superior adresează paginile din 5lash#$acă ;n pagină se găsesc cuinte cu adrese pe mai puţin de 8 biţi, adresa bitului cel mai semni/icant de /rontul in/erior este utilizată la scrierea

;n pagina#@# Adresarea bitului de pe /rontul ;nalt#1# Setarea IA1, IA: ;n ::P# Se actiează adresele#'# Setează 4S1 ;n 1P# Se selectează adresa superioară##%# Setează $ATA Address high b>te *R:: . R55+## Se transmite către ITA)1 un puls poziti# Se actiează adresa bitului de pe /rontul superior#<# rogramarea paginii1# Se setează 4S1 :P'# Se transmite către Q un puls negati# Se porne&te programarea datelor ;n pagină# $J94SJtrece sus#%# Se a&teaptă p-nă c-nd $J94SJ trece sus #!# Se repetă 4 peste < ;nainte ca ;ntreaga memorie5lash să /ie programată sau ;nainte ca toate datele să /ie programate#B# 5inal de program#1# 1# Setează IA1, IA: ;n 1:P# Se actiează comanda#'# Setează $ATA ;n :::: ::::P# Se actiează comanda ici o Operaţie#%# Se transmite către ITA)1 un puls poziti# Se actiează comanda, &i se resetează scrierea internăa semnalelor#

5ig# %#%F

Not: CA@7si CQO$

 

?:

Page 67: 58907199 Curs Atmega 16 III Tet

8/10/2019 58907199 Curs Atmega 16 III Tet

http://slidepdf.com/reader/full/58907199-curs-atmega-16-iii-tet 67/138

Universitatea POLITEHICA din Bucuresti PROIECT DE DIPLOMĂ  Facultatea TRANSPORTURI

Catedra Telecomenzi şi Electronică în Transporturi 2007  

5ig# %#:

Not: VIIW se ignoră# otaţia este re/eritoare la programul de mai sus#

Citirea memoriei -#a!

Algoritmul pentru citirea memoriei 5lash este 2

1# A2 Se e0ecută comanda :::: ::1:P#'# @2 Adresarea bitului de pe /rontul superior *R:: . R55+

%# 42 Adresarea bitului de pe /rontul in/erior *R:: . R55+# Setează O7 ;n:P, si 4S1 in :P# Memoria 5lash poate /i acum citită din $ATA## Setează 4S1 ;n 1P# Memoria /lash poate /i citită acum din $ATA#6# Setează O7 ;n 1P#

1.11.4 Programarea EPROM

Memoria 7OM este organizată ;n secenţe# entru programarea 7OM datele sunttrans/erate ;ntr.un bu//er#Aceasta permite programarea simultană a secenţelor de date#Algoritmulde programare pentru memoria 7OM este 21# A2 70ecutarea comenzii :::1 :::1P#

'# @2 Adresarea bitului de pe /rontul superior *R:: . R55+%# 42 Adresarea bitului de pe /rontul in/erior *R:: . R55+# C2 Encărcarea datelor *R:: . R55+# 72 Trans/erul datelor *se transmite către A@7) un puls poziti+32 Se repetă % peste ;nainte ca bu//erul să /ie plin#)2 rogramarea memoriei 7OM1# Setarea 4S1 ;n :P#'# Se transmite către Q un puls negati#Aceasta porne&te programarea#$J94SJ trec Dos#

?1

Page 68: 58907199 Curs Atmega 16 III Tet

8/10/2019 58907199 Curs Atmega 16 III Tet

http://slidepdf.com/reader/full/58907199-curs-atmega-16-iii-tet 68/138

Universitatea POLITEHICA din Bucuresti PROIECT DE DIPLOMĂ  Facultatea TRANSPORTURI

Catedra Telecomenzi şi Electronică în Transporturi 2007  

%# Se a&teaptă ;nainte ca $J94SJ să treacă sus ;naintea programării următoarei secenţe#

5ig# %#1

Citirea memoriei EPROM

Algoritmul pentru citirea memoriei 7OM este 2

1# A2 Se e0ecută comanda :::: ::11P#

'# @2 Adresarea bitului de pe /rontul superior *R:: . R55+%# 42 Adresarea bitului de pe /rontul in/erior *R:: . R55+# Setează O7 ;n :P, &i 4S1 ;n :P# Memoria 7OM poate /i acum citită din $ATA## Setează O7 ;n 1P#

1.11.2 Programarea !iguran@e#or 0i@i#or de "e 3rontu# in3erior

Algoritmul pentru programarea siguranţelor biţilor de pe /rontul in/erior este 2

1# A2 Se e0ecută comanda :1:: ::::P#'# C2 Se actiează bitul de date de pe /rontul in/erior# 4itul n :P programează &i bitul n 1P

&terge bitul siguranţei%# Setează 4S1 ;n :P si 4S' in :P## Se transmite către Q un puls negatie &i se a&teaptă ca $J94SJ să treacă sus#

?'

Page 69: 58907199 Curs Atmega 16 III Tet

8/10/2019 58907199 Curs Atmega 16 III Tet

http://slidepdf.com/reader/full/58907199-curs-atmega-16-iii-tet 69/138

Universitatea POLITEHICA din Bucuresti PROIECT DE DIPLOMĂ  Facultatea TRANSPORTURI

Catedra Telecomenzi şi Electronică în Transporturi 2007  

5ig#%#'

Programarea 0i@i#or de !iguran@

Algoritmul pentru programarea biţilor de siguranţă este 2

1# A2 Se e0cută comanda ::1: ::::P#'# C2 Se actiează bitul de date de pe /rontul in/erior# 4itul n :P programează bitul de siguranţă#%# Se transmite către Q un puls negati &i se a&teaptă p-nă c-nd $J94SJ trece sus#4iţii de siguranţă pot /i &ter&i numai de către Chip 7rase#

Citirea !iguran@e#or Bi 0i@i#or de !iguran@

Algoritmul pentru citirea siguranţelor &i biţilor de siguranţă este *pentru detalii priindcomenzile &i adresarea ezi Vrogramarea memoriei 5lashW la pagina '6:+2

1# A2 Se e0ecută comanda :::: :1::P#'# Setează O7 ;n :P, 4S' ;n :P &i 4S1 ;n :P# Starea biţilor de siguranţă de pe /rontul in/erior poate /i acum citită de către $ATA*V:W indică programare+#%# Setează O7 ;n :P, 4S' ;n 1P &i 4S1 ;n 1P# Starea biţilor de siguranţă de pe /rontul superior poate /i acum citită de către $ATA*V:W indică programare+# # Setează O7 ;n :P, 4S' ;n :P &i 4S1 ;n 1P# Starea biţilor de siguranţă poate /i acum citită decătre $ATA*V:W indică programare+# # Setează O7 ;n 1P#

?%

Page 70: 58907199 Curs Atmega 16 III Tet

8/10/2019 58907199 Curs Atmega 16 III Tet

http://slidepdf.com/reader/full/58907199-curs-atmega-16-iii-tet 70/138

Universitatea POLITEHICA din Bucuresti PROIECT DE DIPLOMĂ  Facultatea TRANSPORTURI

Catedra Telecomenzi şi Electronică în Transporturi 2007  

5ig#%#%

Citirea 0i@i#or de tran!"unere

Algoritmul pentru citirea biţilor de transpunere este2

1# A2 Se e0ecută comanda :::: 1:::P#'# 42 Adresarea bitului de pe /rontul in/erior *R:: . R:'+#%# Setează O7 ;n :P, &i 4S1 ;n :P# 4itul de transpunere pote /i acum citit### Setează O7 ;n 1P#

Citirea 0i@i#or de ca#i0rare

Algoritmul pentru citirea biţilor de calibrare este următorul2

1# A2 se e0ecută comanda :::: 1:::P#'# 42 se adresează bitul de pe /rontul in/erior R::#%# Setează O7 ;n :P,&i 4S1 ;n 1P# 4iţii de calibrare pot /i citiţi acum ;n $ATA## Setează O7 ;n 1P#

?

Page 71: 58907199 Curs Atmega 16 III Tet

8/10/2019 58907199 Curs Atmega 16 III Tet

http://slidepdf.com/reader/full/58907199-curs-atmega-16-iii-tet 71/138

Universitatea POLITEHICA din Bucuresti PROIECT DE DIPLOMĂ  Facultatea TRANSPORTURI

Catedra Telecomenzi şi Electronică în Transporturi 2007  

 b adresa bitului de pe /rontul in/erior < : – )o= b>te, 1 – <igh 4>teo ie&irea pentru datei intrarea pentru date

0 se ignoră#

?

Page 72: 58907199 Curs Atmega 16 III Tet

8/10/2019 58907199 Curs Atmega 16 III Tet

http://slidepdf.com/reader/full/58907199-curs-atmega-16-iii-tet 72/138

Universitatea POLITEHICA din Bucuresti PROIECT DE DIPLOMĂ  Facultatea TRANSPORTURI

Catedra Telecomenzi şi Electronică în Transporturi 2007  

1.1 Setu# de in!tru@iuni Atmega16

A Add 7itout Carr

e!criere:Adună ' registre /ără indicatorul Carr> &i pune rezultatul ;n registrul destinaţie d#

  O"eration:(i) Rd ← Rd + Rr 

Snta?: O"erand!: Program Counter:(i) ADD Rd,Rr 0 ≤  d ≤  31, 0 ≤  r  ≤  31 PC ← PC + 1

  160it O"code:

:::: 11rd dddd rrrr  

Statu! Regi!ter $SRE/' and (oo#ean -ormu#ae:

I T H S V N Z C

  ⇔ ⇔ ⇔ ⇔ ⇔ ⇔

 

E?em"#u:

AC Add 7it Carr

e!criere:Adună ' registre cu conţinutul indicatorului Carr> &i pune rezultatul ;n registrul destinaţie d#

O"eration:(i) Rd ← Rd + Rr  + C

Snta?: O"erand!: Program Counter:(i) ADC Rd,Rr 0 ≤  d ≤  31, 0 ≤  r  ≤  31 PC ← PC + 1

160it O"code:

:::1 11rd dddd rrrr  

Status egister *S7@+ 4oolean 5ormulae2

I T H S V N Z C

  ⇔ ⇔ ⇔ ⇔ ⇔ ⇔

add r1,r' Add r' to r1 *r1r1r'+

add r'8,r'8 Add r'8 to itsel/ *r'8r'8r'8+

?6

Page 73: 58907199 Curs Atmega 16 III Tet

8/10/2019 58907199 Curs Atmega 16 III Tet

http://slidepdf.com/reader/full/58907199-curs-atmega-16-iii-tet 73/138

Universitatea POLITEHICA din Bucuresti PROIECT DE DIPLOMĂ  Facultatea TRANSPORTURI

Catedra Telecomenzi şi Electronică în Transporturi 2007  

E?em"#u:  Add 12: to %2'

Add r',r: Add lo= b>teAdc r%,r1 Add =ith carr> high b>te

AIG Add Immediate to Gord

e!criere:Adună o aloare imediata *speci/icată ;n instruncţiune+ *:.6%+ la o pereche de registre &i

 pune rezultatul ;n perechea de registre##O"eration:

(i) Rd+1:Rd ← Rd+1:Rd + K

Snta?: O"erand!: Program Counter:(i) ADIW Rd,K d ∈ {24,26,28,30, 0 ≤  K ≤  63 PC ← PC + 1

160it O"code:

1::1 :11: 33dd 3333  

Statu! Regi!ter $SRE/' and (oo#ean -ormu#ae:

I T H S V N Z C

  ⇔ ⇔ ⇔ ⇔ ⇔

E?em"#u:

adi= r',1 Add 1 to r'2r'adi= r%:,6% Add 6% to the K pointer *r%12r%:+

SU( Su0tract 7itout Carr

e!criere:Scade două registre &i pune rezultatul ;n registrul destinaţie d#O"eration:

(i) Rd ← Rd ! Rr 

Snta?: O"erand!: Program Counter:(i) S"# Rd,Rr 0 ≤  d ≤  31, 0 ≤  r  ≤  31 PC ← PC + 1

160it O"code:

:::1 1:rd dddd rrrr  

Status egister and 4oolean 5ormula2

??

Page 74: 58907199 Curs Atmega 16 III Tet

8/10/2019 58907199 Curs Atmega 16 III Tet

http://slidepdf.com/reader/full/58907199-curs-atmega-16-iii-tet 74/138

Universitatea POLITEHICA din Bucuresti PROIECT DE DIPLOMĂ  Facultatea TRANSPORTURI

Catedra Telecomenzi şi Electronică în Transporturi 2007  

I T H S V N Z C

! !   ⇔ ⇔ ⇔ ⇔ ⇔ ⇔

E?em"#u:

sub r1%,r1' Subtract r1' /rom r1% brne note] 4ranch i/ r1'r1%

note]2 nop 4ranch destination *do nothing+

SU(I Su0tract Immediate

e!criere:Scade un registru &i o constată &i plasează rezultatul ;n registrul destinaţie d#

O"eration:(i) Rd ← Rd ! K

Snta?: O"erand!: Program Counter:(i) S"#I Rd,K 16 ≤  d ≤  31, 0 ≤  K ≤  2$$ PC ← PC + 1

  160it O"code::1:1 3333 dddd 3333  

Status egister and 4oolean 5ormula2

I T H S V N Z C

! !   ⇔ ⇔ ⇔ ⇔ ⇔ ⇔

E?em"#u:subi r'',R11 Subtract R11 /rom r'' brne note] 4ranch i/ r''R11

note]2 nop 4ranch destination *do nothing+

S(C Su0tract 7it Carr

e!criere:Scade ' registre &i pe Carr> &i pune rezultatul ;n registrul destinaţie d# O"eration:

(i) Rd ← Rd ! Rr  ! C

Snta?: O"erand!: Program Counter:(i) S#C Rd,Rr 0 ≤  d ≤  31, 0 ≤  r  ≤  31 PC ← PC + 1

?8

Page 75: 58907199 Curs Atmega 16 III Tet

8/10/2019 58907199 Curs Atmega 16 III Tet

http://slidepdf.com/reader/full/58907199-curs-atmega-16-iii-tet 75/138

Universitatea POLITEHICA din Bucuresti PROIECT DE DIPLOMĂ  Facultatea TRANSPORTURI

Catedra Telecomenzi şi Electronică în Transporturi 2007  

160it O"code:

:::: 1:rd dddd rrrr  

Status egister and 4oolean 5ormula2I T H S V N Z C

! !  ⇔ ⇔ ⇔ ⇔ ⇔ ⇔

E?em"#u: Subtract r12r: /rom r%2r'

sub r',r: Subtract lo= b>tesbc r%,r1 Subtract =ith carr> high b>te

S(CI Su0tract Immediate 7it Carr

e!criere:

Scade o constantă &i pe Carr> din registru &i pune rezultatul ;n registrul destinaţie d#O"eration:

(i) Rd ← Rd ! K ! C

Snta?: O"erand!: Program Counter:(i) S#CI Rd,K 16 ≤  d ≤  31, 0 ≤  K ≤  2$$ PC ← PC + 1

160it O"code:

:1:: 3333 dddd 3333  

Status egister and 4oolean 5ormula2I T H S V N Z C

! !   ⇔ ⇔ ⇔ ⇔ ⇔ ⇔

E?em"#u:  Substract R5'% /rom r1? 2r16subi r16,R'% Substract lo= b>tesbci r1?, R5 Substract =ith carr> hight b>te

S(IG Su0tract Immediate 3rom Gord

e!criere:Scade o aloare imediată din interalul :.6% *speci/icată ;n instrucţiune+ dintr.o pereche de

registre &i pune rezultatul ;n registrul pereche#O"eration:

(i) Rd+1:Rd ← Rd+1:Rd ! K

Snta?: O"erand!: Program Counter:(i) S#IW Rd,K d ∈ {24,26,28,30, 0 ≤  K ≤  63 PC ← PC + 1

?F

Page 76: 58907199 Curs Atmega 16 III Tet

8/10/2019 58907199 Curs Atmega 16 III Tet

http://slidepdf.com/reader/full/58907199-curs-atmega-16-iii-tet 76/138

Universitatea POLITEHICA din Bucuresti PROIECT DE DIPLOMĂ  Facultatea TRANSPORTURI

Catedra Telecomenzi şi Electronică în Transporturi 2007  

160it O"code:

1001 0111 KKdd KKKK

Status egister *S7@+ and 4oolean 5ormula2I T H S V N Z C! ! !   ⇔ ⇔ ⇔ ⇔ ⇔

E?em"#u:sbi= r' ,1 Substract 1 /rom r'2r'sbi= r'8 , 6% Substract 6% /rom J pointer *r'F2r'8+

AN Logica# AN e!criere:

5ace H!P logic ;ntre conţinutul registrului d &i conţinutul registrului r &i pune rezultatul ;nregistrul /inal d#

O"eration:(i) Rd ← Rd • Rr 

Snta?: O"erand!: Program Counter:(i) AND Rd,Rr 0 ≤  d ≤  31, 0 ≤  r  ≤  31 PC ← PC + 1

 160it O"code:

::1: ::rd dddd rrrr  

Status egister *S7@+ and 4oolean 5ormulae2I T H S V N Z C

  ⇔ &   ⇔ ⇔

E?em"#u:

An r',r% 4it=ise and r' and r%, result in r')di r16,1 Set bitmasL :::: :::1 in r16An r',r16 !solate bit : in r'

ANI Logica# AN 7it Immediate

e!criere:5ace H!P logic ;ntre conţinutul registrului d &i o constantă &i pune rezultatul ;n registrul

/inal d#

O"eration:(i) Rd ← Rd • K

8:

Page 77: 58907199 Curs Atmega 16 III Tet

8/10/2019 58907199 Curs Atmega 16 III Tet

http://slidepdf.com/reader/full/58907199-curs-atmega-16-iii-tet 77/138

Universitatea POLITEHICA din Bucuresti PROIECT DE DIPLOMĂ  Facultatea TRANSPORTURI

Catedra Telecomenzi şi Electronică în Transporturi 2007  

Snta?: O"erand!: Program Counter:(i) ANDI Rd,K 16 ≤  d ≤  31, 0 ≤  K ≤  2$$ PC ← PC + 1

160it O"code:

:111 3333 dddd 3333  

Status egister *S7@+ and 4oolean 5ormulae2

I T H S V N Z C

  ⇔ &   ⇔ ⇔

E?em"#u:andi r1?,R:5 Clear upper nibble o/ r1?andi r18,R1: !solate bit in r18andi r1F,RAA Clear odd bits o/ r1F

OR Logica# OR 

e!criere:5ace SA(P logic ;ntre conţinutul registrelor d &i r &i plasează rezultatul ;n registrul

destinaţie d#

  O"eration:(i) Rd ← Rd % Rr 

Snta?: O"erand!: Program Counter:(i) &R Rd,Rr 0 ≤  d ≤  31, 0 ≤  r  ≤  31 PC ← PC + 1

160it O"code:

::1: 1:rd dddd rrrr  

Status egister *S7@+ and 4oolean 5ormula2I T H S V N Z C

! ! !   ⇔ 0   ⇔ ⇔ !

E?em"#u:

or r1,r16 $o bit=ise or bet=een registers bst r1,6 Store bit 6 o/ r1 in T /lag brts oL 4ranch i/ T /lag set

oL2 nop 4ranch destination *do nothing+

ORI Logica# OR 7it Immediate

e!criere:

81

Page 78: 58907199 Curs Atmega 16 III Tet

8/10/2019 58907199 Curs Atmega 16 III Tet

http://slidepdf.com/reader/full/58907199-curs-atmega-16-iii-tet 78/138

Universitatea POLITEHICA din Bucuresti PROIECT DE DIPLOMĂ  Facultatea TRANSPORTURI

Catedra Telecomenzi şi Electronică în Transporturi 2007  

5ace SA(P logic ;ntre conţinutul registrului d &i o constantă &i plasează rezultatul ;nregistrul destinaţie d#

O"eration:(i) Rd ← Rd % K

Snta?: O"erand!: Program Counter:(i) &RI Rd,K 16 d 31, 0  ' 2$$ PC ← PC +1

160it O"code:

0110 KKKK dddd KKKK

Status egister *S7@+ and 4oolean 5ormula2I T H S V N Z C

! ! !   ⇔ 0   ⇔ ⇔ !

E?em"#u:ori r16 ,R5: Set hight nibble o/ r16ori r1?, 1 Set bit : o/ r1?

EOR F E?c#u!i9e OR 

e!criere:5ace SA( 70clusiP ;ntre conţinutul registrelor d &i r &i pune rezultatul ;n registrul /inal d#

O"eration:

(i) Rd ← Rd  ⊕  Rr 

Snta?: O"erand!: Program Counter:(i) &R Rd,Rr 0 ≤  d ≤  31, 0 ≤  r  ≤  31 PC ← PC + 1

160it O"code:

::1: :1rd dddd rrrr  

Status egister *S7@+ and 4oolean 5ormula2I T H S V N Z C

! ! !   ⇔ 0   ⇔ ⇔ !

E?em"#u:eor r,r Clear reor r:,r'' 4it=ise e0clusie or bet=een r: and r''COM One8! Com"#ement

e!criere:Această instrucţiune /ace complement /aţă de 1 al registrului d#

8'

Page 79: 58907199 Curs Atmega 16 III Tet

8/10/2019 58907199 Curs Atmega 16 III Tet

http://slidepdf.com/reader/full/58907199-curs-atmega-16-iii-tet 79/138

Universitatea POLITEHICA din Bucuresti PROIECT DE DIPLOMĂ  Facultatea TRANSPORTURI

Catedra Telecomenzi şi Electronică în Transporturi 2007  

O"eration:(i) Rd ← ** ! Rd

Snta?: O"erand!: Program Counter:(i) C& Rd 0 ≤  d ≤  31 PC ← PC + 1

160it O"code:1::1 :1:d dddd ::::

Status egister *S7@+ and 4oolean 5ormulae2

I T H S V N Z C

! ! !   ⇔ 0   ⇔ ⇔ 1

E?em"#u:com r TaLe oneWs complement o/ r

 bre] zero 4ranch i/ zero)zero2 nop 4ranch destination *do nothing+

NE/ T7o8! Com"#ement

e!criere:!nlocuie&te conţinutul registrului d cu complementul lui /aţă de '#

O"eration:(i) Rd ← 00 ! Rd

Snta?: O"erand!: Program Counter:(i) N Rd 0 ≤  d ≤  31 PC ← PC + 1

160it O"code:

1::1 :1:d dddd :::1

Status egister *S7@+ and 4oolean 5ormula2I T H S V N Z C

! !   ⇔ ⇔ ⇔ ⇔ ⇔ ⇔

E?em"#u:  sub r11,r: Subtract r: /rom r11  brpl positie 4ranch i/ result positie  neg r11 TaLe t=oWs complement o/ r11

 positie2 nop 4ranch destination *do nothing+

8%

Page 80: 58907199 Curs Atmega 16 III Tet

8/10/2019 58907199 Curs Atmega 16 III Tet

http://slidepdf.com/reader/full/58907199-curs-atmega-16-iii-tet 80/138

Page 81: 58907199 Curs Atmega 16 III Tet

8/10/2019 58907199 Curs Atmega 16 III Tet

http://slidepdf.com/reader/full/58907199-curs-atmega-16-iii-tet 81/138

Universitatea POLITEHICA din Bucuresti PROIECT DE DIPLOMĂ  Facultatea TRANSPORTURI

Catedra Telecomenzi şi Electronică în Transporturi 2007  

e!criere:Adaugă 1P la conţinutul registrului d &i pune rezultatul ;n registrul destinaţie d#

O"eration:(i) Rd ← Rd + 1

Snta?: O"erand!: Program Counter:(i) INC Rd 0 ≤  d ≤  31 PC ← PC + 1

160it O"code:

1::1 :1:d dddd ::11

Status egister and 4oolean 5ormula2I T H S V N Z C

! ! !   ⇔ ⇔ ⇔ ⇔ !

E?em"#u:clr r'' clear r''

loop inc r'' increment r'')cpi r'',R5 Compare r'' to R5 brne loop 4ranch i/ not e]ualnop Continue *do nothing+

ECecrement

e!criere:Scade 1P din conţinutul registrului d &i pune rezultatul ;n registrul d# !ndicatorul C din

S7@ nu este a/ectat de aceasta operaţie /ăc-nd posibil ca instrucţiunea $7C sa /ie /olosită ;ntr.o bucla de numărare a secenţelor multiple#

  O"eration:(i) Rd ← Rd  - 1

Snta?: O"erand!: Program Counter:(i) DC Rd 0 ≤  d ≤  31 PC ← PC + 1

160it O"code:

1::1 :1:d dddd 1:1:

Status egister and 4oolean 5ormula2I T H S V N Z C

! ! !   ⇔ ⇔ ⇔ ⇔ !

E?em"#u: ldi r1?,R1: )oad constant in r1?

8

Page 82: 58907199 Curs Atmega 16 III Tet

8/10/2019 58907199 Curs Atmega 16 III Tet

http://slidepdf.com/reader/full/58907199-curs-atmega-16-iii-tet 82/138

Page 83: 58907199 Curs Atmega 16 III Tet

8/10/2019 58907199 Curs Atmega 16 III Tet

http://slidepdf.com/reader/full/58907199-curs-atmega-16-iii-tet 83/138

Universitatea POLITEHICA din Bucuresti PROIECT DE DIPLOMĂ  Facultatea TRANSPORTURI

Catedra Telecomenzi şi Electronică în Transporturi 2007  

I T H S V N Z C

! ! ! 0 0 0 1 !

E?em#"u:clr r18 clear r18

loop inc r18 increase r18cpi r18,R: Compare r18 to R: brne loop

SER Set a## 0it! in Regi!ter

e!criere:Encarcă R55 direct ;n registrul d *toţi biţii or /i setaţi ;n 1+#

O"eration:(i) Rd ← **

Snta?: O"erand!: Program Counter:(i) SR Rd 16 ≤  d ≤  31 PC ← PC + 1

160it O"code:

111: 1111 dddd 1111

Status egister *S7@+ and 4oolean 5ormula2I T H S V N Z C

! ! ! ! ! ! ! !

E?em"#u:clr r16 Clear r16ser r1? Set r1?out R18, r16 Qrite zeros to ort 4nop $ela> *do nothing+out R18, r1? Qrite ones to ort 4

MUL Mu#ti"# Un!igned

e!criere:Această instrucţiune /ace ;nmulţirea /ără semn 8.bit ×   8.bit → 16.bit# egistrele d &i r

conţin numere /ără semn# Cei 16 biţi ai produsului /ără semn se plaseaza in 1 *octet sup#+ si :*octet in/#+#

Rd Rr R1 R0

8?

Page 84: 58907199 Curs Atmega 16 III Tet

8/10/2019 58907199 Curs Atmega 16 III Tet

http://slidepdf.com/reader/full/58907199-curs-atmega-16-iii-tet 84/138

Universitatea POLITEHICA din Bucuresti PROIECT DE DIPLOMĂ  Facultatea TRANSPORTURI

Catedra Telecomenzi şi Electronică în Transporturi 2007  

ii5d   × ii7r    → Prd Hi9 Prd ;<

8 8 16

O"eration:(i) R1:R0 ← Rd ×  Rr (=i97d ← =i97d ×  =i97d)

Snta?: O"erand!: Program Counter:(i) "; Rd,Rr 0 ≤  d ≤  31, 0 ≤  r  ≤  31 PC ← PC + 1

160it O"code:

1::1 11rd dddd rrrr  

Status egister *S7@+ and 4oolean 5ormulae2I T H S V N Z C

! ! ! ! ! !   ⇔ ⇔

E?em"#u:mul r,r Multipl> unsigned r and rmo= r,r: Cop> result bacL in r2r

MULS Mu#ti"# Signed

e!criere:Această instrucţiune /ace ;nmulţirea cu semn 8.bit ×   8.bit → 16.bit# egistrele d &i r

conţin numere cu semn#

Rd Rr R1 R0

ii5d   × ii7r    → Prd Hi9 Prd ;<

8 8 16

O"eration:(i) R1:R0 ← Rd ×  Rr (=i97d ← =i97d ×  =i97d)

Snta?: O"erand!: Program Counter:(i) ";S Rd,Rr 16 ≤  d ≤  31, 16 ≤  r  ≤  31 PC ← PC + 1

160it O"code:

:::: ::1: dddd rrrr  

Status egister *S7@+ and 4oolean 5ormula2I T H S V N Z C

! ! ! ! ! !   ⇔ ⇔

E?em"#u:

88

Page 85: 58907199 Curs Atmega 16 III Tet

8/10/2019 58907199 Curs Atmega 16 III Tet

http://slidepdf.com/reader/full/58907199-curs-atmega-16-iii-tet 85/138

Universitatea POLITEHICA din Bucuresti PROIECT DE DIPLOMĂ  Facultatea TRANSPORTURI

Catedra Telecomenzi şi Electronică în Transporturi 2007  

muls r'1,r': Multipl> signed r'1 and r':mo= r':,r: Cop> result bacL in r'12r':

MULSU Mu#ti"# Signed 7it Un!igned

e!criere:Această instrucţiune /ace ;nmultirea ;ntre ' numere. unul cu semn iar celalalt /ără semn

8.bit ×  8.bit → 16.bit# egistrul d conţine numere cu semn iar registrul r conţine numere /ărăsemn#

Rd Rr R1 R0

ii5d   × ii7r    → Prd Hi9 Prd ;<

8 8 16

  O"eration:(i) R1:R0 ← Rd ×  Rr (=i97d ← =i97d ×  =i97d)

Snta?: O"erand!: Program Counter:(i) ";S" Rd,Rr 16 ≤  d ≤  23, 16 ≤  r  ≤  23 PC ← PC + 1

160it O"code:

:::: ::11 :ddd :rrr  

Status egister *S7@+ and 4oolean 5ormula2I T H S V N Z C

! ! ! ! ! !   ⇔ ⇔

E?em"#u:mulsu r'1,r': Multipl> signed r'1 =ith unsigned r':, signed resultmo= r':,r: Cop> result bacL in r'12r':

-MUL -ractiona# Mu#ti"# Un!igned

e!criere:

Această instrucţiune /ace ;nmulţirea /ără semn 8.bit ×  8.bit →16.bit &i e0ecută o operaţie dedeplasare cu 1 bit la stanga#

d r 1 :

Multiplicand   × Multiplier    → roduct <igh roduct )o=

8 8 16

At-t de;nmulţitul d c-t &i ;nmulţitorul r sunt două registre care conţin numere /racţionare/ără semn#

O"eration:

8F

Page 86: 58907199 Curs Atmega 16 III Tet

8/10/2019 58907199 Curs Atmega 16 III Tet

http://slidepdf.com/reader/full/58907199-curs-atmega-16-iii-tet 86/138

Universitatea POLITEHICA din Bucuresti PROIECT DE DIPLOMĂ  Facultatea TRANSPORTURI

Catedra Telecomenzi şi Electronică în Transporturi 2007  

(i) R1:R0 ← Rd ×  Rr (=i97d (1>1$) ← =i97d (1>?) ×  =i97d (1>?))

Snta?: O"erand!: Program Counter:(i) *"; Rd,Rr 16 ≤  d ≤  23, 16≤  r  ≤  23 PC ← PC + 1

160it O"code::::: ::11 :ddd 1rrr  

Status egister *S7@+ and 4oolean 5ormula2I T H S V N Z C

! ! ! ! ! !   ⇔ ⇔

E?em"#u:/mul r'%,r'' Multipl> unsigned r'% and r'' in *1#?+ /ormat, result in *1#1+ /ormatmo= r'',r: Cop> result bacL in r'%2r''

-MULS -ractiona# Mu#ti"# Signed

 e!criere:Această instrucţiune /ace ;nmulţirea cu semn 8.bit ×  8.bit →16.bit &i e0ecută o operaţie de

deplasare cu 1 bit la stanga#Rd Rr R1 R0

ii5d   × ii7r    → Prd Hi9 Prd ;<

8 8 16

At-t de;nmulţitul d c-t &i ;nmulţitorul r sunt două registre care conţin numere /racţionarecu semn#

O"eration:(i) R1:R0 ← Rd ×  Rr (=i97d (1>1$) ← =i97d (1>?) ×  =i97d (1>?))

Snta?: O"erand!: Program Counter:(i) *"; Rd,Rr 16 ≤  d ≤  23, 16≤  r  ≤  23 PC ← PC + 1

160it O"code:

:::: ::11 1ddd :rrr  

Status egister *S7@+ and 4oolean 5ormulae2

I T H S V N Z C

! ! ! ! ! !   ⇔ ⇔

E?em"#u:/muls r'%,r'' Multipl> signed r'% and r'' in *1#?+ /ormat, result in *1#1+ /ormatmo= r'',r: Cop> result bacL in r'%2r''

-MULSU -ractiona# Mu#ti"# Signed 7it Un!igned

F:

Page 87: 58907199 Curs Atmega 16 III Tet

8/10/2019 58907199 Curs Atmega 16 III Tet

http://slidepdf.com/reader/full/58907199-curs-atmega-16-iii-tet 87/138

Universitatea POLITEHICA din Bucuresti PROIECT DE DIPLOMĂ  Facultatea TRANSPORTURI

Catedra Telecomenzi şi Electronică în Transporturi 2007  

e!criere:Această instrucţiune /ace ;nmulţirea ;ntre un număr cu semn &i un număr /ără semn 8.bit ×  8.

 bit →16.bit  &i e0ecută o operaţie de deplasare cu 1 bit la stanga# $e;nmulţitul d este un număr/racţionar cu semn iar ;nmulţitorul r este un număr /racţionar /ară semn#

Rd Rr R1 R0

ii5d   × ii7r    → Prd Hi9 Prd ;<

8 8 16

 O"eration:

(i) R1:R0 ← Rd ×  Rr (=i97d (1>1$) ← =i97d (1>?) ×  =i97d (1>?))

Snta?: O"erand!: Program Counter:(i) *";S" Rd,Rr 16 ≤  d ≤  23, 16≤  r  ≤  23 PC ← PC + 1

160it O"code::::: ::11 1ddd 1rrr  

Status egister *S7@+ and 4oolean 5ormulae2

I T H S V N Z C

! ! ! ! ! !   ⇔ ⇔

E?em"#u:/mulS( r'%,r'' Multipl> signed r'% =ith unsigned r'' in *1#?+ /ormat, signed result in

*1#1+ /ormatmo= r'',r: Cop> result bacL in r'%2r''

RMP Re#ati9e um"

e!criere:Salt relati la o adresa din interalul C . '3 1 , C '3f# entru microcrocontrolere

A" cu memoria program de p-nă la 3 cuinte *8Lb+ această instrucţiune poate adresa ;ntreagamemorie#

O"eration:(i) PC ← PC + ' + 1

Snta?: O"erand!:  Program Counter:  Stac> (i) R@P ' !2K ≤  ' < 2K  PC ← PC + ' + 1  "597d

F1

Page 88: 58907199 Curs Atmega 16 III Tet

8/10/2019 58907199 Curs Atmega 16 III Tet

http://slidepdf.com/reader/full/58907199-curs-atmega-16-iii-tet 88/138

Universitatea POLITEHICA din Bucuresti PROIECT DE DIPLOMĂ  Facultatea TRANSPORTURI

Catedra Telecomenzi şi Electronică în Transporturi 2007  

160it O"code:

1100 kkkk kkkk kkkk

Status egister *S7@+ and 4oolean 5ormula2I T H S V N Z C

! ! ! ! ! ! ! !

E?em"#u:cpi r16,R' Compare r16 to R' brne error 4ranch i/ r16 R'rDmp oL (nconditional branch

error2 add r16,r1? Add r1? to r16inc r16 !ncrement r16

oL2 nop $estination /or rDmp *do nothing+

IMP Indirect um"

e!criere:  Salt indirect la adresa indicată de către registrul pointer K ;n registrul /i&ier# egistrul pointer K este de 16 biţi &i permite apelarea unei subrutine inclusă ;n primele 6L cuinte dinmemoria programului#

O"eration:(i) PC ← Z(1$:0) D7%i7= <i 16 i= PC, 128' B7= r9r5 7rB 5i(ii) PC(1$:0) ← Z(1$:0) D7%i7= <i 22 i= PC, 8 B7= r9r5 7rB 5i  PC(21:16) ←0

  Snta?: O"erand!: Program Counter: Stac>:(i),(ii) I@P N7  S77 &7r5i  N  AEE77d

  160it O"code:

1::1 :1:: :::: 1::1

Status egister *S7@+ and 4oolean 5ormula2

I T H S V N Z C

! ! ! ! ! ! ! !

E?em"#u:mo r%:,r: Set o//set to Dump tableiDmp Bump to routine pointed to b> r%12r%:

MP F um"

e!criere:

F'

Page 89: 58907199 Curs Atmega 16 III Tet

8/10/2019 58907199 Curs Atmega 16 III Tet

http://slidepdf.com/reader/full/58907199-curs-atmega-16-iii-tet 89/138

Page 90: 58907199 Curs Atmega 16 III Tet

8/10/2019 58907199 Curs Atmega 16 III Tet

http://slidepdf.com/reader/full/58907199-curs-atmega-16-iii-tet 90/138

Universitatea POLITEHICA din Bucuresti PROIECT DE DIPLOMĂ  Facultatea TRANSPORTURI

Catedra Telecomenzi şi Electronică în Transporturi 2007  

Status egister *S7@+ and 4oolean 5ormula2I T H S V N Z C

! ! ! ! ! ! ! !

E?em"#u:

  rcall routine Call subroutine  routine2 push r1 Sae r1 on the stacL  

    pop r1 estore r1

ret eturn /rom subroutine

ICALL Indirect Ca## to Su0routine

e!criere:Cheamă indirect o subrutină indicată de către registrul pointer K ;n registrul /i&ier# egistrul

 pointer K este de 16 biţi &i permite apelarea unei subrutine ce se a/lă ;n primele 6L cuinte dinmemoria programului# ointerul stiei scade cu ' la introducerea lui C# O"eration:

(i) PC(1$:0) ← Z(1$:0) D7%i7= <i 16 i= PC, 128' B7= r9r5 7rB 5i(ii) PC(1$:0) ← Z(1$:0) D7%i7= <i 22 i= PC, 8 B7= r9r5 7rB 5i  PC(21:16) ←0

 Snta?:  O"erand!:  Program Counter:  Stac>:

(i) ICA;;  N7 S77 &7r5i  STACK ← PC + 1  SP ← SP ! 2 (2 B7=, 16 i=)

(ii) ICA;;  N7  S77 &7r5i   STACK ← PC + 1  SP ← SP ! 3 (3 B7=, 22 i=)

160it O"code:

1::1 :1:1 :::: 1::1

Status egister *S7@+ and 4oolean 5ormula2

I T H S V N Z C

! ! ! ! ! ! ! !

E?em"#u:

mo r%:,r: Set o//set to call tableicall Call routine pointed to b> r%12r%:

CALL Long Ca## to a Su0routine

e!criere:Apelează o subrutină din memoria de programe# Adresa instrucţiunii următoare *C'+, a

/i stocată ;n stia *pentru reenire+# ointerul stiei scade cu ' la introducerea lui C#

F

Page 91: 58907199 Curs Atmega 16 III Tet

8/10/2019 58907199 Curs Atmega 16 III Tet

http://slidepdf.com/reader/full/58907199-curs-atmega-16-iii-tet 91/138

Universitatea POLITEHICA din Bucuresti PROIECT DE DIPLOMĂ  Facultatea TRANSPORTURI

Catedra Telecomenzi şi Electronică în Transporturi 2007  

O"eration:*i+ C← L $eices =ith 16 bits C,1'8L b>tes program memor> ma0imum*ii+ C← L $eices =ith '' bits C,M b>tes program memor> ma0imum

Snta?:  O"erand!:  Program Counter Stac>:(i) CA;; '  0 ≤  ' < 64K  PC ← ' STACK ← PC+2

  SP ← SP!2, (2 B7=, 16 i=)

(ii) CA;; '  0 ≤  ' < 4  PC ← ' STACK ← PC+2  SP ← SP!3 (3 B7=, 22 i=)

+0it O"code:

1::1 :1:L LLLL 111L  LLLL LLLL LLLL LLLL  

Status egister *S7@+ and 4oolean 5ormula2I T H S V N Z C

E?em"#u:mo r16,r: Cop> r: to r16call checL Call subroutinenop Continue *do nothing+

checL2 cpi r16,R' ChecL i/ r16 has a special alue  bre] error 4ranch i/ e]ual

ret eturn /rom subroutine

error2 rDmp error !n/inite loop

RET Return 3rom Su0routine

e!criere:  Entoarcerea din subrutină# Adresa returnată este ;ncarcată din stia# ointerul stiei creste#

O"eration:(i) PC (1$:0) ← STACK D7%i7= <i 16 i= PC, 128' B7= r9r5 7rB 5i(ii) PC (21:0) ← STACK D7%i7= <i 22 i= PC, 8 B7= r9r5 7rB 5i

  Snta?:  O"erand!:  Program Counter:  Stac>:  (i) RT N7 S77 &7r5i  SP ← SP + 2, (2 B7=, 16 i=)

(ii) RT  N7  S77 &7r5i   SP← SP + 3, (3 AB7=,22 Ai=)

160it O"code:1::1 :1:1 :::: 1:::

Status egister *S7@+ and 4oolean 5ormula2

F

Page 92: 58907199 Curs Atmega 16 III Tet

8/10/2019 58907199 Curs Atmega 16 III Tet

http://slidepdf.com/reader/full/58907199-curs-atmega-16-iii-tet 92/138

Universitatea POLITEHICA din Bucuresti PROIECT DE DIPLOMĂ  Facultatea TRANSPORTURI

Catedra Telecomenzi şi Electronică în Transporturi 2007  

I T H S V N Z C

! ! ! ! ! ! ! !

E?em"#u:  call routine Call subroutine

routine2 push r1 Sae r1 on the stacL      pop r1 estore r1

ret eturn /rom subroutine

RETI Return 3rom Interru"t

e!criere:Entoarcerea din ;ntrerupere# Adresa returnată este ;ncărcată din stia &i indicatorul de

;ntrerupere se pune ;n 1# Atenţie2 nu se salează automat ;n stiă registrul indicatorului de condiţii*5+ &i eident nu se re/ace automat din stiă#

O"eration:(i) PC (1$:0) ← STACK D7%i7= <i 16 i= PC, 128' B7= r9r5 7rB 5i(ii) PC (21:0) ← STACK D7%i7= <i 22 i= PC, 8 B7= r9r5 7rB 5i

  Snta?:  O"erand!:  Program Counter:  Stac>:  (i)  RTI N7 S77 &7r5i  SP ← SP + 2, (2 B7=, 16 i=)

(ii)  RTI  N7  S77 &7r5i   SP← SP + 3, (3 AB7=,22 Ai=)

160it O"code:

1::1 :1:1 :::1 1:::

Status egister *S7@+ and 4oolean 5ormula2I T H S V N Z C

1 ! ! ! ! ! ! !

E?em"#u: 

e0tint2 push r: Sae r: on the stacL      pop r: estore r:

  reti eturn and enable interrupts

CPSE Com"are S>i" i3 Eua#

e!criere:Această instrucţiune /ace o comparaţie ;ntre registrele d &i r &i sare la urmatoarea

instrucţiune dacă dr#O"eration:

F6

Page 93: 58907199 Curs Atmega 16 III Tet

8/10/2019 58907199 Curs Atmega 16 III Tet

http://slidepdf.com/reader/full/58907199-curs-atmega-16-iii-tet 93/138

Universitatea POLITEHICA din Bucuresti PROIECT DE DIPLOMĂ  Facultatea TRANSPORTURI

Catedra Telecomenzi şi Electronică în Transporturi 2007  

(i) IE   Rd F Rr  7 PC ← PC + 2 (r  3) 7=7 PC ← PC + 1

Snta?: O"erand!: Program Counter:(i) CPS Rd,Rr 0 ≤  d ≤  31, 0 ≤  r  ≤  31 PC ← PC + 1, Cdii E5=7 !  ='i

PC ← PC + 2, S'i 5 7 <rd i=riPC ← PC + 3, S'i 5 < <rd i=ri

160it O"code::::1 ::rd dddd rrrr  

Status egister *S7@+ and 4oolean 5ormula2

I T H S V N Z C

! ! ! ! ! ! ! !

E?em"#u:inc r !ncrease r

cpse r,r: Compare r to r:neg r Onl> e0ecuted i/ rr:nop Continue *do nothing+

CPCom"are

e!criere:Această instrucţiune /ace o comparaţie ;ntre ' registre2 d &i r# iciunul dintre aceste

registre nu se schimbă# Sunt a/ectaţi toţi indicatorii de condiţii#O"eration:

(i) Rd  - Rr 

Snta?: O"erand!: Program Counter:(i) CP Rd,Rr 0 ≤  d ≤  31, 0 ≤  r  ≤  31 PC ← PC + 1

160it O"code:

:::1 :1rd dddd rrrr  

Status egister *S7@+ and 4oolean 5ormula2I T H S V N Z C

! !   ⇔ ⇔ ⇔ ⇔ ⇔ ⇔

E?em"#u:cp r,r1F Compare r =ith r1F brne note] 4ranch i/ r r1F

note]2 nop 4ranch destination *do nothing+

CPCCom"are 7it Carr

F?

Page 94: 58907199 Curs Atmega 16 III Tet

8/10/2019 58907199 Curs Atmega 16 III Tet

http://slidepdf.com/reader/full/58907199-curs-atmega-16-iii-tet 94/138

Page 95: 58907199 Curs Atmega 16 III Tet

8/10/2019 58907199 Curs Atmega 16 III Tet

http://slidepdf.com/reader/full/58907199-curs-atmega-16-iii-tet 95/138

Universitatea POLITEHICA din Bucuresti PROIECT DE DIPLOMĂ  Facultatea TRANSPORTURI

Catedra Telecomenzi şi Electronică în Transporturi 2007  

 brne error 4ranch i/ r1F%

error nop 4ranch destination *do nothing+

S(RC S>i" i3 (it in Regi!ter i! C#earede!criere:

Această instrucţiune testează un singur bit din registru &i sare la următoarea instrucţiune dacă bitul este :P#

O"eration:(i) IE   Rr() F 0 7 PC ← PC + 2 (r  3) 7=7 PC ← PC + 1

Snta?: O"erand!: Program Counter:(i) S#RC Rr, 0 ≤  r  ≤  31, 0 ≤   ≤  ? PC ← PC + 1, Cdii E5=7 !  ='i

PC ← PC + 2, S'i 5 7 <rd i=riPC ← PC + 3, S'i 5 < <rd i=ri

160it O"code:

1111 11:r rrrr :bbb

Status egister *S7@+ and 4oolean 5ormula2

I T H S V N Z C

! ! ! ! ! ! ! !

E?em"#u:sub r:,r1 Subtract r1 /rom r:sbrc r:,? SLip i/ bit ? in r: clearedsub r:, r1 Onl> e0ecuted i/ bit ? in r: not clearednop Continue *do nothing+

S(RS S>i" i3 (it in Regi!ter i! Set

e!criere:Această instrucţiune testează un singur bit din registru &i sare la următoarea instrucţiune dacă

 bitul este 1P#O"eration:

(i) IE   Rr() F 1 7 PC ← PC + 2 (r  3) 7=7 PC ← PC + 1

Snta?: O"erand!: Program Counter:(i) S#RS Rr, 0 ≤  r  ≤  31, 0 ≤   ≤  ? PC ← PC + 1, Cdii E5=7 !  ='i

PC ← PC + 2, S'i 5 7 <rd i=riPC ← PC + 3, S'i 5 < <rd i=ri

160it O"code:

FF

Page 96: 58907199 Curs Atmega 16 III Tet

8/10/2019 58907199 Curs Atmega 16 III Tet

http://slidepdf.com/reader/full/58907199-curs-atmega-16-iii-tet 96/138

Universitatea POLITEHICA din Bucuresti PROIECT DE DIPLOMĂ  Facultatea TRANSPORTURI

Catedra Telecomenzi şi Electronică în Transporturi 2007  

1111 111r rrrr :bbb

Status egister *S7@+ and 4oolean 5ormula2I T H S V N Z C

! ! ! ! ! ! ! !

E?em"#u:sub r:, r1 Substract r1 /rom r:sbrs r:, ? SLip i/ bit ? in r: setneg r: Onl> e0ecuted i/ bit ? in r: not setnop Continue *do nothing+

S(IC S>i" i3 (it in IO Regi!ter i! C#eared

e!criere:

Această instrucţiune testează un singur bit ;n registrul de !ntrare9!e&ire &i sare la urmatoareainstrucţiune dacă bitul este :P#

O"eration:(i) IE   IG&(A,) F 0 7 PC ← PC + 2 (r  3) 7=7 PC ← PC + 1

Snta?: O"erand!: Program Counter:(i) S#IC  A, 0 ≤   A ≤  31, 0 ≤   ≤  ? PC ← PC + 1, Cdii E5=7 !  ='i

PC ← PC + 2, S'i 5 7 <rd i=riPC ← PC + 3, S'i 5 < <rd i=ri

160it O"code:

1::1 1::1 AAAA Abbb

Status egister *S7@+ and 4oolean 5ormula2

I T H S V N Z C

! ! ! ! ! ! ! !

E?em"#u:7'=ait2 sbic R1c,1 SLip ne0t inst# !/ 77Q7 cleared  rDmp e'=ait 77OM =rite not /inished  nop Continue *do nothing+

S(IS S>i" i3 (it in IO Regi!ter i! Set

e!criere:Această instrucţiune testează un singur bit ;n registrul de !ntrare9!e&ire &i sare la urmatoarea

instrucţiune dacă bitul este 1P# O"eration:

1::

Page 97: 58907199 Curs Atmega 16 III Tet

8/10/2019 58907199 Curs Atmega 16 III Tet

http://slidepdf.com/reader/full/58907199-curs-atmega-16-iii-tet 97/138

Universitatea POLITEHICA din Bucuresti PROIECT DE DIPLOMĂ  Facultatea TRANSPORTURI

Catedra Telecomenzi şi Electronică în Transporturi 2007  

(i) IE   IG&(A,) F 1 7 PC ← PC + 2 (r  3) 7=7 PC ← PC + 1

Snta?: O"erand!: Program Counter:(i) S#IS  A, 0 ≤   A ≤  31, 0 ≤   ≤  ? PC ← PC + 1, Cdii E5=7 !  ='i

PC ← PC + 2, S'i 5 7 <rd i=riPC ← PC + 3, S'i 5 < <rd i=ri

160it O"code:1::1 1:11 AAAA Abbb

Status egister *S7@+ and 4oolean 5ormula2I T H S V N Z C

! ! ! ! ! ! ! !

E?em"#u:=aitset 2 sbis R1:,: SLip ne0t inst# !/ bit : in ort $ set  Dmp =aitset 4it not set  nop Continue *do nothing+

(R(S (ranc i3 (it in SRE/ i! Set

e!criere:Salt condiţionat relati# Testează un bit ;n S7@ dacă bitul e 1 C cre&te cu L1 alt/el

cre&te normal cu 1# Saltul se /ace cu L sau –L# arametrul L este un deplasament /aţă de aloareadin C &i este reprezentat ;n complement /aţă de '#

O"eration:(i) IE   SR(=) F 1 7 PC ← PC + ' + 1, 7=7 PC ← PC + 1

Snta?: O"erand!: Program Counter:(i) #R#S =,' 0 ≤  = ≤  ?, !64 ≤  ' ≤  +63 PC ← PC + ' + 1

PC ← PC + 1, iE  dii i= E5=7

160it O"code:

1111 ::LL LLLL Lsss

Status egister *S7@+ and 4oolean 5ormulae2

I T H S V N Z C

E?em"#u: bst r:,% )oad T bit =ith bit % o/ r: brbs 6,bitset 4ranch T bit =as set

 bitset2 nop 4ranch destination *do nothing+

(R(C (ranc i3 (it in SRE/ i! C#eared

1:1

Page 98: 58907199 Curs Atmega 16 III Tet

8/10/2019 58907199 Curs Atmega 16 III Tet

http://slidepdf.com/reader/full/58907199-curs-atmega-16-iii-tet 98/138

Universitatea POLITEHICA din Bucuresti PROIECT DE DIPLOMĂ  Facultatea TRANSPORTURI

Catedra Telecomenzi şi Electronică în Transporturi 2007  

e!criere:Salt condiţionat relati# Testează un bit ;n S7@ dacă bitul e zero C cre&te cu L1 alt/el

cre&te normal cu 1# Saltul se /ace cu L sau –L# arametrul L este un deplasament /aţă de aloareadin C &i este reprezentat ;n complement /aţa de '#

O"eration:

(i) IE   SR(=) F 0 7 PC ←

 PC + ' + 1, 7=7 PC ←

 PC + 1

Snta?: O"erand!: Program Counter:(i) #R#C =,' 0 ≤  = ≤  ?, !64 ≤  ' ≤  +63 PC ← PC + ' + 1

PC ← PC + 1, iE  dii i= E5=7

160it O"code:

1111 :1LL LLLL Lsss

Status egister *S7@+ and 4oolean 5ormulae2

I T H S V N Z C

E?em"#u:cpi r':, Compare r': to the alue  brbc 1,note] 4ranch i/ zero /lag cleared###

note]2nop 4ranch destination *do nothing+

(RE (ranc i3 Eua#

e!criere:

Salt condiţionat relati# Testează Kero /lagP *indicatorul K+ daca acesta e 1 logicP Ccre&te cu L1 alt/el cre&te normal cu 1# !ndicatorul K este 1 dacă dr , ;n registre /iind numere cusau /ară semn# Saltul se /ace cu L sau –L# arametru L este un deplasament /aţă de aloarea dinC &i este reprezentat ;n complement /aţă de '#

 O"eration:

*i+ IE  Rd F Rr  (Z F 1) 7 PC ← PC + ' + 1, 7=7 PC ← PC + 1

Snta?: O"erand!: Program Counter:(i) #R ' !64 ≤  ' ≤  +63 PC ← PC + ' + 1

PC ← PC + 1, iE  dii i= E5=7

160it O"code:

1111 ::LL LLLL L::1

Status egister *S7@+ and 4oolean 5ormulae2

I T H S V N Z C

E?em"#u:cp r1,r: Compare registers r1 and r:

1:'

Page 99: 58907199 Curs Atmega 16 III Tet

8/10/2019 58907199 Curs Atmega 16 III Tet

http://slidepdf.com/reader/full/58907199-curs-atmega-16-iii-tet 99/138

Universitatea POLITEHICA din Bucuresti PROIECT DE DIPLOMĂ  Facultatea TRANSPORTURI

Catedra Telecomenzi şi Electronică în Transporturi 2007  

 bre] e]ual 4ranch i/ registers e]ual)

e]ual2 nop 4ranch destination *do nothing+

(RNE (ranc i3 Not Eua#

e!criere:Salt condiţionat relati# Testează indicatorul KP dacă acesta e :P logic, C cre&te cu L1

alt/el cre&te normal cu 1# !ndicatorul K este : dacă d r , ;n registre /iind numere cu sau /arăsemn# Saltul se /ace cu L sau –L# arametru L este un deplasament /aţă de aloarea din C &i estereprezentat ;n complement /aţă de '#

O"eration:(i) IE   Rd ≠  Rr  (Z F 0) 7 PC ← PC + ' + 1, 7=7 PC ← PC + 1

Snta?: O"erand!: Program Counter:(i) #RN ' !64 ≤  ' ≤  +63 PC ← PC + ' + 1

PC ← PC + 1, iE  dii i= E5=7

160it O"code:

1111 :1LL LLLL L::1

Status egister *S7@+ and 4oolean 5ormula2

I T H S V N Z C

E?em"#u:eor r'?,r'? Clear r'?

loop2 inc r'? !ncrease r'?cpi r'?, compare r'? to  brne loop 4ranch i/ r'? nop )oop e0it *do nothing+

(RCS (ranc i3 Carr Set

e!criere:Salt condiţionat relati# Testează indicatorul Carr> dacă Carr> este 1, C cre&te cu L1

alt/el cre&te normal cu 1# Saltul se /ace cu L sau –L# arametru L este un deplasament /aţă dealoarea din C &i este reprezentat ;n complement /aţă de '#

O"eration:(i) IE   C F 1 7 PC ← PC + ' + 1, 7=7 PC ← PC + 1

Snta?: O"erand!: Program Counter:

1:%

Page 100: 58907199 Curs Atmega 16 III Tet

8/10/2019 58907199 Curs Atmega 16 III Tet

http://slidepdf.com/reader/full/58907199-curs-atmega-16-iii-tet 100/138

Universitatea POLITEHICA din Bucuresti PROIECT DE DIPLOMĂ  Facultatea TRANSPORTURI

Catedra Telecomenzi şi Electronică în Transporturi 2007  

(i) #RCS ' !64 ≤  ' ≤  +63 PC ← PC + ' + 1PC ← PC + 1, iE  dii i= E5=7

160it O"code:

1111 ::LL LLLL L:::

Status egister *S7@+ and 4oolean 5ormulae2I T H S V N Z C

E?em"#u:cpi r'6,R6 Compare r'6 =ith R6

  brcs carr> 4ranch i/ carr> set

carr>2 nop 4ranch destination *do nothing+

(RCC (ranc i3 Carr C#eared

e!criere:Salt condiţionat relati# Testează indicatorul Carr> dacă Carr> este zero C cre&te cu L1

alt/el cre&te normal cu 1# Saltul se /ace cu L sau –L# arametru L este un deplasament /aţă dealoarea din C &i este reprezentat ;n complement /aţă de '#

 

O"eration:(i) IE   C F 0 7 PC ← PC + ' + 1, 7=7 PC ← PC + 1

Snta?: O"erand!: Program Counter:(i) #RCC ' !64 ≤  ' ≤  +63 PC ← PC + ' + 1

PC ← PC + 1, iE  dii i= E5=7

160it O"code:

1111 :1LL LLLL L:::

Status egister *S7@+ and 4oolean 5ormulae2

I T H S V N Z C

E?em"#u:add r'',r'% Add r'% to r'' brcc nocarr> 4ranch i/ carr> cleared

  nocarr>2 nop 4ranch destination *do nothing+

1:

Page 101: 58907199 Curs Atmega 16 III Tet

8/10/2019 58907199 Curs Atmega 16 III Tet

http://slidepdf.com/reader/full/58907199-curs-atmega-16-iii-tet 101/138

Universitatea POLITEHICA din Bucuresti PROIECT DE DIPLOMĂ  Facultatea TRANSPORTURI

Catedra Telecomenzi şi Electronică în Transporturi 2007  

(RSH (ranc i3 Same or Higer $Un!igned' e!criere: 

Salt condiţionat relati# Testează indicatorul Carr>P dacă acesta este :P logic, C cre&te cu

L1 alt/el cre&te normal cu 1# !ndicatorul C este : dacă d≥

r , ;n registre /iind numere cu sau/ară semn# Saltul se /ace cu L sau –L# arametru L este un deplasament /aţă de aloarea din C &ieste reprezentat ;n complement /aţă de '#

O"eration:(i) IE   Rd ≥ Rr  (C F 0) 7 PC ← PC + ' + 1, 7=7 PC ← PC + 1

Snta?: O"erand!: Program Counter:(i) #RSH ' !64 ≤  ' ≤  +63 PC ← PC + ' + 1

PC ← PC + 1, iE  dii i= E5=7

160it O"code:

1111 :1LL LLLL L:::

Status egister *S7@+ and 4oolean 5ormula2

I T H S V N Z C

E?em"#u:subi r1F, Subtract /rom r1F brsh highsm 4ranch i/ r1F *unsigned+

highsm2 nop 4ranch destination *do nothing+

(RLO (ranc i3 Lo7er $Un!igned'

e!criere:Salt condiţionat relati# Testează indicatorul Carr>P dacă acesta este 1P logic, C cre&te cu

L1 alt/el cre&te normal cu 1# !ndicatorul C este 1 dacă d < r , ;n registre /iind numere cu sau /arăsemn# Saltul se /ace cu L sau –L# arametru L este un deplasament /aţă de aloarea din C &i estereprezentat ;n complement /aţă de '#

O"eration:(i) IE   Rd  Rr  (C F 1) 7 PC ← PC + ' + 1, 7=7 PC ← PC + 1

Snta?: O"erand!: Program Counter:(i) #R;& ' !64 ≤  ' ≤  +63 PC ← PC + ' + 1

PC ← PC + 1, iE  dii i= E5=7

160it O"code:

1111 ::LL LLLL L:::

1:

Page 102: 58907199 Curs Atmega 16 III Tet

8/10/2019 58907199 Curs Atmega 16 III Tet

http://slidepdf.com/reader/full/58907199-curs-atmega-16-iii-tet 102/138

Page 103: 58907199 Curs Atmega 16 III Tet

8/10/2019 58907199 Curs Atmega 16 III Tet

http://slidepdf.com/reader/full/58907199-curs-atmega-16-iii-tet 103/138

Universitatea POLITEHICA din Bucuresti PROIECT DE DIPLOMĂ  Facultatea TRANSPORTURI

Catedra Telecomenzi şi Electronică în Transporturi 2007  

O"eration:(i) IE   N F 0 7 PC ← PC + ' + 1, 7=7 PC ← PC + 1

Snta?: O"erand!: Program Counter:

(i) #RP; ' !64 ≤

 ' ≤

 +63 PC ←

 PC + ' + 1PC ← PC + 1, iE  dii i= E5=7

  160it O"code:1111 :1LL LLLL L:1:

Status egister *S7@+ and 4oolean 5ormula2I T H S V N Z C

E?em"#u:  subi r'6,R: Subtract R: /rom r'6  brpl positie 4ranch i/ r'6 positie

 positie2 nop 4ranch destination *do nothing+(R/E (ranc i3 /reater or Eua# $Signed'

e!criere:Salt condiţionat relati# Testează bitul de semn SP dacă acesta e : logicP, C cre&te cu

L1 alt/el cre&te normal cu 1# !ndicatorul S este : dacă d ≥ r , ;n registre /iind numere cu sau /arăsemn# Saltul se /ace cu L sau –L# arametru L este un deplasament /aţă de aloarea din C &i estereprezentat ;n complement /aţă de '#

O"eration:(i) IE   Rd ≥  Rr  (N ⊕ V F 0) 7 PC ← PC + ' + 1, 7=7 PC ← PC + 1

Snta?: O"erand!: Program Counter:(i) #R ' !64 ≤  ' ≤  +63 PC ← PC + ' + 1

PC ← PC + 1, iE  dii i= E5=7

160it O"code:

1111 :1LL LLLL L1::

Status egister *S7@+ and 4oolean 5ormulae2

I T H S V N Z C

E?em"#u:cp r11,r1' Compare registers r11 and r1' brge greate] 4ranch i/ r11 r1' *signed+

greate]2 nop 4ranch destination *do nothing+

(RLT (ranc i3 Le!! Tan $Signed'

1:?

Page 104: 58907199 Curs Atmega 16 III Tet

8/10/2019 58907199 Curs Atmega 16 III Tet

http://slidepdf.com/reader/full/58907199-curs-atmega-16-iii-tet 104/138

Page 105: 58907199 Curs Atmega 16 III Tet

8/10/2019 58907199 Curs Atmega 16 III Tet

http://slidepdf.com/reader/full/58907199-curs-atmega-16-iii-tet 105/138

Universitatea POLITEHICA din Bucuresti PROIECT DE DIPLOMĂ  Facultatea TRANSPORTURI

Catedra Telecomenzi şi Electronică în Transporturi 2007  

E?em"#u: brhs hset 4ranch i/ hal/ carr> /lag set

 hset 2 nop 4ranch destination *do nothing+

(RHC (ranc i3 Ha#3 Carr -#ag i! C#eared e!criere:

Salt condiţionat relati# Testează indicatorul <al/ Carr>P dacă acesta e :P logic, C cre&tecu L1 alt/el cre&te normal cu 1# Saltul se /ace cu L sau –L# arametru L este un deplasament /aţăde aloarea din C &i este reprezentat ;n complement /aţă de '# 

O"eration:

(i) IE   H F 0 7 PC ←

 PC + ' + 1, 7=7 PC ←

 PC + 1

Snta?: O"erand!: Program Counter:(i) #RHC ' !64 ≤  ' ≤  +63 PC ← PC + ' + 1

PC ← PC + 1, iE  dii i= E5=7

160it O"code:

1111 :1LL LLLL L1:1

Status egister *S7@+ and 4oolean 5ormula2

I T H S V N Z C

E?em"#u: brhc hclear 4ranch i/ hal/ carr> /lag cleared

hclear2 nop 4ranch destination *do nothing+

(RTS (ranc i3 te T -#ag i! Set

e!criere:Salt condiţionat relati# Testează indicatorul TP dacă acesta e 1P logic, C cre&te cu L1

alt/el cre&te normal cu 1# Saltul se /ace cu L sau –L# arametru L este un deplasament /aţă dealoarea din C &i este reprezentat ;n complement /aţă de '#

O"eration:(i) IE   T F 1 7 PC ← PC + ' + 1, 7=7 PC ← PC + 1

Snta?: O"erand!: Program Counter:(i) #RTS ' !64 ≤  ' ≤  +63 PC ← PC + ' + 1

PC ← PC + 1, iE  dii i= E5=7

1:F

Page 106: 58907199 Curs Atmega 16 III Tet

8/10/2019 58907199 Curs Atmega 16 III Tet

http://slidepdf.com/reader/full/58907199-curs-atmega-16-iii-tet 106/138

Universitatea POLITEHICA din Bucuresti PROIECT DE DIPLOMĂ  Facultatea TRANSPORTURI

Catedra Telecomenzi şi Electronică în Transporturi 2007  

160it O"code:

1111 ::LL LLLL L11:

Status egister *S7@+ and 4oolean 5ormulae2

I T H S V N Z C

E?em"#u: bst r%, Store bit o/ r% in T /lag brts tset 4ranch i/ this bit =as set

tset2 nop 4ranch destination *do nothing+

(RTC (ranc i3 te T -#ag i! C#eared 

e!criere:Salt condiţionat relati# Testează indicatorul TP dacă acesta e :P logic, C cre&te cu L1

alt/el cre&te normal cu 1# Saltul se /ace cu L sau –L# arametru L este un deplasament /aţă dealoarea din C &i este reprezentat ;n complement /aţă de '#

O"eration:(i) IE   T F 0 7 PC ← PC + ' + 1, 7=7 PC ← PC + 1

Snta?: O"erand!: Program Counter:(i) #RTC ' !64 ≤  ' ≤  +63 PC ← PC + ' + 1

PC ← PC + 1, iE  dii i= E5=7

160it O"code:

1111 01kk kkkk k110

Status egister *S7@+ and 4oolean 5ormulae2

I T H S V N Z C

E?em"#u: bst r%, Store bit o/ r% in T /lag brtc tclear 4ranch i/ this bit =as cleared

tclear2 nop 4ranch destination *do nothing+

(R,S (ranc i3 O9er3#o7 Set

e!criere:Salt condiţionat relati# Testează indicatorul "P dacă acesta e 1P logic, C cre&te cu L1

alt/el cre&te normal cu 1# Saltul se /ace cu L sau –L# arametru L este un deplasament /aţă dealoarea din C &i este reprezentat ;n complement /aţă de '#

11:

Page 107: 58907199 Curs Atmega 16 III Tet

8/10/2019 58907199 Curs Atmega 16 III Tet

http://slidepdf.com/reader/full/58907199-curs-atmega-16-iii-tet 107/138

Universitatea POLITEHICA din Bucuresti PROIECT DE DIPLOMĂ  Facultatea TRANSPORTURI

Catedra Telecomenzi şi Electronică în Transporturi 2007  

O"eration:(i) IE   V F 1 7 PC ← PC + ' + 1, 7=7 PC ← PC + 1

Snta?: O"erand!: Program Counter:

(i) #RVS ' !64 ≤  ' ≤  +63 PC ← PC + ' + 1PC ← PC + 1, iE  dii i= E5=7

160it O"code:

1111 ::LL LLLL L:11

Status egister *S7@+ and 4oolean 5ormula2

I T H S V N Z C

E?em"#u:add r%,r Add r to r% brs oer/l 4ranch i/ oer/lo=

oer/l2 nop 4ranch destination *do nothing+

(R,C (ranc i3 O9er3#o7 C#eared e!criere:

Salt condiţionat relati# Testează indicatorul "P dacă acesta e :P logic, C cre&te cu L1alt/el cre&te normal cu 1# Saltul se /ace cu L sau –L# arametru L este un deplasament /aţă dealoarea din C &i este reprezentat ;n complement /aţă de '#

O"eration:(i) IE   V F 0 7 PC ← PC + ' + 1, 7=7 PC ← PC + 1

Snta?: O"erand!: Program Counter:(i) #RVC ' !64 ≤  ' ≤  +63 PC ← PC + ' + 1

PC ← PC + 1, iE  dii i= E5=7

160it O"code:

1111 :1LL LLLL L:11

Status egister *S7@+ and 4oolean 5ormula2

I T H S V N Z C

E?em"#u:add r%,r Add r to r% brc nooer 4ranch i/ no oer/lo=

111

Page 108: 58907199 Curs Atmega 16 III Tet

8/10/2019 58907199 Curs Atmega 16 III Tet

http://slidepdf.com/reader/full/58907199-curs-atmega-16-iii-tet 108/138

Universitatea POLITEHICA din Bucuresti PROIECT DE DIPLOMĂ  Facultatea TRANSPORTURI

Catedra Telecomenzi şi Electronică în Transporturi 2007  

nooer2 nop 4ranch destination *do nothing+

MO,  Co"1 Regi!ter

e!criere:Această instrucţiune copiază un registru ;n altul# egistrul sursă, r, răm-ne neschimbat ;n

timp ce registrul destinaţie, d, este incărcat cu o copie a lui r#

O"eration:(i) Rd ← Rd + Rr  + C

Snta?: O"erand!: Program Counter:(i) &V Rd,Rr 0 ≤  d ≤  31, 0 ≤  r  ≤  31 PC ← PC + 1

160it O"code:

::1: 11rd dddd rrrr  

Status egister *S7@+ 4oolean 5ormula2

I T H S V N Z C

! ! ! ! ! ! ! !

E?em"#u:mo r16,r: Cop> r: to r16call checL Call subroutine

checL2 cpi r16,R11 Compare r16 to R11ret eturn /rom subrutine

MO,G  Co"1 Regi!ter Gord

e!criere:Această instrucţiune copiază un registru pereche ;n alt registru pereche# egistrul sursă,

r12r, răm-ne neschimbat ;n timp ce registrul destinaţie, Rd+1:Rd, este incărcat cu o copie a luiRr + 1:Rr. 

O"eration:(i) Rd+1:Rd ← Rr+1:Rr 

Snta?: O"erand!: Program Counter:(i) &VW Rd,Rr d ∈ {0,2,>>>,30, r  ∈ {0,2,>>>,30 PC ← PC + 1

160it O"code:

11'

Page 109: 58907199 Curs Atmega 16 III Tet

8/10/2019 58907199 Curs Atmega 16 III Tet

http://slidepdf.com/reader/full/58907199-curs-atmega-16-iii-tet 109/138

Universitatea POLITEHICA din Bucuresti PROIECT DE DIPLOMĂ  Facultatea TRANSPORTURI

Catedra Telecomenzi şi Electronică în Transporturi 2007  

:::: :::1 dddd rrrr  

Status egister *S7@+ 4oolean 5ormula2

I T H S V N Z C

! ! ! ! ! ! ! !

E?em"#u:mo r16,r: Cop> r12r: to r1?2r16call checL Call subroutine

checL2 cpi r16,R11 Compare r16 to R11cpi r1?,R%' Compare r1? to R%'ret eturn /rom subrutine

LI  Load Immediate

e!criere:

Encarcă direct o constantă de 8 biţi ;n registrul 16## %1#

O"eration:(i) Rd ← K

Snta?: O"erand!: Program Counter:(i) ;DI Rd,K 16 ≤  d ≤  31, 0 ≤  K ≤  2$$ PC ← PC + 1

160it O"code:

111: LLLL dddd LLLL  

Status egister *S7@+ 4oolean 5ormula2

I T H S V N Z C

! ! ! ! ! ! ! !

E?em"#u:

clr r%1 Clear K high b>teldi r%: Set K lo= b>te to R5:

lpm )oad constant /rom program memor> pointed to b> K

L  Load Indirect 3rom data !"ace to Regi!ter u!ing Inde? *

11%

Page 110: 58907199 Curs Atmega 16 III Tet

8/10/2019 58907199 Curs Atmega 16 III Tet

http://slidepdf.com/reader/full/58907199-curs-atmega-16-iii-tet 110/138

Universitatea POLITEHICA din Bucuresti PROIECT DE DIPLOMĂ  Facultatea TRANSPORTURI

Catedra Telecomenzi şi Electronică în Transporturi 2007  

e!criere:

Encarcă indirect un octet din zona de date ;n registru##Adresa locaţiei este data de I *16 biti+# Accesul la memorie este limitat de segmentul de datecurent, de 63octeţi# entru accesarea altui segment de date cu mai mult de 63octeţi, trebuieschimbat AMI din domeniul registrelor de !9O #

egistrul I răm-ne neschimbat sau poate /i post.incrementat sau pre.decrementat#Aceste caracteristici sunt /aorabile ;n special pentru accesarea tablourilor# $e reţinut că doar b>te.ul in/erior al pointerului I este utilizat iar b>te.ul superior al pointerului I , nu este utilizat deaceastă instrucţiune &i poate /i utilizat ;n alte scopuri#Re;u#tatu# o"era@ii#or de mai o! e!tenede3init:

)$ r'6, I)$ r'?, I)$ r'6, .I)$ r'?, .I

U!ing te * "ointer:

O"eration: Comment:(i) Rd ← (J) J: "597d

(ii) Rd ← (J) J ← J + 1 J: P= ir777d

(iii) J ← J ! 1 Rd ← (J) J: Pr7 d7r777d

Snta?: O"erand!: Program Counter:(i) ;D Rd, J 0 ≤  d ≤  31 PC ← PC + 1

(ii) ;D Rd, J+ 0 ≤  d ≤  31 PC ← PC + 1

(iii) ;D Rd, !J 0 ≤  d ≤  31 PC ← PC + 1

160it O"code:  *i+ 1::1 :::d dddd 11::  *ii+ 1::1 :::d dddd 11:1  *iii+ 1::1 :::d dddd 111:

Status egister *S7@+ 4oolean 5ormula2

I T H S V N Z C

! ! ! ! ! ! ! !

70emplu2

clr r'? Clear I high b>te

ldi r'6, R6: Set I lo= b>te to R6:

ld r:, I )oad r: =ith data space loc# R6: *I post inc+

ld r1, I )oad r1 =ith data space loc# R61

ldi r'6, R6% Set I lo= b>te to R6%

ld r', I )oad r' =ith data space loc# R6%ld r%, .I )oad r% =ith data space loc# R6' *I pre dec+

11

Page 111: 58907199 Curs Atmega 16 III Tet

8/10/2019 58907199 Curs Atmega 16 III Tet

http://slidepdf.com/reader/full/58907199-curs-atmega-16-iii-tet 111/138

Universitatea POLITEHICA din Bucuresti PROIECT DE DIPLOMĂ  Facultatea TRANSPORTURI

Catedra Telecomenzi şi Electronică în Transporturi 2007  

L $L'  Load Indirect 3rom data !"ace to Regi!ter u!ing Inde? =

e!criere:

Encarcă indirect un octet din zona de date, ;n registru#Adresa locaţiei este data de J *16 biti+ # Accesul la memorie este limitat de segmentul de datecurent, de 63octeţi# entru accesarea altui segment de date cu mai mult de 63octeţi, trebuieschimbat AMJ din domeniul registrelor de !9O #egistrul J răm-ne neschimbat sau poate /i post.incrementat sau pre.decrementat#Aceste caracteristici sunt /aorabile ;n special pentru accesarea tablourilor# $e reţinut că doar b>te.ul in/erior al pointerului J este utilizat iar b>te.ul superior al pointerului J , nu este utilizat deaceastă instrucţiune &i poate /i utilizat ;n alte scopuri# Re;u#tatu# o"era@ii#or de mai o! e!tenede3init:

)$ r'8, J

)$ r'F, J)$ r'8, .J)$ r'F, .J

U!ing te = "ointer:

O"eration: Comment:(i) Rd ← () : "597d

(ii) Rd ← ()  ←  + 1 : P= ir777d

(iii)  ←  ! 1 Rd ← () : Pr7 d7r777d

Snta?: O"erand!: Program Counter:(i) ;D Rd,  0 ≤  d ≤  31 PC ← PC + 1

(ii) ;D Rd, + 0 ≤  d ≤  31 PC ← PC + 1

(iii) ;D Rd, ! 0 ≤  d ≤  31 PC ← PC + 1

(iiii) ;DD Rd, +L 0 ≤  d ≤  31, 0 ≤  L ≤  63 PC ← PC + 1

160it O"code:  *i+ 1::: :::d dddd 1:::  *ii+ 1::1 :::d dddd 1::1  *iii+ 1::1 :::d dddd 1:1:  *iiii+ 1:]: ]]:d dddd 1]]]

Status egister *S7@+ 4oolean 5ormula2

I T H S V N Z C

! ! ! ! ! ! ! !

Exemplu:clr r'F Clear J high b>te

11

Page 112: 58907199 Curs Atmega 16 III Tet

8/10/2019 58907199 Curs Atmega 16 III Tet

http://slidepdf.com/reader/full/58907199-curs-atmega-16-iii-tet 112/138

Universitatea POLITEHICA din Bucuresti PROIECT DE DIPLOMĂ  Facultatea TRANSPORTURI

Catedra Telecomenzi şi Electronică în Transporturi 2007  

ldi r'8, R6: Set J lo= b>te to R6:

ld r:, J )oad r: =ith data space loc# R6: *J post inc+

ld r1, J )oad r1 =ith data space loc# R61

ldi r'8, R6% Set J lo= b>te to R6%

ld r', J )oad r' =ith data space loc# R6%ld r%, .J )oad r% =ith data space loc# R6' *J pre dec+

ldd r, J' )oad r =ith data space loc# R6

L $L'  Load Indirect -rom data !"ace to Regi!ter u!ing Inde? 

e!criere: Encarcă indirect un octet din zona de date, ;n registru#

Adresa locaţiei este data de K *16 biti+# Accesul la memorie este limitat de segmentul de date

curent, de 63octeţi# entru accesarea altui segment de date cu mai mult de 63octeţi, trebuieschimbat AMK din domeniul registrelor de !9O #egistrul K răm-ne neschimbat sau poate /i post.incrementat sau pre.decrementat#

Aceste caracteristici sunt /aorabile ;n special pentru accesarea tablourilor# $e reţinut că doar b>te.ul in/erior al pointerului K este utilizat iar b>te.ul superior al pointerului K , nu este utilizat deaceastă instrucţiune &i poate /i utilizat ;n alte scopuri# Re;u#tatu# o"eratii#or de mai o! e!tenede3init:

)$ r%:, K)$ r%1, K)$ r%:, .K

)$ r%1, .KU!ing te = "ointer:

O"eration: Comment:(i) Rd ← (Z) Z: "597d

(ii) Rd ← (Z) Z ← Z + 1 Z: P= ir777d

(iii) Z ← Z ! 1 Rd ← (Z) Z: Pr7 d7r777d

(iiii) Rd ← (Z+L) Z: "597d, L: Di=577

Snta?: O"erand!: Program Counter:

(i) ;D Rd, Z 0 ≤  d ≤  31 PC ← PC + 1(ii) ;D Rd, Z+ 0 ≤  d ≤  31 PC ← PC + 1

(iii) ;D Rd, !Z 0 ≤  d ≤  31 PC ← PC + 1

(iiii) ;DD Rd, Z+L 0 ≤  d ≤  31, 0 ≤  L ≤  63 PC ← PC + 1

160it O"code:  *i+ 1::: :::d dddd 1:::  *ii+ 1::1 :::d dddd 1::1

116

Page 113: 58907199 Curs Atmega 16 III Tet

8/10/2019 58907199 Curs Atmega 16 III Tet

http://slidepdf.com/reader/full/58907199-curs-atmega-16-iii-tet 113/138

Universitatea POLITEHICA din Bucuresti PROIECT DE DIPLOMĂ  Facultatea TRANSPORTURI

Catedra Telecomenzi şi Electronică în Transporturi 2007  

*iii+ 1::1 :::d dddd 1:1:  *iiii+ 1:]: ]]:d dddd :]]]

Status egister *S7@+ 4oolean 5ormula2

I T H S V N Z C

! ! ! ! ! ! ! !

E?em"#u:

clr r%1 Clear K high b>te

ldi r%:, R6: Set K lo= b>te to R6:

ld r:, K )oad r: =ith data space loc# R6: *K post inc+ld r1, K )oad r1 =ith data space loc# R61

ldi r%:, R6% Set K lo= b>te to R6%

ld r', K )oad r' =ith data space loc# R6%ld r%, .K )oad r% =ith data space loc# R6' *K pre dec+

ldd r, K' )oad r =ith data space loc# R6

LS  Load irect 3rom data !"ace

e!criere:

Encarcă un octet din data space ;n registru# entru părţile cu SAM data space constă ;ntr.un/i&ier registru, !9O memorie &i SAM internă c-t &i e0ternă# entru părţile /ără SAM, data spaceconstă ;ntr.un singur /i&ier# 77OM are o adresă separată#

Adresa este de 16 biţi# Accesul la memorie este limitat la segmentul de date curent, de63octeţi#

!nstrucţiunea )$S /olose&te registrul AM$ pentru accesarea memoriei peste 63 octeţi#entru accesarea altui segment cu un spaţiu de date mai mare de 63 octeţi, registrul AM$ ;ndomeniul !9O trebuie schimbat#

O"eration:(i) Rd ← (')

Snta?: O"erand!: Program Counter:(i) ;DS Rd,' 0 ≤  d ≤  31, 0 ≤  ' ≤  6$$3$ PC ← PC + 2

+0it O"code:

  1::1 :::d dddd ::::

11?

Page 114: 58907199 Curs Atmega 16 III Tet

8/10/2019 58907199 Curs Atmega 16 III Tet

http://slidepdf.com/reader/full/58907199-curs-atmega-16-iii-tet 114/138

Universitatea POLITEHICA din Bucuresti PROIECT DE DIPLOMĂ  Facultatea TRANSPORTURI

Catedra Telecomenzi şi Electronică în Transporturi 2007  

LLLL LLLL LLLL LLLL  

Status egister *S7@+ 4oolean 5ormula2

I T H S V N Z C

! ! ! ! ! ! ! !

E?em"#u:lds r', R55:: )oad r' =ith the contents o/ data space location R55::

add r', r1 add r1 to r'

ST  Store Indirect -rom Regi!ter to data !"ace u!ing Inde? *

e!criere:

Encarcă indirect un octet dintr.un registru ;n zona de date#

Adresa locaţiei este data de I *16 biţi+ # Accesul la memorie este limitat de segmentul dedate curent, de 63octeţi# entru accesarea altui segment de date cu mai mult de 63octeţi, trebuieschimbat AMI din domeniul registrelor de !9O#egistrul I răm-ne neschimbat sau poate /i post.incrementat sau pre.decrementat#

Aceste caracteristici sunt /aorabile ;n special pentru accesarea tablourilor# $e reţinut cădoar b>te.ul in/erior al pointerului I este utilizat iar b>te.ul superior al pointerului I , nu esteutilizat de această instrucţiune &i poate /i utilizat in alte scopuri# Re;u#tatu# o"eratii#or de mai o!e!te nede3init:

ST I, r'6ST I, r'?

ST .I, r'6ST .I, r'?

U!ing te * "ointer:

Operation: Comment:

(i) (J) ← Rr  J: "597d(ii) (J) ← Rr J ← J+1 J: P= ir777d(iii) J ← J ! 1 (J) ← Rr  J: Pr7 d7r777d

Syntax: Operands: Program Counter:

(i) ST J, Rr  0 ≤  r  ≤  31 PC ← PC + 1

(ii) ST J+, Rr  0 ≤  r  ≤  31 PC ← PC + 1(iii) ST !J, Rr  0 ≤  r  ≤  31 PC ← PC + 1

160it O"code:

*i+ 1::1 ::1r rrrr 11::*ii+ 1::1 ::1r rrrr 11:1*iii+ 1::1 ::1r rrrr 111:

118

Page 115: 58907199 Curs Atmega 16 III Tet

8/10/2019 58907199 Curs Atmega 16 III Tet

http://slidepdf.com/reader/full/58907199-curs-atmega-16-iii-tet 115/138

Universitatea POLITEHICA din Bucuresti PROIECT DE DIPLOMĂ  Facultatea TRANSPORTURI

Catedra Telecomenzi şi Electronică în Transporturi 2007  

Status egister *S7@+ 4oolean 5ormula2

I T H S V N Z C

! ! ! ! ! ! ! !

E?em"#u:clr r'? Clear I high b>te

ldi r'6,R6: Set I lo= b>te to R6:

st I,r: Store r: in data space loc# R6:*I post inc+

st I,r1 Store r1 in data space loc# R61

ldi r'6,R6% Set I lo= b>te to R6%

st I,r' Store r' in data space loc# R6%

st .I,r% Store r% in data space loc# R6'*I pre dec)

ST $ST'  Store Indirect -rom Regi!ter to data !"ace u!ing Inde? =

e!criere:Encarcă indirect un octet din zona de date, ;n registru#Adresa locaţiei este data de J *16 biţi+ # Accesul la memorie este limitat de segmentul de

date curent, de 63octeţi# entru accesarea altui segment de date cu mai mult de 63octeţi, trebuieschimbat AMJ din domeniul registrelor de !9O #egistrul J răm-ne neschimbat sau poate /i post.incrementat sau pre.decrementat#

Aceste caracteristici sunt /aorabile ;n special pentru accesarea tablourilor# $e reţinut cădoar b>te.ul in/erior al pointerului J este utilizat iar b>te.ul superior al pointerului J , nu esteutilizat de această instrucţiune &i poate /i utilizat in alte scopuri# Re;u#tatu# o"eratii#or de mai o!

e!te nede3init:  ST J, r'8

ST J, r'FST .J, r'8ST .J, r'F

U!ing te = "ointer:

Operation: Comment:

(i) () ← Rr  : "597d(ii) () ← Rr  ← +1 : P= ir777d(iii)  ←  ! 1 () ← Rr  : Pr7 d7r777d

(iiii) (+L) ← Rr  : "597d, L: Di=577

Syntax: Operands: Program Counter:

(i) ST , Rr  0 ≤  r  ≤  31 PC ← PC + 1(ii) ST +, Rr  0 ≤  r  ≤  31 PC ← PC + 1(iii) ST !, Rr  0 ≤  r  ≤  31 PC ← PC + 1(iiii) STD +L, Rr  0 ≤  r  ≤  31, 0 ≤  L ≤  63 PC ← PC + 1

160it O"code:

11F

Page 116: 58907199 Curs Atmega 16 III Tet

8/10/2019 58907199 Curs Atmega 16 III Tet

http://slidepdf.com/reader/full/58907199-curs-atmega-16-iii-tet 116/138

Page 117: 58907199 Curs Atmega 16 III Tet

8/10/2019 58907199 Curs Atmega 16 III Tet

http://slidepdf.com/reader/full/58907199-curs-atmega-16-iii-tet 117/138

Universitatea POLITEHICA din Bucuresti PROIECT DE DIPLOMĂ  Facultatea TRANSPORTURI

Catedra Telecomenzi şi Electronică în Transporturi 2007  

(iiii) (Z+L) ← Rr  Z: "597d, L: Di=577

Syntax: Operands: Program Counter:

(i) ST Z, Rr  0 ≤  r  ≤  31 PC ← PC + 1(ii) ST Z+, Rr  0 ≤  r  ≤  31 PC ← PC + 1(iii) ST !Z, Rr  0 ≤  r  ≤  31 PC ← PC + 1

(iiii) STD Z+L, Rr  0 ≤  r  ≤  31, 0 ≤  L ≤  63 PC ← PC + 1

160it O"code:

*i+ 1::: ::1r rrrr ::::*ii+ 1::1 ::1r rrrr :::1*iii+ 1::1 ::1r rrrr ::1:*iiii+ 1:]: ]]1r rrrr :]]]

Status egister *S7@+ 4oolean 5ormula2

I T H S V N Z C

! ! ! ! ! ! ! !

E?em"#u:clr r%1 Clear K high b>te

ldi r%:,R6: Set K lo= b>te to R6:

st K,r: Store r: in data space loc# R6:*K post inc+

st K,r1 Store r1 in data space loc# R61

ldi r%:,R6% Set K lo= b>te to R6%

st K,r' Store r' in data space loc# R6%

st .K,r% Store r% in data space loc# R6'*K pre dec+std K',r Store r in data space loc# R6

STS  Store irect to data !"ace

e!criere:Encarcă direct un registru ;n zona de date# Adresa *L+ este de 16 biţi# Accesul la memorie este

limitat la segmentul de date curent, de 63octeţi#!nstrucţiunea STS /olose&te registrul AM$ pentru accesarea memoriei peste 63 octeţi#

entru accesarea altui segment cu un spaţiu de date mai mare de 63 octeţi, registrul AM$ ;n

domeniul !9O trebuie schimbat#

O"eration:(i) (') ← Rr 

Snta?: O"erand!: Program Counter:(i) STS ',Rr 0 ≤  r  ≤  31, 0 ≤  ' ≤  6$$3$ PC ← PC + 2

+0it O"code:

1'1

Page 118: 58907199 Curs Atmega 16 III Tet

8/10/2019 58907199 Curs Atmega 16 III Tet

http://slidepdf.com/reader/full/58907199-curs-atmega-16-iii-tet 118/138

Universitatea POLITEHICA din Bucuresti PROIECT DE DIPLOMĂ  Facultatea TRANSPORTURI

Catedra Telecomenzi şi Electronică în Transporturi 2007  

1::1 ::1d dddd ::::LLLL LLLL LLLL LLLL  

Status egister *S7@+ 4oolean 5ormula2I T H S V N Z C

! ! ! ! ! ! ! !

E?em"#u:lds r',R55:: )oad r' =ith the contents o/ data space locationadd r',r1 add r1 to r'sts R55::,r' Qrite bacL  

LPM  Load Program Memor1

e!criere:Encarcă un octet adresat cu registrul pointer K ;n registrul destinaţie d# Această instrucţiune

este caracterizată 1:: de spaţiu e/ecti iniţializat constant sau determină constant locaţiainstrucţiunii următoare# Memoria program este organizată ;n cuinte de 16 biţi &i cel mai puţinsemni/icati bit al pointerului K selectează octetul in/erior *:+ sau octetul superior *1+# Aceastăinstrucţiune poate adresa 6 3 octeţi *%'3 cuinte+ din memoria program# egistrul pointerului K poate răm-ne neschimbat de operaţie sau poate /i incrementat# !ncrementarea nu se aplicăregistrului de memorie AMK# Re;u#tatu# ace!tei com0inatii e!te nede3init:

  ;P r30, Z+  ;P r31, Z+

O eration: Comment:(i) R0 ← (Z) Z: "597d, R0 ii7d d7=i5i r79i=7r (ii) Rd ← (Z) Z: "597d(iii) Rd ← (Z) Z ← Z + 1 Z: P= ir777d

S nta?: O erand!: Pro ram Counter:(i) ;P N7, R0 ii7d PC ← PC + 1(ii) ;P Rd, Z 0 ≤  d ≤  31 PC ← PC + 1(iii) ;P Rd, Z+ 0 ≤  d ≤  31 PC ← PC + 1

16-bit Opcode:

  *i+ 1::1 :1:1 11:: 1:::*ii+ 1::1 :::d dddd :1::*iii+ 1::1 :::d dddd   :1:1

Status egister *S7@+ 4oolean 5ormula2

I T H S V N Z C

! ! ! ! ! ! ! !

1''

Page 119: 58907199 Curs Atmega 16 III Tet

8/10/2019 58907199 Curs Atmega 16 III Tet

http://slidepdf.com/reader/full/58907199-curs-atmega-16-iii-tet 119/138

Universitatea POLITEHICA din Bucuresti PROIECT DE DIPLOMĂ  Facultatea TRANSPORTURI

Catedra Telecomenzi şi Electronică în Transporturi 2007  

70emplu2

clr r%1 Clear K high b>te

ldi r%:, R5: Set K lo= b>te

lpm )oad constant /rom program

memor> pointed to b> K *r%12 r%:+

SPM  Store Program Memor1

e!criere:

SM poate /i /olosit pentru &tergerea unei pagini din memoria program, pentru scrierea unei pagini ;n memoria program# En unele cazuri, memoria program poate /i scrisă cu-nt cu cu-nt, ;nalte cazuri ;ntreaga pagină poate /i programată simultan după ;ncărcarea ei ;n memoria tampon# Entoate cazurile, memoria program trebuie &tearsă *toată pagina odată+# C-nd se &terge memoria program, registrul K este /olosit ca adresă de pagină# C-nd se scrie memoria program, registrul Keste /olosit ca adresă de pagină sau cu-nt, &i perechea de registre 12: este /olosită ca dată#Această instrucţiune poate adresa primii 63 octeţi *%'3 cuinte+ din memoria program#

Operation: Comment:

(i) (Z) ← EEEE  r5=7 r9r5 7rB 597(ii) (Z) ← R1:R0 Wri7 r9r5 7rB <rd(iii) (Z) ← R1:R0 Wri7 7r5rB 597 EE7r 

(i%) (Z) ← TP Wri7 7r5rB 597 EE7r   r9r5 7rB(%) #;#ITS ← R1:R0 S7  5d7r  ' i=

Syntax: Operands: Program Counter:

(i)!(%) SP N7 PC ← PC + 1

160it O"code:

1::1 :1:1 111: 1:::

Status egister *S7@+ 4oolean 5ormula2

I T H S V N Z C

! ! ! ! ! ! ! !

E?em"#u:  This e0ample sho=s SM =rite o/ one =ord /or deices =ith =ord =rite

ldi r%1, R5: )oad K high b>teclr r%: Clear K lo= b>te

ldi r16, RC5 )oad data to store

1'%

Page 120: 58907199 Curs Atmega 16 III Tet

8/10/2019 58907199 Curs Atmega 16 III Tet

http://slidepdf.com/reader/full/58907199-curs-atmega-16-iii-tet 120/138

Universitatea POLITEHICA din Bucuresti PROIECT DE DIPLOMĂ  Facultatea TRANSPORTURI

Catedra Telecomenzi şi Electronică în Transporturi 2007  

mo r1, r16

ldi r16, R55

mo r:, r16ldi r16,R:% 7nable SM, erase page

out SMC, r16

spm 7rase page starting at R5:::ldi r16,R:1 7nable SM, store to program memor>

out SMC, r16 spm 70ecute SM, store 12: to program memor> location R5:::

IN  Load an IO Location to Regi!ter

e!criere:

Encarcă date din zona !9O *porturi, timere, etc#+ ;n registrul d#O"eration:

(i) Rd ← IG&(A)

Snta?: O"erand!: Program Counter:(i) IN Rd,A 0 ≤  d ≤  31, 0 ≤   A ≤  63 PC ← PC + 1

160it O"code:

1:11 :AAd dddd AAAA

Status egister *S7@+ 4oolean 5ormula2

I T H S V N Z C

! ! ! ! ! ! ! !

E?em"#u:

in r', R16 ead ort 4

cpi r', Compare read alue to constant

 bre] e0it 4ranch i/ r'

e0it2 nop 4ranch destination *do nothing+

OUT  Store Regi!ter to IO Location

e!criere:

Enmagazinează data din registrul r ;n registrul !9O *porturi, timere, etc+#

O"eration:

1'

Page 121: 58907199 Curs Atmega 16 III Tet

8/10/2019 58907199 Curs Atmega 16 III Tet

http://slidepdf.com/reader/full/58907199-curs-atmega-16-iii-tet 121/138

Universitatea POLITEHICA din Bucuresti PROIECT DE DIPLOMĂ  Facultatea TRANSPORTURI

Catedra Telecomenzi şi Electronică în Transporturi 2007  

(i) IG&(A) ← Rr 

Snta?: O"erand!: Program Counter:(i) &"T  A,Rr 0 ≤  r  ≤  31, 0 ≤   A ≤  63 PC ← PC + 1

160it O"code:

1:11   1AAr   rrrr    AAAA 

Status egister *S7@+ 4oolean 5ormula2

I T H S V N Z C

! ! ! ! ! ! ! !

E?em"#u:clr r16 Clear r16

ser r1? Set r1?

out R18, r16 Qrite zeros to ort 4nop Qait *do nothing+out R18, r1? Qrite ones to ort 4

PUSH  Pu! Regi!ter on Stac> 

e!criere:Această instrucţiune salează conţinutul registrului r ;n stiă# ointerul stiă este

 post.decrementat cu 1 după (S<#O"eration:

(i) STACK ← Rr 

Snta?: O"erand!: Program Counter: Stac>:(i) P"SH Rr 0 ≤  r  ≤  31 PC ← PC + 1 SP ← SP ! 1

160it O"code:

1::1 ::1d dddd 1111

Status egister *S7@+ 4oolean 5ormula2

I T H S V N Z C! ! ! ! ! ! ! !

E?em"#u: 

call routine Call subroutine

routine push r1 Sae r1 on stacL ush r1% Sae r1% on stacL  

1'

Page 122: 58907199 Curs Atmega 16 III Tet

8/10/2019 58907199 Curs Atmega 16 III Tet

http://slidepdf.com/reader/full/58907199-curs-atmega-16-iii-tet 122/138

Universitatea POLITEHICA din Bucuresti PROIECT DE DIPLOMĂ  Facultatea TRANSPORTURI

Catedra Telecomenzi şi Electronică în Transporturi 2007  

 pop r1% estore r1% pop r1 estore r1ret eturn /rom subroutine

POP  Po" Regi!ter 3rom Stac> 

e!criere:Această instrucţiune ;ncarcă registrul d cu un octet din stiă# ointerul stiă este pre.

incrementat cu 1 ;nainte de O#

O"eration:(i) Rd ← STACK

Snta?: O"erand!: Program Counter: Stac>:

  (i) P&P Rd 0 ≤  d ≤  31 PC ← PC + 1 SP ← SP + 1

160it O"code:

1::1 :::d dddd 1111

Status egister *S7@+ 4oolean 5ormula2

I T H S V N Z C

! ! ! ! ! ! ! !

E?em"#u:  call routine Call subroutine

routine push r1 Sae r1 on stacL 

ush r1% Sae r1% on stacL   pop r1% estore r1% pop r1 estore r1ret eturn /rom subroutine

 

S(I  Set (it in IO Regi!ter

e!criere:Setează bitul menţionat dintr.un registru de !9O# Această instrucţiune are e/ect in zona :.%1

din !9O#

O"eration:(i) IG&(A,) ← 1

Snta?: O"erand!: Program Counter:(i) S#I  A, 0 ≤   A ≤  31, 0 ≤   ≤  ? PC ← PC + 1

1'6

Page 123: 58907199 Curs Atmega 16 III Tet

8/10/2019 58907199 Curs Atmega 16 III Tet

http://slidepdf.com/reader/full/58907199-curs-atmega-16-iii-tet 123/138

Universitatea POLITEHICA din Bucuresti PROIECT DE DIPLOMĂ  Facultatea TRANSPORTURI

Catedra Telecomenzi şi Electronică în Transporturi 2007  

160it O"code:

1::1 1:1: AAAA Abbb

Status egister *S7@+ 4oolean 5ormula2I T H S V N Z C

! ! ! ! ! ! ! !

E?em"#u:out R17, r: Qrite 77OM address

sbi R1C Set read bit 77C  

in r1, R1$ ead 77OM data

C(I  C#ear (it in IO Regi!ter

e!criere:Hterge bitul menţionat dintr.un registru !9O# Această instrucţiune are e/ect ;n zona :.%1 din

!9O#O"eration:

(i) IG&(A,) ← 0

Snta?: O"erand!: Program Counter:(i) C#I  A, 0 ≤   A ≤  31, 0 ≤   ≤  ? PC ← PC + 1

160it O"code:

1::1 1::: AAAA Abbb

E?em"#u:

Cbi R1', ? Clear bit ? in ort $

LSL  Logica# Si3t Le3t

e!criere:Mută toţi biţi din d cu un spatiu la st-nga# 4itul : :# 4itul ? este ;ncărcat ;n indicatorul C

al S7@# Această operaţie multiplică aloarea de două ori#

O"eration:  ←

C ← A? ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! A0   ← 0 

1'?

Page 124: 58907199 Curs Atmega 16 III Tet

8/10/2019 58907199 Curs Atmega 16 III Tet

http://slidepdf.com/reader/full/58907199-curs-atmega-16-iii-tet 124/138

Universitatea POLITEHICA din Bucuresti PROIECT DE DIPLOMĂ  Facultatea TRANSPORTURI

Catedra Telecomenzi şi Electronică în Transporturi 2007  

Snta?: O"erand!: Program Counter:(i) ;SR Rd 0 ≤  d ≤  31 PC ← PC + 1

160it O"code: *see A$$ d,d+

:::: 11dd dddd dddd

Status egister *S7@+ 4oolean 5ormula2

I T H S V N Z C

! !   ⇔ ⇔ ⇔ ⇔ ⇔ ⇔

E?em"#u:add r:, r Add r to r:

)sl : Multipl> r: b> '

LSR   Logica# Si3t Rigt

e!criere:

Mută toţi biţi din d cu un spaţiu la dreapta# 4itul ? :# 4itul : este ;ncărcat ;n indicatorul Cal S7@# Această operaţie ;mparte aloarea la '# !ndicatorul C poate /i /olosit pentru rotunDirearezultatului#

O"eration:

0 → A? ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! A0   →   C

Snta?: O"erand!: Program Counter:(i) ;SR Rd 0 ≤  d ≤  31 PC ← PC + 1

160it O"code:

  1::1 :1:d dddd :11:

Status egister *S7@+ 4oolean 5ormula2I T H S V N Z C

! ! !   ⇔ ⇔ 0   ⇔ ⇔

E?em"#u:add r:, r Add r to r:

)sl : $iide r: b> '

ASR   Aritmetic Si3t Rigt

1'8

Page 125: 58907199 Curs Atmega 16 III Tet

8/10/2019 58907199 Curs Atmega 16 III Tet

http://slidepdf.com/reader/full/58907199-curs-atmega-16-iii-tet 125/138

Universitatea POLITEHICA din Bucuresti PROIECT DE DIPLOMĂ  Facultatea TRANSPORTURI

Catedra Telecomenzi şi Electronică în Transporturi 2007  

e!criere:

$eplasează toţi biţii din d cu un spaţiu la dreapta# 4itul ? este menţinut constant# 4itul: este ;ncărcat ;n indicatorul C al S7@# Această operaţie ;mparte aloarea cu semn la ' /ărăa schimba semnul# !ndicatorul de transport este /olosit pentru a rotunDi rezultatul#

O"eration:

A?!!!!!!!!!!!!!!!!!!!A0 C

Snta?: O"erand!: Program Counter:(i) ASR Rd 0 ≤  d ≤  31 PC ← PC + 1

160it O"code:

1::1 :1:d dddd :1:1

Status egister *S7@+ 4oolean 5ormula2I T H S V N Z C

  ⇔ ⇔ ⇔ ⇔ ⇔

E?em"#u:

ldi r16, R1: )oad decimal 16 into r16

asr r16 r16r169'

ldi 1?, R5C )oad . in r1?

asr r1? r1?r1?9'

SGAP  S7a" Ni00#e!

e!criere:Schimbă grupul de biti *superior+ cu cel in/erior &i reciproc#

O"eration:(i) R(?:4) ← Rd(3:0), R(3:0) ← Rd(?:4)

Snta?: O"erand!: Program Counter:

(i) SWAP Rd 0 ≤  d ≤  31 PC ← PC + 1

160it O"code:

1::1 :1:d dddd ::1:

Status egister *S7@+ 4oolean 5ormula2

1'F

Page 126: 58907199 Curs Atmega 16 III Tet

8/10/2019 58907199 Curs Atmega 16 III Tet

http://slidepdf.com/reader/full/58907199-curs-atmega-16-iii-tet 126/138

 bset 6 Set T /lagset na e nterrupt

Universitatea POLITEHICA din Bucuresti PROIECT DE DIPLOMĂ  Facultatea TRANSPORTURI

Catedra Telecomenzi şi Electronică în Transporturi 2007  

I T H S V N Z C

! ! ! ! ! ! ! !

E?em"#u:

inc r1 !ncrement r1s=a r1 S=a hi h and lo= nibble o/inc r1 !ncrement hi h nibble o/ r1s=a r =a ac

(SET  (it Set in SRE/

e!criere:Setează un indicator din S7@#

O"eration:(i) SR(=) ← 1

Snta?: O"erand!: Program Counter:(i) #ST = 0 ≤  = ≤  ? PC ← PC + 1

160it O"code:

1::1 :1:: :ssss 1:::

Status egister *S7@+ 4oolean 5ormula2

I T H S V N Z C⇔ ⇔ ⇔ ⇔ ⇔ ⇔ ⇔ ⇔

E?em"#u:

(CLR   (it C#ear in SRE/

e!criere:

Hterge un indicator din S7@#O"eration:

(i) SR(=) ← 0

Snta?: O"erand!: Program Counter:(i) #C;R = 0 ≤  = ≤  ? PC ← PC + 1

160it O"code:

1%:

Page 127: 58907199 Curs Atmega 16 III Tet

8/10/2019 58907199 Curs Atmega 16 III Tet

http://slidepdf.com/reader/full/58907199-curs-atmega-16-iii-tet 127/138

Page 128: 58907199 Curs Atmega 16 III Tet

8/10/2019 58907199 Curs Atmega 16 III Tet

http://slidepdf.com/reader/full/58907199-curs-atmega-16-iii-tet 128/138

Universitatea POLITEHICA din Bucuresti PROIECT DE DIPLOMĂ  Facultatea TRANSPORTURI

Catedra Telecomenzi şi Electronică în Transporturi 2007  

Snta?: O"erand!: Program Counter:(i) #;D Rd, 0 ≤  d ≤  31, 0 ≤   ≤  ? PC ← PC + 1

16 0it O"code:

1111 1::d dddd :bbb

Status egister *S7@+ 4oolean 5ormula2

I T H S V N Z C

E?em"#u:

Cop> bit

 bst r1, ' Store bit ' o/ r1 in T /lag bld r:, )oad T /lag into bit o/ r:

SEC  Set Carr1 -#ag

e!criere:S775M5 idi5r C5rrB (C) SR>

O"eration:

(i) C ← 1

Snta?: O"erand!: Program Counter:(i) SC N7 PC ← PC + 1

160it O"code:

1::1 :1:: :::: 1:::

Status egister *S7@+ 4oolean 5ormula2

I T H S V N Z C

! ! ! ! ! ! ! 1

E?em"#u:sec Set carr> /laga c r ,r r r r

CLC  C#ear Carr1 -#ag

1%'

Page 129: 58907199 Curs Atmega 16 III Tet

8/10/2019 58907199 Curs Atmega 16 III Tet

http://slidepdf.com/reader/full/58907199-curs-atmega-16-iii-tet 129/138

Universitatea POLITEHICA din Bucuresti PROIECT DE DIPLOMĂ  Facultatea TRANSPORTURI

Catedra Telecomenzi şi Electronică în Transporturi 2007  

e!criere:Hterge indicatorul Carr> *C+ din S7@#

O"eration:(i) C ← 0

Snta?: O"erand!: Program Counter:(i) C;C N7 PC ← PC + 1

160it O"code:

1::1 :1:: 1::: 1:::

 Status egister *S7@+ 4oolean 5ormula2

I T H S V N Z C

! ! ! ! ! ! ! 0

E?em"#u:

add r:,r: Add r: to itsel/  c c C ear carr> ag

SEN  Set Negati9e -#ag

e!criere:

Setează indicatorul egatie *+ ;n S7@#

O"eration:(i) N ← 1

Snta?: O"erand!: Program Counter:(i) SN N7 PC ← PC + 1

160it O"code:

1::1 :1:: ::1: 1:::

Status egister *S7@+ 4oolean 5ormula2

I T H S V N Z C

! ! ! ! ! 1 ! !

E?em"#u:

1%%

Page 130: 58907199 Curs Atmega 16 III Tet

8/10/2019 58907199 Curs Atmega 16 III Tet

http://slidepdf.com/reader/full/58907199-curs-atmega-16-iii-tet 130/138

Universitatea POLITEHICA din Bucuresti PROIECT DE DIPLOMĂ  Facultatea TRANSPORTURI

Catedra Telecomenzi şi Electronică în Transporturi 2007  

add r',r1F Add r1F to r'

sen Set negatie /lag

CLN  C#ear Negati9e -#ag

e!criere:Hterge indicatorul egatie *+ din S7@#

O"eration:(i) N ← 0

Snta?: O"erand!: Program Counter:(i) C;N N7 PC ← PC + 1

160it O"code:

1::1 :1:: 1:1: 1:::

Status egister *S7@+ 4oolean 5ormula2

I T H S V N Z C

! ! ! ! ! 0 ! !

E?em"#u:

add r',r% Add r% to r'

c n C ear negat e ag

SE  Set ero -#ag

e!criere:Setează indicatorul Kero *K+ ;n S7@#

O"eration:(i) Z ← 1

Snta?: O"erand!: Program Counter:(i) SZ N7 PC ← PC + 1

160it O"code:

1::1 :1:: :::1 1:::

Status egister *S7@+ and 4oolean 5ormula2

1%

Page 131: 58907199 Curs Atmega 16 III Tet

8/10/2019 58907199 Curs Atmega 16 III Tet

http://slidepdf.com/reader/full/58907199-curs-atmega-16-iii-tet 131/138

Universitatea POLITEHICA din Bucuresti PROIECT DE DIPLOMĂ  Facultatea TRANSPORTURI

Catedra Telecomenzi şi Electronică în Transporturi 2007  

I T H S V N Z C

! ! ! ! ! ! 1 !

E?em"#u:add r',r1F Add r1F to r'

sez Set zero /lag

CL  C#ear ero -#ag

e!criere:Hterge indicatorul Kero *K+ din S7@#

O"eration:(i) Z ← 0

Snta?: O"erand!: Program Counter:(i) C;Z N7 PC ← PC + 1

160it O"code:

1::1 :1:: 1::1 1:::

Status egister *S7@+ and 4oolean 5ormula2

I T H S V N Z C

! ! ! ! ! ! 0 !

E?em"#u:add r',r% Add r% to r'c z ear zero

SEI  Set /#o0a# Interru"t -#ag

e!criere:Setează indicatorul @lobal !nterrupt *!+ ;n S7@#

O"eration:(i) I ← 1

Snta?: O"erand!: Program Counter:(i) SI N7 PC ← PC + 1

160it O"code:

1::1 :1:: :111 1:::

1%

Page 132: 58907199 Curs Atmega 16 III Tet

8/10/2019 58907199 Curs Atmega 16 III Tet

http://slidepdf.com/reader/full/58907199-curs-atmega-16-iii-tet 132/138

Universitatea POLITEHICA din Bucuresti PROIECT DE DIPLOMĂ  Facultatea TRANSPORTURI

Catedra Telecomenzi şi Electronică în Transporturi 2007  

Status egister *S7@+ 4oolean 5ormula2

I T H S V N Z C

1 ! ! ! ! ! ! !

E?em"#u:cli $isable interruptsin r1%,R16 ead ort 4se na e nterrupts

CLI  C#ear /#o0a# Interru"t -#ag

e!criere:Hterge indicatorul @lobal !nterrupt *!+ din S7@#

O"eration:(i) I ← 0

Snta?: O"erand!: Program Counter:(i) C;I N7 PC ← PC + 1

160it O"code:

1::1 :1:: 1111 1:::

Status egister *S7@+ 4oolean 5ormula2

I T H S V N Z C

0 ! ! ! ! ! ! !

E?em"#u:

cli $isable interru tsin r11,R16 ead ort 4se 7na e nterrupts

SES  Set Signed -#ag

e!criere:Setează indicatorul Signed *S+ ;n S7@#

O"eration:(i) S ← 1

1%6

Page 133: 58907199 Curs Atmega 16 III Tet

8/10/2019 58907199 Curs Atmega 16 III Tet

http://slidepdf.com/reader/full/58907199-curs-atmega-16-iii-tet 133/138

Universitatea POLITEHICA din Bucuresti PROIECT DE DIPLOMĂ  Facultatea TRANSPORTURI

Catedra Telecomenzi şi Electronică în Transporturi 2007  

Snta?: O"erand!: Program Counter:(i) SS N7 PC ← PC + 1

160it O"code:

1::1 :1:: :1:: 1:::

Status egister *S7@+ 4oolean 5ormula2

I T H S V N Z C

! ! ! 1 ! ! ! !

E?em"#u:add r',r1F Add r1F to r'ses et negat e ag

CLS  C#ear Signed -#ag

e!criere:

Hterge indicatorul de semn *S+ din S7@#

O"eration:(i) S ← 0

Snta?: O"erand!: Program Counter:(i) C;S N7 PC ← PC + 1

160it O"code:

1::1 :1:: 11:: 1:::

Status egister *S7@+ and 4oolean 5ormula2

I T H S V N Z C

! ! ! 0 ! ! ! !

E?em"#u:add r',r% Add r% to r'

cls Clear signed /lag

SE,  Set O9er3#o7 -#ag

e!criere:

Setează indicatorul Oer/lo= *"+ ;n S7@#

1%?

Page 134: 58907199 Curs Atmega 16 III Tet

8/10/2019 58907199 Curs Atmega 16 III Tet

http://slidepdf.com/reader/full/58907199-curs-atmega-16-iii-tet 134/138

Universitatea POLITEHICA din Bucuresti PROIECT DE DIPLOMĂ  Facultatea TRANSPORTURI

Catedra Telecomenzi şi Electronică în Transporturi 2007  

O"eration:(i) V ← 1

Snta?: O"erand!: Program Counter:(i) SV N7 PC ← PC + 1

160it O"code:1::1 :1:: ::11 1:::

Status egister *S7@+ 4oolean 5ormula2

I T H S V N Z C

! ! ! ! 1 ! ! !

E?em"#u:

CL,  C#ear O9er3#o7 -#ag

e!criere:

Hterge indicatorul Oer/lo= *"+ din S7@#O"eration:

*i+ V ← 0

Snta?: O"erand!: Program Counter:(i) C;V N7 PC ← PC + 1

160it O"code:

1::1 :1:: 1:11 1:::

Status egister *S7@+ and 4oolean 5ormula2

I T H S V N Z C

! ! ! ! 0 ! ! !

E?em"#u:r',r% Add r% to r'

c ear oer o= ag

SET  Set T -#ag

e!criere:Setează indicatorul T ;n S7@#

O"eration:

add r',r1F Add r1F to r'

se Set oer/lo= /lag

1%8

Page 135: 58907199 Curs Atmega 16 III Tet

8/10/2019 58907199 Curs Atmega 16 III Tet

http://slidepdf.com/reader/full/58907199-curs-atmega-16-iii-tet 135/138

Universitatea POLITEHICA din Bucuresti PROIECT DE DIPLOMĂ  Facultatea TRANSPORTURI

Catedra Telecomenzi şi Electronică în Transporturi 2007  

(i) T ← 1

Snta?: O"erand!: Program Counter:(i) ST N7 PC ← PC + 1

160it O"code:

1::1 :1:: :11: 1:::

Status egister *S7@+ 4oolean 5ormula2

I T H S V N Z C

! 1 ! ! ! ! ! !

E?em"#u:set Set T /lag

CLT  C#ear T -#ag

e!criere:Hterge indicatorul T din S7@#

O"eration:(i) T ← 0

Snta?: O"erand!: Program Counter:

(i) C;T N7 PC ←

 PC + 1

160it O"code:

1::1 :1:: 111: 1:::

Status egister *S7@+ 4oolean 5ormula2

I T H S V N Z C

! 0 ! ! ! ! ! !

E?em"#u:clt Clear T /lag

SEH  Set Ha#3  Carr1 -#ag

e!criere:Setează indicatorul <al/ Carr> *<+ ;n S7@#

1%F

Page 136: 58907199 Curs Atmega 16 III Tet

8/10/2019 58907199 Curs Atmega 16 III Tet

http://slidepdf.com/reader/full/58907199-curs-atmega-16-iii-tet 136/138

Universitatea POLITEHICA din Bucuresti PROIECT DE DIPLOMĂ  Facultatea TRANSPORTURI

Catedra Telecomenzi şi Electronică în Transporturi 2007  

O"eration:(i) H ← 1

Snta?: O"erand!: Program Counter:(i) SH N7 PC ← PC + 1

160it O"code:1::1 :1:: :1:1 1:::

Status egister *S7@+ and 4oolean 5ormula2

I T H S V N Z C

! ! 1 ! ! ! ! !

E?em"#u:seh Set <al/ Carr> /lag

CLH  C#ear Ha#3  Carr1 -#ag

e!criere:

Hterge indicatorul <al/ Carr> *<+ din S7@#

O"eration:(i) H ← 0

Snta?: O"erand!: Program Counter:(i) C;H N7 PC ← PC + 1

160it O"code:

1::1 :1:: 11:1 1:::

Status egister *S7@+ 4oolean 5ormula2

I T H S V N Z C

! ! 0 ! ! ! ! !

E?em"#u:

clh Clear the <al/ Carr> /lag

NOP  No O"eration

e!criere:

Această instrucţiune consumă o perioadă de ceas#O"eration:

1:

Page 137: 58907199 Curs Atmega 16 III Tet

8/10/2019 58907199 Curs Atmega 16 III Tet

http://slidepdf.com/reader/full/58907199-curs-atmega-16-iii-tet 137/138

Universitatea POLITEHICA din Bucuresti PROIECT DE DIPLOMĂ  Facultatea TRANSPORTURI

Catedra Telecomenzi şi Electronică în Transporturi 2007  

(i) N

Snta?: O"erand!: Program Counter:(i) N&P N7 PC ← PC + 1

160it O"code:

:::: :::: :::: ::::

Status egister *S7@+ 4oolean 5ormula2I T H S V N Z C

! ! ! ! ! ! ! !

E?em"#u:clr r16 Clear r16ser r1? Set r1?

out R18,r16 Qrite zeros to ort 4no Qait do nothinout 18,r1? Qr te ones to ort 4

SLEEP

e!criere:

Această instrucţiune instalează modul repausP de/init de registrul control al MC(#

O"eration:

Snta?: O"erand!: Program Counter:S;P N7 PC ← PC + 1

160it O"code:

1::1 :1:1 1::: 1:::

Status egister *S7@+ 4oolean 5ormula2

I T H S V N Z C

! ! ! ! ! ! ! !

E?em"#u:r:,r11 Cop> r11 to r:

ldi r16,*1S7+ 7nable sleep modeout MC(C, r16s eep ut MC( n s eep mo e

GR   Gatcdog Re!ete!criere:

Această instrucţiune resetează timer.ul Qatchdog, ea trebuie e0ecutată ;ntr.un timp

11

Page 138: 58907199 Curs Atmega 16 III Tet

8/10/2019 58907199 Curs Atmega 16 III Tet

http://slidepdf.com/reader/full/58907199-curs-atmega-16-iii-tet 138/138

Universitatea POLITEHICA din Bucuresti PROIECT DE DIPLOMĂ  Facultatea TRANSPORTURI

Catedra Telecomenzi şi Electronică în Transporturi 2007  

limitat dat de Q$# A se consulta speci/icaţiile hard=are.ului timer.ului Qatchdog#

O"eration:(i) WD i7r  r7=5r>

Snta?: O"erand!: Program Counter:(i) WDR N7 PC ← PC + 1

160it O"code:

1::1 :1:1 1:1: 1:::

Status egister *S7@+ 4oolean 5ormula2

I T H S V N Z C

! ! ! ! ! ! ! !

E?em"#u:=dr eset =atchdog timer  


Recommended