سلام
من تو یه پروژه باید دما و ساعت و تاریخ رو هر مثلا 5 دقیقه روی مموری کارد ذخیره کنم که سخت افزار رو ساختم و راه اندازی اولیه شده ولی دوتا مشکل دارم:
1 - من به خاطر microSD تغذیه میکرو (مگا32) رو 3.3 دادم ولی تغذیه سنسور دمای lm35 رو 5 ولت (در دیتاشیتش گفته 4.5 تا 5.5) ولی دما رو اشتباه نشون میده حدود 45 تا 50 درجه.(من اومدم از رفرنس 2.56 داخلی استفاده کردم) و به صورت زیر دما رو بدست آوردم:
2- من میخوام دما و زمان رو به صورت زیر در مموری ذخیره کنم:

ولی فقط یک خط ذخیره میشه و در لحظه بعدی جایگزین دمای قبلی میشه به این صورت :
من در این پروژه از زبان C و کتابخانه کدویژن استفاده میکنم.
عملیات خواندن دما و تاریخ و ساعت و ذخیره در مموری توسط تابع زیر انجام میشه:
ممنون میشم راهنمایی بفرمایید
من تو یه پروژه باید دما و ساعت و تاریخ رو هر مثلا 5 دقیقه روی مموری کارد ذخیره کنم که سخت افزار رو ساختم و راه اندازی اولیه شده ولی دوتا مشکل دارم:
1 - من به خاطر microSD تغذیه میکرو (مگا32) رو 3.3 دادم ولی تغذیه سنسور دمای lm35 رو 5 ولت (در دیتاشیتش گفته 4.5 تا 5.5) ولی دما رو اشتباه نشون میده حدود 45 تا 50 درجه.(من اومدم از رفرنس 2.56 داخلی استفاده کردم) و به صورت زیر دما رو بدست آوردم:
کد:
temp = read_adc(0); temp = (temp*2.56 / 1023)*100;


عملیات خواندن دما و تاریخ و ساعت و ذخیره در مموری توسط تابع زیر انجام میشه:
کد:
void write_data() { unsigned char hour,min,sec,week_day,day,month,year,temp; /* read the time from the RTC */ rtc_get_time(&hour,&min,&sec); /* read the date from the RTC */ rtc_get_date(&week_day,&day,&month,&year); // read adc temp = read_adc(0); temp = (temp*2.56 / 1023)*100; sprintf(text,"%2d:%02d...%2d/%02d/%d ---> Temp=%02d ",hour,min,day,month,2000+year,temp); /* mount logical drive 0: */ if ((res=f_mount(0,&fat))==FR_OK) printf("Logical drive 0: mounted OK\r\n"); else /* an error occured, display it and stop */ error(res); /* create a new file in the root of drive 0: and set write access mode */ if ((res=f_open(&file,path,FA_CREATE_ALWAYS | FA_WRITE))==FR_OK) printf("File %s created OK\r\n",path); else /* an error occured, display it and stop */ error(res); // moves the file read/write pointer f_lseek(&file, 40); /* write some text to the file, without the NULL string terminator sizeof(data)-1 */ if ((res=f_write(&file,text,sizeof(text)-1,&nbytes))==FR_OK) printf("%u bytes written of %u\r\n",nbytes,sizeof(text)-1); else /* an error occured, display it and stop */ error(res); /* close the file */ if ((res=f_close(&file))==FR_OK) printf("File %s closed OK\r\n",path); else /* an error occured, display it and stop */ error(res); }
دیدگاه