Home - Rasfoiesc.com
Educatie Sanatate Inginerie Business Familie Hobby Legal
Meseria se fura, ingineria se invata.Telecomunicatii, comunicatiile la distanta, Retele de, telefonie, VOIP, TV, satelit




Aeronautica Comunicatii Constructii Electronica Navigatie Pompieri
Tehnica mecanica

Electronica


Index » inginerie » Electronica
» MICROCONTROLERE – FUNCTIONARE


MICROCONTROLERE – FUNCTIONARE




MICROCONTROLERE – FUNCTIONARE

Un μC are programul sau memorat intern si ALU citeste o instructiune din memorie. Aceasta instruntiune este decodificata de ALU si executata. La sfarsitul executarii instructiunii, o alta instructiune este apelata (adusa) din memorie si executata. Aceasta procedura este repetata pana este gasit sfarsitul programului sau programul intra intr-o bucla din care iese intr-un anumit punct. In acest caz masina (μC) va ramane in bucla tot timpul sau pana cand se intampla ceva (are loc un eveniment) care sa-l scoata dintr-o bucla fara sfarsit.

Sunt 3 moduri prin care o masina blocata intr-o bucla poate fi eliberata pentru a executa instructiuni in afara buclei. Aceste operatii sunt numite exceptii.

RESETAREA: Un semnal de reset uzual inseamna aducerea unui „0” logic pe primul RESET al μC. Cand aceasta conditie este detectata, cateva registre interne sunt aduse la valorile predeterminate (stabilite initial) si μC aduce adresa rutinei de resetare dintr-o anumita locatie de memorie. Aceasta adresa este pusa in contorul de program PC (Program Counter) si programul incepe sa fie executat (rutina de resetare). In memoria μC este un tabel care contine adresele a cateva rutine accesate cand au loc aceste exceptii. Acestea sunt adresele rutinelor de intrerupere, de resetare, etc. Tabelul este numit TABELUL VECTORULUI si adresele sunt numite VECTORI.




DETECTAREA UNEI CERERI DE INTRERUPERE EXTERNA : O intrerupere externa are loc cand pinul „cerere” de intrerupere (IRQ-Interrupt Request) este adus la „0”. Acest pin este verificat (testat) la inceputul executiei fiecarei instructiuni. Daca in timpul executiei unei instructiuni apare o cerere de intrerupere, instructiunea va fi complet executata inainte ca cererea de intreruperea sa fie activata (cu alte cuvinte, aparitia unei cereri de intrerupere nu este „luata in seama” pana cand instructiunea „deranjata de cerere” nu este executata in intregime). Procesarea unei cereri de intrerupere consta in primul rand in determinarea daca cererea este permisa. Daca ea este permisa, starea masinii este memorata (salvata). Toate intreruperile sunt dezactivate prin punerea in „1” logic a bitului masca intrerupere (Intrerupt Mask Bit) din registru de stare (SR=Status Register) al μC. Apoi, adresa memorata in locatia vectorului de intrerupere este adusa in PC pentru a fi executata. Aceasta adresa este numita ADRESA SERVICIULUI RUTINA DE INTRERUPERE (ISR=Interrupt Service Routine).

Procesul de salvare a starii masinii consta in a pune continutul tuturor registrilor in stiva. Dupa care, rutina serviciului de intrerupere (ISR) poate utiliza in siguranta orice resursa a unitatii centrale fara perturbarea operatiei principale cand controlul revine. La iesirea dintr-o intrerupere este necesara folosirea unei unei instructiuni speciale numita INTOARCEREA DIN INTRERUPERE (RETI=Return From Interrupt). Aceasta instructiune reface starea masinii memorate in stiva si porneste executia codului de la urmatoarea instructiune de unde a fost lasata instructiunea de intrerupere.

