MCU Lab1 [PDF]

  • 0 0 0
  • Gefällt Ihnen dieses papier und der download? Sie können Ihre eigene PDF-Datei in wenigen Minuten kostenlos online veröffentlichen! Anmelden
Datei wird geladen, bitte warten...
Zitiervorschau

Univeristatea Tehnica a Moldovei Facultatea Calculatoare Informatica si Microelectronica Catedra Microelectronica si ingineria Sistemelor Biomedicale

Raport Lucrarea de laborator nr: 1 Disciplina: Microprocesoare Tema : Inițierea în programarea Assembler. Modulul periferic GPIO

A efectuat:

st. gr. MN-141

A verificat:

lector asistent Lazari Eugeniu

©Chisinău 2016

Obiectivele lucrarii: 1)initiarea in programare ASM. 2)stodierea modului periferic GPIO.

Problema: Sa se dezvolte o aplicatie care ar permite trecerea starii unui led din starea curenta in opusa la detectarea apasarii unui buton.

Notiuni teoretice: Programarea in limbajul ASM reprezinta accesul la memorie si modificarea volorilor la aceste adrese utilizand setul de comenzi. Limbajul permite gruparea secventelor de comenzi in subrutine, executia conditionata a secventelor de program realizata in baza salturilor conditionate si neconditionate. Un microcontroller, privit în ansamblu, reprezintă o structură formată dintr-un microprocesor şi un set de module periferice. Un microcontroller poate avea o combinaţie variată de module periferice în dependenţă de serie. Un modul periferic ca regulă este un circuit specializat care poate îndeplini o anumită funcţie. De exemplu: 

GPIO permite setarea sau colectarea nivelului logic de pe un pin al Microcontrollerului  EEPROM permite stocare pe timp îndelungat a datelor  ADC permite conversia semnalelor analogice  UART permite comunicarea serială  TIMER ne dă posibilitatea sa generm intervale de timp, să masurăm timpul între două evenimente, să generăm semnale digitale de o anumită formă.

Fig.1Modulul Periferic Un microcontroller in orice moment de timp trebuie sa execute o instructiune definita de programator. Atunci cand microcontrollerul executa o comanda definita de programator vom spune ca controllerul se afla sub controlul programului.Si invers, in cazul in care se executa o comanda care nu a fost definita de catre programator vom spune ca microcontrollerul a iesit de sub control. Un program ce ruleaza pe microcontroller trebuie sa mentina microcontrollerul intotdeauna sub control ceia ce presupune existenta unei bucle infinite in program.

Vom defini doua parti componente principale a unui program: Partea de initializare - o secventa de cod la inceputul programului ce serveste pentru initializarea microcontrollerului pentru lucru. Partea de procesare - rezolvarea problemei si mentinerea sub control a Microcontrollerului cu o bucla infinita. Pentru evidentierea zonelor de initializare si procesare a programului se recomanda utilizarea etichetelor (label). Directive de preprocesare a compilatorului sunt comenzi catre compilator care sunt executate de catre compilator inaintea generarii codului binar. Rolul lor este de a configura compilatorul si a indica compilatorului modul in care trebuie sa fie tratate liniile de program care le urmeaza. 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. Fiecare modul GPIO a microcontrollerului cu arhitectura AVR va avea la dispoziţie trei registri periferici PINx, DDRx si PORTx.

Fig.2Modulul GPIO

 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.  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.  DDRx - Registrul de setare a direcţiei portului, intrare sau ieşire.

Schema-bloc: START Init: DDRA