اطلاعیه

Collapse
No announcement yet.

یک نکته جالب درمورد RAM در AVR و چند سوال

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

    یک نکته جالب درمورد RAM در AVR و چند سوال

    سلام دوستان
    امروز به یک نکته جالب برخوردم
    اول یکی به من بگه تعریف RAM چیه؟مگه رم حافظه ای نیست که با قطع برق پاک میشه؟پس چرا تو AVR اینطور نیست؟( برگرفته از ویکی:هر نوع وقفهآ‌ای در جریان برق رایانه، موجب از بین رفتن دادهآ‌های موجود در RAM میآ‌شود. )
    امروز که داشتم با بسکام برنامه ای مینوشتم به طور اتفاقی به دستور $noramclear برخوردم
    وقتی توضیحاتش رو خوندم با خودم گفتم احتمالا تا وقتی میکرو ریست میشه این دستور کار میکنه و وقتی برق قطع و وصل میشه حتما رم پاک میشه
    ولی با کمال تعجب وقتی از دستور استفاده کردم دیدم هیچ وقت چه میکرو ریست بشه چه برای مدتی تغذیه میکرو قطع بشه بازم رم پاک نمیشه و تمام متغیرهای برنامه مقدار قبلی خودشون رو حتی اگر میکرو رو دوباره پروگرم کنیم اطلاعات RAM حفظ میشه
    حالا سوال بعدی که پیش میاد اینه که وقتی رم AVR این خاصیت رو داره چه لزومی به استفاده از EEPROM داریم که فقط به تعداد محدودی میتونیم توش بنویسیم ؟
    و سوال بعدی اینکه خوب مثلا به هر دلیلی اگر اطلاعات رم بهم ریخت چطور میشه رم رو ریست کرد تا تمام اطلاعاتش پاک بشه؟
    پروردگارا: به من زیستنی عطا کن که در لحظه مرگ بر بی ثمری لحظه ای که برای زیستن گذشته است حسرت نخورم، و مردنی عطا کن که بر بیهودگیش سوگوار نباشم. بگذار تا آن را خود انتخاب کنم، اما آنچنان که تو دوست میداری

    #2
    پاسخ : یک نکته جالب درمورد RAM در AVR و چند سوال

    احتمالا با این دستور بسکام میاد روی EEprom میکرو یه Backup از RAM میگیره...
    وگرنه نمیشه که؟؟؟
    جالبه...
    الهم عجل لولیک الفرج

    فقط 313 نفر...

    دیدگاه


      #3
      پاسخ : یک نکته جالب درمورد RAM در AVR و چند سوال

      نوشته اصلی توسط امیر حسام الفتی
      احتمالا با این دستور بسکام میاد روی EEprom میکرو یه Backup از RAM میگیره...
      وگرنه نمیشه که؟؟؟
      جالبه...
      اتفاقا من هم مثل شما فکر کردم و اومدم اطلاعات EEPROM رو نگاه کردم و هیچ تغییری نکرده بود
      پروردگارا: به من زیستنی عطا کن که در لحظه مرگ بر بی ثمری لحظه ای که برای زیستن گذشته است حسرت نخورم، و مردنی عطا کن که بر بیهودگیش سوگوار نباشم. بگذار تا آن را خود انتخاب کنم، اما آنچنان که تو دوست میداری

      دیدگاه


        #4
        پاسخ : یک نکته جالب درمورد RAM در AVR و چند سوال

        محتویات RAM با ریست شدن میکروکنترلر پاک نمی شود و این مسئله عجیبی نیست. اما نرم افزار بسکام در ابتدای کدهای اسمبلی خود، روتینی را اجرا می کند که روی نقاط RAM مقدار صفر را می نویسد و این مسئله ارتباطی به عملکرد AVR ندارد. بوسیله noramclear$ به کامپایلر اعلام می شود که این نوشتن صفر در حافظه را انجام ندهد و بنابراین مقادیر قبل از ریست در وضعیت قبلی خود باقی خواهند ماند.
        اما در مورد روشن و خاموش کردن میکروکنترلر و باقی ماندن اطلاعات در RAM معمولا با خاموش کردن تغذیه، ولتاژ کمی در خازن های مدار باقی می مانند که بعضا تا مدتی سبب حفظ مقدار قبلی در حافظه RAM می شوند و برای تست مورد نظر باید بارهای موجود در مدار کاملا تخلیه شوند که این مسئله مقداری زمان می برد.برای امتحان می توانید تغذیه و خازن های تامین کننده آن را اتصال کوتاه کنید و امتحان خود را انجام دهید.
        اوژن: به معنای افکننده و شکست دهنده است
        دانایی، توانایی است-Knowledge is POWER
        برای حرفه ای شدن در الکترونیک باید با آن زندگی کرد
        وضعمان بهتر می شود، اگر همه نسبت به جامعه و اطراف خود مسوول باشیم و نگوئیم به ما چه
        قوی شدن و خوب ماندن - خوبی کردن به دیگران یک لذت ماندگار است
        اگر قرار باشد نفت و منابع خام را بدهیم و چرخ بگیریم، بهتر است چرخ را از نو اختراع کنیم
        ساعت کار بدن اکثر انسان ها کمتر از 800000 ساعت است و بعد از آن از کار می افتد

        دیدگاه


          #5
          پاسخ : یک نکته جالب درمورد RAM در AVR و چند سوال

          نوشته اصلی توسط طراح
          محتویات RAM با ریست شدن میکروکنترلر پاک نمی شود و این مسئله عجیبی نیست. اما نرم افزار بسکام در ابتدای کدهای اسمبلی خود، روتینی را اجرا می کند که روی نقاط RAM مقدار صفر را می نویسد و این مسئله ارتباطی به عملکرد AVR ندارد. بوسیله noramclear$ به کامپایلر اعلام می شود که این نوشتن صفر در حافظه را انجام ندهد و بنابراین مقادیر قبل از ریست در وضعیت قبلی خود باقی خواهند ماند.
          اما در مورد روشن و خاموش کردن میکروکنترلر و باقی ماندن اطلاعات در RAM معمولا با خاموش کردن تغذیه، ولتاژ کمی در خازن های مدار باقی می مانند که بعضا تا مدتی سبب حفظ مقدار قبلی در حافظه RAM می شوند و برای تست مورد نظر باید بارهای موجود در مدار کاملا تخلیه شوند که این مسئله مقداری زمان می برد.برای امتحان می توانید تغذیه و خازن های تامین کننده آن را اتصال کوتاه کنید و امتحان خود را انجام دهید.
          مورد اولی که جناب طراح اشاره فرمودید کاملا درسته و من فقط این موضوع رو اینطوری بیان کردم که بقولی همه کس فهم باشه
          وگرنه تمام دستوراتی که با $ شروع میشن دستوراتی هستند که مربوط به کامپایلرند و نه میکرو کنترلر
          در مورد دوم من بجز یک خازن عدسی 104 از خازن دیگه ای اسفاده نکردم آیا ممکنه همون خازن بتونه میکرو رو برای چند ده دقیقه تغذیه کنه؟ (من حدود یک ساعت تغذیه میکرو رو قطع کردم و پس از وصل مجدد متغیرها هنوز مقدار قبلی رو داشتند)واگر اینطور باشه با یک خازن 1000میکرو احتمالا تا چند سال میکرو اطلاعاتش باقی خواهد موند!پس میشه از RAM بجای EEprom استفاده کرد به شرط یک خازن با ظرفیت بالا !
          جناب طراح اگر ممکنه همون روتین هایی که باعث پاک شدن RAM میشه رو بفرمایید تا در صورتی که برای رم مشکلی پیش آمد بتونم اطلاعات رم رو پاک کنم .
          مورد شما رو چک میکنم خبرش رو همینجا میزارم ممنون

          پروردگارا: به من زیستنی عطا کن که در لحظه مرگ بر بی ثمری لحظه ای که برای زیستن گذشته است حسرت نخورم، و مردنی عطا کن که بر بیهودگیش سوگوار نباشم. بگذار تا آن را خود انتخاب کنم، اما آنچنان که تو دوست میداری

          دیدگاه


            #6
            پاسخ : یک نکته جالب درمورد RAM در AVR و چند سوال

            عملکرد جالبی هست
            دستوری در زبان سی در کدویژن یا iar وجود داره از این قابلیت ماهم بهره ببریم
            هرچه سعی کنیم لایه های نرم افزاری زیاد کرده و از سخت افزار دور کنیم مشکلات(باگ ها) کمتر خواهد شد(امنیت بیشتری خواهید داشت)
            بهترین جواب دهنده برای سوال شما، خود شما هستید البته بعد تلاش،پشتکار و مطالعه بیشتر
            میدونی مشکل ما کجاست؟سرمایه و مغز ها رو نمیتونیم یکجا جمع کنیم...

            تعدادی ماژول GPS GP5MX1513F1 با بالاتریت حساسیت -170db به قیمت خرید بفروش میرسد

            دیدگاه


              #7
              پاسخ : یک نکته جالب درمورد RAM در AVR و چند سوال

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

              دیدگاه


                #8
                پاسخ : یک نکته جالب درمورد RAM در AVR و چند سوال

                من مدار رو در عمل ساختم و تست میکنم
                از USB لپ تاپ به عنوان منبع و پروگرمر استفاده میکنم و برای اینکه تغذیه رو قطع کنم پروگرمر رو از برد جدا میکنم
                مدار هم همچین کم مصرف نیست
                یک چیزی شبیه تایمر روی تابلو روان با ابعاد 14*40 با دات ماتریس که عداد فارسی رو نشون میده و با قطع برق یا ریست میکرو ویا حتی پروگرم کردن دوباره میکرو برنامه رو ادامه میده و متغیرها صفر نمیشوند
                عکس فایل شبیه سازی شده رو پایین گذاشتم و مداری که بستم دقیقا همینه

                پروردگارا: به من زیستنی عطا کن که در لحظه مرگ بر بی ثمری لحظه ای که برای زیستن گذشته است حسرت نخورم، و مردنی عطا کن که بر بیهودگیش سوگوار نباشم. بگذار تا آن را خود انتخاب کنم، اما آنچنان که تو دوست میداری

                دیدگاه


                  #9
                  پاسخ : یک نکته جالب درمورد RAM در AVR و چند سوال

                  خوب منظورتان از ادامه دقیقا ادامه همان عدد قبلی است؟؟ یعنی ادامه همان عدد قبلی را نشان می دهد؟؟
                  خوب نباید هم صفر شود مقدار پیش فرض FF یا همون 255 البته ممکن است که مقدار نا معلوم هم بگیرد برای همین است که مقدار آن را ابتدای کار صفر می کنند
                  برای صفر کردن کل حافظه ram هم فکر کنم این برنامه اسمبلی جواب بده
                  کد:
                  LDI R17,0X60
                  LDI R16,0
                  LDI XL,LOW(RAMEND+1)
                  LDI XH,HIGH(RAMEND+1)
                   AGAIN1: ST -X,R16
                  TST XH
                  BRNE AGAIN1
                  CP XL,R17
                  BRNE AGAIN1
                  بیسیک هم بلد نیستم که با بیسیک بگم اما می تواند همین را درون یک تابع بیسیک بنویسید
                  هیچ کس و هیچ چیز نمی تونه مانع رسیدنت به آرزوهات بشه مگر خودت

                  دیدگاه


                    #10
                    پاسخ : یک نکته جالب درمورد RAM در AVR و چند سوال

                    با سلام،

                    با عرض معذرت، این پاک نشدن رم به هیچ وجه تو کت من نمیره!!! :eek:
                    صد در صد یه جای کار میلنگه.... یا سخت افزاری یا نرم افزاری!
                    اگه اینطوری باشه، تکنولوژی زیر سوال میره.....

                    در ضمن با همه این احوال، من موضوع رو عملی هم تست کردم، رم به محض قطع شدن برق، حتی برای یک ثانیه، پاک میشه :surprised:

                    برای این کار یه متغیر Temp بدون مقدار اولیه تعریف کردم و روی صفحه نشونش دادم، مقدار صفر بود. میکرو منتظر میمونه تا یک کلید زده بشه و بعد از زدن یک کلید، عدد 134 رو توی متغیر Temp میریزه و اون رو روی صفحه نشونش میده. با قطع برق مدار و وصل کردنش در یک مدت خیلی کوتاه، عدد صفر از متغیر Temp نشون داده میشه .....
                    مادامی که از شخصی یاد میشود، او و افکارش زنده اند ....

                    Sh_Nourbakhsh@Yahoo.com

                    http://s2.picofile.com/file/7170362468/_Wall_e_.jp

                    دیدگاه


                      #11
                      پاسخ : یک نکته جالب درمورد RAM در AVR و چند سوال

                      با سلام
                      این تست رو انجام بده ونتیجهش رو ببین

                      از یک lcd کارکتری جهت نمایش اطلاعات استفاده کن متغیری تعریف کن و در همان شروع برنامه روی lcd نمایش بده وسپس مقدار متغیر را برابر با 30 کن و مجددا روی ال سی دی نمایش بده و بعد میکرو رو دریک حلقهwhile بی نهایت قرار بده ،خوب اگر مقادیر ram که هم اکنون متغیر ی با مقدار 30 در آن ذخیر ه شده با قطع برق مجددا در هنگام شروع عدد 30 رو نشان داد پس 100 درصد با قطع برق پاک نمی شود
                      نادانترین مردم کسانی هستند که فکر می کنند داناترین آنها هستند.

                      دیدگاه


                        #12
                        پاسخ : یک نکته جالب درمورد RAM در AVR و چند سوال

                        سلام
                        با احترام به نظرات کلیه دوستان
                        این موضوع اصلا غیرممکن است وگرنه دیگر نیاز به حافظه های غیر فرار (NVRAM , EEPROM , flash , ...) نبود. تازه اگر RAM همچین خاصیتی داشت حتما به جای EEPROM از RAM استفاده می کردیم چون سرعت آن خیلی بیشتر از EEPROM هست. حتما از یک جای مدار جریان و ولتاژ لازم برای میکرو میرسد که حافظه پاک نمی شود شاید هم نرم افزار طوری هست که دوستمان فکر می کند که RAM مقدار خود را حفظ می کند.

                        دیدگاه


                          #13
                          پاسخ : یک نکته جالب درمورد RAM در AVR و چند سوال

                          از آقا حامد واقعا ممنونم که منطقی با موضوع برخورد میکنند
                          دلیل موضوع رو فهمیدم .دلیل همون خازن عدسی 104 بود و با قطع اون RAM برای بیشتر از تقریبا 10 ثانیه اطلاعات رو نگه نمیداشت (هرچند همین ده ثانیه از کجا اومده و میکرو تغذیه میشه من نمیدونم"شاید خازنهای داخل آی سی ها&quot
                          و واقعا برام جالبه که یک خازن 104 چطور میتونه اینهمه ای سی رو تغذیه کنه اون هم برای چند ساعت؟!!!!!
                          به هر صورت برای اینکه بعضی از دوستان فکر نکنن من میخواستم سرکارشون بزارم یک فیلم از کار مدار برداشتم و میذارم اینجا تا زود قضاوت نکنن
                          درمورد مدار هم بگم که با رسیدن هر پالس به پایه اینتراپت میکرو نمایشگر یک عدد میندازه و چون تو فیلم پایه آزاده همین طور به صورت اتفاقی شماره میندازه
                          و اون ای سی هایی که پشت مدار میبینید برای اینه که چون من مدار رو برای دات ماتریس آند طراحی کرده بودم و وقتی مدار رو اسمبل کردم متوجه شدم دات ماتریسها کاتدند و این مدار فقط برای تست بود اونها رو پشت فیبر گذاشتم و در برد اصلی که 10 تا از این مدار داره و چند کار دیگه هم قراره بکنه مدار رو اصلاح خواهم کرد
                          درضمن جناب savameri من تیکه برنامه شما رو برای ریست کردن رم گذاشتم ولی بسکام ارور label not found رو میده
                          http://www.4shared.com/file/44QfhxCN/24072011177.html

                          پروردگارا: به من زیستنی عطا کن که در لحظه مرگ بر بی ثمری لحظه ای که برای زیستن گذشته است حسرت نخورم، و مردنی عطا کن که بر بیهودگیش سوگوار نباشم. بگذار تا آن را خود انتخاب کنم، اما آنچنان که تو دوست میداری

                          دیدگاه


                            #14
                            پاسخ : یک نکته جالب درمورد RAM در AVR و چند سوال

                            من فیلم رو دیدم جالب بود ، فقط کاش یه جای دیگه UPLOAD می کرد موقع زدن دانلود فیلتر بود تازه با 530 ثانیه وقفه، هر چند اینها مانع نشد و من دانلودش کردم :icon_razz:
                            چند سوال
                            آیا وقتی با مولتی متر دو سر مثبت و منفی مدار را پس از قعطی تغذیه می گیرید ولتاژی نشان می دهد؟
                            عدد 38 که سمت چپ نشان می داد دقیقا چه بود و بر چه اساسی نوشته می شد (نشون دهنده چی بود)، اگه کد برنامه را بگذارید خیلی بهتر است
                            با مدار دیگری هم همین امتحان رو کردید یا فقط در این مدار متغییرها پس از قطع برق مقدار خود را حفظ می کنند؟
                            اگه شماتیک رو هم بزاری خیلی بهتره

                            کد:
                            LDI R17,0X60
                            LDI R16,0
                            LDI R26,0X60
                            LDI R27,0X08
                            AGAINJMPa: ST -X,R16
                            TST R27
                            BRNE AGAINJMPa
                            CP R26,R17
                            BRNE AGAINJMPa
                            این همون متن قبلی است فقط جای گذاری عددی کردم (اصولا در برنامه اسمبلی این اعداد تعریف می شوند (با گذاشتن دستور .INCLUDE))
                            ENDRAM = 0X85F
                            XL=26
                            XH=27
                            اسم LABEL رو هم عوض کردم شاید هم اسمش وجود داشته باشه
                            امیدوارم این دیگه جواب بده
                            هیچ کس و هیچ چیز نمی تونه مانع رسیدنت به آرزوهات بشه مگر خودت

                            دیدگاه


                              #15
                              پاسخ : یک نکته جالب درمورد RAM در AVR و چند سوال

                              ممنون از پاسختون
                              با اهم متر من تست نکردم
                              و مدار دیگری هم تست نکردم (حتما متوجه شدین که فیلم رو تو خونه گرفتم ،الان چند روزی هست که بدلیل بعضی از مشکلات نمیرم کارگاه و امکانات دم دست ندارم)
                              اون عددهای سمت چپ ادامه عدد سمت راست هستند به اینصورت که عدد سمت راست تعداد پالسها رو میشماره و وقتی 6 تا شد صفر میشه و یکی به عدد سمت چپ اضافه میکنه تا به 999 برسه همین
                              این شماتیک قابل شبیه سازی و PCB و برنامه کامل بدون هیچگونه حذفیاتی
                              http://www.4shared.com/file/E0tbwml7/fenjan.html
                              این کدها رو هم اضافه کردم ولی ارورهای زیر رو میده وقتی خطهای
                              AGAINJMPa: ST -X,R16
                              BRNE AGAINJMPa
                              BRNE AGAINJMPa
                              رو حذف میکنم دیگه ارور نمیده
                              فکر میکنم لیبل AGAINJMPa رو نمیتونه بشناسه!


                              حالاکه برنامه رو گذاشتم دوستان لطف کنن بگن چرا وقفه سریال تو شبیه سازی کار نمیکنه؟ در عمل تست نکردم ولی در شبیه سازی وقتی چیزی تایپ میکنم سرعت اجرای برنامه کم میشه و به وقفه هم پاسخ نمیده!
                              پروردگارا: به من زیستنی عطا کن که در لحظه مرگ بر بی ثمری لحظه ای که برای زیستن گذشته است حسرت نخورم، و مردنی عطا کن که بر بیهودگیش سوگوار نباشم. بگذار تا آن را خود انتخاب کنم، اما آنچنان که تو دوست میداری

                              دیدگاه

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