DETECTAREA UNEI CERERI DE INTRERUPERE INTERNA. Echipamentele periferice ale μC pot cauza intreruperi destul de des. O intrerupere interna este tratata la fel ca una externa. Vectori de intrerupere diferiti sunt folositi pentru fiecare din perifericele interne, asa ca este bine cunoscuta cauza intreruperii (de cine este ceruta) si controlul este indreptat spre o rutina de intrerupere specifica fiecarui echipament periferic intern.

Datele sunt transferate, informatia este lasata sa treaca sau evenimentele sunt manuite (manipulate !!!) sincron sau asincron. Diferenta dintre aceste 2 moduri de transfer de date (sincron sau asincron) se refera la modul in care este folosit semnalul de ceas. Cel mai comun mod de transfe de date sincron este cu 3 fire de legatura seriala. Unul din fire este ceasul, iar celalalte 2 sunt datele de intrare, respectiv de iesire. Pentru un transfer sincron, valoarea intrarii este esantionata pe un front al semnalului de ceas (cum ar fi frontul descrescator) sivaloarea bitului ce trebuie trimis in afara este garantata a fi corectata la sfarsitul semnalului de tact. Orice sistem sincron trebuie sa trimita datele la acele momente de timp care vorfi stabile pe durata palierului semnalului de ceas si sa le mentina in interior (sa le pastreze – sa nu le dea drumul) decat la coborarea semnaluli de ceas (pe frontul descrescator).

Pentru a receptiona un bit, starea liniei de intrare trebuie zavorata in sistem in timpul frontului descrescator al ceasului. Din interiorul calculatorului este o alta diferenta pentru transferul sincron. De multe ori o intrare este acceptata sa seteze (sa puna in „1”) un bit la aparitia ei. Daca acest lucru se intampla, programul nu va observa imediat ca acel bit adevenit „1”. De fapt programul va verifica starea bitului conform cerintelor de timp ale acestuia. Acest tip de operatie numit tot sincron pentru ca verificarea este sincronizata cu programul.

FUNCTIONAREA ASINCRONA: depinde in general de aranjarea in prealabil a unei serii de evenimente care sa cauzeze transferul de date. Comunicatia seriala de date este exemplu comun de transfer de date asincron. Aici, o linie de intrare poate avea 2 stari: 1sau 0 (mask&space). O linie de date este tinuta la „1” tot timpul cat datele nu sunt transferate. Cand datele trebuiesc transferate, linia de date este adusa (trasa) la „0” si mentinuta un anumit timp. Acesta perioada este numita BITUL DE START (START BIT). Din acel moment in continuare,bitii de date sunt adusi pe linie bit cu bit, a.i. la intervale de timp specificate dispozitivul de receptie (receptorul) examineaza linia de date si determina secventa bitilor.

Functionarea asincrona inseamna functionarea fara o relatie specifica (in legatura) cu ceasul sistemului. Un alt exemplu de transfer asincron are loc in interiorul sistemului. In general, evenimentele si transferul de date initiate de intreruperi sunt considerate asincrone. Cele mai multe echipamente periferice din μC Motorola vor permite notificari ale progranului atat sincrone cat si asincrone.

INTRARI/IESIRI (I/O)

ΜC Motorola utilizeaza o arhitectura numita memorie structurata pe intrari/iesiri (Memory Mapped I/O). Fiecare din registrele de intrare/iesire, registrele de control si registrele de stare sunt localizate la diverse locatii de memorie. Tranzitiile I/O nu necesita instructiuni speciale. Este necesara numai cunoasterea locatiilor de memorie a registrilor si folosirea bitilor registrelor pentru a fi in stare sa manuiesti orice functie de intrare/iesire.



SISTEMELE DE TEMPORIZARE (TIMER SUBSYSTEMS)

Sunt 2 sisteme de temporizare ce pot fi gasite in μC. Primul este un TEMPORIZATOR DE UZ GENERAL (General Purpose Timer) de 8 sau 15 biti. Cel de 8 biti contine un prescoler care numara inapoi de la ceasul sistemului. Iesirea prescoler-ului este incarcata intr-un numarator care numara inapoi incepand de la acea valoare. Cand numaratorul care numara s-a golit (a ajuns la 0), este semnalizat printr-un „1” la un anumit bit si o intrerupere poate fi executata.

