Informații generale despre microcontrolere

Există trei tipuri de bază de memorie utilizate în microcontrolere. Memoria program este memorie non-volatilă pentru stocarea de cod de program și constante. Această memorie nu schimbă conținutul său în timpul rulării. Memoria de date este utilizat pentru a stoca variabile în program. Microcontroller registre - acest tip de memorie include registre procesor intern și registre care sunt utilizate pentru dispozitivele periferice.

S-ar putea surprinde o cantitate mică de microcontrolere de memorie. În continuare, veți vedea că nu este deficiență majoră a acestora. Dar când ne-am întâlnit prima dată, această caracteristică este într-adevăr surprinzător, mai ales în comparație cu microcontrolere cu calculatoare personale moderne, care conțin zeci de MB de memorie.

Pentru stocarea programelor, de obicei, servește ca un tip de memorie non-volatilă:

PROM (ROM o data programabil),

EPROM (ROM programabilă electric cu ștergere ultraviolete)

EEPROM (ROM scris electrice și ștergerea, la acest tip sunt, de asemenea, moderne microcip memorie flash)

ROM (mască programabilă ROM).

Toate aceste tipuri de memorie sunt non-volatile - ceea ce înseamnă că conținutul de memorie sunt reținute după oprirea sursei de alimentare a microcontrolerului. Această memorie este necesară deoarece microcontrolerul nu conține nici un dispozitiv de stocare în masă (unități de disc) pentru a încărca software-ul de pe computere. Software-ul este stocat în microcontroler.

În realizarea acestui program este citit din memorie, și unitatea de comandă (decodor de instrucțiuni) oferă decodare și executarea operațiunilor necesare acesteia. Conținutul memoriei program nu poate fi modificat (reprogramat) în timpul programului. Prin urmare, funcționalitatea unui microcontroler nu se poate schimba până când conținutul memoriei program nu vor fi șterse (dacă este posibil) și reprogramat (umplut cu noi comenzi).

Rețineți că microcontroler biți (8, 16 sau 32 de biți) este specificată în funcție de capacitatea de autobuz de date. Echipa de arhitectură Harvard poate avea o capacitate mai mare decât datele pentru a permite citirea într-un singur ciclu de întreaga echipă. De exemplu, microcontrolere PIC, în funcție de modelul utilizat comenzile cu bit 12, 14 sau 16 de biți. Comanda AVR microcontroler este întotdeauna 16 biți. Cu toate acestea, toate aceste dispozitive au o magistrală de date de 8 biți.

În dispozitivele cu arhitectura bit de date Princeton determină de obicei capacitate (numărul de linii) anvelope uzate. Microcontrolerul Motorola HC 68 poate 24 de biți de instrucțiuni situate trei celule de memorie de program de 8-biți. Pentru proba completă a acestei comenzi, trebuie să efectuați trei cicluri de a citi această memorie.

Când se spune că dispozitivul este un 8-biți, înseamnă că datele de biți, care este capabil de manipulare un microcontroler.

Memoria ROM (ROM) este utilizat atunci când codul de program este stocat în microcontroler în timpul producției sale. Pretestat și programul depanat, și apoi transferat la producător, în cazul în care programul este convertit într-un model de mască pe o sticlă foto-mască. Foto-mască rezultată cu o mască folosită în procesul de stabilire a conexiunilor dintre elementele care alcătuiesc memoria programului. Prin urmare, această memorie este adesea menționată ca un ROM-mască programabilă.

ROM-ul este cel mai scump non-volatilă de memorie de tip pentru producția de masă. Cu toate acestea, ea are unele dezavantaje semnificative care au condus la faptul că acest tip de memorie este greu de utilizat în ultimii ani. Principalele dezavantaje sunt semnificative economii de costuri și de timp în crearea unui nou set de măști și introducerea lor în producție. De obicei, acest proces durează aproximativ zece săptămâni și este rentabilă cu eliberarea de zeci de mii de dispozitive. Doar în aceste volume de producție furnizate de avantaj ROM în comparație cu E (E) PROM. Există, de asemenea, o limitare asociată cu utilizarea de microcontrolere numai într-un anumit domeniu de aplicare, deoarece aceasta asigură faptul că programul este rigid secvență fixă ​​de operații, și nu pot fi folosite pentru a rezolva orice alte probleme.

Programabilă electric Memoria EPROM este format din celule care sunt programate și șterse prin semnale electrice cu ajutorul luminii ultraviolete. Memoria PROM pot fi programate doar o singură dată. Această memorie conține, de obicei, siguranțe fuzibile care arde prin timpul de programare. În prezent, această memorie este folosită foarte rar.

