AVR mikrokontroller xotirasi
AVR mikrokontrollerlarida xotira Garvard arxitekturasida amalga oshiriladi, bu buyruqlar va ma'lumotlar xotirasini ajratishni nazarda tutadi. Bu shuni anglatadiki, buyruqlarga kirish ma'lumotlarga kirishdan mustaqil ravishda amalga oshiriladi. Bunday tashkilotning afzalligi xotiraga kirish tezligini oshirishdir.
Ma'lumotlar xotirasi
Ma'lumotlar xotirasi dasturlar tomonidan ishlatiladigan ma'lumotlarni yozish/o'qish uchun mo'ljallangan. Bu o'zgaruvchan, ya'ni mikrokontrollerning kuchi o'chirilganda, unda saqlangan barcha ma'lumotlar yo'qoladi. AVR mikrokontrollerlarida ma'lumotlar xotirasi pic mikrokontrollerlariga qaraganda ancha rivojlangan tuzilishga ega, bu rasmda ko'rsatilgan. 2.1.
Bu erda va undan keyin hex raqamlari C tilida qabul qilingan shaklda taqdim etiladi: 0x prefiksi bilan.
Statik xotira maydoni SRAM (statik tasodifiy kirish xotirasi) sek. 2.1 nuqta chiziq, chunki u barcha AVR mikrokontrollerlari tomonidan ishlatilmaydi (bu ichki va tashqi SRAM uchun ham amal qiladi). Uning boshlang'ich manzili 0x060, yuqori manzili esa turli xil qurilmalarda farq qiladi.
Ba'zi AVR mikrokontrollerlarida tashqi xotira bloklarini 64 Kb gacha ulash orqali SRAM xotira maydonini ko'paytirish mumkin, ammo buning uchun siz a va C portlarini qurbon qilishingiz kerak, bu holda ma'lumotlar va manzillarni uzatish uchun ishlatiladi.
AVR mikrokontrollerlarining ichki va tashqi SRAM xotirasi
AVR mikrokontrollerlarining SRAM xotirasi ishchi registrlarga mos kelmaydigan ma'lumotlarni saqlash, shuningdek dasturiy ta'minot to'plamini tashkil qilish uchun mo'ljallangan. Ma'lumotlar odatda birinchi manzillardan boshlab SRAM-da saqlanadi va stek yuqori manzillarga mos keladi.
Agar SRAM ichki xotirasi etarli bo'lmasa, unda ba'zi AVR mikrokontrollerlarida tashqi xotira bloklarini ulash orqali uni 64 Kb gacha oshirish mumkin. Buning uchun mcucr registrida (kirish/chiqish maydonidagi manzil – $35, SRAM – dagi manzil - $55) jurnalga o'rnatilishi kerak. 1 Sre toifasi (7-toifa). Ushbu razryad o'rnatilgandan so'ng, a va C portlari manzil avtobusi va ma'lumotlar avtobusi vazifasini bajaradi va D portining 7 va 6 pinlari o'qish /RD boshqaruv signallari va shunga mos ravishda /wr tashqi SRAM xotirasi uchun), tegishli portlarda ushbu portlar uchun qanday ma'lumot uzatish yo'nalishlari o'rnatilganligidan qat'iy nazar ma'lumotlarni uzatish yo'nalishi registrlari.
Stack
Stack – bu protsessor tomonidan kichik dasturlardan qaytish manzillarini, hisoblashning oraliq natijalarini va boshqalarni vaqtincha saqlash uchun ishlatiladigan ma'lumotlar xotirasining maxsus maydoni.PIC mikrokontrollerlarida va ba'zi AVR mikrokontrollerlarida stek apparat tomonidan amalga oshiriladi-buning uchun bir necha (yoki bir necha o'nlab) baytlarda belgilangan hajmdagi alohida saqlash moslamasi ajratilgan. AVR mikrokontrollerlari uchun C tili kompilyatorlari (masalan, pastki dasturlarga kirishda) SRAM maydonining yuqori manzillaridan boshlab dasturiy ravishda bir yoki bir nechta steklarni yaratishi mumkin.
Stek LIFO printsipi asosida ishlaydi – "oxirgi, birinchi chiqish", ya'ni "oxirgi, birinchi chiqish"degan ma'noni anglatadi. Bu shuni anglatadiki, yangi ma'lumotlar avval stekning yuqori qismiga (birinchi darajaga) joylashtiriladi, so'ngra quyidagi ma'lumotlar kelib tushishi bilan uning pastki darajalariga "suriladi". Stekdan olib tashlash teskari tartibda amalga oshiriladi: birinchi navbatda, oxirgi marta tepaga joylashtirilgan ma'lumotlar o'qiladi, shundan so'ng pastki sathlarga joylashtirilgan ma'lumotlar xuddi bir darajaga "itarilgan" kabi. Hozirgi vaqtda stekning yuqori qismi bo'lgan xotira xujayrasi stek ko'rsatgichi bilan murojaat qilinadi (AVR uchun – SPL, SPH registr juftligi).
Dasturiy ta'minot to'plami uchun ajratilgan ma'lumotlar xotirasi maydoni faqat SRAM xotirasi bilan cheklanganligi sababli, dasturlarni yozishda foydali ma'lumotlarni yozib, stek juda katta bo'lmasligiga ishonch hosil qilishingiz kerak.
Do'stlaringiz bilan baham: |