به نام خدای شفبع و صبور خداوند دانش خداوند نور
سلام دوستان عزیز و هم میهنان عزیز!
امروز تصمیم گرفتم که یه مطلب جالب و مفید براتون بزارم! با ما همراه باشید تا این مبحث هم به خوبی فرا بگیرید!
شما اگه به دیتاشیت میکروکنترلر ها نگاهی بینادازید میبینید که یه نقشه حافظه دارند!
نمونه زیر نقشه حافظه ی میکروکنترلر lpc 1768 هست! اگه دقت کنید gpio در آدرس 0x2009 C000 در حافظه هست!
یعنی تنظیمات GPIO توی این قسمت از حافظه هست! بنابراین شما با در اختیار داشتن این آدرس ها میتوانید خودتون مقدار GPIO رو تغییر بدید!
حالا سوال اینجاست که چطوری میتونیم توی اون قسمت از حافظه بنویسیم!
جواب اینه که با اشاره گر! و با استفاده از DEFINE میتونیم اینکار رو بکنیم!
مثلا تکه کد زیر همان کار LPC_GPIO2->FIOPIN=0XAA رو انجام میده
#define ioset *((volatile unsigned long*)((0x2009C000UL + 0x00040) | 0x2009C014))
ioset = 0xAA;
آدرس 0x2009C000UL همون آدرس شروع GPIO در حافظه هست
اون 0X40 هم در واقع فاصله ی GPIO2 از نقطه ی اول حافظه ی GPIO هست که با اون آدرس بالایی جمع میشه تا آدرس GPIO2 بدست بیاد
آدرس 0x2009C014 هم همون مکان FIOPIN هست که با آدرس GPIO2 یا (OR) میشه!
کد زیر هم همون کار کد بالا رو انجام میده فقط کارهای ریاضی روش انجام شده!
#define ioset *((volatile unsigned long*)(0x2009C054UL))
اگه سوالی داشتید بپرسید در خدمتتونم!
فعلا یا علی مدد...!
antipa میگه:
سلام علی آقا عالی بود - تو eca هم مطالبتون فوق العاده هست ی سوال داشتم توی هدر فایل "LPC17xx.h" همه ی رجیستر هایی که باهاشون سر کار داریم یک جا جمع کردن و این خیلی خوبه ..... فقط ی چیزی که تو اینترنت نتونستم پیدا کنم memory map میکرو lpc1768 هست . البته هست ولی کلیه .... مثلا گفته ادرس gpio 0x2009c000 تا 0x200A 000 خوب حالا ما از کجا بدونیم آدرس وضعیت ورودی خروجی پورت صفر چند است ؟ اگه امکانش هست این مورد را توضیح دهید یا اگر مرجعی یا ریفرنسی دارد لطف کنید بگید . ممنون
علی فلاح به این سوال پاسخ داده که:
سلام قربان شما :) اولین کاری که برای کارکردن با میکرو انجام میدی همیشه باید دانلود یوزرمانول اون میکرو باشه (یا هر آیسی دیگه ای) البته اینو خودمم تازه بهش پای بند شدم :) در نتیجه یوزر مانوال این میکرو اسمش UM10360 هست که میتونید از لینک زیر دانلود بفرمایید: http://bayanbox.ir/view/5643218702124607749/UM10360.pdf ابتدا صفحه 14 رو مشاهده کنید که مموری مپ میکرو توش رسم شده (همون که من قسمتیش رو توی این مطلب آورده بودم!) حالا صفحه 131 رو مشاهده کنید یک جدول آورده شده و در سمت راست جدول آدرس حافظه نوشته شده که این موارد از اونجا اومده و با کمی جستجو در این یوزرمانول قطعا چیز های خوب گیرتون میاد!
plc میگه:
سلام چطور میشه با arm زمان یک پیکو ثانیه رو اندازه گرفت؟
علی فلاح به این سوال پاسخ داده که:
سلام با تایمر کانتر دیگه! همون کاری که با AVR انجام میدن رو میتونید با میکرو ARM هم انجام بدید
البته پیکو ثانیه خیلی زمان کمی هست و شاید نشه اندازه بگیرید چون به یک میکرو نیاز دارید که فرکانس بسیار بالایی داشته باشه! برای چی میخواید زمان به این کوچیکی رو اندازه بگیرید؟!