Contacte

Ce este un controler EEPROM. Ce este un cip de memorie și cum să programezi microcircuitele. Urmăriți ce este "EEPROM" în alte dicționare

Microsciunile diverse sunt aplicate ca parte a electronicii tehnologiei moderne. O mare varietate de astfel de componente completează microcircuitele de memorie. Acest tip de componente radio (printre electronice și persoane) este adesea numit pur și simplu chips-uri. Scopul principal al cipurilor de memorie este stocarea anumitor informații cu posibilitatea de a face (înregistrare), modificări (suprascriere) sau Îndepărtarea completă (ștergere) software.. Interesul universal în chips-urile de memorie este de înțeles. Wizards, care știu cum să programeze chips-uri de memorie, deschise extinse în repararea și configurarea dispozitivelor electronice moderne.

Microcircuitul de memorie este o componentă electronică, a cărei structură internă este capabilă să salveze (memorarea) programelor introduse, orice date sau simultan ambele.

În esență, informațiile încărcate în cip sunt o serie de comenzi constând dintr-un set de unități de calcul microprocesor.

Trebuie remarcat: Chips-urile de memorie sunt întotdeauna o adăugare integrală de microcircuități de control de microprocesoare. La rândul său, microprocesorul este baza electronicii oricărei tehnologii moderne.

A stabilit componente electronice Pe consiliul modern dispozitiv electronic. Undeva printre această masă de componente radio, o componentă a fost protejată, capabilă să memoreze informații

Astfel, controlul microprocesorului, iar cipul de memorie stochează informațiile necesare microprocesorului.

Programele sau datele sunt stocate în cipul de memorie ca un număr de numere - zerouri și unități (biți). Un pic poate fi reprezentat de zero logic (0) sau unitate (1).

Într-o singură formă, prelucrarea biților este văzută dificilă. Prin urmare, biții sunt combinați în grupuri. Șaisprezece biți constituie un grup de "cuvinte", opt biți sunt octeți - "parte a cuvântului", patru biți - "o bucată de cuvinte".

Software-ul termal pentru chipsuri, care este folosit mai des decât alții, este octet. Acesta este un set de opt biți, care poate dura de la 2 la 8 variații numerice, care, în total, oferă 256 de valori diferite.

Pentru a reprezenta octetul, se utilizează un sistem numeric hexazecimal, unde se furnizează utilizarea a 16 valori ale a două grupe:

  1. Digital (de la 0 la 9).
  2. Simbolic (de la A la F).

Prin urmare, în combinații de două semne ale sistemului hexazecimal, 256 de valori sunt, de asemenea, stivuite (de la 00h la FFH). Simbolul final "H" indică apartenența la numerele hexazecimale.

Organizarea microcircuitelor (chips-uri) de memorie

Pentru chips-urile de memorie de 8 biți (cel mai frecvent tip), biții sunt combinați în octeți (8 biți) și sunt stocați sub o anumită "adresă".

La adresa desemnată, accesul la octeți. Rezultatul a opt biți de adrese de acces se realizează prin opt porturi de date.


Organizarea structurii strategice. La prima vedere, un algoritm complex și incomprehensibil. Dar dacă doriți să vă dați seama, înțelegerea vine repede

Cipurile de memorie permanente de memorie comprimate electric (EEPROM) sunt microcircuitele de calculator de oxid metalic care sunt utilizate pe pCB.. Acest tip de cip poate fi șters și reprogramat cu ajutorul unui semnal puternic de electroni. Deoarece acest lucru se poate face fără a scoate cipul de la dispozitivul la care este conectat, chipsurile EEPROM sunt utilizate în multe industrii.
Microcircuitul EEPROM conține memorie non-volatilă, astfel încât datele sale nu sunt pierdute când cipul este întrerupt. Cipul de acest tip poate fi programat de selectiv, ceea ce înseamnă că o parte a memoriei sale poate fi modificată folosind o nouă suprascriere fără a afecta restul memoriei. Informațiile stocate în interiorul cipului EEPROM sunt constante până când acestea sunt direcționate sau reprogramate, ceea ce îl face o componentă valoroasă în computere și alte dispozitive electronice.

Chipsurile EEPROM se bazează pe tranzistoarele cu un declanșator plutitor. Microcircuitul EEPROM este programat prin aplicarea informațiilor programabile sub formă de electroni prin oxidul de declanșare. Apoi, obturatorul plutitor asigură depozitarea acestor electroni. Celula de memorie este considerată programată când este încărcată cu electroni și apare zero. Dacă celula de memorie nu este încărcată, acesta nu este programat și este reprezentat de unul.

Memoria necesită o gamă largă de dispozitive, astfel încât jetoanele EEPROM au multe aplicații în domeniul electronicii de consum. Ele sunt folosite în sisteme de jocuri, televizoare și monitoare de calculator. Aparate auditive, camere digitale, tehnologia Bluetooth Și sistemele de jocuri folosesc și chips-uri EEPROM. Acestea sunt utilizate în domeniul telecomunicațiilor, industriei medicale și producției. Calculatoarele personale și de afaceri conțin Epsu.

