Показаны сообщения с ярлыком Microprocesoare (MP). Показать все сообщения
Показаны сообщения с ярлыком Microprocesoare (MP). Показать все сообщения

Microprocesoare (MP) #6

Modulul periferic TIMER. Ceas, Afisor 8x7Seg
Lucrarea Nr 6

Scopul lucrarii:

- studiul modulului periferic TIMER;
- configurarea modulului pentru generarea intreruperilor cu o anumita frecvenţă;
- realizarea aplicaţiilor bazate pe modulul periferic TIMER;

Sarcina:
I)  sa se proiecteze un sistem bazat pe microcontroler care ar permite afişarea conţinutului unui tablou unidimensional de caractere ASCII la un set de afişoare cu 7 segmente;
II) sa se proiecteze un ceas utilizand modulul periferic TIMER1, valoarea curenta a carui va fi reinnoita in tabloul pentru afişare in forma de caractere ASCII.

Consideraţii teoretice:
Microcontrollerele familiei AVR au de la 2 la 4 contoare de timp de uz general, în dependenţă de model (tab.1)
Tab nr.1  Timere/contoare de uz general

Microprocesoare (MP) #5

Tema:  Intreruperea Timer0
Laborator Nr 5


Scopul lucrarii:
Deprinderea metodelor de lucru cu Intreruperea Timer. Studiul principiului de lucru. Registri.

Expunerea problemei:

Sa se scrie un program ce utilizeaza intreruperea Timer si afiseaza pe un monitor un mesaj, exemplu „Error 666”

Consideraţii teoretice:

    Modulul de intrerupere Timer este un modul periferic inclus in majoritatea controlelor AVR si el poate include pina la 3  module Timer, rolul acestui modul periferic este masurarea timpului.
   Componenta principala a modulului timer este un registru numerator TCNT0, acest registru contine  

Microprocesoare (MP) #4

Tema:  Intreruperea Externa
Laborator Nr 4
Scopul:
Studiul principiului de utilizare a intreruperilor externe.
Problema:  
Utilizind intreruperea externa sa se depisteze care taste, dintr-un set de opt taste, au fost apasate, Numarul tastei sa se afisheze la un indicator pe 7 segmente
 Notiuni Teoretice:
    Intreruperea este stoparea procesului normal de executie a programului pentru a executa o sarcina prioritara.  Dupa executarea sarcinii prioritare executia revine la normal.
Intreruperea poate fi un proces/efect fizic intern sau extern. Codul pentru  executie  a unei intreruperi se grupeaza intr-o subrutina similara cu cea normala dar se termina cu reti  nu cu  ret.
L aparitia situatiei de intrerupere, sistemul e conceput in asa mod ca sa cheme imediat subrutina intreruperii. Din punct de vedere electronic, sistemul de intreruperi se bazeaza pe initierea cu o anumita valoare  a lui PC,  specifica intreruperii date. Valoarea ce se incarca in PC este pozitia rezervata in vectorul de intreruperi pentru intreruperea data.
    ExtInt0, ExtInt1 este o intrerupere externa, un modul periferic a microcontrolerului, si este capabil sa execute intreruperea la schimbarea nivelului logic a semnalului la pin.

Microprocesoare (MP) #3

Tema:  Algoritmi cu Ramificari, Variabile, Expresii aritmeticeLaborator Nr 3

Scopul lucrări:
Studiul algoritmului cu ramificare şi iniţializare în variabile
Sarcina lucrarii:

În dependenţă de o condiţie iniţiala să se evalueze una din expresiile aritmetice logice.
Consideraţii teoretice:
Variabila vom  numi un obiect ce contine date care pot varia.
    Pentru limbajul ASM o variabila vom numi o zona de memorie alocata acestei vatiabile accesibile dupa un nume. Numele de variabila este o eticheta in segmentul de date care reprezinta de fapt adresa catre zona de memorie alocata variabilei. Spre deosebire de limbajele de nivel inalt, in ASM nu exista tip al variabilei. O variabila este caracterizata doar de nume acesteia, eticheta, si volumul de memorie alocat acestei variabile.

