NOTICE توجه: این یک موضوع قدیمی است که آخرین پست ارسالی آن مربوط به 3654 روز قبل است . لطفا فقط پاسخ ها ، سوالات و درخواست های 100 درصد مرتبط را به آن ارسال کنید و برای درخواست ها و سوالات جدید موضوع جدیدی را ایجاد کنید
نمایش نتایج: از 1 به 14 از 14

موضوع: مشکل در keil

  1. #1
    مدیر باز نشسته هنرفر آواتار ها
    تاریخ عضویت
    Sep 2009
    نام
    اصفهان
    نوشته ها
    408
    تشکر
    372
    تشکر شده 311 بار در 154 پست

    پیش فرض مشکل در keil

    سلام دوستان من اولین برنامه ای را که در مجله شماره 9 بود در keil نوشتم ولی وقتی کامپایلش کردم داخل شبیه ساز فقط خروجی یک بود و صفر نمیشد.مشکل از کجاست؟
    #include <LPC23xx.h>
    void wait(void)
    {
    long int i ;
    for(i=0;i<4000000;i++);
    }
    int main(void)
    {
    FIO0DIR =1;
    FIO0SET = 1;
    wait();
    FIO0CLR = 1;
    wait();
    }
    جوان ایرانی زانو نمیزند حتی اگر حتی اگر سقف آسمان کوتاه تر از قدش باشد....

    iran-ehda.ir


  2. # ADS
    Circuit advertisement
    تاریخ عضویت
    Always
    نام
    Advertising world
    نوشته ها
    Many
     

  3. #2
    مدیر انجمن Aghaeifar آواتار ها
    تاریخ عضویت
    Feb 2010
    نام
    علی آقائی فر
    نوشته ها
    751
    تشکر
    552
    تشکر شده 975 بار در 440 پست

    پیش فرض

    عجب من هم دقیقا اومدم سایت این رو بپرسم که تاپیک تو رو دیدم
    شکل زیر رو ببنید مال من همش صفر مونده بود

    در ضمن من برای تابع تاخیر داشتم کار می کردم اون جایی که دایره قرمز کشیدم خودش زمان رو نوشته این دوبرابر چیزی هست که در مجله 9 گفته شده بود

    نوشته مثلا فلان تایع چند بار فراخوانی شده و چقدر زمان گرفته

    ما در انتظار رویت خورشیدیم ...

    اللهم عجل لولیک الفرج

  4. تشکرها از این نوشته :


  5. #3
    مدیر انجمن Division آواتار ها
    تاریخ عضویت
    Jan 2010
    نام
    افشین علیزاده
    نوشته ها
    628
    تشکر
    206
    تشکر شده 1,013 بار در 407 پست

    پیش فرض

    با سلام

    متاسفانه برنامه نوشته شده در مجله درست نيست !
    البته منم وقتي مجله رو قبل از انتشار يه دور خوندم به اين برنامه دقت نكردم . ( اين برنامه رو من ننوشته بودم)

    اما مشكل از كجاست ؟؟

    اين برنامه نوشته شده به طوره كلي سه تا اشكال اساسي داره !!!

    1- چون از پورت P0 به صورت Fast GPIO استفاده شده مي بايستي بيت صفرم رجيستري SCS يك بشه

    2- براي محاسبه زمان هاي روند بايد فركانس انتخابي به طوري باشه كه بعد از انجام مراحل تقسم فركانسي و محاسبه زمان عدد حاصله، اعشاري محاسبه نگردد، بدين منظور با در نظر گرفتن اسيلاتور داخلي و مقدا دهي 4 مگ به عوض 12 مگ (زمان دسترسي به پورت ها از طريق Fast GPIO به دو سيكل مي باشد ) فركانس كاري پورت ها مي شود 2 مگاهرتز .
    با يه طرفين وسطين ساده بايد براي ايجاد يك ثانيه تاخير، 2000000 پالس را ايجاد كنيم پس شرط داخل دستور for را به مقدار 2000000 تغيير دهيد .

    3- مي بايستي دستور صفر كردن FIOCLR0 و دستور يك كردن FIOSET0 در داخل يك حلقه قرار گيرند پس از حلقه while استفاده كنيد .

    برنامه لازم براي توليد پالس با ديوتي سايكل يك ثانيه اي به صورت زير مي باشد

    کد:
    #include <LPC23xx.h>
    void wait(void)
    {
    long int i ;
    for(i=0;i<2000000;i++) ;
    }
    
    int main(void)
    {
    SCS=1;
    FIO0DIR =1;
    while (1)
    {
    FIO0SET = 1;
    wait();
    FIO0CLR = 1;
    wait();
    }
    }
    سادگی نهایت کمال است
    یه مدتی میشه که نیستم... ولی به زودی بر می گردم...

  6. کاربران : 5 تشکر کرده اند از شما Division برای ارسال این پست سودمند:


  7. #4
    مدیر انجمن Aghaeifar آواتار ها
    تاریخ عضویت
    Feb 2010
    نام
    علی آقائی فر
    نوشته ها
    751
    تشکر
    552
    تشکر شده 975 بار در 440 پست

    پیش فرض

    در کج نوشته شد که هر مقداری که در حلقه for می ذاریم به اندازه x مقدار تاخیر داره ؟
    این رو تجربی به دست اومده ؟ یا در کاتالوگی چیزی اومده
    منظورم همون

    2000000 رو چطور برات حاصل شده ؟ تجربی ؟
    چون برای من مهمه که بتونم تاخیر دقیق ایجاد کنم اون هم بدون تایمر
    ما در انتظار رویت خورشیدیم ...

    اللهم عجل لولیک الفرج

  8. #5
    مدیر انجمن Division آواتار ها
    تاریخ عضویت
    Jan 2010
    نام
    افشین علیزاده
    نوشته ها
    628
    تشکر
    206
    تشکر شده 1,013 بار در 407 پست

    پیش فرض

    من توضيح ندادم چون فكر كردم خودتون متوجه قضيه ميشين ولي الان توضيح ميدم .

    فرض كن داري از منبع اسيلاتور داخلي استفاده مي كني كه فركانسش 4 مگاهرتزه اگه واحد PLL خاموش باشه و تقسيم كننده فركانس CPU مقدار صفر (پيش فرض) رو به خودش بگيره هيچ تقسيم فركانسي در كلاك اعمالي به CPU صورت نمي گيره و CPU همون فركانس 4 مگاهرتز رو مي بينه .
    چون شما داري از پورت P0 از طريق باس پرسرعت local بش دسترسي پيدا مي كني تو ديتا شيتش نوشته تو دو تا كلاك پالس CPU مي توني به باس لوكال و در نهايت به پورت P0 دسترسي داشته باشي پس با اين حساب فركانس كاري پورتت ميشه 2 مگاهرتز .

    ههمون مي دونيم كه عكس فركانس همون زمانه عكس 2 مگاهرتز ميشه 0.5 ميكروثانيه اين يعني اينكه 0.5 ميكرو ثانيه طول ميكشه كه يه بيتي رو صفر يا يك كني (البته از طريق همين باس local) و از طرفي باز تو ديتا شيت مشخصه كه دسترسي پردازنده به واحد حافظه از طريق همين باس لوكال هستش (اينو تو مجله بش اشاره كردم اگه به دقت خونده باشي) و پردازنده هميشه تو دوتا سيكل به حافظه فلش متصل ميشه و باز همين جريان تكرار ميشه ....
    خب الان يه تناسب ساده بايد ببندي به اينصورت كه 0.5 ميكرو ثانيه طول ميكشه كه يه دستور از حافظه واكشي و اجرا بشه و الان كه شما مثلا يك ثانيه تاخير لازم داري چند دستور بايد اجرا بشه ؟؟ كه ميشه دقيقا 2000000 دستور يا سيكل اجرائي مفيد .

    الان به راحتي با پيكربندي يه شمارنده نرم افزاري ميتوني اين موضوع رو عمليش كني و يك ثانيه تاخير رو از سيستمت انتظار داشته باشي و در ادامه براي توليد تاخير هاي بيشتر بهترين و اصولي ترين روش استفاده از for هاي تودرتو هست به اين صورت كه يك ثانيه رو به صورت يك كميت كوانتيده در نظر بگيري زمان هاي دقيقه اي يا ساعتي رو ايجاد كني .

    البته اين روش اصلا اصولي و حرفه اي نيست و بهترين روش استفاده از خود تايمرها هستش كه به اين موضوع تو مجله بعدي اشاره خواهم كرد .

    در ضمن هر حرفي كه من ميزنم از خودم نيست ميتوني بري و از ديتا شيت اصلي خوده تراشه كه 706 صفحه است بخوني .
    سادگی نهایت کمال است
    یه مدتی میشه که نیستم... ولی به زودی بر می گردم...

  9. کاربران : 3 تشکر کرده اند از شما Division برای ارسال این پست سودمند:


  10. #6
    کاربر علاقه مند
    تاریخ عضویت
    Apr 2010
    نوشته ها
    21
    تشکر
    12
    تشکر شده 21 بار در 13 پست

    پیش فرض

    پیدا کردن هدر ها تو سایت از نوشتنشون سخت تر شده. خیلی برام عجیب این همه زحمت کشیده شد تا گره گشای مشکلات دیگران باشه اما مطالب خوب دسته بندی نشدند و نقص دارند. این باعث تلف شدن زمان میشه.
    همه جا به جای AT91F_PIO_CfgInput دستور AT91F_PIO_GetInput قرار دادید. حداقل تو PMM2,3 که به این شکل بوده. خیلی شانس آوردم میکروم هنوز سالمه.
    البته فرصت برای اصلاح وجود داره. یک مقدار زحمت داره البته زحمتی بیش از نوشتن کل مطالب نیست.

  11. #7
    مدیر انجمن Aghaeifar آواتار ها
    تاریخ عضویت
    Feb 2010
    نام
    علی آقائی فر
    نوشته ها
    751
    تشکر
    552
    تشکر شده 975 بار در 440 پست

    پیش فرض

    ممنون از توضیحاتت افشین

    چیز هایی که زحمت کشیدی رو دیده بودم منظورم از سوال این بود چون ما به زبان c می نویسم نه اسمیلی در مراحل کامپایل و لینک کردن مونده چقدر بهینه به فایل هگز تبدیل بشه برای همین اطمینانی بر این که مثلا فقط 2 کلاک بخواد رو چطور می شه حاصل کرد
    در خود دتاشیت فقط پورت های پرسرعت و معمولی رو اشاره می کنه خودش میگه وقتی با اسمبلی بنویسی می بینی که پر سرعته 3 برابر سرعتش بیشتره نه به زبان c

    دستت درد نکنه توضیحات خوبی دادی
    ما در انتظار رویت خورشیدیم ...

    اللهم عجل لولیک الفرج

  12. #8
    مدیر انجمن Division آواتار ها
    تاریخ عضویت
    Jan 2010
    نام
    افشین علیزاده
    نوشته ها
    628
    تشکر
    206
    تشکر شده 1,013 بار در 407 پست

    پیش فرض

    در زبان سي تنها موردي كه نسبت به زبان اسمبلي متفاوت است پيكربندي دستور يا دستورات اجرائي هستش من بت اثبات مي كنم كه محاسباتي كه براي ايجاد يه تاخير مثلاً يك ثانيه اي تو زبان سي انجام ميديم دقيقا همون مقدار تو زبان اسمبلي هم صادقه اصلا اسمبلي و سي فرقي به لحاظ فنداسيون باهم ندارن و نهايتا سي به اسمبلي تبديل ميشه .

    اوني كه شما داري بش اشاره مي كني پيكربنديه اوليه براي اجراي برنامه هست كه تو زبان سي يكم طول ميكشه ولي وقتي كنترل فرمان وارد برنامه اصلي شد ديگه تعداد كلاك پالس هاي حساب شده براي هر دو زبان برنامه نويسي يكي هستن .
    اگه شما همين برنامه رو به زبان اسمبلي بنويسي مي بيني مدت زمان به استيبل رسيدن تو اسمبلي زودتر رخ ميده و ديتا شيت قطعه با اين موضوع اشاره داره اگه بحث تعريف و پيكربندي يه سري متغير ها رو تو زبان سي ناديده بگيري سي با اسمبلي به لحاظ كلاك پالس اجرايي براي ديكد يه دستور تك فازه فرقي نمي كنه .
    سادگی نهایت کمال است
    یه مدتی میشه که نیستم... ولی به زودی بر می گردم...

  13. کاربران : 2 تشکر کرده اند از شما Division برای ارسال این پست سودمند:


  14. #9
    تازه وارد
    تاریخ عضویت
    Mar 2010
    نوشته ها
    2
    تشکر
    0
    تشکر شده 0 بار در 0 پست

    پیش فرض

    با سلام
    این برنامه اصلاح شده (پورت 0 gpio) باز هم کار نمی کنه لطفا یه برنامه تست شده رو قرار بدین

  15. #10
    تازه وارد
    تاریخ عضویت
    Mar 2010
    نوشته ها
    2
    تشکر
    0
    تشکر شده 0 بار در 0 پست

    پیش فرض

    لطفا یکی به سوال ما جواب بده

  16. #11
    مدیر باز نشسته t.o.e آواتار ها
    تاریخ عضویت
    Sep 2010
    نوشته ها
    191
    تشکر
    150
    تشکر شده 122 بار در 60 پست

    پیش فرض for you

    سلام:
    من این برنامه رو هم کپی کردم و هم نوشتم تو keil و عملی هم جواب گرفتم.
    آقا کسی می تونه منو تو پورت سریال کمک کنه؟
    پست هم گذاشتم ولی هنوز خبری نیست.
    فايل هاي پيوست شده فايل هاي پيوست شده
    • نوع فایل: txt test.txt (322 بایت, 33 نمايش)

  17. #12
    مدیر باز نشسته t.o.e آواتار ها
    تاریخ عضویت
    Sep 2010
    نوشته ها
    191
    تشکر
    150
    تشکر شده 122 بار در 60 پست

    پیش فرض

    نقل قول نوشته اصلی توسط moraj نمایش پست ها
    لطفا یکی به سوال ما جواب بده
    سلام:
    به سوال شما جواب داده شد.

  18. #13
    تازه وارد
    تاریخ عضویت
    May 2014
    نوشته ها
    1
    تشکر
    0
    تشکر شده 0 بار در 0 پست

    پیش فرض

    سلام!
    من هم برنامه ای که خودتون نوشته بودین رو کپی پیست کردم تو keil. ولی خروجیم همواره 1 هست و مطلقا هم صفر نمیشه!
    ممنون میشم از راهنماییتون.

  19. #14
    Banned
    تاریخ عضویت
    Apr 2013
    نام
    صادق علی بخشی
    نوشته ها
    1,148
    تشکر
    1,183
    تشکر شده 1,276 بار در 702 پست

    پیش فرض

    نقل قول نوشته اصلی توسط amirmozaffari نمایش پست ها
    سلام!
    من هم برنامه ای که خودتون نوشته بودین رو کپی پیست کردم تو keil. ولی خروجیم همواره 1 هست و مطلقا هم صفر نمیشه!
    ممنون میشم از راهنماییتون.
    سلام رفیق
    شما قبل از هرچیز به تاریخ پست قبلیتون یه نگاهی بندازید
    سپس سوالتون رو به طور کامل مطرح کنید
    برای این سوالتون هم فایل پروژه رو اپلود کنید تا بتونید بهتر و سریع تر جواب بگیرید

