Osaisiko joku vääntää rautalangasta miten arduinon eepromiin tallennetaan double-muuttuja. Ja miten se sieltä luetaan. Kiitos jos joku viitsii jeesaa.
Arduino eeprom
muistihukas
2175
0Äänestä
Muut lukivat myös
Ketjusta on poistettu 2 sääntöjenvastaista viestiä.
Odottaa vastausta
Näihin keskusteluihin ei ole vielä vastattu. Ole ensimmäinen.
Vastaukset 2
Vanhimmat
EEPROMWriteDouble() löytyy tästä ketjusta:
http://forum.arduino.cc/index.php?topic=41497.0
ja jokunen muukin esimerkki.
Katso ensin atmega328p datakirjasta kohta "AVR Memories" ja sieltä eeprom. Siellä on valmiit rutiinit joilla homma hoituu. Samalla voi tarkistaa, mitä rekistereihin oikeasti voi kirjoittaa. Mikä pitää muistaa on tarkistaa doublen esitysmuodon koko ja ottaa siihen osoitin ja oikea määrä tavuja talteen em. paikasta, jotakin tähän tyyliin:
double d;
unsigned char *ptr8 = (unsigned char*)&d;
char no_bytes = sizeof(double);
for(int addr = 0; addr < no_bytest;addr ) {
write_eeprom(addr, ptr8[i]);
}
Tai jos tietää, että oikeasti double:n koko on 4 byteä, voi tehdä näin:
union dd_t {
double d;
unsigned char a[4];
} dd_t;
union dd_t t;
t.d = 4.2;
ja write_eeprom(addr, t.a[0]); //4-kertaa..