Microprocesoare (MP) #2

Tema: Subrutine cu parametri
Laborator Nr 2

Scopul lucrări:

 - initiere in procesul de chemare a subrutinei,
- protectia starii globale a registrilor
- transmiterea parametrilor catre subrutina

Sarcina lucrarii:
Sa se realizeze un program, care ar realiza calculul unei expresii simple: a * b + 22 cu ajutorul unei subroutine cu parametri. Sa se realizeze protectia starii globale a registrilor. Expresia: a*b+22

Consideraţii teoretice:

            Formatul subrutinei:
                                   My_sub:
                                                           …
                                                           …
                                                           …       
                                               RET

Microprocesoare (MP) #1

Scopul:
      1. Initiere in programare ASM
      2. Studiul instrumentelor de proiectare a aplicatiilor cu MCU (AVR Studio, Proteus)
      3. Lucrul cu modulul periferic GPIO

Expunerea problemei: 
Să se proiecteze un sistem care ar permite schimbarea stării unui led, din aprins în stinns si invers, la apăsarea unui buton. Starea inițială se va considera led aprins.

Consideraţii teoretice:
Modulul periferic GPIO - Port Generic de Intrare/Ieşire.

Modulul periferic ADC. Generare semnal PWM

Scopul lucrarii:  
 - De a configurara modului periferic ADC;
- generarea semnalelor PWM;
- interactiunea intre module.

Sarcina lucrarii:  
  - generarea semnalului PWM controlat de ADC;
  - pornirea modului de conversie continua de la TIMER;
  - colectarea de la canale multiple; - generarea semnalului PWM cu limite de stanga si de dreapta pentru a obtine un semnal de iesire RC care va controla un motor Servo. Semnalul va fi periodic, 50Hz, cu factorul de umplere de la 1ms la 2ms.

Notiuni teoretice:

   PWM (Pulse Width Modulation) este o tehnica folosita pentru a varia in mod controlat tensiunea data unui dispozitiv electronic. Aceasta metoda schimba foarte rapid tensiunea oferita dispozitivului respectiv din ON in OFF si invers. Perioada de timp corespunzatoare valorii ON dintr-un ciclu ON-OFF se numeste factor de umplere (duty cycle) si reprezinta, in medie, ce tensiune va primi dispozitivul electronic. Astfel se pot controla circuitele analogice din domeniul digital. Practic, asta inseamna ca un LED actionat astfel se va putea aprinde / stinge gradual, iar in cazul unui motor acesta se va invarti mai repede sau mai incet.
    Factorul de umplere se exprima in procente si reprezinta cat la suta din perioada unui semnal acesta va fi pe ON. In Figura 8 se pot observa semnale PWM cu factori de umplere diferiti. Astfel, se poate deduce foarte usor formula pentru a obtine valoarea factorului de umplere (D):
                                             D=pulse_width/period * 100%

Întreruperi, Timere

1. Întreruperi

O întrerupere hardware reprezintă un semnal sincron sau asincron de la un periferic ce semnalizează apariția unui eveniment care trebuie tratat de către procesor. Tratarea întreruperii are ca efect suspendarea firului normal de execuție al unui program și lansarea în execuție a unei rutine de tratare a întreruperii (RTI).
Întreruperile hardware au fost introduse pentru a se elimina buclele pe care un procesor ar trebui să le facă în așteptarea unui eveniment de la un periferic. Folosind un sistem de întreruperi, perifericele pot comunica cu procesorul, acesta din urma fiind liber să-și ruleze programul normal în restul timpului și să își întrerupă execuția doar atunci când este necesar.
Înainte de a lansa în execuție o RTI, procesorul trebuie sa aibă la dispoziție un mecanism prin care să salveze starea în care se afla în momentul apariției întreruperii. Aceasta se face prin salvarea într-o memorie, de cele mai multe ori organizată sub forma unei stive, a registrului contor de program (Program Counter), a registrelor de stare precum și a tuturor variabilelor din program care sunt afectate de execuția RTI. La sfârșitul execuției RTI starea anterioară a registrelor este refăcută și programul principal este reluat din punctul de unde a fost întrerupt.

