اطلاعیه

Collapse
No announcement yet.

اتنخاب آدرس شروع متغیرهای EEPROM

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

    اتنخاب آدرس شروع متغیرهای EEPROM

    من تو ابتدای حافظه EEPROM دو تا متغیر ذخیره میکنم .وقتی میکرو ریست میشه این متغیرها مقداراشون صحیح نیست ولی وقتی از آدرس بالاتر شروع میکنم مثلا متغیرهامو از آدرس 10 هگز شروع میکنم این مورد وجود نداره.حالا میخوام بدونم جچوری میشه تو بسکام تعیین کرد که متغیرهای EEPROM از کدوم آدرس به بعد نوشته بشن.ممنون

    #2
    پاسخ : اتنخاب آدرس شروع متغیرهای EEPROM

    نوشته اصلی توسط hamedhamidi
    من تو ابتدای حافظه EEPROM دو تا متغیر ذخیره میکنم .وقتی میکرو ریست میشه این متغیرها مقداراشون صحیح نیست ولی وقتی از آدرس بالاتر شروع میکنم مثلا متغیرهامو از آدرس 10 هگز شروع میکنم این مورد وجود نداره.حالا میخوام بدونم جچوری میشه تو بسکام تعیین کرد که متغیرهای EEPROM از کدوم آدرس به بعد نوشته بشن.ممنون
    سلام

    چرا با آدرس کار میکنی ؟؟
    اسم متغیرتون رو مشخص کنید راحته راحت (کامپایلر خودش همه کارها رو میکنه)
    موفق باشید
    [b]چگونه همه پایه های میکروکنترلر AVR را PWM کنیم؟
    معرفی نرم افزارEasy 7segment (برای راه اندازی آسانتر 7segment )
    معرفی نرم افزار Codewizard PWM
    با من بیشتر آشنا شوید

    دیدگاه


      #3
      پاسخ : اتنخاب آدرس شروع متغیرهای EEPROM

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

      دیدگاه


        #4
        پاسخ : اتنخاب آدرس شروع متغیرهای EEPROM

        به شکل زیر :
        کد:
        Dim bx as ERAM byte at $40

        دیدگاه


          #5
          پاسخ : اتنخاب آدرس شروع متغیرهای EEPROM

          نوشته اصلی توسط امیر . م
          به شکل زیر :
          کد:
          Dim bx as ERAM byte at $40
          درسته.ممنون.اما اینطوری باید تک تک متغیرهاتو آدرس دهی کنی وگرنه اولین متغیری که بدون آدرس دهی تعریف کنی میره میشینه تو خونه صفر حافظه و یکی یکی جاهای خالی رو از پایین پر میکنه میاد بالا

          دیدگاه


            #6
            پاسخ : اتنخاب آدرس شروع متغیرهای EEPROM

            برنامه رو میشه بزارید
            [b]چگونه همه پایه های میکروکنترلر AVR را PWM کنیم؟
            معرفی نرم افزارEasy 7segment (برای راه اندازی آسانتر 7segment )
            معرفی نرم افزار Codewizard PWM
            با من بیشتر آشنا شوید

            دیدگاه


              #7
              پاسخ : اتنخاب آدرس شروع متغیرهای EEPROM

              نوشته اصلی توسط SAMAN.ASADI
              برنامه رو میشه بزارید
              کد:
              $regfile = "m32def.dat"
              $crystal = 16000000
              
              Config Lcdpin = Pin , Db4 = Portc.5 , Db5 = Portc.4 , Db6 = Portc.3 , Db7 = Portc.2 , E = Portc.6 , Rs = Portc.7
              Config Lcd = 16 * 2
              
              Dim Eram_stored_month As Eram Byte
              Stored_month = Eram_stored_month
              
              Do
              
              'my program
              
              Loop
              End

              دیدگاه


                #8
                پاسخ : اتنخاب آدرس شروع متغیرهای EEPROM

                نمونه برنامه رو همگذاشتم

                دیدگاه


                  #9
                  پاسخ : اتنخاب آدرس شروع متغیرهای EEPROM

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

                  دیدگاه


                    #10
                    پاسخ : اتنخاب آدرس شروع متغیرهای EEPROM

                    نوشته اصلی توسط hamedhamidi
                    نمونه برنامه رو همگذاشتم
                    درود
                    آقا من رفتم چک کردم
                    با این وجود که خیلی برام سخت بود(چون بسکام یادم رفته) ولی به خاطر اینکه رفع ابهام بشه خودم رفتم برنامه رو نوشتم!!!
                    تو کدویژن من تا به حال به چنین مشکلی بر نخوردم
                    این هم فایلش
                    http://s5.picofile.com/file/8114653476/EEPROM.zip.html

                    همان طور که میبینید مدار دو کلید داره
                    کلید بالایی یکی اضاف میکنه و کلید پایینی یکی کم میکنه
                    مثلا اگر عدد را به 110 برسانیم و شبیه ساز را استپ کنیم و دوباره برنامه را اجرا کنیم میبینیم که عدد نمایش داده شده همان عدد 110 هست!
                    1000 بار هم این عدد رو تغییر بدی و برنامه رو استارت استپ کنی میبینی که مقدار نشون داده شده برابر شده با همان عدد قبلی
                    این هم کدش
                    کد:
                    $regfile = "m32def.dat"
                    $crystal = 8000000
                    Config Lcdpin = Pin , Db4 = Portc.4 , Db5 = Portc.5 , Db6 = Portc.6 , Db7 = Portc.7 , E = Portc.2 , Rs = Portc.0
                    Config Lcd = 16 * 2
                    
                    Dim _eram As Eram Byte , A As Byte
                    If _eram = 255 Then _eram = 250
                    
                    Ddrd = 0
                    Portd = 255
                    A = _eram
                    Cls
                    Lcd A
                    '==============================================
                    Do
                      '-------------------------------
                      If Pind.0 = 0 And A < 250 Then
                       Waitms 20
                       If Pind.0 = 0 Then
                         Incr A
                         _eram = A
                         Cls
                         Lcd A
                         While Pind.0 = 0 : Wend
                       End If
                      End If
                      '-------------------------------
                      If Pind.1 = 0 And A > 0 Then
                       Waitms 20
                       If Pind.1 = 0 Then
                         Decr A
                         _eram = A
                         Cls
                         Lcd A
                         While Pind.1 = 0 : Wend
                       End If
                      End If
                      '-------------------------------
                    Loop
                    End
                    موفق باشید
                    [b]چگونه همه پایه های میکروکنترلر AVR را PWM کنیم؟
                    معرفی نرم افزارEasy 7segment (برای راه اندازی آسانتر 7segment )
                    معرفی نرم افزار Codewizard PWM
                    با من بیشتر آشنا شوید

                    دیدگاه


                      #11
                      پاسخ : اتنخاب آدرس شروع متغیرهای EEPROM

                      سلام. آیا ممکن است فقط آدرس شروع حافظه EEPROM را به میکرو دهیم. و از آن آدرس متغیرها به ترتیب بصورت خودکار ذخیره شوند؟

                      دیدگاه


                        #12
                        پاسخ : اتنخاب آدرس شروع متغیرهای EEPROM

                        نوشته اصلی توسط morteza_fakhimy نمایش پست ها
                        سلام. آیا ممکن است فقط آدرس شروع حافظه EEPROM را به میکرو دهیم. و از آن آدرس متغیرها به ترتیب بصورت خودکار ذخیره شوند؟
                        منظورتون حافظه داخلی هست یا خارجی؟اگر خارجی باشه که هر بار باید با دستورات I2C بهش بگین مگر اینکه PAGE بنویسین که اونم یکجا انجام میشه.اگر منظورتون حافظه داخلی هست که لزومی به این کار نیست و خود کامپایلر این کار رو میکنه
                        Aristar Group - Always And Forever

                        دیدگاه

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