Temporizatorul de 15biti estwe chiar mai simplu decat cel de 8 biti. Acesta are un prescoler programabil de 15 biti. O intrerupere poate fi luata in 2 locatii la acest numarator.

Cea de – a 2 – a categorie este TEMPORIZATORUL DE 16 BITI.     Aceste temporizatoare contin un numarator de 16 biti care este comandat de ceasul sistemului (pe intrarea de tact). Sunt 2 subsisteme asociate:

sistem cu captura a intrarii (Input Capture)

sistem cucomparare a iesirii (Output Compare)

SISTEMUL CU CAPTURA A INTRARII: captureaza valoarea numaratorului cand apare o intrare. Aceste intrari pot aduce in „1” un indicator (set a flag) sau cer o intrerupere, a.i. intrarea poarte fi procesata atat sincron cat si asincron. Lucrul important este momentul exact de timp relativ cand ceasul de 16 biti este salvat la aparitia intrarii. Aplicatii ale acestui sistem sunt masuratorile duratei dintre impulsuri sau masuratorile de frecventa.

SISTEMUL DE COMPARARE A IESIRILOR: permite programatorului sa specifice un timp relativ la numaratorul de 16 biti cand este activata o iesire. Acest timp este calculat prin adaugarea valorii de offset la valoarea curenta a numaratorului de 16 biti. Acest rezultat este memorat in registru de comparare de iesire. Cand numaratorul de 16 biti numara spre valoarea din registru de comparare de iesire, apare iesirea (iesirea este activata), un bit este pus pe „1” si o intrerupere poate fi procesata daca se doreste. Functiile de captura a intrarii si comparare a iesirii sunt numite uneori intrari si iesiri de mare viteza. Numarul intrarilor de captura si a iesirilor de comparare pot aveade 1 la 16 temporizatoare programabile fiecare putand fi atat intrari de captura cat si iesiri de comparare.

Mai exista un alt tip de temporizatoate la μC. Acesta este numit TEMPORIZATOR AL UNITATII DE PROCESARE (TPU = Timer Processor Unit). In cele mai calculatoare conventionale continuturile unei locatii de memorie este numit OPERAND si procesorul are operatori interni care opereaza cu operanzii. Un TPU este un calculator care are timpul ca operand.

Un alt sistem de temporizare ce se gaseste la majoritatea μC este „FUNCTIONARE CUM SE CUVINE A CALCULATORULUI ”(COP =Computer Operating Properly) sau WATCHDAG TIMER (TEMPORIZATOR DE VEGHE). In general, μC este o parte a unui sistem integrat mai mare si operatorul niciodata nu are legatura directa cu μC. Cu toate acestea, o mare atentie trebuie acordata proiectarii intrucat este posibil ca acesta sa se piarda de programul pe care il executa. Puterea disponibila poate disparea sau un camp magnetic foarte puternic poate sa aduca sistemul intr-o functionare anormala. Intr-o astfel de situatie, cea mai usoara cale de a restabili functionarea normala este RESETAREA. O astfel de secventa va reface toate starea initiala a μC, va executa procedura de initializare a programului si va reincepe executia buclei aplicatiei. Un temporizator COP are tocmai aceasta functie. El este un temporizator de lunga durata. Odata pornit un astfel de temporizator, este necesar ca programul principal sa reseteze periodic COP inainte de expirarea perioadei COP. Temporizatorului COP nu-i este niciodata permisa expirarea timpului (time-out). Daca calculatorul se pierde, programul nu va mai reseta COP si atunci temporizatorul va depasi timpul si aceasta functionare va reseta μC. Altfel spus, daca μC se pierde (iese) din functionarea corespunzatoare (cum se cuvine), temporizatorul Cop (WT) va reseta calculatorul si va reface functionarea normala a sistemului.








Politica de confidentialitate





Copyright © 2021 - Toate drepturile rezervate