Qual è il controller eeprom. Memoria EEPROM interna indipendente. Allega progetti e schizzi

Golovna / Zahist

Arduino è l'intera culla di vari allegati per la creazione di progetti elettronici. I microcontrollori sono più convenienti per l'utente, disponibili per imparare a imparare i principianti. Il microcontrollore in pelle è composto da canone, software, sicurezza, memoria. Questo articolo avrà una memoria indipendente dall'energia, come avviene in Arduino.

Descrizione della memoria EEPROM

Arduino fornisce ai suoi core tre tipi di allegati di memoria integrati: RAM stazionaria (memoria ad accesso casuale o SRAM - memoria ad accesso casuale statico) - necessaria per registrare la raccolta di dati dal processo di ripristino; schede flash - per salvare schemi già registrati; - per il bene di quel lontano vikoristannya danikh.

Sulla RAM, tutti i dati vengono cancellati, è necessario riadattare l'edificio o si accende la vita. Altri motori memorizzano tutte le informazioni prima di sovrascriverle e ne consentono l'utilizzo per il consumo. File Flash Maggiori informazioni su come dare un'occhiata alla memoria EEPROM.

L'abbreviazione è decifrata come Memoria di sola lettura programmabile cancellabile elettricamente e tradotta in russo significa letteralmente: memoria di programmazione che viene cancellata elettricamente, solo per la lettura. Virobnik garantisce il risparmio di informazioni per un decennio a venire dopo l'attivazione del resto della vita (suono per suggerire il termine 20 anni, sdraiarsi in caso di diminuzione dell'addebito dell'allegato).

Con il quale è necessario sapere che la possibilità di sovrascrivere sull'allegato è limitata e non trasferisce 100.000 volte. Si raccomanda di anteporre con attenzione e rispetto i dati inseriti e di non consentire la sovrascrittura in kotre.

La quantità di memoria, uguale all'abbigliamento moderno, è già piccola e diversa per i diversi microcontrollori. Ad esempio, per:

  • ATmega328 - 1kB
  • ATmega168 e ATmega8 - 512 byte,
  • e ATmega1280 - 4 kB.

Tanto vlastovano che la skin del microcontrollore degli appuntamenti per lo stesso compito, possa variare il numero di connessioni per la connessione, ovviamente, il necessario cambio di memoria. Con una tale quantità, è sufficiente per i progetti che si creano suoni.

Ci vuole un'ora per scrivere su EEPROM - chiudi 3 ms. Anche se al momento della registrazione dal vivo è attivata, i dati non vengono salvati, altrimenti possono essere registrati amichevolmente. È necessario controllare ulteriormente le informazioni inserite per eliminare il problema durante l'orario di lavoro. La lettura dei dati è più ricca, la risorsa di memoria non è ridotta.

biblioteca

Un robot con memoria EEPROM è costruito per una libreria aggiuntiva, creata appositamente per Arduino. Quelli di testa stanno costruendo il record e leggendo i dati. essere attivato dalla squadra #includi EEPROM.h.

  • per disco- EEPROM.write(indirizzo, dati);
  • per lettura- EEPROM.read(indirizzo).

In questi schizzi: indirizzo – argomento da dato al centro, dove inserire i dati dell'altro dato di argomento; quando si legge un occhiolino, c'è un indirizzo di argomento, che mostra le stelle accanto a leggere le informazioni.

Funzione Appuntamento
leggi (indirizzo) leggere 1 byte da EEPROM; indirizzo: vengono letti gli indirizzi, i dati zvіdki (al centro, a partire da 0);
scrivi(indirizzo, valore) scrive il valore (1 byte, numero da 0 a 255) nel puzzle dietro l'indirizzo;
aggiornamento(indirizzo, valore) sostituire il valore del valore all'indirizzo indirizzo, in modo che il vecchio venga sostituito dal nuovo;
get(indirizzo, dati) leggere i dati del tipo specificato dalla memoria all'indirizzo indirizzo;
put(indirizzo, dati) scrive i dati forniti del tipo specificato nell'indirizzo puzzle address;
EEPROM Consente di utilizzare l'identificatore "EEPROM" come array per scrivere dati in memoria e leggerli dalla memoria.

Scrivi numeri interi

È facile annotare un numero intero di numeri in una memoria EEPROM non volatile. L'immissione dei numeri viene eseguita dall'avvio della funzione EEPROM.write(). I dati necessari sono assegnati ai templi. Quando i numeri sono compresi tra 0 e 255, i numeri superiori a 255 vengono scritti in modo diverso. I primi sono facili da aggiungere: occupano 1 byte, quello è un mezzo. Per registrarne altri, è necessario estrarre gli operatori highByte() il byte più alto e lowByte() il byte più basso.

Il numero è diviso in byte e annotato nel mezzo. Ad esempio, il numero 789 è scritto in due parti centrali: il primo ha un moltiplicatore di 3, lo stesso per un amico: un valore insufficiente. Il risultato avrà il valore richiesto:

3 * 256 + 21 = 789

