سلام
ببخشید
من rtc رو فعال کردم و دارم ساعت رو روی lcd نمایش میدم ولی ساعتم جلو میفته یعنی توی 20 دقیقه حدودا 4 ثانیه جلو میفته !!!
باید چیکار کرد ؟؟؟
نمایش نسخه قابل چاپ
سلام
ببخشید
من rtc رو فعال کردم و دارم ساعت رو روی lcd نمایش میدم ولی ساعتم جلو میفته یعنی توی 20 دقیقه حدودا 4 ثانیه جلو میفته !!!
باید چیکار کرد ؟؟؟
البته فک نمی کنم ، این قدر که شما می گی خطا داشته باشه ARM، ولی اگه دقت بالاتر و امکانات بیشتر می خوای از آی سی های ساعت استفاده کن. معروفترینشون ds1307 هست. خطاشون فوق العاده کمه.
در این حالت بیشتر خطا برمیگرده به دقت کریستال
اگه برای مسجد یا جایی میخوای که لازمه دقیق باشه از ds1307 استفاده نکن که بعد 1 هفته 5 دقیقه عقب میفته من اینکار رو کردم و مشکل ساز شد. تنها راهی که میتونی یه ساعت دقیق داشته باشی بعد از تحقیقات زیادی که انجام دادم استفاده از ماژول GPS هست که ساعت جهانی رو از اون بخونی وگرنه از هر آی سی استفاده کنی بعد از چن روز و اگه خیلی شاخ باشه بعد از چند هفته خطاش مشخص میشه.
سلام. من يه lpc1768 دارم . يه ماژول DS1307 با يه LCD tft 3.2" wide. مي خوام ساعت و تاريخ رو نشون بدم . لطفا راهنمايي كنين
یه رجیستر کالیبراسیون داره با اون میتونی کالیبرش کنی
جهت کالیبره کردن RTC میشه از تابع RTC_CalibConfig استفاده کرد.سوالم اینه که مقدار ورودی عددی این تابع چگونه محاسبه میشه؟(با چه رابطه ریاضی؟)
به چه شکل میشه؟ در عمل امتحان کردید یا صرفا در منوال دیدید این رجیستر هست؟ این کالیبراسیون با چه چیزی مقایسه می کنه که متوجه میشه خطا وجود داره!؟نقل قول:
نوشته اصلی توسط erfanjeddy [Dear Guest/Member you can't see link before replyclick here to register]
تو اپلیکیشن نوتش یه فرمول هست که من هر چی تو REGISTER های lpc177x_8x_rtc.c دنبال RTC_CAL و CALCLK گشتم نبود اما با تغییرش عملکرد زمانیش یه کم بهتر ویا بدتر میشد.نقل قول:
با اضافه کردن تابع کالیبراسیون میشه اثرات دما و هرگونه نویز رو تو کلاک RTC از بین برد و از یک ساعت دقیق استفاده کرد.نقل قول:
مثال برای ساعت سریعتر از مفدار واقعی:کد:void RTC_CalibConfig(LPC_RTC_TypeDef *RTCx, uint32_t CalibValue, uint8_t CalibDir)
{
RTCx->CALIBRATION = ((CalibValue) & RTC_CALIBRATION_CALVAL_MASK) \
| ((CalibDir == RTC_CALIB_DIR_BACKWARD) ? RTC_CALIBRATION_LIBDIR : 0);
}
مثال برای ساعت کندتر از مقدار واقعی:کد:RTC_CalibConfig(LPC_RTC, 5, RTC_CALIB_DIR_BACKWARD);
مقادیر عددی رو با سعی و خطا تغییر بدید.کد:RTC_CalibConfig(LPC_RTC, 13, RTC_CALIB_DIR_FORWARD);
یعنی اگر RTC در هر ساعت (3600 ثانیه) فقط یک ثانیه عقب میفتاد با تابع بالا مشکل حل می شد.کد:RTC_CalibConfig(LPC_RTC,3600, RTC_CALIB_DIR_FORWARD);
حداکثر مقدار برا متغیز 17 بیتی CalibValue مقدار 131072 میباشد.یعنی این تابع میتواند حداکثر: خطای 1 ثانیه در هر یک و نیم روز را تصحیح کند.
باسلام . من RTC که راه اندازی کردم خیلی دقیق بود و اصلا عقب یا جلو نمی افتاد البته با lpc1788 .ولی در کل رجیسترهایی جهت کالیبره کردن RTC وجود داره که فقط گذری دیددم و چون مورد من دقیق بود با این رجیسترها کار نکردم .میخواید یه جستجو توو datasheet یا لایبرری که ازش استفاده میکنید انجام بدبن