Chipul EEPROM are, de asemenea, o gamă largă de aplicații în industria automobilelor. Se utilizează în sisteme anti-blocare, perne de siguranță, mijloace electronice Controlul stabilității, transmisiilor și unităților de control al motorului. Chipsurile EEPROM sunt, de asemenea, utilizate în aparate de aer condiționat, afișaje. bord, Modulele de control Corp și sistemele de intrare fără cheie. Aceste chipsuri ajută la controlul consumului de combustibil și sunt, de asemenea, utilizate în diferite sisteme de diagnosticare.

Există o limită a numărului de repetări care pot fi suprascrise de cipul EEPROM. Stratul din interiorul cipului este deteriorat treptat de numeroase rescrieri. Aceasta nu este o mare problemă, deoarece unele jetoane EEPROM pot fi schimbate la un milion de ori. Mai multe programe de succes sunt susceptibile de a avea un impact pozitiv asupra a ceea ce poate conta în jetoanele de memorie în viitor.

În zorii memoriei, salvarea datelor atunci când alimentarea este oprită (EPROM, E. Rasable. P. Rogrammabil. rom , Eramable / Programable Rom sau în Rusia - Pisa, Programabil Rom), tipul său principal a fost memoria spălată de Ultraviolet: UV-EPROM ( Ultra-Violet Eprom , UV-PPZ). Mai mult decât atât, prefixul UV a coborât, deoarece toată lumea a fost clar că EPROM este un șters ultraviolete, un ROM (sau ROM) pur și simplu, fără adăugări, este o dată cristale OTP-ROM programabile. Microcontrolerele cu programe de memorie UV au fost distribuite la mijlocul anilor 1990. În probele de lucru ale dispozitivelor cu memorie UV, fereastra cuarț prin care s-a realizat ștergerea, a fost blocată cu o bucată de bandă lipicioasă, deoarece informațiile din UV-EPROM sunt distruse lent și în lumina soarelui.

În fig. 18.7 Celula elementară EPROM este prezentată, care se bazează pe toate tipurile moderne de memorie flash. Dacă excludeți din ea ceea ce este indicat de inscripția "declanșator plutitor", primim cele mai frecvente tranzistor cu efect de câmp - Exact același lucru intră în celula DRAM. Dacă trimiteți o tensiune pozitivă a obturatorului de control al unui astfel de tranzistor, atunci se va deschide, iar curentul curge prin el (aceasta este considerată o stare a unei unități logice). În fig. 18.7 În partea de sus prezintă acest caz atunci când obturatorul plutitor nu are niciun efect asupra lucrării celulei, de exemplu, o astfel de stare este tipică pentru memoria flash curată, care nu a fost înregistrată niciodată în nici un moment.

Smochin. 18.7. Dispozitiv de celule elementare EPROM.

Dacă suntem într-un fel (cum să vorbim separat), reușim să acompări câteva acuzații de electroni liberi pe o poartă plutitoare, care sunt prezentate în fig. 18.7 În jos sub formă de cercuri întunecate cu o pictogramă minus, acestea vor proteja funcționarea electrodului de control, iar un astfel de tranzistor nu va mai opri conducta. Aceasta este o stare de zero logic. Deoarece obturatorul plutitor se datorează faptului că se numește că "plutește" în grosimea izolatorului (dioxid de siliciu), atunci acuzațiile raportate într-o zi nu pot merge nicăieri. Iar informațiile înregistrate în acest mod pot fi stocate de zeci de ani (până de curând, producătorii au dat de obicei o garanție timp de 10 ani, dar pe practică în condiții normale, timpul de depozitare este mult mai mult).

Note pe câmpuri

