سلام
من تو یه پروژه باید دما و ساعت و تاریخ رو هر مثلا 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);
}




دیدگاه