Per « resurrection” di un intero grande, la funzione word() viene interrotta: int val = parola(ciao, basso). Occorre leggere che il numero massimo per la scrittura è 65536 (cioè 2 al 16° passo). In quelli di mezzo, che non hanno ancora avuto altri record, sul monitor ci sono i numeri 255 nella skin.

Registrazione di numeri con un blocco mobile e una riga

I numeri con una zolla fluttuante e una riga sono una forma di registrazione dei numeri effettivi, le puzze sono servite dalla mantide di quell'indicatore di un passo. La registrazione di tali numeri sulla memoria EEPROM non volatile avviene con l'attivazione della funzione EEPROM.put(), leggendo, evidentemente, - EEPROM.get().

Quando si programma un numero, viene assegnato il valore in virgola mobile, come un float, accanto ad indicare qual è il comando, il numero stesso. Digita Char (tipo di carattere) – ammicca sui valori di riga. Il processo di scrittura dei numeri sul monitor viene avviato dopo l'aiuto di setup(), la lettura dopo l'aiuto di loop().

La schermata di processo del monitor può mostrare il valore ovf, che significa "riordinato", e nan, che significa "valore numerico diurno". Non vale la pena parlare di quelli che le informazioni registrate in commissario non possono essere confermate come un numero a virgola mobile. Una situazione del genere non è nota, poiché è affidabile sapere che alcuni tipi di informazioni sono registrati in qualche mezzo.

Allega progetti e schizzi

Culo n. 1

Scrivi lo schizzo fino a 16 caratteri dalla porta seriale e scorre attraverso 16 caratteri dalla EEPROM. I dati Zavdyaki sono registrati in EEPROM e controllati nella memoria non volatile.

// Ricontrolla la EEPROM del robot #include int io, d; void setup() ( Serial.begin(9600); // inizializza la porta, velocità 9600 ) void loop() ( // legge la EEPROM e visualizza 16 dati dall'ultima porta Serial.println(); Serial.print("EEPROM= " );i=0;mentre(i< 16) { Serial.print((char)EEPROM.read(i)); i++; } // проверка есть ли данные для записи if (Serial.available() != 0) { delay(50); // ожидание окончания приема данных // запись в EEPROM i= 0; while(i < 20) { d= Serial.read(); if (d == -1) d= " "; // если символы закончились, заполнение пробелами EEPROM.write(i, (byte)d); // запись EEPROM i++; } } delay(500); }

Culo #2

Per una maggiore comprensione, possiamo creare un piccolo schizzo, che aiuterà il robot a comprendere la memoria indipendente dall'energia. Cari tutti i cuori della memoria. Yakshcho il centro non è vuoto: viene inviato all'ultima porta. Dopo quello che ricordiamo il mezzo con lacune. Quindi inseriamo il testo attraverso il monitor della porta seriale. Viene scritto su EEPROM e leggibile all'accensione.

#includere indirizzo int = 0; // indirizzi eeprom int read_value = 0; // dati letti da eeprom char serial_in_data; // Dati alla porta seriale int led = 6; // Riga 6 per luce int i; void setup() ( pinMode(led, OUTPUT); // la riga 6 è impostata per uscire da Serial.begin(9600); // velocità di trasmissione sulla porta seriale 9600 Serial.println(); Serial.println("TESTO PRECEDENTE IN EEPROM : -"); for(indirizzo = 0; indirizzo< 1024; address ++) // считываем всю память EEPROM { read_value = EEPROM.read(address); Serial.write(read_value); } Serial.println(); Serial.println("WRITE THE NEW TEXT: "); for(address = 0; address < 1024; address ++) // заполняем всю память EEPROM пробелами EEPROM.write(address, " "); for(address = 0; address < 1024;) // записываем пришедшие с последовательного порта данные в память EEPROM { if(Serial.available()) { serial_in_data = Serial.read(); Serial.write(serial_in_data); EEPROM.write(address, serial_in_data); address ++; digitalWrite(led, HIGH); delay(100); digitalWrite(led, LOW); } } } void loop() { //---- мигаем светодиодом каждую секунду -----// digitalWrite(led, HIGH); delay(1000); digitalWrite(led, LOW); delay(1000); }

Culo #3

Scrive due numeri interi in memoria, li legge dalla EEPROM e li invia all'ultima porta. Numeri come da 0 a 255 occupano 1 byte di memoria per funzioni aggiuntive EEPROM.write() iscriviti nel mezzo richiesto. Per i numeri maggiori di 255, è necessario dividere per byte per aiuto byte alto()і byte basso() e scrivi i byte della pelle al centro. Il numero massimo per tshomu è 65.536 (o 2 16).

