سلام
یک کتابخونه برای 24c02 نوشتم که نیاز به دونستن ادرس و چند بیتی بودن متغیر نیست فقط بهش میگی برو فلان متغیر رو توی این متغیر(مال ایپرام) ذخیره کن و بعد برای خوندن میگیم فلان متغیر ایپرام رو کپی کن داخل این متغیر!!
ی پا جدول FAT نوشتم
خوب توضبحات مهم
اول این که داخل مین قبل از معرفی کتابخونه ایپرام میایم مقدار i2c مورد نظر رو با تابع برمیگردونیم اینجوری
کد:
I2C_HandleTypeDef read_i2c_in_main (void) {return hi2c1;}
#include "EEPROM.h"
مرحله بعد اینجا اسم متغیر هامونو تعریف میکنیم
کد:
[] enum
{
_x = 0 , // char 1
_y , // int 2
_z , // long 4
_mohsen, //long 4
_ELEC, //long 4
_javan , // char 1
number_of_variables
}variables;
مرحله بعد اینجا نوع متغیر رو تعین میکنیم
کد:
int EEPROM_24Cxx::init(void)
{
byte_of_valu [_x] = _char;
byte_of_valu [_y] = _int;
byte_of_valu [_z] = _long;
byte_of_valu [_mohsen] = _long;
byte_of_valu [_ELEC] = _long;
byte_of_valu [_javan] = _int;
و در اخر داخل مین برنامه ایپرام را init میکنیم تا جدول ادرس ساخته بشهحالا فقط کافیه کد بزنید مثلا
کد:
int intt =0;
eeprom.write(intt , eeprom._javan);
HAL_Delay(2);
eeprom.read(&intt, eeprom._javan);
حالا از دوستان خواهشی دارم که اگر از کد استفاده کرددند و خطایی دیدند اطلاع بدند رفع کنم!!
و این که متغیر long رو هنوز اضاف نکرده ام چون مغزم جواب کرده و نمیدونم که چند بایتی هست!!!! حالا واقعا متغیر long چند بایت اشغال میکنه؟؟