اطلاعیه

Collapse
No announcement yet.

تفاوت RAM و ROM

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

    تفاوت RAM و ROM

    با سلام من تفاوت و RAM-ROM و حافظه های FLASH که تو میکرو کنترلر ها استفاده میشود را میدانم.اما یه چیزی برام گنگ هستش.
    فرض کنید شما یه متغییر A تو برنامه نویسی تعریف کردین.
    مثلا
    Unsigned char A
    خوب این متغییر تو حافظه فلاش میکرو میشینه و شما با کامپایل کردن اونو درون میکرو میریزین و داخل برنامه از این متغییر استفاده میکنید بدین ترتیب با قطع برق هم همین متغییر مجددا در زمان برقدار شدن میکرو وجود داره چون برنامه ما تو حافظه FLASH هستش تا اینجا درسته؟؟
    خوب سوالم اینجاست:
    فرض کنیم متغیر A که در بالا تعریف کرده ایم تو حین برنامه مثلا تغییر کند (مثلا مقدارش دو برابر بشه) و بعد از این تغذیه میکرو را قطع کنیم .خوب مگه ما همون اول این متغییر را درون فلاش نریخته ایم و نباید با قطع برق اطلاعاتش از بین نرود پس چرا زمانیکه مقدارش تغییر دادیم و تغذیه قطع شد نمیتونه مقدار اصلیشو نگه داشته باشه و مجددا صفر میشه.مگه ما متغییر A را درون RAM ریخته ایم که اطلاعاتش با قطع برق پاک میشه؟

    #2
    پاسخ : تفاوت RAM و ROM

    نوشته اصلی توسط mostafa6369 نمایش پست ها
    با سلام من تفاوت و RAM-ROM و حافظه های FLASH که تو میکرو کنترلر ها استفاده میشود را میدانم.اما یه چیزی برام گنگ هستش.
    فرض کنید شما یه متغییر A تو برنامه نویسی تعریف کردین.
    مثلا
    Unsigned char A
    خوب این متغییر تو حافظه فلاش میکرو میشینه و شما با کامپایل کردن اونو درون میکرو میریزین و داخل برنامه از این متغییر استفاده میکنید بدین ترتیب با قطع برق هم همین متغییر مجددا در زمان برقدار شدن میکرو وجود داره چون برنامه ما تو حافظه FLASH هستش تا اینجا درسته؟؟
    خوب سوالم اینجاست:
    فرض کنیم متغیر A که در بالا تعریف کرده ایم تو حین برنامه مثلا تغییر کند (مثلا مقدارش دو برابر بشه) و بعد از این تغذیه میکرو را قطع کنیم .خوب مگه ما همون اول این متغییر را درون فلاش نریخته ایم و نباید با قطع برق اطلاعاتش از بین نرود پس چرا زمانیکه مقدارش تغییر دادیم و تغذیه قطع شد نمیتونه مقدار اصلیشو نگه داشته باشه و مجددا صفر میشه.مگه ما متغییر A را درون RAM ریخته ایم که اطلاعاتش با قطع برق پاک میشه؟
    با سلام احتمالا یک ایرادی تو کار هست والا شما اگه متغیرتونو بعد از
    تغییر در eeprom بنویسید و در موقع لزوم فرا خونی کنید می*بینید
    که مقدار جدید حفظ شده نه اینکه حافظه eeprom به هر دلیلی خراب
    شده باشه
    قصه زندگی همیشه با مدادی که ما دوست داریم نوشته نمی شه .....

    دیدگاه


      #3
      پاسخ : تفاوت RAM و ROM

      نوشته اصلی توسط mostafa6369 نمایش پست ها
      با سلام من تفاوت و RAM-ROM و حافظه های FLASH که تو میکرو کنترلر ها استفاده میشود را میدانم.اما یه چیزی برام گنگ هستش.
      فرض کنید شما یه متغییر A تو برنامه نویسی تعریف کردین.
      مثلا
      Unsigned char A
      خوب این متغییر تو حافظه فلاش میکرو میشینه و شما با کامپایل کردن اونو درون میکرو میریزین و داخل برنامه از این متغییر استفاده میکنید بدین ترتیب با قطع برق هم همین متغییر مجددا در زمان برقدار شدن میکرو وجود داره چون برنامه ما تو حافظه FLASH هستش تا اینجا درسته؟؟
      خوب سوالم اینجاست:
      فرض کنیم متغیر A که در بالا تعریف کرده ایم تو حین برنامه مثلا تغییر کند (مثلا مقدارش دو برابر بشه) و بعد از این تغذیه میکرو را قطع کنیم .خوب مگه ما همون اول این متغییر را درون فلاش نریخته ایم و نباید با قطع برق اطلاعاتش از بین نرود پس چرا زمانیکه مقدارش تغییر دادیم و تغذیه قطع شد نمیتونه مقدار اصلیشو نگه داشته باشه و مجددا صفر میشه.مگه ما متغییر A را درون RAM ریخته ایم که اطلاعاتش با قطع برق پاک میشه؟
      سلام
      دوست عزیز گفته های شما از یه جایی به بعد ایراد داره! ببینید در حافظه فلش دستور العمل قرار میگیره نه متغیر! وقتی شما در خطوط برنامه درخواست ساخت متغیر میکنید، دستور العمل ساخت اون متغیر در حافظه فلش قرار میگیره و خود متغیر در حافظه RAM ساخته میشه؛ خوب طبیعیه که حافظه RAM با قطع تغذیه ریست میشه. البته میشه در خود حافظه فلش هم متغیر ساخت که کار نحوه کار کردش فرق داره و محدودیت هایی هم داره. بخاطر همین متغیرهای ثابت رو میان و در حافظه فلش میسازن که بحثش جداس

      دیدگاه


        #4
        پاسخ : تفاوت RAM و ROM

        [QUOTE=hossein.m98;688395]سلام
        دوست عزیز گفته های شما
        سلام ممنون بابت راهنماییتون
        یعنی وقتی ما حتی وقتی ارایه ای به طول تعریف میکنیم.تعریف این دستور تو حافظه فلاش قرار میگیرد و خود ارایه 100 تایی تو RAM درست متوجه شدم؟؟

        دیدگاه


          #5
          پاسخ : تفاوت RAM و ROM

          [QUOTE=mostafa6369;688406]
          نوشته اصلی توسط hossein.m98 نمایش پست ها
          سلام
          دوست عزیز گفته های شما
          سلام ممنون بابت راهنماییتون
          یعنی وقتی ما حتی وقتی ارایه ای به طول تعریف میکنیم.تعریف این دستور تو حافظه فلاش قرار میگیرد و خود ارایه 100 تایی تو RAM درست متوجه شدم؟؟
          بله تا وقتی آرایه، متغیر، ساختار، رشته یا هرچیز دیگه به شکل معمول تعریف بشه در RAM قرار میگیره. مگر اینکه نوع تعریف تغییر کنه و ما برنامه رو مجبور کنیم متغیر رو در حافظه ای مثل فلش یا eeprom بسازه. مثل کلمه کلیدی flash که قبل از تعریف متغیر در کدویژن استفاده میشه و برنامه رو وادار میکنه تا یک متغیر ثابت و غیر قابل تغییر در فلش بسازه

          دیدگاه


            #6
            پاسخ : تفاوت RAM و ROM

            خوب حالا یه سوال دیگر من یه ای سی PIC را با کد PIC16F628 را نگاه کردم که مشخصات رم اون مطابق زیر هستش
            RAM 224*8 یعنی مقدار رم اون 224 هستش درست؟
            خود حالا اگر بیام متغیری بهصورت زیر تعریف کنیم
            Unsigned char A[80]
            یعنی باید مقدار 224-80=144 بایت ازحافظه را اشغال کنه
            و اگر 4 متغییر دیگری طبق بالا تعریف کنیم یعنی حافظه RAM ما باید ژر شده باشد.اما من این کار رو کردم و فقط یک درصد از RAM پرشد.دلیلش چیه؟

            دیدگاه


              #7
              پاسخ : تفاوت RAM و ROM

              نوشته اصلی توسط mostafa6369 نمایش پست ها
              خوب حالا یه سوال دیگر من یه ای سی PIC را با کد PIC16F628 را نگاه کردم که مشخصات رم اون مطابق زیر هستش
              RAM 224*8 یعنی مقدار رم اون 224 هستش درست؟
              خود حالا اگر بیام متغیری بهصورت زیر تعریف کنیم
              Unsigned char A[80]
              یعنی باید مقدار 224-80=144 بایت ازحافظه را اشغال کنه
              و اگر 4 متغییر دیگری طبق بالا تعریف کنیم یعنی حافظه RAM ما باید ژر شده باشد.اما من این کار رو کردم و فقط یک درصد از RAM پرشد.دلیلش چیه؟
              متاسفانه من با pic کار نکردم

              دیدگاه


                #8
                پاسخ : تفاوت RAM و ROM

                نوشته اصلی توسط mostafa6369 نمایش پست ها
                خوب حالا یه سوال دیگر من یه ای سی PIC را با کد PIC16F628 را نگاه کردم که مشخصات رم اون مطابق زیر هستش
                RAM 224*8 یعنی مقدار رم اون 224 هستش درست؟
                خود حالا اگر بیام متغیری بهصورت زیر تعریف کنیم
                Unsigned char A[80]
                یعنی باید مقدار 224-80=144 بایت ازحافظه را اشغال کنه
                و اگر 4 متغییر دیگری طبق بالا تعریف کنیم یعنی حافظه RAM ما باید ژر شده باشد.اما من این کار رو کردم و فقط یک درصد از RAM پرشد.دلیلش چیه؟
                با سلام
                صرف تعریف متغیرها سبب اختصاص حافظه به اونها نمیشه. وقتی حافظه بهشون تخصیص داده میشه که از اونها استفاده بشه و مقدار دهی بشن.
                کمترین توقع از یک فرد تحصیلکرده، دانستن املای صحیح کلمات است.

                دیدگاه


                  #9
                  پاسخ : تفاوت RAM و ROM

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

                  دیدگاه

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