Arduino Nano 24C16 eeprom file

Arduino specifieke Software
Berichten: 2
Geregistreerd: 18 Nov 2016, 22:51

Arduino Nano 24C16 eeprom file

Berichtdoor automotive » 18 Nov 2016, 23:24

Hallo allemaal,

Ik heb een vraag over hoe ik een Eeprom file in de nano kan programmeren.

Het is namelijk zo :

Ik heb een onderdeel wat een bepaald geheugen heeft (eeprom 24C16) met een file erin geschreven.
Het probleem is dat de de file die in de eeprom staat wel een corrupt kan worden na een bepaalde tijd.
Ik zou graag met de arduino nano elke keer wanneer de geschakelde 12V (15+) uit word geschakeld de eeprom word her geschreven met een bepaald bestand ( dat bestand heb ik al klaar ).
Mijn vraag is hoe krijg ik dat bestand in de NANO .

Groetjes,

Rayen

Advertisement

Gebruikers-avatar
Berichten: 2655
Geregistreerd: 06 Aug 2016, 01:03

Re: Arduino Nano 24C16 eeprom file

Berichtdoor Koepel » 19 Nov 2016, 00:16

Als de gegevens eenmaal in de EEPROM zitten, dan lopen die gegevens heus niet weg.
Is er sprake van een software of hardware fout ?
Wanneer je gaat schrijven naar EEPROM, dan kan het juist mis gaan, wanneer de spanning halverwege weg valt.

Wanneer data naar EEPROM wordt geschreven, dan hoort er een checksum bij te zitten, en een tweede set van gegevens als backup, en misschien nog een derde set in de code als vaste default settings.

De 24C16 is 2kbyte.
De Arduino Nano heeft 1kbyte interne EEPROM.
https://www.arduino.cc/en/Main/ArduinoBoardNano
Daarnaast heeft de Arduino Nano 32kbyte Flash geheugen. Daar is genoeg ruimte om van alles neer te zetten.
Een tabel met data in Flash geheugen gaat met the PROGMEM keyword:
https://www.arduino.cc/en/Reference/PROGMEM

Iemand heeft een speciale bootloader bedacht, die het mogelijk maakt om runtime gegevens naar Flash te schrijven. Maar dat werkt alleen met die speciale bootloader. Voor zover ik weet is dat nog niet opgenomen in de normale OptiBoot.

Berichten: 2
Geregistreerd: 18 Nov 2016, 22:51

Re: Arduino Nano 24C16 eeprom file

Berichtdoor automotive » 22 Nov 2016, 18:49

Koepel schreef:Als de gegevens eenmaal in de EEPROM zitten, dan lopen die gegevens heus niet weg.
Is er sprake van een software of hardware fout ?
Wanneer je gaat schrijven naar EEPROM, dan kan het juist mis gaan, wanneer de spanning halverwege weg valt.

Wanneer data naar EEPROM wordt geschreven, dan hoort er een checksum bij te zitten, en een tweede set van gegevens als backup, en misschien nog een derde set in de code als vaste default settings.

De 24C16 is 2kbyte.
De Arduino Nano heeft 1kbyte interne EEPROM.
https://www.arduino.cc/en/Main/ArduinoBoardNano
Daarnaast heeft de Arduino Nano 32kbyte Flash geheugen. Daar is genoeg ruimte om van alles neer te zetten.
Een tabel met data in Flash geheugen gaat met the PROGMEM keyword:
https://www.arduino.cc/en/Reference/PROGMEM

Iemand heeft een speciale bootloader bedacht, die het mogelijk maakt om runtime gegevens naar Flash te schrijven. Maar dat werkt alleen met die speciale bootloader. Voor zover ik weet is dat nog niet opgenomen in de normale OptiBoot.


Dankje wel voor je reactie koepel.

Het enige wat ik wil is dat ik moet weten hoe ik een eeprom dump in de arduino kan krijgen en zodra een puls binnen komt de eeprom word hergeschreven met de dump die ik al heb.

Gebruikers-avatar
Berichten: 2655
Geregistreerd: 06 Aug 2016, 01:03

Re: Arduino Nano 24C16 eeprom file

Berichtdoor Koepel » 22 Nov 2016, 19:07

Wil je de data inlezen in ram ? Dan gaat niet, want de Nano heeft 2kbyte aan ram.
En de interne EEPROM van 1kbyte lukt al helemaal niet.

Als je de inhoud van de externe EEPROM al weet, dan kun je die in de sketch zetten in PROGMEM.
Heb je die link al bekeken ? (https://www.arduino.cc/en/Reference/PROGMEM). Een tabel met 2kbyte data kan in PROGMEM.
Dan zou je een sketch kunnen maken die de inhoud dumpt naar de seriële monitor, en dat dan zelf kopiëren naar een sketch die het later naar EEPROM kan schrijven.
Er zijn ook programma's die binaire data (een bestand op de computer) als hexadecimale code laten zien, die in een sketch ingevoegd kan worden. In linux is dat bijvoorbeeld 'hexdump', 'xxd'.

Kun je duidelijker vertellen wat het apparaat is, hoe de hardware is, hoe je het wilt aansluiten, wat er gebeurt en wat je wilt.

Gaat het om de volle 2kbyte van de EEPROM ?
Dan zou je een tweede externe EEPROM erbij kunnen zetten, of die speciale bootloader : http://hackaday.com/2015/07/03/arduinos-and-other-avrs-write-to-own-flash/.

Mijn conclusie is dat het niet kan om runtime de data te lezen en later terug te schrijven. Die speciale bootloader kan het wel, maar als je het Arduino board dan zou vervangen, dan is het nodig om eerst die speciale bootloader er weer in te zetten.

Wat voor apparaat is het ? Wil je tegelijkertijd met de Arduino en het apparaat de externe EEPROM lezen en schrijven ? Dat lukt niet.

Je vraag heeft alle kenmerken van een xy-probleem : http://xyproblem.info/
Kun je de oorzaak aanpakken, in plaats van iets dat misschien niet eens kan werken.

Terug naar Arduino software

Wie is er online?

Gebruikers in dit forum: itisepa en 93 gasten