سلام.
چه جوری باید از فایل system_LPC17xx.c برای انجام تنظیمات میکروکنترلر LPC1768 استفاده کنم.
سلام.
چه جوری باید از فایل system_LPC17xx.c برای انجام تنظیمات میکروکنترلر LPC1768 استفاده کنم.
کسی نیست.
من از کریستال خارجی 12 مگاهرتز استفاده میکنم و میخوام که CPU در فرکانس 100 مگاهرتز کار کنه. مقادیر M و N رو به ترتیب 25 و 2 بدست آوردم. مقدار رجیستر CCLKCFG هم 2 باید باشه. حالا چه جوری باید این تنظیمات رو در فایل system_LPC17xx.c انجام بدم.
سلام
سوالتان در ابتدا کلی بود و جواب آن هم به صورت کلی می شد
پاسخ : با باز کردن آن و رفتن به تب configuration wizard به سادگی گزینه های لازم را می توان تغییر داد.چه جوری باید از فایل system_LPC17xx.c برای انجام تنظیمات میکروکنترلر LPC1768 استفاده کنم.
مشکلش چیه؟
یادتون باشه درconfiguration wizard مقادیر m و n و غیره همون چیزی باید قرار بدین که محاسبه کردین نه منهای یک اون مقدار. خود برنامه درستش میکنه.
مثلا در مقادیری که شما گفتین CCLKCFG باید حداقل 3 باشه نه 2 . فرکانس سی پی یو 100 هست و فرکانس پی ال ال باید بالای 275 باشه که میشه 300 مگ. طبق دیتا شیت باید 2 باشه ولی در configuration wizard باید 3 قرار بدین
پروژه های مهم من در ایران میکرو:
" انتقال اطلاعات با SIM900 " ، " آموزش پورت USB " ، " راه اندازی MFRC522 " ، " راه اندازی SLE4442 " ، ""
اگر فرکانس ورودی PLL0 برابر با 12 مگاهرتز باشه و بخواهیم CPU در فرکانس 100 مگاهرتز کار کنه بهترین فرکانس برای خروجی PLL0 برابر 300 مگاهرتز میشه که طبق روابط ذکر شده در دیتاشیت بهترین مقادیر برای M و N به ترتیب برابر 25 و 2 به دست میان. حالا مقدار رجیستر CCLKCFG باید برابر با 3 باشه تا فرکانس خروجی PLL0 که برابر با 300 مگاهرتز هستش تقسیم بر 3 بشه تا فرکانس 100 مگاهرتز برای CPU به دست بیاد.
اشتباه من این بود که این مقادیر رو منهای 1 میکردم و در فایل system_LPC17xx.c قرار می دادم و کامپایلر error می داد که باید مقدار رجیستر CCLKCFG بزرگتر از 1 باشه ولی وقتی به گفته شما عمل کردم و مقادیر محاسبه شده را قرار دادم کامپایلر دیگه error نداد.
یه سوال دیگه داشتم و اونم اینه که مثلا اگه از USB PLL و یا PLL0 استفاده نمیکنم باید تیک روبروی هر کدوم از آنها رو بردارم یا نه و به طور کلی برای همه قسمت هایی که نمیخوام ازشون استفاده کنم باید اینکار رو بکنم یا نه؟
بله تیک رو بردارید غیر فعال میشه. اگر pll1 رو غیر فعال کنید usb از pll0 استفاده میکنه. اگر pll0 رو غیر فعال کنید cpu از اسیلاتور استفاده میکنه. برای usb حتما باید منبع ورودی pll کریستال باشه.
پروژه های مهم من در ایران میکرو:
" انتقال اطلاعات با SIM900 " ، " آموزش پورت USB " ، " راه اندازی MFRC522 " ، " راه اندازی SLE4442 " ، ""
من میخوام که از PLL0 استفاده نکنم و CPU از یکی از 3 تا اسیلاتور کلاک بشه مثلا اسیلاتور RC داخلی. برای همین PLL0 رو غیرفعال کردم و همچنین اسیلاتور اصلی رو غیرفعال کردم و مقدار رجیستر CCLKCFG رو برابر با 1 قرار دادم ولی کامپایلر این خطا رو میده :
"CCLKCFG: Value out of range!"
این خطا میگه که مقدار رجیستر CCLKCFG خارج از محدوده مجاز است. برای چی ؟
چون فرکانس اسیلاتور RC داخلی برابر با 4 مگاهرتز هست تنها در صورتی CPU در فرکانس 4 مگاهرتز کار میکنه که مقدار مقسم کلاک CPU یا همون مقدار رجیستر CCLKCFG برابر با 1 باشه. به هر حال کامپایلر error میده. نمیدونم برای چی ؟
ببخشید تا اونجایی که من میدونم برای انتخاب نوع ورودی باید به رجیستر clksrcsel مقدار داد وبرای rc داخلی هم عددش صفر هستش.
و اما cclkcfg مربوط به تقسیم کننده فرکانس ورودی سی پی یو هستش یعنی بعد از بلوک انتخاب pll0 یا فرکانس ورودی ، مقدار فرکانس هر چی باشه بر این عدد +1 شدهش تقسیم میشود.
برای غیر فعال کردن pll0 هم باید به pll0con مقدار صحیح داده بشود.
حالا مشخص نیست شما این کارها را انجام داده اید یا نه.
قابل ذکر است پیش فرض ما این بوده است که تمام مراحل رابه ترتیب دیتاشیت انجام شده است .
معذرت میخوام اگر بد توضیح دادم.
خیلی ممنون. خیلی خوب توضیح دادین.
برای غیرفعال کردن PLL0 تیک روبروی اون رو برداشتم. مقدار رجیتر CCLKCFG رو هم برابر با 1 قرار دادم. حالا چرا کامپایلر error میده.
ظاهرا خیلی بد توضیح دادم
CCLKCFG برای تقسیم کلاک CPU هستش و ربطی به انتخاب نوع ورودی ندارد برای انتخاب ورودی باید به CLKSRCSEL (برای تعیین یکی از سه ورودی) و PLL0CON (برای متصل کرد خود فرکانس ورودی و غیر فعال کردن PLL0 )
شکل صفحه 29 دیتاشیت 840 صفحه ای رو که نگاه کنید کامل متوجه میشید.
اگر از ویزارد استفاده میکنید فکر کنم باید CLKSRC: PLL Clock Source Select را برای RC داخلی تنظیم کنید
حالا چرا میخواین فرکانس کم استفاده کنید؟!
شما با قرار دادن مقدار یک در CCLKCFG و در صورت انتخاب 4 میگ ورودی فرکانس CPU شما برابر 2 میگ میشود.
منظور شما رو فهمیدم. ولی مسئله اینه که وقتی مقدار رجیستر CCLKCFG رو برابر با 0 یا 1 یا 2 قرار میدم کامپایلر error میده چون که اصلا توی فایل system تعریف شده که مقدار این رجیستر نباید از 2 کمتر باشه. من میگم که هر کدوم از 3 تا اسیلاتور رو که انتخاب کنیم و PLL0 چه فعال باشه یا غیرفعال مقدار رجیستر CCLKCFG رو که از 2 کمتر میزاریم کامپایلر error میده.
چرا جواب نمیدین.
راستش من هم تو ویزارد امتحان کردم عددش از 3 کمتر نشد و اگر هم دستی میزاشتم ارور میده حالا این چه محدودیتی است نمیدنم تو دیتاشیت هم چیزی پیدا نکردم. شاید ضریب ها رند در نیاند نمیدونم.
فکر کنم یکجا خوندم مقدار این عدد باید فرد یا زوج باشه. یعنی یک درمیان باشه و هر عددی نمیشه
پروژه های مهم من در ایران میکرو:
" انتقال اطلاعات با SIM900 " ، " آموزش پورت USB " ، " راه اندازی MFRC522 " ، " راه اندازی SLE4442 " ، ""
چطور میتونم وارد تب configuration wizard شم؟ من فایل .c رو باز میکنم با نوت پد باز میشه.چطور باید بازش کنم؟
- - - Updated - - -
ایا همین رجیسترها و مقادیر برای 1788 هم وجود داره؟؟
این configuration wizard باید قبلا ایجاد شده باشد که وقتی با کیل که باز کنید می توانید آن را ببینید.