#includere // abilita la libreria EEPROM void setup() ( int smallNum = 123; // numero intero da 0 a 255 EEPROM.write(0, smallNum); // scrive il numero nel file 0 int bigNum = 789; // numero > 255 possono essere divisi per 2 byte (max. 65536) byte hi = highByte (bigNum); // byte alto byte low = lowByte (bigNum); // byte basso EEPROM.write (1, hi); .write(2 , low);// scrivi su comm_r 2 low byte Serial.begin(9600);// inizializza la porta di arresto) void loop() ( for (int addr=0; addr<1024; addr++) { // для всех ячеек памяти (для Arduino UNO 1024) byte val = EEPROM.read(addr); // считываем 1 байт по адресу ячейки Serial.print(addr); // выводим адрес в послед. порт Serial.print("\t"); // табуляция Serial.println(val); // выводим значение в послед. порт } delay(60000); // задержка 1 мин }

Culo #4

Registrare i numeri con un grumo mobile e una riga: un metodo EEPROM.put(). Lettura - EEPROM.get().

#includere // include la libreria void setup() ( int addr = 0; // indirizzo float f = 3.1415926f; // numero in virgola mobile (tipo float) EEPROM.put(addr, f); // scrivi il numero f all'indirizzo addr addr += sizeof(float); // possiamo calcolare lo spazio di memoria in arrivo char name = "Hello, SolTau.ru!"; // creare un array di caratteri EEPROM. put(addr, name); (9600); // porta di arresto dell'inizializzazione) void loop() ( for (int addr=0; addr<1024; addr++) { // для всех ячеек памяти (1024Б=1кБ) Serial.print(addr); // выводим адрес в послед. порт Serial.print("\t"); // табуляция float f; // переменная для хранения значений типа float EEPROM.get(addr, f); // получаем значение типа float по адресу addr Serial.print(f, 5); // выводим с точностью 5 знаков после запятой Serial.print("\t"); // табуляция char c; // переменная для хранения массива из 20 символов EEPROM.get(addr, c); // считываем массив символов по адресу addr Serial.println(c); // выводим массив в порт } delay(60000); // ждём 1 минуту }

Culo #5

Vykoristannya EEPROM come un array.

#includere void setup() ( EEPROM = 11; // scrittura della 1a EEPROM cache = 121; // scrittura del 2o slot EEPROM = 141; // scrittura del 3o slot EEPROM = 236; // scrittura del 4o slot Serial .begin(9600 ); ) void loop() ( for (int addr=0; addr<1024; addr++) { Serial.print(addr); Serial.print("\t"); int n = EEPROM; // считываем ячейку по адресу addr Serial.println(n); // выводим в порт } delay(60000); }

Lavora con EEPROM

Come si è intuito in precedenza, la risorsa della memoria EEPROM è occupata. Per continuare il termine del servizio di memoria non volatile, sostituire la funzione write() con un record o interrompere la funzione di aggiornamento dell'aggiornamento. Con questo, la riscrittura viene eseguita solo per i mezzi tranquilli, nella registrazione viene preso in considerazione il significato.

Un'altra funzione fondamentale della memoria del microcontrollore è la capacità di selezionare i byte intermedi, come i dettagli di un solido array EEPROM. Per qualsiasi formato di victoria, è necessario controllare costantemente l'integrità dei dati registrati.

Tale memoria su Arduino viene solitamente salvata come la più importante per un controller robotico e la aggiungerò. Ad esempio, come su tale base, viene creato un regolatore di temperatura e i dati verranno perdonati, se verranno praticati "inadeguatamente" alle menti forti - per sottovalutare o dipendere dalla temperatura.

Ci sono alcune situazioni, se la memoria della EEPROM deve sostituire dati errati:

  1. All'inizio dell'attivazione non c'era ancora nessun record.
  2. Al momento dell'attivazione incontrollata di vita - parte o tutti i dati non verranno registrati o registrati in modo errato.
  3. Dopo il completamento di un eventuale ciclo di sovrascrittura dei dati.

Al fine di eliminare tracce inaccettabili, gli allegati possono essere programmati per una spruzzata di opzioni: disabilitare il codice di emergenza, accendere il sistema, segnalare un errore, quindi eseguire una copia o altro.

Per controllare l'integrità delle informazioni, il codice di controllo del sistema è violato. In sdvoryuєєtsya per una chiara registrazione dei dati pochatkovyh, ho preso l'ora di ricontrollare, di nuovo prorachovuє danі. Se il risultato è clamoroso, è un perdono. La variante più ampia di tale riverificazione è la somma di controllo: l'operazione matematica standard viene calcolata sommando tutti i valori delle medie.

Il programma Dodatcheni aggiunge al codice dell'addendum "accensione dell'ABO", ad esempio E5h. Come se tutti i valori fossero uguali a zero e il sistema di grazia reimpostasse i dati su zero: un tale trucco per mostrare la grazia.

Questi sono i principi di base del lavoro con la memoria EEPROM indipendente dall'energia per i microcontrollori Arduino. Per i progetti di canto, varto vikoristati è privato di ogni tipo di memoria. Se hai i tuoi vantaggi, anche i tuoi difetti. Per padroneggiare i metodi di scrittura, leggere è più spesso di semplici compiti.

  • tutorial