موضوعات مشابه

  1. Keil v5.01
    توسط Doloop در انجمن پرسش و پاسخ (نرم افزارهای تخصصی)
    پاسخ: 27
    آخرين نوشته: 18-07-2016, 15:37
  2. دانلود Keil MDK-ARM Ver 4.5
    توسط Aghaeifar در انجمن پرسش و پاسخ (نرم افزارهای تخصصی)
    پاسخ: 30
    آخرين نوشته: 10-02-2013, 03:45
  3. keil 4.23
    توسط lpln852 در انجمن stm32
    پاسخ: 1
    آخرين نوشته: 18-03-2012, 11:26
  4. مشکل با کامپایل keil
    توسط imported_pmf در انجمن سایر موارد مرتبط با میکرو کنترلرها
    پاسخ: 13
    آخرين نوشته: 17-03-2012, 01:17
  5. keil نصب نمیشه
    توسط jordan77 در انجمن AT91 series (ATMEL)
    پاسخ: 12
    آخرين نوشته: 13-03-2012, 01:24

مجوز های ارسال و ویرایش

  • شما نمیتوانید موضوع جدیدی ارسال کنید
  • شما امکان ارسال پاسخ را ندارید
  • شما نمیتوانید فایل پیوست کنید.
  • شما نمیتوانید پست های خود را ویرایش کنید
  •