39 0 178KB
Ministerul Educaţiei și Cercetării al Republicii Moldova Universitatea Tehnică a Moldovei Facultatea Calculatoare, Informatică şi Microelectronică. Departamentul Microelectronică și Inginerie Biomedicală
RAPORT La Microprocesoare şi interfeţe Lucrare de laborator Nr. 1 Tema: Programarea AVR în ASM. Modulul periferic GPIO
A efectuat:
Racu Vlad
A verificat:
Verjbiţki Valeriu
Chișinau 2020
Scopul lucrării: Insusirea intrumentelor de proiectare si simulare pentru progrmarea microcontrolerelor( AVR studio si Proteus). Sa se studieze interfata de comunicare cu mediul extern. Date teoretice: Un microcontroller, privit in ansamblu, reprezinta o structura formata dintr-un microprocesor si un set de module periferice. Un microcontroller poate avea o combinatie variata de module periferice in dependenta de serie. Un modul periferic ca regula este un circuit specialist care poate indeplini o anumita functie. GPIO permite setarea sau colectarea nivelului logic de pe un pin al Microcontrollerului.
Fig. 1 Modulele periferice
Fiecare modul periferic isi are rezervat un set de registri in spatiul registrilor periferici. De exemplu fiecare modul GPIO are rezervat un set de 3 registri numiti PORT, PIN si DDR prin itermediul carora microprocesorul are posibilitatea de a lucra cu nivelele logice pe pini.
Fig. 2 Regiștrii periferici
ATMEGA 32: ATmega32 este un microcontroller CMOS de 8 biți cu putere redusă bazat pe AVR îmbunătățit Arhitectura RISC. Executând instrucțiuni puternice într-un singur ciclu de ceas, ATmega32 realizează randamente care se apropie de 1 MIPS pe MHz permițând sistemului proiectant pentru a optimiza consumul de energie versus viteza de procesare.
Modulul periferic GPIO - Port Generic de Intrare/Ieşire: Orice Microcontroller are un set de pini, majoritatea dintre care care pot fi configuraţi ca pini generici de intrare sau ieşire (GPIO), astfel încât să i se poată atribui o valoare logică către terminalul pinului sau sa fie citită aceasta valoare logică de pe el, în cazul când pinul este configurat către intrare. Pinii de intrare/ieşire sunt grupaţi în porturi a câte opt. Lucrul cu portul se execută ca un tot întreg, respectiv, dintr-o singură operaţie de transfer către port putem modifica configuraţia la toţi opt pini deodată. Deci operaţiile de transfer către port va afecta toţi pinii ce îl constitiue. Deoarece modulul GPIO este un modul periferic al microcontrollerului, respectiv are rezervaţi un set de regiştri în spaţiul de adrese a regiştrilor periferici. Fiecare modul GPIO a microcontrollerului cu arhitectura AVR va avea la dispoziţie trei registri de periferici PINx, DDRx si PORTx. Pentru a explica modul de funcţionare a modulului GPIO vom prezenta următoarea figură:
DDRx - Registrul de setare a direcţiei portului, intrare sau ieşire. PORTx - registru de setare a valorii portului pentru cazul când este setat catre ieşire şi activarea rezistentei de pull-up în cazul când este setat către intrare. PINx - serveşte pentru citirea valorii logice de pe terminalul fizic, acest registru este accesibil doar pentru citire. Operaţia de scriere către acest registru nu va afecta valoarea fizică a terminalului fizic
DDRx 0 0 1 1 Hi-z impendanta inalta Codul programului:
PORTx 0 1 0 1
PINx HI-Z POOL-UP “0” “1”
Simularea în Proteus:
Comenzile folosite: LDI OUT
Rd, K P, Pr
Load Immediate Store Register to I/O port
SBIS
P, b
Skip if Bit I/O is set
RJMP NOP CBI SBIC
k P,b P,b
Relative Jump No operation Clear bit in I/O Register Skip if Bit I/O is clear
DEC BREQ CPI
Rd k Rd, k
Decrement Branch if Equal Compare with Immediate
Incărcarea constantei Stochează datele din registru în Portul I/O Sare dacă bitul din registrul I/O este setat Salt relativ la k Nici o operaţie Ştergerea bitului din registru I/O Sare dacă bitul din registrul I/O este şters Decrementarea Salt la egalitate
Concluzie: In urma lucrarii de laborator am luat cunostință cu principiul de programare în ASM, etapele de oformare a unui program si principiul de functionare a unui microprocessor, am realizat sarcina propusă și am obținut relultatul dorit