Forum: Mikrocontroller und Digitale Elektronik Arduino flash beschrieben


von Fabian S. (x46)


Lesenswert?

Guten Tag,
ich habe ein Projekt in dem ich ein Arduino benutze. Ich möchte nun 
Daten von einem externen EEPROM (oder ähnlichen ICs) in den flach 
speicher des Arduinos kopieren (Ohne einen weiteren Mikrocontroller).
Gibt es irgend einen IC der diese Funktionalität hat oder gibt es eine 
andre Möglichkeit wie ich das umsetzen kann.

Mit freundlichen Grüßen

von Stefan F. (Gast)


Lesenswert?

Sicher nicht, das musst du dir selbst programmieren.

Eventuell magst du so ein Produkt verwenden: 
https://www.kanda.com/products/Kanda/HH0120.html

von bitflipser (Gast)


Lesenswert?

Vielleicht verstehe ich die Frage falsch, aber mit einem SPI-Flash à la 
Winbond W25 sollte das doch gehen.
Auf manchen SPI-TFT-Shields ist ein entsprechender Platz vorgesehen.

Gruß Stefan

von Einer K. (Gast)


Lesenswert?

Fabian S. schrieb:
> oder gibt es eine
> andre Möglichkeit wie ich das umsetzen kann.

Jawoll!
Ein (eigener?) Bootloader, welcher dein EEPROM (oder was auch immer) 
lesen kann.
z.B. https://github.com/mihaigalos/miniboot
ungetestet

von Schlaumaier (Gast)


Lesenswert?

Der Arduino hat einen eigenen kleinen Eprom.

Beschreiben mit passender Libs.

Da du nicht an gibts welchen Arduino kann hier keiner eine Aussage zu 
Größe des machen.

Ich benutzte den mini-Speicher um Einstellungen (die der User via Menü 
macht) in den Speicher zu legen.

Warnung : Der Speicher soll max. 1000 x beschreibbar sein, lt vielen 
Seiten im Netz. Also benutzte ihn NICHT als Ersatz-Ram.

von Peter R. (Gast)


Lesenswert?

Schlaumaier schrieb:
> Warnung : Der Speicher soll max. 1000 x beschreibbar sein, lt vielen
> Seiten im Netz. Also benutzte ihn NICHT als Ersatz-Ram.

Also im Datenblatt für das EEPROM des Mega8 oder des 328 steht da etwas 
andres als 1000.

Dort steht auch wie man jederzeit ein byte aus einem Register (z.B.r16) 
im EEPROM speichern kann und auch wieder herauslesen kann.
Wo die Daten herkamen spielt da keine Rolle ob aus dem RAM oder aus 
einer Schnittstelle. Nur, das Schreiben dauert für 
Kontrollerverhältnisse recht lange. Es passiert nicht in µsekunden 
sondern in einigen msekunden je byte.

Um vor dem Ausschalten ein backup der Einstellungen oder eine 
Kalibrierung drin unterzubringen ist das EEPROM vorgesehen, nicht aber 
zum schnellen Zugriff bzw. schnellen Arbeiten innerhalb eines Programms.

von Schlaumaier (Gast)


Lesenswert?

Peter R. schrieb:
> Schlaumaier schrieb:
>> Warnung : Der Speicher soll max. 1000 x beschreibbar sein, lt vielen
>> Seiten im Netz. Also benutzte ihn NICHT als Ersatz-Ram.
>
> Also im Datenblatt für das EEPROM des Mega8 oder des 328 steht da etwas
> andres als 1000.

Sorry war eine 0 zu wenig. Ab 10-Tausend wird es kritisch. Mein Fehler.

Und damit das ganz klar ist, wir reden hier von den Speicher wo man 
Werte ablegen kann die nach den Stromlos + Neustart dann gelesen werden 
können.

https://www.arduino.cc/en/Tutorial/LibraryExamples/EEPROMWrite  <- eine 
Liste der Größe.  Ich habe mal 25 Speicherstellen gebraucht also 
Höchstwert.
Deshalb war mir die Größe relativ egal. Hauptsache etwas Platz.

Der normale Programmierspeicher soll ca. 1-2 mio mal schaffen. Naja ich 
habe es nicht ausprobiert.

Und da Hersteller gerne übertreiben, gehe ich dabei IMMER vom untersten 
Ende der Skala aus.

von Lothar M. (Firma: Titel) (lkmiller) (Moderator) Benutzerseite


Lesenswert?

Schlaumaier schrieb:
> Der normale Programmierspeicher soll ca. 1-2 mio mal schaffen.
Welcher "normale Programmierspeicher" schafft 2 Millionen Löschzyklen? 
Und wo steht das?

Schlaumaier schrieb:
> Warnung : Der Speicher soll max. 1000 x beschreibbar sein, lt vielen
> Seiten im Netz
"Viele Seiten im Netz" sind eine schlechtere Quelle als das Datenblatt.

Warum muss man für solch simple Fragen, die mit einem kurzen Blick ins 
Datenblatt beantwortet werden können, irgendwelchen Fricklern im Netz 
was glauben?

von Jack V. (jackv)


Lesenswert?

Schlaumaier schrieb:
> Sorry war eine 0 zu wenig. Ab 10-Tausend wird es kritisch. Mein Fehler.

Ich zitiere nun das Datenblatt des 328P, erste Seite, Vers Drei, Zeile 
vier: Write/erase cycles: 10,000 flash/100,000 EEPROM

→ nicht tausend, nicht zehntausend – nein, hunderttausend ist die Zahl.

: Bearbeitet durch User
von Spess53 (Gast)


Lesenswert?

Hi

>Sorry war eine 0 zu wenig. Ab 10-Tausend wird es kritisch. Mein Fehler.

Für den EEPROM werden 100000 Schreibzyklen angegeben.

>Der normale Programmierspeicher soll ca. 1-2 mio mal schaffen.

Für den Flash werden 10000 Schreibzyklen garantiert.

>Naja ich habe es nicht ausprobiert.

Aber Unsinn schreiben. Scheint bei deinem Nickname schon Programm zu 
sein.

MfG Spess

von Helmut H. (helmuth)


Lesenswert?

Arduino Fanboy D. schrieb:
> Fabian S. schrieb:
>> oder gibt es eine
>> andre Möglichkeit wie ich das umsetzen kann.
>
> Jawoll!
> Ein (eigener?) Bootloader, welcher dein EEPROM (oder was auch immer)
> lesen kann.
> z.B. https://github.com/mihaigalos/miniboot
> *ungetestet*

Habe https://github.com/Optiboot/optiboot  mit Atmega 328p verwendet.
Im Arduino Sketch wird der Flash-Bereich reserviert, bestehend aus n 
pages zu 128 bytes
1
const uint8_t flashSpace[SPM_PAGESIZE * (NUMBER_OF_PAGES + 1)] __attribute__ (( aligned(SPM_PAGESIZE) )) PROGMEM = {"\x0"}; //

Jede Page kann dann aus dem Arduino-Programm geschrieben werden indem 
man eine Funktion im bootloader aufruft, lesen geht ja sowieso:
1
optiboot_writePage(flashSpace, ramBuffer, page);

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.