Strict vorbind, în chips-urile NAND (despre care, logica este obligată să fie inversă. Dacă în celula programată EPROM obișnuită nu puteți deschide tensiunea de alimentare, atunci acolo, dimpotrivă, este imposibil să îl blocați cu îndepărtarea tensiunii. Prin urmare, în special, memoria NAND NAD oferă toate zerourile și nu unitatea ca EPROM. Dar acestea sunt nuanțe care nu schimbă esența cazului.

Nu mai rămâne nimic de a veni cu modul de a plasa taxe izolate de toate influențele externe prin poarta plutitoare. Și nu numai pentru a posta - la urma urmei, uneori memoria și o șterge, de aceea trebuie să fie o modalitate de a le extrage de acolo. În stratul UV-EPROM de oxid între obturatorul plutitor și substratul a fost destul de gros (dacă valoarea a 50 nanometri poate fi caracterizată prin cuvântul "grăsime", desigur), și totul a funcționat destul de nepoliticos. La înregistrare, o tensiune pozitivă destul de mare a fost furnizată obturatorului de control - uneori până la 36-40 V și pe tranzistorul de stoc - un mic pozitiv. În același timp, electronii care s-au mutat de la sursă la scurgere, au accelerat astfel câmpul electrodului de control, care pur și simplu a sărit bariera sub formă de izolator între substrat și un obturator plutitor. Un astfel de proces este numit injectarea electronilor fierbinți .

Curentul de încărcare în același timp a ajuns la Milliamper - vă puteți imagina care a fost consumul întregii scheme dacă programul simultan cel puțin câteva mii de celule. Și deși un astfel de curent a fost necesar pentru un timp suficient de scurt (cu toate acestea, din punctul de vedere al vitezei schemei, nu există un număr scurt de milisecunde), dar a fost cel mai mare dezavantaj al tuturor probelor vechi de memorie EPROM. Chiar mai rău decât altul - și izolatorul și obturatorul plutitor al unei astfel de lupte pentru o lungă perioadă de timp nu putea să stea și să se degradeze treptat, motiv pentru care numărul de cicluri de ștergere / înregistrare a fost limitat la câteva sute, maximum - mii. În multe probe de memorie flash, a fost furnizată chiar și o schemă specială pentru stocarea celulelor "rupte" - exact așa cum se face pentru hard discuri. În modelele moderne cu milioane de celule, un astfel de card are, totuși, numărul de cicluri de ștergere / înregistrare a crescut acum la sute de mii. Cum a reușit acest lucru să realizeze?

În primul rând, să vedem cum a fost realizată ștergerea în această schemă. În UV-EPROM, atunci când sunt iradiate cu fotoni ultraviolete, de înaltă energie, au fost raportate la electroni pe o poarta plutitoare un impuls adecvat, astfel încât acestea să "amortizeze" înapoi la substrat, fără efecte electrice. Primele mostre de memorie electrică electrică (EEPROM, Programabil erasabil electric ROM , în companie au fost create în companie reprogramate electrice ROM, espru) Intel. La sfârșitul anilor 1970, cu participarea directă a viitorului fondator Atml. George Perelegelos. El a folosit efectul de tunel cuantic Fowler Nordhaima . Acest nume incomprehensibil se află destul de simplu în esență (dar foarte complex din punct de vedere fizic) Fenomenul - cu o peliculă destul de subțire a izolatorului (grosimea sa a trebuit să fie redusă de la 50 la 10 nm) electroni, dacă sunt ușor împingeți Depunerea tensiune înaltă În direcția cea bună, ei pot scurge prin barieră, fără să-l sări. Procesul în sine este prezentat în fig. 18.8 În partea de sus (acordați atenție semnului de tensiune pe electrodul de control).

Smochin. 18,8. Ștergeți procesul în celula elementară EPROM.

Vechile eșantioane EEPROM au fost atât de lucrate: înregistrarea a fost făcută de "injecția fierbinte", iar ștergerea este "tunelurile cuantice". Deoarece erau destul de complexe în funcționare - dezvoltatorii cu experiență amintesc că primele chipsuri EEPROM au cerut două, sau chiar trei tensiuni de alimentare și să le aplice atunci când înregistrarea și ștergerea au fost necesare într-o secvență specifică.

Transformarea EEPROM IN Flash. Sa întâmplat în trei direcții diferite. În primul rând, în direcția îmbunătățirii designului celulei în sine. Pentru a începe, au scăpat de stadiul urât - "injecție fierbinte". În schimb, când scrierea a început să utilizeze "tunelurile cuantice", ca și în ștergerea. În fig. 18.8 de mai jos prezintă acest proces - dacă cu un tranzistor deschis pentru a trimite o tensiune destul de mare (dar semnificativ mai mică decât atunci când "injecție fierbinte"), atunci o parte din electronii care se deplasează tranzistor în aer liber De la sursă la scurgere, "înclinarea" prin izolator și va fi pe o poartă plutitoare. Consumul curent în timpul înregistrării a scăzut cu mai multe comenzi. Isolatorul, totuși, trebuia să o fac chiar mai subțire, ceea ce a dus la dificultăți destul de mari, cu introducerea acestei tehnologii în producție.

A doua direcție - celula a fost făcută oarecum mai complicată prin atașarea la acesta al doilea tranzistor (normal, nu două lanț), care a împărțit ieșirea scurgerii și citirea anvelopei întregului microcircuit. Datorită tuturor acestor lucruri, este posibilă obținerea unei creșteri semnificative a durabilității - până la sute de cicluri de înregistrare / ștergere (milioane de cicluri caracteristice cardurilor flash, sunt obținute dacă adăugați scheme de corecție a erorilor). În plus, schemele de formare de înaltă tensiune și generatoarele de impulsuri de înregistrare / ștergere corespunzătoare au fost transferate în interiorul cipului, ceea ce face posibilă utilizarea acestor tipuri de memorie. A devenit incomparabil mai convenabil - au început să mănânce de la o tensiune (5, 3.3 sau chiar 1,8 V).

În cele din urmă, al treilea, cu greu, cel mai important, îmbunătățirea a fost de a schimba organizarea accesului la celule pe cristal, ca rezultat al acestui tip de memorie și merită numele - flash. (adică "fulgerul"), acum cunoscut fiecărui proprietar al unei camere digitale sau a unui player de buzunar MPZ. Deci, la mijlocul anilor 1980, au numit diferența de EEPROM, în care ștergerea și înregistrarea au fost făcute imediat cu blocuri întregi - pagini. Procedura de citire dintr-o celulă arbitrară, cu toate acestea, din motive evidente, a încetinit - pentru accelerarea sa, este necesar să se plaseze SRAM intermediar (tampon) pentru ao accelera pe cristalele de memorie flash. Pentru unitățile flash, acest lucru nu contează mult, deoarece există încă datele sunt citite și sunt scrise imediat de matrice mari, dar pentru utilizare în microcontrolere, poate fi incomod. În plus, în MC este incomod să utilizați cea mai rapidă versiune a tehnologiei Flash - așa-numita memorie de tip NAND (de la numele funcția logică "Nu"), unde să citiți și să înregistrați memoria în principiu este posibilă numai prin blocuri de 512 octeți (aceasta este dimensiunea obișnuită a sectorului pe hard disk, de asemenea citirea și înregistrată imediat, - de aici puteți înțelege scopul principal al NAND).

MK utilizează de obicei memoria blițului tradițional (tip și) a programelor în care paginile sunt relativ mici în dimensiune - aproximativ 64-256 octeți. Cu toate acestea, în cazul în care utilizatorul însuși nu ia pentru crearea unui programator pentru un astfel de cip, poate despre caracterul paginii de memorie și nu ghici. Și pentru datele de utilizator, EEPROM este utilizat sau cu capacitatea de a citi o octet arbitrară sau împărțită, dar pe blocuri foarte mici - de exemplu, 4 octeți. În același timp, utilizatorul are încă acces la acces. O caracteristică caracteristică a unei astfel de memorii este destul de lentă (de aproximativ milisecunde) procedura de înregistrare, în timp ce citirea fluxurilor la nici o altă operațiune din MK.

Dezvoltarea tehnologiilor de memorie flash a avut o mare importanță pentru reducerea și disponibilitatea microcontrolerelor. În viitor, vom face față memoriei non-volatile nu numai sub formă de programe încorporate în microcontroler și date, dar și cu chips-uri individuale care vă permit să înregistrați cantități destul de mari de informații.

Microcontrolere ATMEL AVR.

Numărul total de familiile existente de microcontroler este estimat la aproximativ 100%, iar cele noi și noi apar anual. Fiecare dintre aceste familii poate include zeci de modele diferite. Mai mult, ponderea leului din chips-urile fabricate cade pe controlorii specializați - de exemplu, pentru a controla interfața USB sau afișajele LCD. Uneori este destul de dificil să clasificați produsul - așa că mulți reprezentanți ai familiei ARM, care sunt utilizate pe scară largă pentru a construi dispozitive mobileDin punctul de vedere al funcționalității construite dezvoltate se referă la controlorii tipici, dar, în același timp, un kernel destul de puternic îi permite să le atribuie clasa microprocesorului.

Din familia microcontrolerelor universale pe 8 biți, astfel încât să se vorbească, "pentru toate ocaziile", cele mai frecvente trei: controlerele arhitecturii clasice X51 (primul controlor al familiei 8051 a fost emis de companie Intel. Înapoi la mijlocul anilor 1980), firme de controlere PIC Microcip. (Ideal pentru proiectarea dispozitivelor simple, în special destinate replicării) și suntem luați în considerare ATMEL AVR. .

Note pe câmpuri

În 1995, doi studenți ai Universității Norvegiene de Științe și Tehnologii din Trondheim, ALF Bogen și Vagrada Wall, au prezentat ideea unui nucleu RISC pe 8 biți, care a fost oferit conducerii ATMEL. Numele dezvoltatorilor au introdus numele arhitecturii AVR: ALF + VEGARD + RISC. În Atmel, ideea a plăcut atât de mult încât în \u200b\u200b1996 Centrul de Cercetare a fost fondat în Trondheim, iar la sfârșitul aceluiași an a fost lansat eliberarea primului microcontroler cu experiență din noua serie AVR numită AT90S1200. În a doua jumătate a anului 1997, ATMEL a procedat la producția serială a familiei AVR.

De ce AVR?

Controlorii AVR "de la naștere" au mai multe caracteristici care distinge această familie de restul MC, simplifică studiul și aplicarea acestuia. Unul dintre avantajele esențiale ale AVR a fost utilizarea transportorului. Ca rezultat, AVR nu are conceptul ciclului mașinii: majoritatea echipelor, după cum am spus, sunt efectuate pentru un tact (pentru comparație, observăm că MK-ul familiei PIC este cel mai popular realizat echipa pentru 4 ceasuri ). Adevărat, în același timp, am avut de a sacrifica simplitatea sistemului de echipe, există unele dificultăți în domeniul operațiunilor cu biți. Cu toate acestea, acest lucru nu duce la dificultăți vizibile în studierea asamblorului AVR - dimpotrivă, programele sunt obținute mai scurte și mai asemănătoare cu un program într-un limbaj de nivel înalt (observăm că AVR a fost conceput în mod specific pe baza aproximării maxime către Structura limbii DIN).

Un alt avantaj uriaș al arhitecturii AVR este prezența a 32 de registre operaționale, nu în toate egale, dar care să o permită în cele mai simple cazuri de a face fără a face apel memorie cu acces aleator Și, mai important, fără utilizarea stivei - principala sursă de erori de la programatorii Novice (în plus, în modelele mai tinere AVR Stack nu este chiar disponibil pentru programator). Pentru AVR, nu există niciun concept de "baterii", cheia pentru o serie de alte familii. Acest lucru se apropie și mai mult de structura programelor de asamblare pentru AVR la programe într-un limbaj la nivel înalt, în care operatorii nu lucrează cu celule de memorie și registre, ci cu variabile abstracte și constante.

Dar acest lucru, desigur, nu înseamnă că AVR este cu siguranță cea mai bună familie din lume a MK. De asemenea, are o serie de deficiențe (de exemplu, un sistem imperfect pentru protejarea memoriei de date non-volatile - EEPROM, unele aspecte cu imunitate zgomotoasă, complexitate inutilă în sistemul de echipe și structura programelor etc.). Și având în vedere că orice MK universal modern face același lucru, problema alegerii unei platforme este o chestiune de grad considerabil de preferințe și experienta personala Dezvoltator.

Fără îndoială, un adevărat cadou pentru companie Atml. A devenit poziția de ingineri italieni care au ales AVR în 2004 pentru platforma Arduino Amateur, motiv pentru care popularitatea acestei familii a crescut rapid și nu este îngrijorată de viitorul său. Despre Arduino. Vom vorbi în detaliu în cele mai recente capitole ale acestei cărți.

Clasic, Mega și Tiny.

Linia controlorilor universali ai AVR universal este împărțită în familii: Clasic, Mega. și Tiny. (Există o nouă familie Xmega. conținând cristale foarte "tăiate"). MK familie Clasic. (Sunt numite ca AT908<марка контроллера>) Acum nu mai sunt produse, dar sunt încă frecvente în literatură, deoarece există un număr semnificativ de programe pentru aceștia. Pentru utilizatori nu trebuie să rescrie toate, firma Atml. a avut grijă de continuitate - cea mai mare familie MK Clasic. Are analogi funcționali în familia Mega, de exemplu, AT90S8515 - ATMEGA8515, AT90S8535 - ATMEGA8535 etc. (numai AT90S2313 are analog în familie Tiny. - atragy2313).

Compatibilitatea completă este furnizată de un biți special de instalare (de la un set de așa-numitul Fuse-biți) Când începe programarea pe care controlerul Mega începe să funcționeze ca Clasic. (Mai multe despre acest lucru este spus capitolul 19.). Pentru dispozitivele nou dezvoltate, nu există de obicei nici un sens în utilizarea acestora în modul de compatibilitate, cu toate acestea, o astfel de recepție în unele cazuri poate fi utilă pentru începători, deoarece programele pentru MK Clasic. Este ușor și adesea găsit în literatură.

Familia mică (care înseamnă literalmente "mic") este destinată celor mai simple dispozitive. O parte din MK din această familie nu are capabilități de programare pe o interfață serială și, prin urmare, suntem, cu excepția ATTINING2313, nu vom fi luați în considerare în această carte (acest lucru nu înseamnă că celălalt mic ar trebui evitat - printre care Există chipsuri foarte convenabile și funcționale, adesea care nu au analogi). Componenta ATINGY2313 MK lipsește un pic de compatibilitate cu un analog "clasic" AT90S2313, unul dintre cele mai simple și convenabile controlere. Atml. Dar, cu o considerație atentă, se pare că sunt compatibile "din partea de jos în sus", programele pentru "clasic" 2313 sunt aproape complet potrivite pentru Tiny2313 (a se vedea capitolul 19.).

Structura MK. AVR.

Structura generală dispozitiv intern MK AVR este prezentat în fig. 18,9. Iată toate componentele principale ale AVR (cu excepția unor modele specializate) - în modele separate, unele componente nu pot fi absente sau variind în funcție de caracteristici, doar kernelul total de procesor pe 8 biți rămâne neschimbat (GPU, Unitate generală de procesare.). Vom lua în considerare pe scurt cele mai importante componente, majoritatea dintre care vom cunoaște mai multe.

Smochin. 18,9. General schema structurală Microcontrolere AVR.

Să începem cu memoria. În structura AVR există trei tipuri de memorie: Programe Flash Memory, RAM (SRAM) pentru stocarea temporară a datelor și memoria non-volatilă (EEPROM) pentru depozitare pe termen lung Constante și date. Luați în considerare separat.

Programul de memorie

Memoria flash încorporată a programelor în controlerele AVR are un volum de la 1 kbyte la ATTINY11 la 256 KB în ATMEGA2560. Primul număr din numele modelului conține cantitatea de memorie în kilobytes din intervalul: 1, 2, 4, 8, 16, 32, 64, 128 și 256 kB. Deci, ATTINING2313 are o memorie de 2 kB, un ATMEGA8535 - 8 KB.

Din punctul de vedere al programatorului, memoria programelor poate fi considerată construită din celule individuale - cuvinte ale a două octeți fiecare. Un dispozitiv de memorie dispozitiv (și numai această memorie!) Prin cuvinte cu dublu circuit - foarte un moment importantcare programator de asamblare trebuie să se asimileze ferm. O astfel de organizație se datorează faptului că orice echipă din AVR are o lungime de exact 2 octeți. Excepția este echipa jMP, apelați și alții (de exemplu, lDS.), care operează cu adrese de 16 biți și mai mult. Lungimea acestor comenzi este de 4 octeți și sunt utilizați numai în modele cu memorie de program mai mult de 8 kB, deci în această secțiune a cărții nu le veți întâlni. Arduino. Pe baza controlorilor AVR cu o cantitate mare de memorie, dar trebuie să știm despre aceste subtilități. În toate celelalte cazuri, comanda se schimbă atunci când se execută următoarea comandă la 2 octeți (un cuvânt), astfel încât capacitatea de memorie necesară este ușor de calculat, știind pur și simplu numărul de comenzi utilizate.

În mod implicit, toți controlorii AVR încep întotdeauna să ruleze un program de la 0000 $. Dacă programul nu utilizează întreruperile, atunci de la această adresă poate începe program de aplicareAșa cum vom vedea în continuare. În caz contrar, această adresă este așa-numita tabelul vectorilor de întrerupere , Mai multe despre care vom vorbi capitolul 19. .

Memorie de date ( Ram, SRAM.)

Spre deosebire de memoria programelor, spațiul de adresă al memoriei de date se adresează în mod tonic (și nu alternativ). Adresarea este complet liniară, fără nici o diviziune pe pagini, segmente sau bănci, așa cum este obișnuită în alte sisteme.

Cu excepția unor modele mici junior, volumul SRAM încorporat variază de la 128 octeți (de exemplu, ATTINING2313) până la 4-8 kB de la modelele superioare Mega. . Spațiul de adresare al memoriei statice de date (SRAM) este împărțit în mod condiționat în mai multe zone prezentate în fig. 18.10. Numai SRAM-ul încorporat include doar o parte întunecată, la ea, în ordinea adreselor, există un spațiu de adrese de registre, unde primii 32 de octeți ocupă o serie de registre generale (RON), 64 mai multe informații / ieșire Registre (RVR).

Smochin. 18.10. ADRESA SPAȚIUL MEMORULUI DE DATE STATIC ( SRAM.) Microcontrolere AVR.

Pentru unele modele Mega. (ATMEGA8515, ATMEGA162, ATMEGA128, ATMEGA2560, etc.) este furnizat. memorie externa până la 64 kb. Rețineți că spațiile de adresă ale RON și RVV nu iau spațiul în memoria RAM - așa că dacă model specific MK are 512 de bytes SRAM, iar spațiul de înregistrare ocupă primii 96 de octeți (la adresa $ 5F), adresele SRAM vor lua spațiul de adresă de la 0060 la $ 025F (adică de la 96 la 607 de celule inclusiv). Sfârșitul memoriei de date încorporate este indicat de constanță Ramend. . Trebuie remarcat faptul că ultima adresă SRAM, cel puțin patru până la șase celule de la capăt (în funcție de numărul de proceduri imbricate - pentru fiabilitate, este mai bine să luați acest număr la zece sau chiar mai mult) nu ar trebui să fie ocupată, deoarece Ele sunt atunci când folosesc subrutine și întreruperile sunt ocupate sub stivă.

Operațiunile de citire / scriere în memorie funcționează în mod egal cu toate adresele din spațiul disponibil și, prin urmare, atunci când lucrați cu SRAM, trebuie să fiți atenți, - în loc să scrieți în memorie, puteți obține cu ușurință într-un registru. Este posibilă înlocuirea numărului de înregistrare ca adresă la RON, dar când contactați RVV, trebuie să adăugați 20 de dolari ca număr din urmă. De asemenea, trebuie amintit că, în mod implicit, când puterea este pornită, toate RVV sunt instalate în starea zero în toate biții (excepții unice sunt încă disponibile, astfel încât în \u200b\u200bcazuri critice este necesar să urmăriți documentația), dar RON iar celulele SRAM pot lua valori arbitrare.

Memorie de date non-volatile ( EEPROM.)

Toate modelele MK AVR (cu excepția atribuției atașate11) au o EEPROM încorporată pentru a stoca constantele și datele când alimentarea este oprită. ÎN diferite modele Volumul variază de la 64 de octeți (ATINYLX) la 4 KB (modele de mega senior). Numărul de cicluri de reprogramare EEPROM poate ajunge la 100 mii.

Amintiți-vă că EEPROM diferă de memoria flash cu posibilitatea de a selecta programarea toaletă (de fapt, chiar bătută, dar această caracteristică este ascunsă de utilizator). Citirea de la EEPROM este efectuată la aceeași viteză ca și citirea de la RON, - în timpul unui ciclu de mașină (deși, în practică, este întins în 4 cicluri, dar programulatorul trebuie să urmeze acest lucru nu este necesar). Dar intrarea în EEPROM continuă să fie semnificativ mai lentă și, pe lângă o rată nedefinită, ciclul de înregistrare al unui octet poate dura de la 2 la 4 sau mai multe milisecunde. Procesul de înregistrare este reglat de generatorul RC încorporat, a căror frecvență este instabilă (cu o tensiune redusă de putere, vă puteți aștepta ca timpul de înregistrare să fie mai mare). Pentru astfel de timp, când este obișnuit frecvențe de ceas MK are timp pentru a efectua câteva mii de comenzi, astfel încât programarea procedurii de înregistrare necesită acuratețe - de exemplu, trebuie să monitorizați întreruperea în momentul în care întreruperea nu este "curată".

Principala dificultate la utilizarea EEPROM este că, cu o reducere insuficient a tensiunii de alimentare la momentul opririi, acesta poate fi corupt. Se datorează faptului că atunci când tensiunea de alimentare este redusă sub un anumit prag (sub pragul muncă stabilăDar insuficient pentru a închide oprirea) și, ca urmare a lui MK începător, începe să efectueze comenzi arbitrare, inclusiv procedura de înregistrare din EEPROM, dacă este în program. Dacă considerăm că comanda MK tipică tipică AVR este efectuată pentru zecile microsecului, este clar că nicio sursă de alimentare reală nu poate oferi o reducere a tensiunii la zero în timpul dorit. Conform experienței autorului în alimentarea de la un stabilizator de tip LM7805 convențional cu valorile de capacitate recomandate ale condensatoarelor la intrare și la ieșire, conținutul EEPROM va fi răsfățat la aproximativ jumătate din cazuri.

Această problemă nu ar trebui să existe dacă înregistrarea constantă în EEPROM este efectuată la programarea MK, iar procedura de înregistrare lipsește. În toate celelalte lucruri (și, evident, majoritatea absolută - EEPROM este cel mai des folosit pentru depozitare. instalații personalizate Și configurația curentă atunci când alimentarea este dezactivată) trebuie să ia măsuri speciale. Detector de drop de tensiune încorporat ( Detectarea maro-out , Bod) existente în aproape toate modelele Tiny. și Mega. , De obicei nu face față. Cea mai cardinală a unor astfel de măsuri este instalarea monitor extern. Nutriție, ținând MK, reducând tensiunea de alimentare sub valoarea pragului din starea de resetare (a se vedea detalii).

  • Tutorial

Rezumat: Dacă actualizați periodic o anumită valoare în EEPROM la fiecare câteva minute (sau câteva secunde), puteți întâmpina problema celulelor EEPROM. Pentru a evita acest lucru, trebuie să reduceți frecvența înregistrărilor în celulă. Pentru unele tipuri de EEPROM, chiar și frecvența de înregistrare este mai des decât o dată pe oră pe oră.

Când scrieți datele, timpul zboară rapid

EEPROM este utilizat peste tot pentru a salva setările și pentru a vă conecta la sistemele încorporate. De exemplu, este posibil să doriți o funcție "cutie neagră", pentru a înregistra cele mai recente date în momentul accidentului sau pierderii de putere. Am văzut specificația cu cerința de a înregistra date similare la fiecare câteva secunde.

Dar problema este că EEPROM are o resursă limitată a numărului de înregistrări. După 100.000 sau un milion de înregistrări (depinde de un anumit cip), unele dintre sistemele dvs. vor începe să experimenteze probleme cu eșecul EEPROM. (Uită-te în fișa tehnică pentru a afla o anumită figură. Dacă doriți să eliberați un număr mare de dispozitive, "cel mai rău caz" este probabil mai important decât "tipic"). Milioane de înregistrări par a fi o cifră mare, dar de fapt se va termina foarte repede. Să ne uităm la exemplul, sugerând că trebuie să salvăm tensiunea măsurată într-o singură celulă la fiecare 15 secunde.

1.000.000 de intrări la o înregistrare în 15 secunde dau înregistrări pe minut:
1.000.000 / (4 * 60 minute / oră * 24 ore / zi) \u003d 173,6 zile.
Cu alte cuvinte, EEPROM-ul dvs. a epuizat rezerva într-un milion de înregistrări în mai puțin de 6 luni.

Următorul este un grafic care arată timpul de purtat (în ani) pe baza perioadei de actualizare a celulei EEPROM specifice. Linia restrictivă pentru produs cu o durată de viață de 10 ani este o actualizare la fiecare 5 minute 15 secunde pentru microcircuitul cu o resursă de 1 milion de înregistrări. Pentru EEPROM cu o resursă de 100k, puteți actualiza celula specifică de mai mult de o dată la 52 de minute. Aceasta înseamnă că nu merită și speră să actualizați celula la fiecare câteva secunde dacă doriți ca produsul dvs. să lucreze de ani de zile și nu luni. Cele de mai sus sunt scalate liniar, totuși, în prezentul dispozitiv există, de asemenea, factori secundari, cum ar fi temperatura și modul de acces.

Reduceți frecvența

Cea mai dureroasă modalitate de a rezolva problema este pur și simplu scrierea datelor mai puțin frecvent. În unele cazuri, cerințele sistemului permit. Sau puteți înregistra numai cu orice modificări mari. Cu toate acestea, cu o înregistrare legată de evenimente, amintiți-vă scenariul posibil, în care valoarea va fluctua în mod constant și va determina fluxul de evenimente care vor duce la uzura EEPROM.
(Nu va fi rău dacă puteți determina de câte ori a fost înregistrat în EEPROM. Dar acest lucru va necesita un contor care va fi stocat în EEPROM ... problema transformă problema uzurii contorului.)

Embossing pentru a reduce nutriția

În unele procesoare există o întrerupere a unui nivel scăzut de putere care poate fi utilizat pentru a înregistra o ultimă valoare în EEPROM, în timp ce sistemul este oprit de pierderea puterii. În cazul general, stocați valoarea interesului în memoria RAM și salvați-o în EEPROM numai când alimentarea este oprită. Sau poate înregistrați EEPROM din când în când și scrieți o altă copie în EEPROM ca parte a procedurii de închidere pentru a vă asigura că cele mai recente date sunt înregistrate.
Este important să vă asigurați că există un condensator mare pentru nutriție, care va menține o tensiune suficientă pentru programarea EEPROM un timp suficient. Poate funcționa dacă trebuie să scrieți una sau două valori, dar nu un bloc de date mare. Atenție, există un spațiu mare pentru o eroare!

Tampon de apel

Soluție clasică la uzură - Utilizați tamponul Inel FIFO care conține valori N. De asemenea, va trebui să salvați indicatorul la capătul tamponului din EEPROM. Acest lucru reduce uzura EEPROM prin magnitudine proporțională cu numărul de copii din acest tampon. De exemplu, dacă tamponul trece prin 10 adrese diferite pentru a economisi o valoare, fiecare celulă particulară este modificată de 10 ori mai rar, iar resursele de înregistrare crește de 10 ori. De asemenea, veți avea nevoie de un contor separat sau un semn de timp pentru fiecare dintre cele 10 exemplare, astfel încât să puteți determina care este ultima în momentul opririi. Cu alte cuvinte, veți avea nevoie de două tampoane, una pentru valoare și una pentru contor. (Dacă salvați contorul pe aceeași adresă, acesta va duce la uzura acestuia, deoarece ar trebui să crească cu fiecare ciclu de înregistrare.) Dezavantajul acestei metode este că aveți nevoie de 10 ori mai mult spațiu pentru a obține o speranță de viață de 10 ori mai mare. Puteți afișa un amestec și puteți împacheta contorul împreună cu datele. Dacă sunteți înregistrat un numar mare de Datele, adăugând câțiva octeți pentru metru - nu este o problemă atât de mare. Dar, în orice caz, veți avea nevoie de o mulțime de EEPROM.
ATMEL a pregătit un appnet care conține toate detaliile sângeroase:
AVR-101: Depozitare EEPROM de înaltă rezistență: www.atmel.com/images/doc2526.pdf

Caz special pentru numărul contorului de înregistrări

Uneori trebuie să salvați contorul și nu valorile în sine. De exemplu, este posibil să doriți să cunoașteți numărul de incluziuni de instrument sau timpul de funcționare al dispozitivului dvs. Cel mai rău lucru din metri este că schimbă în mod constant un pic mai tânăr, purtând celulele mai tinere EEPROM mai repede. Dar este posibil să se aplice câteva trucuri aici. În atașamentul de la microcip există mai multe idei inteligente, cum ar fi utilizarea codului gri, astfel încât doar un pic de la contorul multibyte modificați atunci când se modifică valoarea contorului. De asemenea, acestea recomandă utilizarea codurilor corective pentru a compensa uzura. (Nu știu cât de eficient folosirea acestor coduri, deoarece va depinde de cât de independente există erori în biți din octeții de trecere a contorului, utilizați pe propriul dvs. risc, aprox. Auth.). Consultați AppNet: ww1.microchip.com/downloads/en/appnotes/01449a.pdf

Notă: Pentru cei care ar dori să afle mai multe, Microchip a pregătit un document care conține informatii detaliate Despre celulele EEPROM și uzura lor cu diagrame:
ftp.microchip.com/tools/memory/total50/tutorial.html.

Dați-mi voie să știu dacă aveți idei interesante despre controlul uzurii EEPROM.

Rece: Phil Koopman, "Sistemul mai bine încorporat SW"
betterembsw.blogspot.ru/2015/07/aVoid-eprom-werout.html.

TRANSLATORUL NOTĂ: În ultimii ani, chips-urile EEPROM cu o pagină de ștergere (cum ar fi chips-uri flash), unde puteți să adresați logic celulele (citiți, scrieți și spălați) tolerator, dar cipul este invizibil pentru utilizatorul șterge întreaga pagină în întregime și suprascrie date. Acestea. Celulele unice la 0, am furat și suprascrie celulele cu adrese 0 ... 255 (cu o dimensiune a paginii de 256 octeți), astfel încât trucul cu tampon nu va ajuta în acest caz. Cu epuizarea resurselor de intrări, acest cip nu reușește, nu o singură celulă, iar întreaga pagină este în întregime. În fișele tehnice pentru astfel de jetoane, este specificată resursa înregistrării pentru pagina, nu pentru o anumită celulă. Vedeți, de exemplu, fișa tehnică de la 25LC1024 de la Microchip.

Tag-uri: Adăugați etichete

Memoria Memorologică EEPROM.

Exemplu de ciclu trecem pe toate celulele de memorie și scrie zerouri în ele.

// Conectați biblioteca pentru a lucra cu EEPROM. #include "EEPROM.H" SETUP () (// trecerea tuturor celulelor (octeți) și înregistrați în ele zerouri. Pentru (int i \u003d 0; i< EEPROM.length(); i++) EEPROM.update(i, 0); } void loop() { // Пустой цикл... }


Roolback la setările din fabrică

Dacă doriți să returnați memoria la setările din fabrică, este necesar să înlocuiți 0 la 255, adică Înregistrați nu zerouri, iar numărul 255. Astfel, în viitor, utilizând funcția ISNAN () (), este posibil să verificați dacă memoria EEPROM este înregistrată sau nu.

// Conectați biblioteca pentru a lucra cu EEPROM. #include "EEPROM.H" Setup VOID (// trecerea tuturor celulelor (octeți) și numerele de înregistrare 255. Pentru (int i \u003d 0; i< EEPROM.length(); i++) EEPROM.update(i, 255); } void loop() { // Пустой цикл... }

Spune-ne despre noi

Mesaj

Dacă aveți experiență în lucrul cu Arduino și, de fapt, există timp pentru creativitate, invităm pe toți să devină autorii articolelor publicate pe portalul nostru. Poate fi ambele lecții și povestiri despre experimentele dvs. cu Arduino. Descriere diferiți senzori și module. Sfaturi și instrucțiuni Începători. Scrieți și postați articolele dvs. în



Ți-a plăcut articolul? Împărtășește-l