اطلاعیه

Collapse
No announcement yet.

نگه داشتن متغیر پست از رفتن برق STM32F103C8 با باطری بک آپ

Collapse
X
 
  • فیلتر
  • زمان
  • Show
Clear All
new posts

    نگه داشتن متغیر پست از رفتن برق STM32F103C8 با باطری بک آپ

    سلام و احترام
    من میخوام با باطری بک آپ (سکه ای 3v) اطلاعات متغیرها از بین نروند و هروقت باطری خارج شد تمام مقادیر به حالت اول بازگردند(حالت ریست فکتوری).

    این کار با میکروی STM32F103C8T6 امکان پذیر هست؟
    *\ وقتی ارزش ها عوض بشن، عوضی ها باارزش می شن /*

    #2
    پاسخ : نگه داشتن متغیر پست از رفتن برق STM32F103C8 با باطری بک آپ

    ریست فکتوری یه چیز دیگه است ( تمامی متفیرها به حالت اول برگردن میشه وضعیت سیستم بعد از ریست )

    دامین backup در میکروها یک بخش از رم سیستم هست که تغذیه اش رو میتونه از باطری بک آپ هم بگیره .
    معمولا اطلاعات محدود و مهم ( مثل RTC ) روی این بخش نگهداری میشه .
    در مورد میکرویی که پرسیدید کل رم دامین بک آپش ۲۰ بایته !

    اگر rtc رو عادی بنویسن این ۲۰ بایت در حد نگهداری اطلاعات زمان و تقویمه .
    اگر هم از فرمت epoch استفاده بشه ۴ بایت اطلاعات زمان رو نگه میداره ۱۶ بایت برای استفاده عمومی باقی میمونه که ۱۶ بایت بغیر از یکسری اطلاعات پایه و اساسی خیلی کوچک کفاف کار دیگری رو نمیده

    دیدگاه


      #3
      پاسخ : نگه داشتن متغیر پست از رفتن برق STM32F103C8 با باطری بک آپ

      نوشته اصلی توسط Amie.s.m نمایش پست ها
      ریست فکتوری یه چیز دیگه است ( تمامی متفیرها به حالت اول برگردن میشه وضعیت سیستم بعد از ریست )

      دامین backup در میکروها یک بخش از رم سیستم هست که تغذیه اش رو میتونه از باطری بک آپ هم بگیره .
      معمولا اطلاعات محدود و مهم ( مثل RTC ) روی این بخش نگهداری میشه .
      در مورد میکرویی که پرسیدید کل رم دامین بک آپش ۲۰ بایته !

      اگر rtc رو عادی بنویسن این ۲۰ بایت در حد نگهداری اطلاعات زمان و تقویمه .
      اگر هم از فرمت epoch استفاده بشه ۴ بایت اطلاعات زمان رو نگه میداره ۱۶ بایت برای استفاده عمومی باقی میمونه که ۱۶ بایت بغیر از یکسری اطلاعات پایه و اساسی خیلی کوچک کفاف کار دیگری رو نمیده
      پس با این وجود، باید یه PCB دیگه بزنم که آی سی eeprom داشته باشه و ... .
      *\ وقتی ارزش ها عوض بشن، عوضی ها باارزش می شن /*

      دیدگاه


        #4
        پاسخ : نگه داشتن متغیر پست از رفتن برق STM32F103C8 با باطری بک آپ

        Eprom هم یه بحث دیگه است .

        روی میکروهای stm32 وقتی میخواییم عملکرد eprom داشته باشیم معمولا یک صفحه فلش رو برای متغیر این مدلی رزرو میکنیم بجای eprom خارجی روی فلش اطلاعات رو ذخیره میکنیم

        دیدگاه


          #5
          پاسخ : نگه داشتن متغیر پست از رفتن برق STM32F103C8 با باطری بک آپ

          نوشته اصلی توسط Amie.s.m نمایش پست ها
          Eprom هم یه بحث دیگه است .

          روی میکروهای stm32 وقتی میخواییم عملکرد eprom داشته باشیم معمولا یک صفحه فلش رو برای متغیر این مدلی رزرو میکنیم بجای eprom خارجی روی فلش اطلاعات رو ذخیره میکنیم
          این مورد رو هم انجام دادم.
          مثلاً یه متغیر رو اوکی میکن. بعدی رو که میخوام ذخیره کنم، باید حتما از نظر آدرس روی یک کیلوبایت بعدی ذخیره کنم وگرنه، رو همین قبلی ذخیره میشه.(الیته روی خود میکرو منظورم هست)
          *\ وقتی ارزش ها عوض بشن، عوضی ها باارزش می شن /*

          دیدگاه


            #6
            پاسخ : نگه داشتن متغیر پست از رفتن برق STM32F103C8 با باطری بک آپ

            بله ، در این روش شما باید سکتوری کار کنید .
            یعنی یک صفحه فلش ( ۱ کیلو یا ۲ کیلو بایت بسته به حجم فلش میکرو ) رو میخونید .
            روی رم بافرش میکنید ، اون بخشهایی که میخواهید تغییر کنه ( حتی یک بایت باشه یک بایت رو روی بافر تغییر میدید ) و مجددا کل صفحه رو باید رایت کنید .
            ( تمام فلشها به همین روش صفحه ای یا سکتوری قابل خوندن و نوشتن هستن دسترسی بایتی ندارن )

            این بخش موضوع زیاد مشکل نیست .... اگر تعداد دفعات نوشتن روی فلش اتون بالاست ( ممکنه بیشتر از ۱۰ هزار بار طی دوره استفاده دستگاه بشه ) بهتره از eprom خارجی استفاده کنید .

            بهترین روش ذخیره سازی این نوع متغیرها روی رم دامین بک آپه که بینهایت بار میسه با سرعت بالا محتواش رو تغییر داد منتهی این میکرو مد نظرتون حجم رم بک آپش پایینه .

            نمونه های بالاترش تا چند کیلوبایت رم دامین بک آپ دارن منتهی قیمت به صرفه نیست .

            در حال حاضر برای این نوع سیستمها ( سیستمهایی که پورت های آنچنان بالا نیاز ندارن ) اگر توان پردازشی بالا ، پریفرالهای نسبتا قوی و قیمت خیلی پایین مد نظر باشه بهترین گزینه esp32 هستش .

            دیدگاه


              #7
              پاسخ : نگه داشتن متغیر پست از رفتن برق STM32F103C8 با باطری بک آپ

              نوشته اصلی توسط Amie.s.m نمایش پست ها
              بله ، در این روش شما باید سکتوری کار کنید .
              یعنی یک صفحه فلش ( ۱ کیلو یا ۲ کیلو بایت بسته به حجم فلش میکرو ) رو میخونید .
              روی رم بافرش میکنید ، اون بخشهایی که میخواهید تغییر کنه ( حتی یک بایت باشه یک بایت رو روی بافر تغییر میدید ) و مجددا کل صفحه رو باید رایت کنید .
              ( تمام فلشها به همین روش صفحه ای یا سکتوری قابل خوندن و نوشتن هستن دسترسی بایتی ندارن )

              این بخش موضوع زیاد مشکل نیست .... اگر تعداد دفعات نوشتن روی فلش اتون بالاست ( ممکنه بیشتر از ۱۰ هزار بار طی دوره استفاده دستگاه بشه ) بهتره از eprom خارجی استفاده کنید .

              بهترین روش ذخیره سازی این نوع متغیرها روی رم دامین بک آپه که بینهایت بار میسه با سرعت بالا محتواش رو تغییر داد منتهی این میکرو مد نظرتون حجم رم بک آپش پایینه .

              نمونه های بالاترش تا چند کیلوبایت رم دامین بک آپ دارن منتهی قیمت به صرفه نیست .

              در حال حاضر برای این نوع سیستمها ( سیستمهایی که پورت های آنچنان بالا نیاز ندارن ) اگر توان پردازشی بالا ، پریفرالهای نسبتا قوی و قیمت خیلی پایین مد نظر باشه بهترین گزینه esp32 هستش .
              دقیقاً همینطوره. دستی میتونم مقادیر رو پر کنم و درست هست. اما خودش نمیتونه و کل 1 کیلوبایت رو تغییر میده.
              احتمالاً این کار رو بکنم. همه رو بخونم، و مجدد همه رو رایت کنم. یا اون قسمتی که میخوام و تغییر بدم و همه رو رایت کنم.

              تمام برنامه هامم تو آرایه هستن و کار سخت شد.
              مثلا:
              int _date[30];
              int _time[60];

              اینارو چطوری بخونم و چطوری رایت کنم؟
              مخم داره رد میده. کار نمیکنه دیگه.
              یکی یه نمونه مثال بهم بگه چطور رایت کنم و رید کنم.
              *\ وقتی ارزش ها عوض بشن، عوضی ها باارزش می شن /*

              دیدگاه


                #8
                پاسخ : نگه داشتن متغیر پست از رفتن برق STM32F103C8 با باطری بک آپ

                EEPROM emulation for stm32. Contribute to nimaltd/ee development by creating an account on GitHub.

                دیدگاه

                لطفا صبر کنید...
                X