کاربرد RAM تو کامپیوتر چیه؟
اینم یه چیزیه شبیه به اون!
پروردگارا: به من زیستنی عطا کن که در لحظه مرگ بر بی ثمری لحظه ای که برای زیستن گذشته است حسرت نخورم، و مردنی عطا کن که بر بیهودگیش سوگوار نباشم. بگذار تا آن را خود انتخاب کنم، اما آنچنان که تو دوست میداری
یه نوع حافظه کوتاه مدته. فکر کنم با مثال خیلی واضح تر بشه. فرض کن یه متغیر x داری. حالا تو مثلا یه مقداری رو مثلا توسط یک کردن یکی از پین ها بهش می دی.مثلا
x=1
این یکه تو Sram به صورت موقت و تا وقتی که تغذیه متصله، ذخیرست. حالا شما دوباره اون رو به صفر تبدیل می کنی. باز هم تو sram ذخیره می شه.
پس متغیر در حافظه پروگرم شده نمی تونه ذخیره بشه . یعنی متغیر ما در فلش ذخیره نشده. چرا که تنها برای مدت کوتاهی لازم داریم. و برنامه رو برای n دفعه می شه استفاده کرد همراه با از دست دادن مقدار متغیر ها.
خلاصه مثلا اگه Flash قابلیت 10000 بار خواندن و نوشتن رو داشته باشه و هر بار مثلا هر یک ثانیه دما رو فلش ذخیره می شد ، کمتر از دو ساعت میکرو از کار می افتاد. پس یه حافظه برای مقادیر لحظه ای و مقادیری که در هربار اجرا ممکنه تغییر پیدا کنه، استفاده می شه.
یه توضیح هم در مورد EEprom بدم تا شاید برات سوال باشه که اینو هم بدونی بد نیست. چون برنامه فلش توسط پایه های میکرو پروگرام می شه و قابل تغییر به اون صورت که ما می خوایم در حین اجرا باشه نیست، و همچنین SRam هنگام قطع برق ، مقادیرش از دست می ره، به یه حافظه قابل مقدار دهی حین انجام دستورات میکرو و غیر فرار نیاز خواهیم داشت که پیش بینی شده و اسمش EEprom هست. eprom های خارجی هم وجود داره، ولی معمولا eprom داخل میکرو کافیه.
خب، زیادی حرف زدم و سرتون رو درد اوردم. از این بابت عذر خواهی می کنم. :bye
راستی ممکنه میکرو تو برنامه ای sram کم بیاره ؟ از کجا بدونیم sram کافیه ؟
:nerd:
هر متغیری که تعریف کنی مقدار مشخصی از حافظه sram اشغال می کنه مثلا اگه اینتیچر باشه 2 بایت و اشغال می کنه.
می تونی تغداد متغیری رو که تعریف کردی در بایتهایی که اشغال می کنن ضرب کنی و ..
اگه هم مقدار sram کم بیاد.
کامپایلر موقع کامپایل کردن خطای out of sram می ده(یسکام)
سلام
وفهمیدم چی شد :biggrin:
حالا این sram که یه موقع کم آوردیم چی کار کنیم ؟ خارجی هم داره ؟
من تو یه برنامه میخام تو بیسکام دستورlookup جدولش خیلی زیاده و میخام تو یه حافظه خارجی بزارم ! این امکان وجود داره ؟
بله خارجی هم داره
تو پروتئوس هم مدارش و نمونه اش تو مثالهاش هست
آی سی رم خارجی هم مثل um61512 و um61256 یا w24512 و.....
که همگی برای ادرس دهی به یک لچ74hc573 هم نیازدارند
البته همه avr ها از رم خارجی پشتیبانی نمیکنند
فقط بعضیها مثل atmega128
پروردگارا: به من زیستنی عطا کن که در لحظه مرگ بر بی ثمری لحظه ای که برای زیستن گذشته است حسرت نخورم، و مردنی عطا کن که بر بیهودگیش سوگوار نباشم. بگذار تا آن را خود انتخاب کنم، اما آنچنان که تو دوست میداری
1*1 = 1
1*2 = 2
1*4 = 4
1*8 = 8
1*16= 16
1*32= 32
1*64= 64
1*128= 128
______________+
255
یه سوال داشتم . طبق جدول زیر ، آیا می توان :
Dim A As String*1
Dim B As String*1 آیا رشته ی A با دو تا کاراکتر با مقدار ده دهی 255 ، و رشته B با چهار کاراکتر با مقدار ده دهی 127 با تعریف متغیر درسته؟ می خوام ساختار داخلی Sram برام روشن بشه و ببینم که آیا در صورتی که یک بایت خالی وجود داشته باشد، آیا می تواند کاراکتر دیگری در خود ذخیره کند یا نه، تنها هر رشته یک کاراکتر ذخیره می کند؟
به نظر خودم امکان نداره، در یک بایت چندتا ذخیره کنه، حتی در صورتی که کل بایت اشغال نشده باشه، و استدلالم اینه که مثلا بایتی داریم به این صورت ( 11010100 ). درسته که مثلا مقدارش به ده دهی می شه 212 و هنوز به صقفش که 255 هست نرسیده اما اگر مثلا کاراکتر "+" که مقدارش 43 ده دهی هست، و 212 یک بایت رو تکمیل می کنن ولی در یک بایت به صورت 11111111 خواهد شد و کاراکتر ها به صورت جدا ذخیره نمی شن و نتیجه اش می شه : 255 که کاراکتر مربع تو خالی است. پس نتیجه می گیریم که اگر یک بایت ما کامل اشغال نباشد، و بعضی از خانه ها صفر باشد، اما باز هم این صفر ها باعث می شود که مقدار صحیح را بیرون دهد.
البته من این اول برام سوال بود و کم کم که داشتم استدلالم رو می گفتم، خودم به نتیجه اش پی بردم. :mrgreen: ولی شاید اشتباه می کنم که در این صورت دوستان توضیح دهند و اگر نه ، شاید این نوشته برای کسان دیگری مفید باشد.
در اینجا باز تا حدودی دلیل معرفی کردن نوع هر متغیر رو پی بردم که به نظر من دلیلش اینه که میکرو بتونه این صفر و یک ها رو دسته بندی کنه. البته چندان برام واضح نشده اما به نظر من ؛ مثلا اگر 101010101110111101010101010111100100 داشته باشیم، شاید در این صفر و یک ها دو مقدار و یا پنج مقدار و یا n مقدار باشد. ولی وقتی به میکرو شناسانده شد، میکرو تشخیص خواهد داد که مثلا 8 تا اول یک بایت، مثلا 10 تا بعد از اون یک 10 بیتی و یا انواع دیگر متغیر است : 10101010|11101111|0101010101|0111100100
درسته طولانی شد، ولی یکی لطف کنه، ببینه ما درست فهمیدیم یا نه. اگه اشتباست ، درستش رو لطفا توضیح بدین. ممنون. :wow:
و
سلام
وفهمیدم چی شد :biggrin:
حالا این sram که یه موقع کم آوردیم چی کار کنیم ؟ خارجی هم داره ؟
من تو یه برنامه میخام تو بیسکام دستورlookup جدولش خیلی زیاده و میخام تو یه حافظه خارجی بزارم ! این امکان وجود داره ؟
دیدگاه