unsigned long в EEPROM
- Войдите на сайт для отправки комментариев
Ср, 10/07/2013 - 14:23
Добрый день
Есть счетчик, тип unsigned long, от 0 до 999999. Как его записать в EEPROM и потом считать?
Я так понимаю, что его надо разделить на кусочки до 255, но как именно не представляю
ps/ хотя тут: http://www.arduino.ru/Reference/Library/EERPOM/write, в коде, идет речь о размере в 512
Нашел библитеку для сохранения/чтения unsigned long http://www.freeduino.ru/arduino/sample_EEPROM.html
А еще б вы тему такую же нашли прежде чем эту заводить.
unsigned long epromread(byte addr) { unsigned long temp; temp=(EEPROM.read(addr)); *((byte*) ((void*) &temp+1))=EEPROM.read(addr+1); *((byte*) ((void*) &temp+2))=EEPROM.read(addr+2); *((byte*) ((void*) &temp+3))=EEPROM.read(addr+3); *((byte*) ((void*) &temp+4))=EEPROM.read(addr+4); *((byte*) ((void*) &temp+5))=EEPROM.read(addr+5); *((byte*) ((void*) &temp+6))=EEPROM.read(addr+6); *((byte*) ((void*) &temp+7))=EEPROM.read(addr+7); return temp; } void epromwrite(byte addr, unsigned long vollue) { EEPROM.write(addr,vollue); EEPROM.write(addr+1,*((byte*) ((void*) &vollue+1))); EEPROM.write(addr+2,*((byte*) ((void*) &vollue+2))); EEPROM.write(addr+3,*((byte*) ((void*) &vollue+3))); EEPROM.write(addr+4,*((byte*) ((void*) &vollue+4))); EEPROM.write(addr+5,*((byte*) ((void*) &vollue+5))); EEPROM.write(addr+6,*((byte*) ((void*) &vollue+6))); EEPROM.write(addr+7,*((byte*) ((void*) &vollue+7))); }Почти, только еще необходимо учитывать, что для 8-битных МК unsigned long имеет длину 4 байта, а не 8.
UPD: и адресация в большенстве случаев будет больше одного байта.
А unsigned long везде имеет длину 4 байта. 8 - это long long.