Măsurarea semnalelor analogice

Lumea înconjuratoare este alcătuită în esență din semnale analogice: lumina, sunetul, căldura. Pentru a putea fi măsurate într-un sistem de calcul digital, aceste semnale trebuiesc convertite în valori numerice discrete. Un convertor analog – digital (ADC) este un circuit electronic care convertește o tensiune analogică de la intrare într-o valoare digitală. Aceasta poate fi reprezentată în mai multe feluri în funcție de codificarea datelor: în binar, cod Gray sau cod complement al lui doi.

O caracteristică importantă a unui ADC o constituie rezoluția acestuia. Rezoluția indică numărul de valori discrete pe care convertorul poate să le furnizeze la ieșirea sa în intervalul de măsură. Deoarece rezultatele conversiei sunt de obicei stocate intern sub formă binară, rezoluția unui convertor analog-digital este exprimată în biți.

Interfata USART, LCD

1. Ce este un datasheet?

Orice componentă electronică, de la un senzor de temperatură la un microcontroller la un motor la… orice are un document în care este descrisă în detaliu. Acest document se numește datasheet. Pe parcursul laboratoarelor și al proiectului de PM aceste datasheet-uri vor fi cei mai buni prieteni ai voștri. În ele veți găsi toate detaliile necesare pentru înțelegerea funcționării și folosirea componentei respective.


2. Interfața serială

Interfața serială este cel mai facil mod de a comunica cu microcontrollerul vostru pentru citirea de date sau trimiterea de comenzi. Din perspectiva microcontrollerului, comunicația serială se bazeaza pe doar doua linii:
  • linie pentru transmisie, notata Tx,
  • linie pentru recepție, notata Rx.
Transmisia asincronă de date se face la nivel de cadre(frames), fiecare cadru fiind format din mai mulți biți, având formatul descris in figura 1.

Organizarea librăriilor оn aplicații cu MCU

Obiective:
- Definirea unei librării;
- Separarea resurselor în globale și locale;
- Reutilizarea librăriilor.

Problema:

Să se proiecteze un sistem care ar permite ca caracterele culese de la o tastatură să se afișeze la un display 8x7seg. Pentru realizarea problemei se vor dezvolta librării/drivere de lucru cu fiecare dispozitiv(tastatura și display). Adițional se vor realiza resurse care vor reacționa la anumite taste cu funcții speciale: ‘*’ - Backspace, ‘#’ - Clrear.
Consideraţii teoretice:
Un program C++ este alcatuit din una sau mai multe functii, din care una este radacina sau functie principala - adica nu poate lipsi si executia incepe automat cu ea.  Aceasta se numeste main. Functiile aplelate pot fi functii predefinite descrise in fisiere header predefinite sau pot fi functii definite de catre programator. Acestea din urma pot fi definite in fisierul sursa care contine programul principal sau in alt fisier pe care il vom numi header utilizator si cu care se creeaza legatura in perioada de linkeditare prin directiva preprocessor # include.
      In cazul in care programatorul isi poate creeaza propriile fisiere header numele fisierului va fi inclus intre ghilimele ( " " ) . Fisierul va fi continut de directorul setat ca fiind director de lucru.
De exemplu:           
#include "Keyboard.h" , unde Keyboard.h este un fisier header definit de programator.

VARIABILE


Modulul periferic TIMER. Ceas, Afisor 8x7Seg

Sarcina:
I)  sa se proiecteze un sistem bazat pe microcontroler care ar permite afişarea conţinutului unui tablou unidimensional de caractere ASCII la un set de afişoare cu 7 segmente;

II) sa se proiecteze un ceas utilizand modulul periferic TIMER1, valoarea curenta a carui va fi reinnoita in tabloul pentru afişare in forma de caractere ASCII.