celulă de memorie EPROM M este OS-tranzistor poarta plutitoare, care este înconjurată de dioxid de siliciu (SiO 2). Scurgere de tranzistor este conectat la „pământ“, iar sursa conectată la tensiunea de alimentare prin intermediul unui rezistor. În starea șterse (înainte de înregistrare) nu conține o taxă poarta plutitoare, și M OS-tranzistor este închis. În acest caz, sursa de capacitate ridicată este menținută, iar atunci când se referă la o celulă este citită de către unitatea logică. Programarea memoriei este redusă la intrarea corespunzătoare în celula de zero-uri.

Programarea se face prin aplicarea unui gate control de înaltă tensiune (Figura 1.7). Această tensiune ar trebui să fie suficientă pentru a furniza o defalcare între poarta și poarta plutitoare, după care taxa este transferată de la poarta de control la floating. MOS-tranzistor este comutată la starea deschisă prin scurtcircuitarea sursei sol. În acest caz, prin referire la celula este citit zero logic.

Pentru a șterge conținutul unei celule, este iluminată cu lumină ultravioletă, care dă taxa pe poarta plutitoare suficientă energie, astfel încât să poată părăsi poarta. Acest proces poate dura de la câteva secunde la câteva minute.

Informații generale despre microcontrolere

Figura 1.7 Memorie EPROM celulelor p.

De obicei, chips-uri EPROM sunt fabricate în pachet și cuarț ceramice fereastră pentru a avea acces lumina UV. O astfel de locuințe este destul de scump, care crește în mod semnificativ costul de cip. Pentru a reduce prețurile cip EPROM închise într-o carcasă fără (versiunea EPROM cu o singură programare) fereastră. Reducerea costurilor pentru utilizarea unor astfel de organisme pot fi atât de importantă încât versiunea EPROM este acum adesea folosit în loc de-masca programabil ROM.

Anterior, microcontrolere programate numai prin protocoale paralele destul de complexe pentru a pune în aplicare. În prezent, protocoalele moderne de EPROM de programare și de memorie EEPROM s-au schimbat în mod semnificativ, ceea ce a permis microcontrolerul să efectueze programare direct în sistem în cazul în care se execută. Această metodă de programare numită «în - sistem de programare» sau «ISP». ISP-microcontrolere pot fi programate după ce au lipit de bord. Acest lucru reduce costurile de programare, astfel încât nu este nevoie să se folosească de echipamente speciale - programatori.

Un EEPROM (memorie programabilă care poate fi ștearsă - memorie programabilă poate fi ștearsă electric) poate fi considerată ca o nouă generație de memorie EPROM. Într-o astfel de celulă de memorie nu este ștearsă de lumina ultravioletă, și prin conectarea electrică poarta plutitor la „sol“. Utilizarea EEPROM vă permite să ștergeți și programul de microcontroler fără a scoate-l din bord. În acest fel este posibil să se actualizeze periodic software-ul său.

Memoria EEPROM este mai scumpă decât EPROM (de două ori prețul unui singur EPROM de programare). EEPROM este un pic mai lent decât EPROM.

Avantajul principal al folosirii unui EEPROM este posibilitatea reprogramării sale multiple, fără ao scoate de pe tablă. Acest lucru oferă un scor foarte mare în stadiile inițiale ale dezvoltării unor sisteme bazate pe microcontrolere sau în cursul studiului lor, atunci când o mulțime de timp petrecut pentru căutarea unor cauze de nefuncționare sistem multiplu și executarea de cicluri ulterioare Ștergerea memoriei program și de programare.

Functional, flash-memorie nu este foarte diferit de EEPROM. Principala diferență este în metoda de ștergere a informațiilor înregistrate. Radierea de memorie EEPROM este realizată separat pentru fiecare celulă, la fel ca în ștergerea Flash-memorie se efectuează blocuri întregi. Dacă doriți să modificați conținutul unei celule de memorie flash, va trebui să reprograma întregul bloc (sau întregul cip). Microcontrolerele cu memorie EEPROM, puteți schimba părți individuale ale programului, fără a fi nevoie să reprograma întregul dispozitiv.

Adesea, acesta indică faptul că dispozitivul are o memorie flash, atunci când, de fapt, acesta conține EEPROM. În prezent între tipurile de memorie au câteva diferențe, așa că unii producători folosesc acești termeni ca fiind echivalente.

Atunci când prima introducere a descrierii microcontroler de mai multe cantități surprinzător de mici de date de memorie RAM. care este de obicei, în zeci sau sute de bytes. În cazul în care microcontroler utilizează pentru a stoca date de memorie EEPROM. apoi volumul său și care nu depășește câteva zeci de bytes.

