مشکل ریست شدن تاریخ RTC در میکرو سری f1

سلام استاد وقتتون بخیر.
راه حلی که برای جلوگیری از ریست شدن تاریخ rtc پیشنهاد میشه استفاده از بک آپ رجیستر هست.که اول تابع mx_rtc_init فراخوانی بشه و … که با هر بار روشن شدن میکروکنترلر تاریخ ریست نشه.
من این کار رو می کنم ولی بازم تاریخ ریست میشه.زمان مشکلی نداره ولی تاریخ صفر میشه.یعنی روز و ماه و سال صفر میشه.
خیلی هم گشتم توی سایت های مختلف و راه حل های زیادی رو امتحان کردم ولی هیچ کدوم نتیجه نداد.
ممنون میشم راهنمایی کنید.
کدی که نوشتم رو ارسال می کنم.

1111
MDK-ARM.rar (1.2 مگابایت)

اینجا هم روی بک آپ رجیستر مقدار تعریف شده.
2222

سلام دوست عزیز، میشه کمی از شماتیک مدار بیشتر توضیح بدید؟ شما میخواید کلا زمان و تاریخ وقتی که برد خاموش میشه یکجا ذخیره بشه و دفعه بعد از اونجا ادامه پیدا کنه و یا اینکه میخواید وقتی برد رو خاموش میکنید ادامه پیدا کنه و وقتی برد رو روشن میکنید همچنان زمان درست رو نشون بده؟ چون در حالت دوم نیاز به باتری rtc دارید. لطفا کمی بیشتر توضیح بدید.

بله استاد حالت دوم منظورمه.میخوام که rtc زمان دقیق رو نشون بده.باتری پشتیبان هم گذاشتم.مشکل اینه که واحد rtc زمان رو درست نشون میده،ولی تاریخ خیر ریست میشه.
IMG_20240108_221315_1

به نظرم اگر دارید از HAL استفاده میکنید و نتیجه نمیگیرد، سراغ user manual میکرو برید و اون قسمت رو به طور کامل کامل بخونید و همه رجیستر ها و نقش هر بیت رو مطالعه کنید و بعد مقادیر اون رجیستر ها رو در حالت debug مود بررسی کنید. اگر از همه این موارد مطمئن هستید، ممکن هست که باگ میکرو باشه. هر میکرو یک داکیومنت داره به اسم errata sheet که باگ های اون لیست شده. مثلا ممکنه واحد RTC با یک واحد دیگه تداخل داشته باشه. اسم میکرو رو به هم اون عبارت سرچ کنید ببینید پیدا میکنید یا نه. این مورد آخر خیلی غیر محتمل هست ولی چون برای خود من پیش اومده، گفتم اشاره کنم بهش.
ولی قبل از همه چیز باید دقیقا بیت های رجیسترهای واحد RTC رو بخونید و چک کنید.

1 پسندیده