اطلاعیه

Collapse
No announcement yet.

پاک شدن متغیردر هنگام ریست

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

    پاک شدن متغیردر هنگام ریست

    با سلام
    من یه سوالی داشتم دریاریlpc1768اینکه من یه متغیر تعریف می کنم و در داخل برنامه بعد ار عملیاتی یه مقداری در داخل متغیر قرار می گیرد حالا من می خوام زمانی که میکرو به هر دلیل ریست کرد متغیر من مقدار صفر اولیه نگیره و همان مقدار که قبل از ریست داشته ،داشته باشد.(کامپایلر کیل)
    ممنون می شم که راهنماییم کنید

    #2
    پاسخ : پاک شدن متغیردر هنگام ریست

    شما یا باید از میکرویی که حافظه EPROM داخلی داره استفاده کنی یا از یک حافظه EEPROM خارجی استفاده کنید.
    ---------
    .
    .
    ...........

    دیدگاه


      #3
      پاسخ : پاک شدن متغیردر هنگام ریست

      با سلام
      ممنون به خاطره جوابتون من نمی خوام از ایپرام استفاده کنم چون در هر لحظه متغیر من تغیر می کند اگر از هر ایپرامی استفاده کنم بعد از یه مدتی از کار می افته و دلیل دیگه ای که نمی خوام از ایپرام استفاده کنم به خاطره سرعت پایین ایپرام است .
      من این مشکلو تو avrداشتم اونجا تو کدویژن یه گزینه بود که در صورت برداشتن تیک گزینه دیگه موقع ریست متغییر مقدار اولیه نمی گرفت.

      دیدگاه


        #4
        پاسخ : پاک شدن متغیردر هنگام ریست

        نوشته اصلی توسط 1morteza
        با سلام
        ممنون به خاطره جوابتون من نمی خوام از ایپرام استفاده کنم چون در هر لحظه متغیر من تغیر می کند اگر از هر ایپرامی استفاده کنم بعد از یه مدتی از کار می افته و دلیل دیگه ای که نمی خوام از ایپرام استفاده کنم به خاطره سرعت پایین ایپرام است .
        من این مشکلو تو avrداشتم اونجا تو کدویژن یه گزینه بود که در صورت برداشتن تیک گزینه دیگه موقع ریست متغییر مقدار اولیه نمی گرفت.
        ببینید بعد از تعریف متغیر و اجرا شدن میکروکنترلر، متغیر میره توی رم میکرو و اونجا مقدارش عوض میشه. از اونجا که رم میکرو (مثل همه جا) با ریست شدن به مقدار اولیه برمیگرده، پس حتی توی AVR هم متغیر نمی تونه آخرین مقدار خودشو بعد از ریست نگه داره.
        ---------
        .
        .
        ...........

        دیدگاه


          #5
          پاسخ : پاک شدن متغیردر هنگام ریست

          یه کاری میشه کرد ... میتونی متغیرتو تو هموم رم نگهداری ... بعدش با A2D میکرو با سرعت زیاد ولتاژ پایه ریست رو چک کنی در صورت تغییر به سرعت متغیر رو در E2PROM خارجی ذخیره کن .... اینطوری مشکل تعداد دفعات نوشتن در E2PROM نداری .... میتونی یه سری متغیر هم داشته باشی که جای متعیر رو تو E2PROM عوض کنه که خیالت راحت باشه مشکل تعداد دفعات نوشتن در E2PROM وجود نداشته باشه....

          دیدگاه


            #6
            پاسخ : پاک شدن متغیردر هنگام ریست

            ببینید بعد از تعریف متغیر و اجرا شدن میکروکنترلر، متغیر میره توی رم میکرو و اونجا مقدارش عوض میشه. از اونجا که رم میکرو (مثل همه جا) با ریست شدن به مقدار اولیه برمیگرده، پس حتی توی AVR هم متغیر نمی تونه آخرین مقدار خودشو بعد از ریست نگه داره.
            من خودم داخل avr همین کارو کردم اگه حرف منو قبول نداری امتحان کن




            یه کاری میشه کرد ... میتونی متغیرتو تو هموم رم نگهداری ... بعدش با A2D میکرو با سرعت زیاد ولتاژ پایه ریست رو چک کنی در صورت تغییر به سرعت متغیر رو در E2PROM خارجی ذخیره کن .... اینطوری مشکل تعداد دفعات نوشتن در E2PROM نداری .... میتونی یه سری متغیر هم داشته باشی که جای متعیر رو تو E2PROM عوض کنه که خیالت راحت باشه مشکل تعداد دفعات نوشتن در E2PROM وجود نداشته باشه....
            از قبل این کارو کردم مشکل من اینه که اگه میکرو به هر دلیل ریست کند محتوای متغیر من از بین میره

            دیدگاه


              #7
              پاسخ : پاک شدن متغیردر هنگام ریست AVR

              سلام ، من به یه مورد دیگه بر خوردم البته هنگام کار با avr ، احساس کردم کامپایلر تو کامپایل کردنش داره اشتباه می کنه و توی قسمت تنظیمات پروژه تو تب کامپایلر رفتم و منوی کشویی optimize for رو روی size قرار دادم و منوی کشویی optimization level رو روی low قرار دادم و قبل از این هم تیک clear global variables رو برداشته بودم ، در فیوزبیت ها هم bodlevel رو از حالت پیش فرض مطابق دیتاشیت میکروم تغییر دادم و مشکل پاک شدن eeprom بعد از ریست یا قطع برق برطرف شد. امیدوارم این تجربه به درد سایر دوستان بخوره.

              دیدگاه


                #8
                پاسخ : پاک شدن متغیردر هنگام ریست

                سلام - برو تو بخش RTC میکرو
                27.6.6 General purpose registers
                27.6.6.1 General purpose registers 0 to 4 (GPREG0 to GPREG4 - addresses
                0x4002 4044 to 0x4002 4054)
                These registers can be used to store important information when the main power supply is
                off. The value in these registers is not affected by chip reset.





                Table 521. General purpose registers 0 to 4 (GPREG0 to GPREG4 - addresses 0x4002 4044
                to 0x4002 4054) bit description
                Bit Symbol Description Reset
                value
                31:0 GP0 to GP4 General purpose storage. N/A

                دیدگاه


                  #9
                  پاسخ : پاک شدن متغیردر هنگام ریست

                  سلام،
                  شما دو راه داری یا متغییرت رو روی حافظه غیر فرار دائما ذخیره کنی که با قطع برق و باتری بک آپ هم ذخیره بماند، که این کار برای متغییرهایی که تغییرات زیاد و رخیره زیاد دارند مناسب نیست، چون عمر حافظه رو کم می کنه.
                  راه دیگه ذخیره روی رم هستش، که همون طور که kazem1010 گفتن، باید از بک آپ رجیستر های بخش RTC استفاده کنی که دیتای اون بخش با ریست شدن از بین نمی ره، حتی با قطع برق نیز در صورتی که باتری بک آپ داشته باشید، باز هم از بین نمی ره.
                  هر انسانی که احساس بی نیازی کند سرکش و طغیان گر می شود...

                  دیدگاه

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