Dacă scrieți un program pentru un computer personal (PC), atunci probabil că aveți o întrebare, ce se poate face cu o astfel de cantitate mică de memorie. Probabil, aplicația pentru PC conțin variabile, volumul care este măsurată în kilobiți, nu de numărare seturile de date utilizate. Atunci când se utilizează baterii de capacitate de memorie necesară poate fi sute de kilobytes. Deci, ce se poate face cu memorie RAM de aproximativ 25 bytes?

Faptul este, programarea microcontrolerului se realizează prin mai multe reguli diferite decât cele de programare PC-uri. Aplicarea unor reguli simple pe care le poate rezolva multe probleme cu folosind o cantitate mică de memorie RAM. Când programarea microcontrolerului constantă, dacă este posibil, nu stocate ca variabile. Maximă hardware capabilități microcontroler (cum ar fi temporizatoare, registre index) pentru a limita posibila plasare a datelor în memoria RAM. Acest lucru înseamnă că dezvoltarea de aplicații, trebuie să ia mai întâi grijă de alocarea de resurse de memorie. Cererile ar trebui să se concentreze asupra muncii fără utilizarea unor cantități mari de date.

Microcontrolerul RAM este utilizat pentru organizarea apelului subrutina și va întrerupe de manipulare. În aceste operații conținutul contorului de program și registre principale (acumulator, registrul de stare, registre index, etc.) este salvat și apoi restaurat la revenirea la programul principal.

Stivă - o structură de date electronică, care funcționează în mod similar cu omologul său fizic - un teanc de hârtii. Când ceva este pus pe stivă, rămâne acolo până până când este scos din nou. Prezentați foi colorate de hârtie, care sunt stivuite una peste alta. Când foile sunt eliminate, atunci mișcarea lor are loc în ordine inversă. Din acest motiv, stiva este adesea numit LIFO tip coadă (Last In First Out.) - «ultimul intrat, primul ieșit„.

In Princeton Arhitectura RAM este folosită pentru a implementa o multitudine de funcții de hardware, inclusiv funcțiile stivei. Acest lucru reduce performanțele dispozitivului, deoarece accesul la diferitele tipuri de memorie necesită un tratament multiplu, care nu pot fi efectuate simultan. Din același motiv Princeton arhitectura necesită de obicei mai multe cicluri de ceas pentru a executa o comandă decât la Harvard.

În arhitectura Harvard operațiunile stiva pot fi efectuate în memorie alocată în mod special pentru acest scop. Acest lucru înseamnă că comanda «apel» procesorul de apel subrutina cu arhitectura Harvard efectuează mai multe acțiuni simultan. In arhitectura Princeton, atunci când efectuează este selectat următorul «apel» comandă de comandă, după conținutul contorului de program va fi plasat pe stivă.

Trebuie amintit faptul că ambele microcontrolere arhitecturi au o capacitate limitată de memorie pentru stocarea de date. Depășirea acestei limite poate cauza probleme în timpul execuției programului.

Acum, ia în considerare posibilitatea de a menține conținutul registrului stivă. Unele arhitecturi nu au echipe care efectuează conținutul registrelor în stivă de încărcare «împinge» și se extrage din stivă «pop». Cu toate acestea «împinge» și «pop» comenzi pot fi implementate cu ușurință folosind registrul de index, care indică în mod clar o regiune a stivei. În acest caz, în loc de fiecare dintre echipele «împinge» și «pop» două comenzi enumerate mai jos:

Push :; încărcarea datelor pe stivă

muta [Index], A; a salva conținutul unei stive baterie

indicele Decrementați, du-te la următoarea stivă de celule

Pop :; extragerea datelor din stivă

incrementa indicele, du-te la stiva de celule anterioare

O mutare, [index]; valoarea loc în stivă baterie

Desigur, această soluție este mai puțin eficientă decât utilizarea unor echipe speciale «împinge» și «pop», și a folosit registrul de index pot fi solicitate pentru alte scopuri. Cu toate acestea, această soluție oferă o simulare stivă folosind procesoare care nu au nici o astfel de comandă.

Există o altă problemă cu exemplul de mai sus. Ce se întâmplă în cazul în care are loc o întrerupere între prima și a doua echipă, care simulează operațiunea «împingere» și «pop»? În cazul în care handler de întrerupere utilizează stiva, datele stocate în acesta vor fi pierdute. Pentru a preveni acest lucru, puteți dezactiva întrerupe înainte de a executa aceste comenzi, sau să le rearanja în ordinea următoare:

Push :; încărcarea datelor pe stivă

indicele Decrementați, du-te la următoarea stivă de celule

muta [Index], A; a salva conținutul unei stive baterie

Pop :; extragerea datelor din stivă

O mutare, [index]; valoarea loc în stivă baterie

incrementa indicele, du-te la stiva de celule anterioare

Dacă după prima comandă, programul este întrerupt, nu va fi pierdut după tratament, conținutul de întrerupere stivă.