اطلاعیه

Collapse
No announcement yet.

ذخیره یک متغیر در eeprom

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

    ذخیره یک متغیر در eeprom

    سلام
    من از یک متغیر از نوع eeprom برای ذخیره ماندن عددی که در طول برنامه تغییر خواهد کرد استفاده میکنم که نوشتن بر روی متغیر eeprom را بواسطه متغیری از همان جنس از نوع ram انجام میدهم .
    در بار اولی که میکرو را پروگرام میکنم باید از یک عدد اولیه شروع بکار کند که من این عدد اولیه را به متغیر از نوع eeprom دادم اما از آن به بعد باید طبق تغییرات که در طول برنامه بر روی متغیر از نوع ram ایجاد میشود بار گذاری شود .روشی که من استفاده کردم اینگونه است که:
    یکبار میکرو را با دستور "eeprom متغیر=مقدار اولیه" پروگرام میکنم تا این مقدار اولیه درون متغیر من برای همیشه ذخیره شود وبار دیگر میکرو را با حذف دستور"eeprom متغیر=مقدار اولیه" پروگرام میکنم .
    اما من دنبال روشی هستم که تنها با یکبار پروگرام کردن میکرو این عملیات انجام شود ، آیا کار راحتتری میتوان انجام داد؟

    #2
    پاسخ : ذخیره یک متغیر در eeprom

    اون دستور متغیر = مقدار اولیه باعث میشه اطلاعاتی درون یک فایل هگز دیگه ایجاد بشه که اون فایل درون EEPROM بایستی پروگرام بشه. صرف نوشتن این دستور باعث نمیشه در حین پروگرام کردن چیزی توی ایپرام نوشته بشه. مسلما دفعه دوم پروگرام کردن هم زیادیه!

    غیر از اون شما میتونی این فرم رو در نظر بگیری که محتوای ایپرام در لحظه ERASE برابر با 0xFF هست. بنا براین براحتی میشه اول برنامه چک کرد که اگه ایپرام هنوز چیزی توش نیست؛ مقادیر اولیه توش نوشته بشه.

    دیدگاه


      #3
      پاسخ : ذخیره یک متغیر در eeprom

      نوشته اصلی توسط رضا آقازاده
      اون دستور متغیر = مقدار اولیه باعث میشه اطلاعاتی درون یک فایل هگز دیگه ایجاد بشه که اون فایل درون EEPROM بایستی پروگرام بشه. صرف نوشتن این دستور باعث نمیشه در حین پروگرام کردن چیزی توی ایپرام نوشته بشه. مسلما دفعه دوم پروگرام کردن هم زیادیه!
      یعنی شما میگید این دستوری که مینویسم روی ایپرام ذخیره نمیشه؟ولی من اینکارو تست کردم و واقعا همونطوره که گفتم در مرحله اول اگر به مقدار متغیر ایپرام عدد اولیه بدهم کل برنامه نمیتونه تغیرات را سیو کنه ودر هربار ریست شدن میکرو دوباره از همان مقدار اولیه شروع میکنه ولی اگر مجددا پروگرام کنم واون مقدار اولیه را از ایپرام پاک کنم برنامه از اخرین تغییراتی که انجام شده ودرونش سیوه شروع میکنه واین حالتیه که من میخوام در واقع یکبار از عدد اولیه شروع کنه ودفعات بعدی از انچه که درطول برنامه تغییر کرده شروع بشه .

      نوشته اصلی توسط رضا آقازاده
      غیر از اون شما میتونی این فرم رو در نظر بگیری که محتوای ایپرام در لحظه ERASE برابر با 0xFF هست. بنا براین براحتی میشه اول برنامه چک کرد که اگه ایپرام هنوز چیزی توش نیست؛ مقادیر اولیه توش نوشته بشه.
      میشه بگید چجوری؟با چه دستوراتی در بسکام؟چون من خیلی دنبال همچین دستوراتی بودم اما پیدا نکردم

      دیدگاه


        #4
        پاسخ : ذخیره یک متغیر در eeprom

        با سلام از دستور if میتونی استفاده کنی مثلا مقدار اولیه همونطور که آقا رضا گفت 0xff اول چک میکنی اگه این مقدار بود مقدار اولیه خودتون را بار گذاری میکنید اگه نبود که دیگه مقدار اولیه لازم نیست

        دیدگاه


          #5
          پاسخ : ذخیره یک متغیر در eeprom

          سلام
          من همچین کاری کردم ولی اصلا درست نیست و موقعی که میکرو فعال میشود روی السیدی عددی دیگر نمایش داده میشود .
          میشه دوستان بازهم راهنمایی کنند.

          دیدگاه


            #6
            پاسخ : ذخیره یک متغیر در eeprom

            نوشته اصلی توسط wiki
            سلام
            من همچین کاری کردم ولی اصلا درست نیست و موقعی که میکرو فعال میشود روی السیدی عددی دیگر نمایش داده میشود .
            میشه دوستان بازهم راهنمایی کنند.
            با سلام برنامه و فایل شبیه ساز را بذارید ممنون

            دیدگاه


              #7
              پاسخ : ذخیره یک متغیر در eeprom

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

              دیدگاه


                #8
                پاسخ : ذخیره یک متغیر در eeprom

                آقا جون متدش همونه که خدمتت گفتم. پیاده سازیش هم راحت. یک متغیر بگیر از نوع بایت. ابتدای برنامه چک اش کن اگر مقدار متغیر 255 بود یعنی داخل ایپرام چیزی نوشته نشده. به تمامی متغیر های داخل ایپرام مقدار اولیه بده و بعد این متغیر 1 بایتی رو هم صفر کن. وقتی دفعه بعدی میکرو روشن میشه دیگه مقدار 255 نداره بنابراین وارد if نمیشه.

                دیدگاه


                  #9
                  پاسخ : ذخیره یک متغیر در eeprom

                  دوستان من این کارا انجام دادم وبا سه تا میکرو تست کردم در دوتا از میکروها که سریatmega8و atmega8 Lآ‌ میباشند درست عمل کرد یعنی بعد از هر پروگرام مقدار اولیه لود میشود و همانی است که میخوام اما یک میکرو atmega8a دارم که وقتی پروگرام میکنم (البته با درنظر گرفتن نوع ایسی) باز هم اخرین مقدار سیو شده بعد از پروگرام میماند ودر السیدی نمایش میدهد .
                  من به کدام یک مطمئن باشم ؟

                  دیدگاه


                    #10
                    پاسخ : ذخیره یک متغیر در eeprom

                    یه فیوز هست به نام EESAVE اگه اشتباه نکنم و وظیفش اینه که از پروگرم کردن EEPROM موقع پروگرم شدن میکرو جلوگیری کنه. احتمالا مقدار این فیوز بیت تو اون میکروها متغیره.
                    علاوه بر این فکر میکنم که مقدار دهی به EEPROM هم تو همون فایل HEX تولید شده انجام میشه و نیازی به استفاده از فایل HEX یا ROM دیگه ای نیست

                    دیدگاه


                      #11
                      ذخیره ماندگار اطلاعات در میکرو

                      سلام دوستان.من توی codevision برنامه مینویسم ومیخوام متغیرم در میکرو ذخیره بشه.چطور اینکارو انجام. متغیرمو eeprom تعریف کردم نشد!

                      دیدگاه


                        #12
                        پاسخ : ذخیره یک متغیر در eeprom

                        سلام
                        چند متغییر از نوع بایت میشه داخل Atmega8 ذخیره کرد ؟
                        بازم خدا رو شکر ...

                        دیدگاه


                          #13
                          پاسخ : ذخیره یک متغیر در eeprom

                          سوالم رو اصلاح میکنم
                          چند متغییر از نوع بایت میشه داخل eeprom atmega8 ذخیره کرد ؟
                          Dim A As Eram Byte
                          Dim B As Eram Byte
                          Dim C As Eram Byte
                          .
                          .
                          .
                          بازم خدا رو شکر ...

                          دیدگاه


                            #14
                            پاسخ : ذخیره یک متغیر در eeprom

                            نوشته اصلی توسط mosi_reali نمایش پست ها
                            سوالم رو اصلاح میکنم
                            چند متغییر از نوع بایت میشه داخل eeprom atmega8 ذخیره کرد ؟
                            Dim A As Eram Byte
                            Dim B As Eram Byte
                            Dim C As Eram Byte
                            .
                            .
                            .
                            سلام
                            اگر اشتباه نکنم ATmega8 کلا ۵۱۲ بایت EEPROM داره. نتیجتا در بهترین حالت ۵۱۲ متغیر از نوع Byte باید توش جا بگیره.

                            دیدگاه


                              #15
                              پاسخ : ذخیره یک متغیر در eeprom

                              نوشته اصلی توسط hossein.m98 نمایش پست ها
                              سلام
                              اگر اشتباه نکنم ATmega8 کلا ۵۱۲ بایت EEPROM داره. نتیجتا در بهترین حالت ۵۱۲ متغیر از نوع Byte باید توش جا بگیره.
                              یعنی در واقع من فقط یک عبارت از نوع بایت متونم داخلش ذخیره کنم درسته ؟
                              Dim A As Eram Byte

                              بازم خدا رو شکر ...

                              دیدگاه

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