انجمن های گفتگوی روبوایکیو

لطفا به سیستم وارد یا ثبت‌نام کنید.

لطفا برای ورود نام کاربری و رمز عبورتان را وارد نمایید

لطفا برای استفاده بهتر از انجمن، ثبت نام کنید!

نویسنده موضوع: مشکل در تنظیم کلاک میکرو lpc1768  (دفعات بازدید: 148 بار)

0 کاربر و 1 مهمان درحال دیدن موضوع.

آفلاین armcore11

  • کاربر فعال
  • ***
  • ارسال: 113
  • امتیاز: 36
    • ديدن مشخصات
مشکل در تنظیم کلاک میکرو lpc1768
« : 01 تیر, 1397, 04:32:43 »
سلام به دوستان

من این برنامه تنظیم کلاک lpc1768 رو از روی کتاب مرجع کامل میکروکنترلر های arm نوشتم .
قاعدتا فرکانس پردازنده باید روی 96 مگ باشه .
و برای ایجاد یه تاخیر 10 میلی ثانیه ای باید 960k بار بشماریم تا 10 میلی ثانیه بگذره منم همین کار رو کردم اما به نظر میاد فرکانس پردازنده خیلی کمتر از این هست
چون سرعت چشمک زدن ال ای دی ها با مولتی متر فرکانسش رو تست کردم 3.124 هرتز نشون میده !!!!
برنامه رو این پایین قرار دادم
دوستان لطفا بررسی بفرمایند که مشکل از کجاست ؟؟
با تشکر


#include "LPC17xx.h"
uint32_t i=0;
main ()
{

LPC_SC->SCS = 0x30;
LPC_SC->PLL0CON = 0;
LPC_SC->PLL0FEED = 0xaa;
LPC_SC->PLL0FEED = 0x55;
while ( !(LPC_SC->SCS&0x40) );
LPC_SC->CLKSRCSEL = 1;
LPC_SC->PLL0CFG = 0x000f;           
LPC_SC->PLL0FEED = 0xaa;
LPC_SC->PLL0FEED = 0x55;
LPC_SC->PLL0CON = 1;
LPC_SC->PLL0FEED = 0xaa;
LPC_SC->PLL0FEED = 0x55;
LPC_SC->CCLKCFG = 3;
LPC_SC->USBCLKCFG = 0x07;
LPC_SC->PCLKSEL0 |= 0x03c0;
LPC_SC->PCLKSEL1 |= 0x00000000;
while ( (LPC_SC-> PLL0STAT & 0x04000000) == 0 );
LPC_SC->PLL0CON |= 2;
LPC_SC->PLL0FEED = 0xaa;
LPC_SC->PLL0FEED = 0x55;

LPC_GPIO0->FIOMASK=0x00000002;
LPC_GPIO0->FIODIR=0x0000000F;

while(1)
 {

   LPC_GPIO0->FIOSET=0x0000000F;
   i=960000;
   while(i--);
   LPC_GPIO0->FIOCLR=0x0000000F; 
   i=960000;
   while(i--);
 }

} // the end

آفلاین مسئول فنی

  • مدیر سایت
  • یه دنگ از سایت به نامشه
  • *****
  • ارسال: 1392
  • امتیاز: 634
    • ديدن مشخصات
پاسخ : مشکل در تنظیم کلاک میکرو lpc1768
« پاسخ #1 : 02 تیر, 1397, 08:45:38 »
دوست عزیز ، حلقه while هر دور حلقه را بیشتر از 1 سیکل کلاک اجرا میکند، برای این کاربرد بهتر هست از تایمر ها و کتابخانه CMSIS استفاده کنید، مقدار دادن مستقیم به رجیستر ها برنامه را ناخوانا کرده و تست و عیب یابی برنامه را مشکل و زمان بر میکند.

آفلاین armcore11

  • کاربر فعال
  • ***
  • ارسال: 113
  • امتیاز: 36
    • ديدن مشخصات
پاسخ : مشکل در تنظیم کلاک میکرو lpc1768
« پاسخ #2 : 02 تیر, 1397, 04:19:44 »
از توجه شما ممنون
مورد مشابهی در یک انجمن مطرح شده بود که متاسفانه بی جواب باقی مانده .
احتمال میدهید مشکل از کجا باشد
با توجه به این که بنده عرض کردم کد ها براساس یک کتاب نوشته شده و حتی نمونه کد دیگری برای فرکانس 72 از یک سایت
امتحان شده که هر کدوم نتیجه بسیار عجیبی رو از خودشون نشون میدن . . .

فرکانس کاری پردازنده درعمل خیلی با فرکانسی که تنظیم کردم تفاوت داره
فکر میکنید مشکل از کجاست ؟؟؟

آفلاین مسئول فنی

  • مدیر سایت
  • یه دنگ از سایت به نامشه
  • *****
  • ارسال: 1392
  • امتیاز: 634
    • ديدن مشخصات
پاسخ : مشکل در تنظیم کلاک میکرو lpc1768
« پاسخ #3 : 04 تیر, 1397, 10:09:13 »
وقتی شما رجیستر ها را مقدار دهی کرده اید من نمیتونم از روی کد متوجه بشم منبع کلاک شما چیه و آیا pll درست پیکربندی شده و ... ، اما مواردی که الان به نظرم میرسه یکی اینکه منبع کلاکتون رو مطمئن بشید چی تعریف کردید و اگر کریستال خارجی و یا کلاک خارجی هست درست به پایه های مربوطه وصل شده باشه ، pll درست مقدار دهی شده باشه ، در ضمن این تحلیل شما که برای 10 میلی ثانیه باید 960k بشمارید تحلیل درستی نیست و بسته به کامپایلر و مفسری که استفاده میکنید ممکن هست زمان های مختلف ایجاد بشه برای اطمینان یا باید اسمبلی کد بنویسید و یا از تایمر استفاده کنید .