Microcontrollerele familiei AVR au de la 2 la 4 contoare de timp de uz general, în dependenţă de model




Display 8x7 segmente

Să se proiecteze un sistem care ar perimite afişarea unui set de caractere definit din memoria RAM pe un display format din 8 afişoare a câte 7 segmente.

Afişorul 8x7seg 
Controlul segmentelor este comun pentru toate cele 8 cifre disponibile pe placă. Asta înseamnă că toate segmentele de pe aceeaşi poziţie din toate cele 8 cifre sunt legate la acelaşi pin (altfel spus, toate cifrele active la un anumit moment de timp vor afişa aceeaşi valoare). Activarea sau dezactivarea unei cifre se face tot pe logică negată, folosind pinii legați la dispozitivele CC8 - CC0. Prin urmare, modulul care controlează afişajul pe 7 segmente va avea, pe lângă ieşirea de 8 biți necesară controlului segmentelor, încă o ieşire de 8 biți care va controla starea fiecărei cifre (activată sau dezactivată).
Afişorul va fi activat la aplicarea 0 logic la catodul comun (CC).

Lumini Rulante, subrutina Delay

 Să se proiecteze un sistem bazat pe microcontroler care ar permite deplasarea luminilor rulante, materializat în baza unei subrutine de reținere. Inițializarea configurației  luminilor va fi realizată cu subrutinele.
Schema electrică propusă:


  
     Realizarea sarcinii

   Atmega16 are 4 porturi. Acestea ne permit conectarea a 8x4=32 de leduri fără scheme electrice suplimentare.


Moduul periferic Intrerupere externa. EXT INT

Modulul periferic Intrerupere Externa - EXT INT permite detectarea schimbarilor de la unul din pinii externi al microcontrollerului cu o eventuala generare a unei situatii de intrerupere, care ar putea fi tratata de catre o subrutina de prelucrare a intreruperii EXT_INT_ISR. Totodata este unul din cele mai simple si esentiale module periferic care pot genera intreruperi.
    Întreruperile externe sunt atasate de pinii INT0, INT1, si INT2 ale microconrollerului. Pinii destinati intreruperilor pot fi configuraţi si ca ca ieşiri. Această caracteristică oferă posibilitatea crearii situatiilor de intreruperi chiar din cadrul programului prin modificarea valorilor pinilor respectivi din programul din MCU.
    In figura de mai jos se da un exemplu ce demonstreaza cum ar putea fi interpretata detectarea unei intreruperi externe generate de apasarea unui buton atasat la pinul de intrerupere si prelucrat de subrutina de prelucrare a situatiei de intreruperi:
Putem vedea ca pentru ca sa fie apelata subrutina de prelucrare a intreruperii este necesara satisfactia urmatoarelor conditii:


Programarea microcontrollerelor

Ce este un microcontroller?


Un microcontroller este un tip de circuit care integrează un microprocesor şi alte dispozitive periferice într-un singur chip punandu-se accent pe un cost redus de producţie şi consum redus de energie electrică. Principala diferenţă dintre un microcontroller (µC) şi un microprocesor (µP) o constituie faptul că un µC integrează memoria de program, memoria de date şi alte interfeţe de intrare-ieşire sau periferice.
Din cauza integrării unui număr mare de periferice şi a costului redus de producţie, un µC operează la frecvenţe reduse, în general la zeci sau sute de MHz. Cu toate acestea, microcontrollerele se pretează la o gamă variată de aplicaţii fiind folosite atât în mediul industrial cât şi în produse de larg consum, de la sisteme din industria aerospaţială până la telefoane mobile, cuptoare cu microunde şi jucării. Spre deosebire de µP microcontroller-ul execută un program încărcat pe acesta şi dedicat unei singure funcţionalităţi.
Majoritatea µC nu au un bus extern de adrese sau date deoarece toate memoriile de date sunt interne, ducând la integrarea acestora în capsule cu un număr mic de pini şi reduse ca dimensiuni, ceea ce reduce costurile de producţie.