Riepilogo: Se aggiorni periodicamente il valore nella EEPROM della skin di pochi minuti (o di pochi secondi), puoi rimanere bloccato con il problema di rimuovere la parte centrale della EEPROM. Per sbarazzarsi di questo, è necessario ridurre la frequenza delle registrazioni in ufficio. Per alcuni tipi di EEPROM, impostare la frequenza per scrivere più spesso, meno di una volta all'anno, può essere un problema.

Se scrivi i dati, è tempo di volare veloce

La EEPROM è ampiamente utilizzata per salvare parametri e regolare il registro di lavoro nei sistemi in erba. Ad esempio, potresti voler utilizzare la funzione "schermo nero" per registrare il resto dei dati al momento dell'incidente o utilizzare il pasto. Sono a conoscenza delle specifiche in modo da poter registrare tali dati sulla pelle per alcuni secondi.

Ma il problema sta nel fatto che la EEPROM può limitare la risorsa del numero di record. Dopo 100.000 o un milione di record (deposito in un chip specifico), il tuo sistema inizierà a riscontrare problemi con l'unità EEPROM. (Guarda la scheda tecnica per scoprire una cifra specifica. Se vuoi rilasciare un gran numero di annessi, il "tipo più grande", ovviamente, importante per "tipico"). Un milione di record sono dati da una grande cifra, ma in verità i vini finiranno all'improvviso. Meravigliamoci del calcio, facendoci sapere di cosa abbiamo bisogno per salvare la tensione vimiryan in una parte centrale della pelle per 15 secondi.

1.000.000 di voci con una voce in 15 secondi danno voci per il whilina:
1.000.000/(4 * 60 anni/anno * 24 anni/giorno) = 173,6 giorni.
In altre parole, la tua EEPROM preleva una riserva da un milione di record in meno di 6 mesi.

Di seguito è riportato un grafico che mostra l'ora prima della data (alla fine), le basi per il periodo di aggiornamento di un particolare core EEPROM. Linea intermedia per un prodotto dalla banalità della vita 10 anni per diventare una skin update 5 minuti 15 secondi per un microcircuito con una risorsa di 1 milione di record. Per una EEPROM con una risorsa di 100K, è possibile aggiornare una scheda specifica non più di una volta ogni 52 volte. Ciò significa che non varto e spodіvatysya komirku komirku kolka secondi, se vuoi che il tuo prodotto funzioni come rocce, non mesi. Quanto sopra non scala linearmente, ma è vero che questo dispositivo ha un altro fattore secondario, come la temperatura e la modalità di accesso.

Cambia frequenza

Il modo più indolore per risolvere il problema è semplicemente annotare i dati forniti. In alcuni vipadka, vimogi è consentito al sistema. Altrimenti, puoi scrivere di più per alcuni grandi cambiamenti. Tuttavia, dalla cronaca, ci collegheremo al fondo, ricordiamo il possibile scenario, a quale valore oscillerà costantemente e ne scorrerà sempre di più, come a far demolire la EEPROM.
(Se non è male, puoi dire quante volte scrivi in ​​EEPROM. Ale ce magatime del lichnik, che verrà salvato in EEPROM ... con cui il problema si trasforma nel problema della rimozione del lichnik.)

Pererivannya schodo abbassando il cibo uguale

Alcuni processori hanno un ciclo di vita basso, quindi puoi battere per scrivere uno dei valori EEPROM rimanenti, mentre il sistema si riattiva a costo della vita. In modo selvaggio, salvi il valore nella RAM e lo salvi nella EEPROM solo quando sei vivo. Oppure, forse, scrivi la EEPROM ogni ora, e ne scrivi un'altra copia nella EEPROM come parte della procedura di cancellazione, in modo da poter modificare la connessione, in modo che il resto dei dati venga scritto.
È importante riconsiderare che esiste un grande condensatore di durata, che aumenterà la tensione, abbastanza per programmare la EEPROM per completare il viaggio per un'ora. Puoi chiedere se è necessario annotare uno o due valori, ma non un grande blocco di dati. Con attenzione, c'è un grande spazio per un perdono!

Tampone di Kiltsevy

Variante classica del problema di cancellare il buffer FIFO, che consiste nel sostituire gli N record rimanenti del valore. È inoltre necessario salvare in EEPROM l'indicatore di fine buffer. Ciò modificherà l'offset della EEPROM di un importo proporzionale al numero di copie in quel buffer. Ad esempio, se il buffer passa attraverso 10 indirizzi diversi per salvare un valore, la skin di un particolare mezzo viene modificata 10 volte più velocemente e la risorsa per la scrittura cresce di 10 volte. Hai anche bisogno di un okremy lichnik, o un segno per l'ora per la skin di 10 copie, in modo da poter significare che sono state lasciate al momento del ritiro. In altre parole, hai bisogno di due buffer, uno per il significato e uno per il nome. (Come salvare il lichnik allo stesso indirizzo, se lo porti al primo pedaggio, al fatto che sei colpevole di zbіlshuvatisya durante la registrazione del ciclo della pelle.) Un metodo insoddisfacente in quello che richiederà 10 volte più tempo, per prendi 10 volte più vita, ci vorrà 10 volte più vita. Puoi mostrare il kmіtlivіst e imballare subito il lіchilnik con danim. Se scrivi una grande quantità di dati, aggiungendo un gran numero di byte per un lichnik, non è un grosso problema. Ale, in ogni caso, ha bisogno di molta EEPROM.
Atmel, dopo aver preparato una nota per correggere tutti i dettagli storti:
AVR-101: Archiviazione EEPROM ad alta resistenza: www.atmel.com/images/doc2526.pdf

Un caso speciale per il lichnik del numero di voci

A volte è necessario salvare il lichnik, ma chi non è il significato stesso. Ad esempio, potresti voler sapere quanto accendere l'allegato o lavorerò sul tuo allegato. Più grande in lichnikah, tse quelli scho cambiano costantemente il ritmo più giovane, znoshuyuchi giovane medio EEPROM shvidshe. Ale, e qui puoi cogliere alcuni trucchi. Nell'appnote di Microchip, ci sono alcune idee intelligenti, come il codice Gray, secondo cui solo un bit del tag byte viene modificato quando viene modificato il valore del tag. Quindi puzza da consigliare vikoristovuvati koriguvalnі kodi per compensare l'usura. (Non so se sarebbe efficace utilizzare tali codici, quindi è stantio, dal momento che i perdoni nei byte del lichnik saranno il più indipendenti possibile, usa la tua paura e il tuo rischio, circa Aut.). Guarda Apnote: ww1.microchip.com/downloads/en/AppNotes/01449A.pdf

Nota: per chi volesse saperne di più, Microchip ha predisposto un documento che fornirà informazioni dettagliate sull'allegato della EEPROM centrale e sui suoi dati con schemi:
ftp.microchip.com/tools/memory/total50/tutorial.html

Fammi sapere se hai qualche idea su come gestire la rimozione della EEPROM.

Jerelo: Phil Koopman, "Sw di sistema integrato migliore"
betterembsw.blogspot.ru/2015/07/avoiding-eeprom-wearout.html

Примітка перекладача: в останні роки з'явилися мікросхеми EEPROM зі сторінковою організацією стирання (подібної до мікросхем FLASH), де логічно можна адресувати осередки (читати, записувати і стирати) побайтно, але при цьому мікросхема невидимо для користувача стирає всю сторінку повністю і перезаписує новими danimi. Totò. Cancella i file all'indirizzo 0, abbiamo effettivamente cancellato e sovrascritto i file con gli indirizzi 0 ... 255 (quando il lato viene espanso a 256 byte), il trucco con il buffer in questo caso non può essere aiutato. Quando la risorsa di registrazione è esaurita, un tale microcircuito va in disarmonia non da una parte centrale, ma dall'intero lato nel suo insieme. Nei fogli dati per tali microcircuiti, è indicata la risorsa del record per il lato, e non per un centro particolare. Vedi, ad esempio, i dati su 25LC1024 di Microchip.

Tag: aggiungi tag

Il nostro controller del forno potrebbe essere pronto - il resto del tempo è riempito con il controller - "pesce dorato", che ricorda tutto circa cinque minuti prima del primo pasto. Per ricordare le nostre impostazioni, il valore della temperatura impostata, ei punti di calibrazione, dopo l'attivazione della vita, è necessario modificare la memoria indipendente dall'energia - EEPROM.
Ancora meglio sul lavoro di EEPROM è scritto dai nostri compagni.

Golovne, quello che dobbiamo sapere è che la memoria EEPROM è meglio vista non come "solo una memoria", ma come un'estensione del microchip interno.
EEPROM spazio degli indirizzi okremy, non c'è modo di raggiungere lo spazio degli indirizzi del processore (FLASH e SRAM); per consentire l'accesso ai dati dietro un unico indirizzo nella memoria non volatile, è necessario delimitare la sequenza dei registri bassi (registri di indirizzi EEARH e EEARL, registro dati EEDR e registro di controllo EECR).
Zgidno con un set di dati, per scrivere un byte per un singolo indirizzo in EEPROM, è necessario eseguire il passaggio:

  1. verificare la disponibilità della EEPROM prima di scrivere i dati (passando il bit EEPE al registro EECR);
  2. Verifica del completamento della scrittura su memoria FLASH (passando il bit SELFPRGEN al registro SPMCSR) - è necessario registrare, in quanto il programma deve sfruttare;
  3. scrivere un nuovo indirizzo nel registro EEAR (per il consumo);
  4. scrivere byte di dati nel registro EEDR (per il consumo);
  5. impostato su un bit del registro EEMPE EECR;
  6. Con un tratto di diversi cicli dopo che il guardiamarina EEMPE è stato impostato, viene registrato nel bit EEPE del registro EECR con un'unità logica.

La prossima volta che il processore salta 2 cicli prima dell'istruzione del passaggio successivo.
Un altro punto deve essere verificato per la presenza del driver nel programma - a destra, in quanto il record dalla EEPROM non può essere cambiato immediatamente dal record alla memoria FLASH, che prima di scrivere nella EEPROM è necessario riconvertire, poiché la programmazione della memoria FLASH è terminata; Tuttavia, il microcontrollore non può essere zavantazhuvach, poiché non cambia in alcun modo la memoria FLASH (ricorda che avr ha un'architettura Harvard: la memoria del programma (FLASH) e la memoria dei dati (SRAM) sono separate).
La banalità del ciclo di registrazione risiede nella frequenza dell'oscillatore RC interno del microcircuito, nella tensione e nella temperatura; Per i modelli ATmega48x/88x/168x dovrebbe essere 3,4 ms (!), per alcuni vecchi modelli - 8,5 ms (!!!).
Inoltre, durante un'ora di scrittura su EEPROM, possono essere causati problemi a causa della rapida interruzione del processo di registrazione delle sequenze, quindi la riscrittura nel processo di registrazione in EEPROM è più efficiente.
Leggere la memoria indipendente dall'energia è un po' più semplice:

  1. verificare la disponibilità della EEPROM prima di leggere i dati (passando il bit EEWE al registro EECR);
  2. scrivere l'indirizzo nel registro EEAR;
  3. impostato su un bit registro EERE EECR;
  4. I dati vengono letti dal registro EEDR (infatti, se i dati richiesti verranno spostati nel registro dati, il bit EERE non verrà inviato dall'hardware, altrimenti non è necessario leggere il bit della stazione, poiché l'operazione di lettura dalla EEPROM deve essere eseguito per un ciclo).

Dopo aver impostato il bit EERE su uno, il processore salta 4 cicli prima della pannocchia dell'istruzione offensiva.
Yak bachimo, un robot con una memoria indipendente dall'energia è un processo che richiede ore; Poiché leggeremo e scriveremo spesso dati dalla EEPROM, il programma può essere un po' complicato.

Tuttavia, scriviamo il programma nel mezzo di IAR e siamo stati fortunati: tutto il lavoro con lettura-scrittura da EEPROM è al centro della distribuzione - iar є modificatore "__eeprom", che apporta modifiche alla memoria non volatile - e quindi dovremo solo leggerlo "inline" cambia in "inline" (quando il controller è inizializzato) o scrivere da "inline" modifiche in "permanente" - cioè, quando si cambia il valore inline, è necessario cambiare il valore della variazione nella memoria non volatile.
Guarda il nuovo asse modificato in questo modo:

eeprom uint16_t EEP_MinTemperature;

Qualche parola più importante: se non vogliamo inviare messaggi a eeprom-change, è necessario ricordare che eeprom è uno spazio di indirizzi, e creare un file personalizzato su eeprom (e non permetterci di costruire un compilatore), è necessario dire all'indirizzo in eeprom:

Uint16_t __eeprom *EEP_MinTemperatureAddr;

Passando al controller del forno e alla EEPROM. Nel nostro caso, per la EEPROM di qualsiasi macchina virtuale, ovviamente, non viene trasferita; più di questo, pensaci, che tipo di libreria è necessaria per lavorare con una memoria indipendente dall'energia: è necessario "distribuire" per il programma la registrazione di quelle importanti; Se hai bisogno di aggirare la libreria, dovrai lavorare con abilitazione incrociata: nella libreria per EEPROM, collegare la libreria ADC, l'elemento riscaldante, le impostazioni globali; e in queste librerie della periferia, collega la libreria EEPROM - un tale pidhid non è gentile.
La seconda opzione è aggiungere alla libreria della skin, dove è necessario salvare le impostazioni, modificare la eeprom e salvare le impostazioni direttamente dalle macchine virtuali. Implementiamo questa opzione.
È sicuro cambiarlo, quindi è necessario salvarlo in EEPROM:

  1. punti di calibrazione
  2. il valore della temperatura massima-minima, che viene impostata, e per regolare la temperatura
  3. valore di temperatura impostato
  4. Coefficiente del regolatore PID

Il valore del timer da cucina non viene curato: è importante che il timer sia responsabile dell'impostazione del timer stesso.
Tutte le regolazioni vengono effettuate con una pressione breve dopo un ulteriore giro dell'encoder e una pressione breve e lunga sul pulsante della spazzola. Se si tiene presente che il numero di cicli di lettura-scrittura della EEPROM è ancora oscurato, non sovrascrivere le stesse informazioni una volta (ad esempio, se si seleziona lo stesso valore delle impostazioni che era). Pertanto, prima che la skin cambi __eeprom-change, è reversibile e ciò che è necessario deve essere riscritto:

//come è cambiato il valore - sovrascritto nella memoria non volatile if (ADCTemperature.atMinTemperatureValue != (uint16_t)VMEncoderCounter.ecntValue) ( ​​​​ADCTemperature.atMinTemperatureValue = (uint16_t)VMEncoderMuture

Per leggere la EEPROM è tutto semplice - con l'inizializzazione di quelle "stream", leggiamo semplicemente il valore della memoria indipendente dall'energia:

ADCTemperature.atMinTemperatureValue = EEP_MinTemperature;

Per rendere il nostro allegato fin dall'inizio, che sia in EEPROM, il progetto per il primo investimento può essere compilato con l'inizializzazione di queste modifiche:

eeprom uint16_t EEP_MinTemperature = 20; … // array per la memorizzazione del punto di calibrazione nella memoria non delimitata __eeprom TCalibrationData EEP_CalibrationData = ((20, 1300), (300, 4092));

In qualche modo, il compilatore inizializzerà la modifica di __eeprom all'inizio del lavoro con la funzione principale. Per rimuovere il file dalla memoria indipendente (.eep), è necessario scaricarlo nel passaggio successivo:
Progetto->Opzioni..->Linker->Opzioni extra
Se la casella di controllo "Usa le opzioni della riga di comando" non è varto, seleziona її e aggiungi una riga
-Ointel-standard,(XDATA)=.eep
Compilando il progetto back to back con le modifiche iniziali, salva il file eep okremo; quindi riprenderemo l'inizializzazione dell'ora di creazione della modifica.

Axis e il gioco è fatto: la nostra pіchka è pronta!

La volta passata, quando ho scritto la mia "opinione aperta sul cibo" su quelli, su come eseguire il backup del firmware da "Mega", mi è stato detto che non immaginavo il backup EEPROM. A quel tempo, non sapevo cosa sapevo, perché. giustamente giudicando che non è una buona idea mettere tutto insieme nella fase del primo “avvicinamento al proiettile”. A destra, non è ovvio per tutti che la EEPROM non venga flashata durante la compilazione e il caricamento del firmware dall'IDE di Arduino. Ciò non significa che non venga caricato assolutamente nulla nella EEPROM se il firmware viene caricato dall'IDE. E le manipolazioni con la EEPROM (che è la stessa dell'altra inclusa nel firmware) sono viroblyayutsya assolutamente su un livello diverso. E poi, per il backup del firmware nudo senza patch sottili, è POSSIBILE (solo possibile) può essere salvato in EEPROM, è bastato salvare solo il firmware nudo. Ale, se è già stufo, allora perché non "masticare" yogo. Andiamo per ordine. Che cos'è la EEPROM e di cosa stai parlando ora?
EEPROM - (Electrically Erasable Programmable Read-Only Memory) - un'area di memoria non volatile del microcontrollore, in cui è possibile scrivere e leggere informazioni. Molto spesso, è necessario vincere per salvare il programma, che può essere modificato nel processo operativo e come è necessario salvarlo quando la vita è spenta.

In che modo una stampante 3D utilizza la EEPROM?
Diamo un'occhiata al calcio di Marlin: il firmware Marlin non ha la EEPROM pronta all'uso.

#define EEPROM_SETTINGS
#define EEPROM_CHITCHAT

Se si nota la modifica della EEPROM, la stampante può salvare e modificare il passaggio successivo (suggerito dalla borghesia):

  • Quantità di grani per millimetro
  • Velocità di avanzamento massima/minima [mm/s]
  • Accelerazione massima [mm/s^2]
  • priskorennya
  • Più veloce durante la retrazione
  • Impostazioni PID
  • Accesso alla posizione iniziale
  • Portata minima per ora di movimento [mm/s]
  • Ora minima del lotto [ms]
  • Velocità massima di taglio lungo gli assi X-Y [mm/s]
  • Massima velocità di taglio lungo l'asse Z [mm/s]
È possibile modificare il numero di regolazioni utilizzando l'aiuto dello schermo della stampante e degli organi di modifica. Quando viene selezionata la EEPROM selezionata, nel menu di default appariranno le seguenti voci:
  • Memorizza la memoria
  • Carica memoria
  • Ripristino di sicurezza
È anche possibile modificare GCode per robot senza intermediari (tramite Pronterface).
  • M500 Salva le impostazioni correnti in EEPROM fino al prossimo avvio o dopo il comando M501.
  • M501 Leggi la configurazione da EEPROM.
  • M502 Salta il lock-in da Configurazioni.h. Non appena l'M500 viene sostituito, il valore del blocco verrà inserito nella EEPROM.
  • M503 Mostra le impostazioni correnti - "Ti, che è scritto in EEPROM."
Puoi leggere informazioni sulla EEPROM nel firmware Repitier.

Come vuoi scrivere i dati su EEPROM?
Simile a quello descritto nel metodo di backup del firmware, la chiave -U. Solo in questo caso, se ce n'è una nuova, sarà un indicatore di quale EEPROM deve essere letta.

avrdude.exe -p atmega2560 -c cablaggio -PCOM5 -b115200 -Ueeprom:r:"printer_eeprom".eep:i

Questo comando legge i dati EEPROM e il file "printer_eeprom.eep".

Il record stesso non è nulla di pieghevole ed è vittorioso con un comando simile, come solo coloro che sono nella chiave -U costo non "r", ma "w".

avrdude.exe -p atmega2560 -c cablaggio -PCOM5 -b115200 -Ueeprom:w:"printer_eeprom".eep:i

Al momento del successo sullo schermo, canterai dell'arrivo della sveglia.

Come e come utilizzare la EEPROM?
Per la pannocchia, "Navіscho tse robiti?". In tal caso è necessaria la EEPROM Prati, in quanto il firmware anteriore della stessa è stato attorcigliato, e la memoria potrebbe essere esaurita. Qui mi sono già imbattuto in persone con problemi, dopo essere passato da un firmware all'altro (da Marlin a Repitier EMNIP), la loro stampante è stata riparata, diciamo, "creativamente". Ciò è dovuto al fatto che firmware diversi salvano i dati per indirizzi diversi. E se provi a leggere i dati dall'indirizzo sbagliato, inizia un pandemonio.
Puoi cancellare la EEPROM solo a livello di codice dal firmware, ma per questo succede: per qualche tempo compila uno schizzo speciale nel controller. Puoi leggere il rapporto a riguardo nella documentazione ufficiale di Arduino.
Se la EEPROM viene cancellata sulla scheda Arduino e se si tratta di un controller astratto, sarà necessario modificare il codice dello schizzo per correggere lo spazio EEPROM per un controller specifico sulla scheda. Per i quali sarà necessario modificare il finale mentale nel ciclo "Per". Ad esempio, per un ATmega328 con 1kb di memoria EEPROM, il ciclo sarebbe simile a questo:
Visnovok.
Sono dosit dovgo rozpinavsya, e tutto per cosa? Per informarti su coloro che, durante il backup del firmware, puoi salvare la EEPROM, anche se devi salvarla in un nuovo aggiornamento. Se sei pronto a sacrificarli, battili nel segno. Inoltre, se si cambia un firmware con uno nuovo o si passa da una versione all'altra, non pulire la EEPROM prima di caricare un nuovo firmware. Bene, allo stesso tempo abbiamo scoperto molte cose nuove.

I microcircuiti di memoria permanente di programmazione (EEPROM) vengono cancellati elettricamente da microcircuiti di computer con ossido di conduttori metallici, come se fossero scheggiati su una scheda diversa. Questo tipo di chip può essere cancellato e riprogrammato con l'ausilio di un forte segnale elettronico. I frammenti possono essere rotti senza vedere il chip nella dependance, come le connessioni, i chip EEPROM si trovano nelle ricche galuzah.
Chip EEPROM per vendicare la memoria indipendente, quindi questi dati non vengono sprecati quando la vita del chip viene danneggiata. Un microcircuito di questo tipo può essere programmato in modo casuale, il che significa che una parte della memoria può essere modificata per favorire una nuova sovrascrittura, senza sovrascrivere la memoria. Le informazioni memorizzate nel mezzo del chip EEPROM sono permanenti, fino a quando non verranno cancellate o riprogrammate per diventare un componente prezioso nei computer e altri dispositivi elettronici.

Microcircuiti EEPROM basati su transistor a gate flottante. Il chip EEPROM è programmato con un circuito di informazioni programmato da primus elettronicamente attraverso l'ossido di gate. Manteniamo il cancello galleggiante al sicuro per salvare questi dispositivi elettronici. Memoria Komіrka vvazhaetsya programmata, se è carica di elettroni, è zero. Come se la parte centrale della memoria non si stesse caricando, non si stesse programmando e non si esibisse da sola.

Per una vasta gamma di annessi, è necessaria memoria, quindi i chip EEPROM possono essere bloccati in modo impersonale nell'armadio dell'elettronica di testa. La puzza vikoristovuyutsya nei sistemi di gioco, nei televisori e nei monitor dei computer. Anche apparecchi acustici, fotocamere digitali, tecnologia Bluetooth e sistemi di gioco utilizzano chip EEPROM. La puzza vittoriosa nelle telecomunicazioni, nell'industria medica e in generale. I computer personali e aziendali sono soggetti all'ESCR.

Il chip EEPROM può essere utilizzato anche in un'ampia gamma di aree di stoccaggio per auto. In vikoristovuєtsya in sistemi anti-blocco, airbag, controllo elettronico della stabilità, trasmissioni e blocchi motore. I chip EEPROM si trovano anche nei condizionatori d'aria, nei display dei pannelli accessori, nei moduli di controllo del telaio e nei sistemi di accesso senza chiavi. I chip Qi aiutano a controllare la visualizzazione del palato e anche a vicorare in vari sistemi diagnostici.

Іsnuє zamezhennya kіlkostі ripetizione, yak può essere sovrascritto dal chip EEPROM. La pallina al centro della fiche viene progressivamente ridotta mediante riscrittura numerica. Questo non è un grosso problema, perché i chip EEPROM possono essere cambiati fino a un milione di volte. Ulteriori successi nelle sale della tecnologia, meglio per tutto, per restare fedeli a chi in futuro potrà supportare i microcircuiti della memoria.

© 2022 androidas.ru - Tutto su Android