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

موضوع: برنامه مجله

  1. #1
    کاربر فعال
    تاریخ عضویت
    Nov 2007
    نوشته ها
    164
    تشکر
    29
    تشکر شده 32 بار در 27 پست

    پیش فرض برنامه مجله

    با سلام من این برنامه را از توی مجله روی میکرو ریختم اما اصلا کلیدا نمیخونه کسی میتونه کمک کنه ممنون
    #include "AT91SAM7X256.h"
    #include "lib_AT91SAM7X256.h"
    int main (){
    AT91F_PIO_CfgOutput( AT91C_BASE_PIOB, AT91C_PIO_PB0);
    ( AT91F_PIO_GetInput( AT91C_BASE_PIOB) , 0x02) ;
    AT91F_PIO_CfgPullup( AT91C_BASE_PIOB, AT91C_PIO_PB1);
    AT91F_PIO_SetOutput ( AT91C_BASE_PIOB, AT91C_PIO_PB0);
    if (( AT91C_PIO_PB1) == 0)
    {
    AT91F_PIO_ClearOutput ( AT91C_BASE_PIOB, 0x01);
    } }

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

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

    پیش فرض

    شما بايد قبل از تعريف كردن پورت مورد نظرتون به صورت ورودي يا خروجي كلاك PIO‌ رو فعالش كنيد دستورشم اينه :


    کد:
    AT91F_PMC_EnablePeriphClock(AT91C_BASE_PMC, 1 << AT91C_ID_PIOA);

    و اينم اشاره كنم كه تو مجله اين نكته اشاره شده كه اين برنامه رو تو محيط كيل شبيه سازي كنيد نه روي برد آموزشي .
    تو محيط كامپايلر KEIL نوشتن يا ننوشتن اين دستور هيچ تاثيري نداره و پروژتون عملا تو شبيه سازي جواب ميده .
    سادگی نهایت کمال است
    یه مدتی میشه که نیستم... ولی به زودی بر می گردم...

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


  5. #3
    کاربر فعال
    تاریخ عضویت
    Nov 2007
    نوشته ها
    164
    تشکر
    29
    تشکر شده 32 بار در 27 پست

    پیش فرض

    با سلام میخواستم بدونم آیا دستور ساده تری برای تعریف پورتها نیست؟مثلا مثل avr؟

  6. #4
    کاربر فعال
    تاریخ عضویت
    Nov 2007
    نوشته ها
    164
    تشکر
    29
    تشکر شده 32 بار در 27 پست

    پیش فرض

    با این دستورم نمیشه بازم کار نکرد اگر میشه درباره دستور بالا یه توضیح بدید من کلید را به pb29وled را بهpb28وصل کردم در ضمن تو دستور شما هم pioaراpiobنوشتم در ضمن من مقاومت وخازن pll را گذاشتم اگر بخوام از فرکانسهای بالا مثلا 50 مگ استفاده کنم باید چی کار کنم ؟ممنون
    ویرایش توسط zavar : 28-06-2010 در ساعت 15:59

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

    پیش فرض

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


    و اما در مورد اينكه چرا كار نكرد بايد بگم، نرم افزار شما به نظره من مشكلي نداره و تو شبيه سازي هم جواب ميده و احتمال بعدي مطمئنا بررسي سخت افزاره .
    شما سورس كد هاي ديگه رو هم رو ميكرو تست كن ببينين آيا اصلا ميكروي شما سالمه ؟ آيا اصلا ميكروتون رو به درستي مي تونيد پروگرمش كنيد؟ و ...

    در ضمن من مقاومت وخازن pll را گذاشتم
    من دقيقاً متوجه منظوره شما نشدم، چون pll مقاومت و خازن نمي خواد كه

    براي افزايش فركانس كاري ميكرو شما بايد pll‌ ميكروي مورد نظرتون رو كانفيگش كنيد روي اون فركانسي كه مد نظره خودتونه . و اگه از نرم افزار keil استفاده مي كنيد مي تونيد از سر برگ configuratuion wizard تو فايل Startup با مقدار دهي ضريب تقسيم و ضريب ضرب فركانس ورودي به pll ، فركانس ورودي رو چند برابرش كنيد .

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

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


  9. #6
    کاربر فعال
    تاریخ عضویت
    Nov 2007
    نوشته ها
    164
    تشکر
    29
    تشکر شده 32 بار در 27 پست

    پیش فرض

    من باkeil 4 کار میکنم اما سر برگ configuratuion wizard را پیدا نمیکنم دقیقا کجاست؟در ضمن میکروم سالمه برنامه های دیگه را اجرا میکنه فقط کلیدا نمیخونه ممنونم

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

    پیش فرض

    در تصوير پايين مشخص كردم كه configuratuion wizard كجاست .


    درباره كليدا بايد بگم كه ، تست كنيد ببنيد كه آيا حالت pull up روشون اعمال شده يا نه ؟
    و يه چيزه ديگه اينكه، يه پايه كليدا بايد به زمين وصل بشه .
    سادگی نهایت کمال است
    یه مدتی میشه که نیستم... ولی به زودی بر می گردم...

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


  12. #8
    کاربر فعال
    تاریخ عضویت
    Nov 2007
    نوشته ها
    164
    تشکر
    29
    تشکر شده 32 بار در 27 پست

    پیش فرض

    از پاسختون ممنونم من از کریستال 12 مگ استفاده کردم با این مقادیر pllیعنی میکروی من داره با کلاک 60مگ کار میکنه من از کتابخانه delay استفاده میکنم اما زمانش بیشتر از چیزیه که میخوام دلیلش بخاطر کریستاله؟در ضمن من 6 کانال pwm میخوام از کدام شماره استفاده کنم؟ممنونم

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

    پیش فرض

    من از کریستال 12 مگ استفاده کردم با این مقادیر pllیعنی میکروی من داره با کلاک 60مگ کار میکنه من از کتابخانه delay استفاده میکنم اما زمانش بیشتر از چیزیه که میخوام دلیلش بخاطر کریستاله؟
    نحوه محاسبه فركانس كاري ميكرو اين جوريا نيست كه هر فركانسي رو كه از pll خارج ميشه به عنوان فركانس كاري ميكرو در نظر گرفته بشه بايد از يه سري تقسيم كننده هايي عبور كنه كه مي تونيد با مطالعه ديتا شيت قطعه مورد نظر اطلاعات كامل رو بدست بياريد .

    در ضمن من 6 کانال pwm میخوام از کدام شماره استفاده کنم؟
    تو هسته هاي ARM7TDMI فقط پلتفرم هاي شركت NXP‌ داراي 6 تا ماژول PWM هستن و تو پلتفرم هاي ATMEL كلاً 4 تا PWM وجود داره .

    تراشه پيشنهادي من LPC2378 هستش كه تو مجله شماره 9 و 10 دربارش بحث كرديم و در مجله شماره بعدي ما كل مطالب مربوط به راه اندازي تايمرها و ماژول هاي PWM رو مياريم كه مي تونيد ازشون استفاده كنيد .
    سادگی نهایت کمال است
    یه مدتی میشه که نیستم... ولی به زودی بر می گردم...

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


  15. #10
    کاربر فعال
    تاریخ عضویت
    Nov 2007
    نوشته ها
    164
    تشکر
    29
    تشکر شده 32 بار در 27 پست

    پیش فرض

    این تقسیم کنندهها توی همون قسمت که pllرا تنظیم میکنیم هست؟یا جای ذیگه باید تنظیم بشه؟میکرو میتونه با همون فرکانس pll کار کنه؟یعنی تقسیم نشه

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

    پیش فرض

    ین تقسیم کنندهها توی همون قسمت که pllرا تنظیم میکنیم هست؟
    نخير، بعد از توليد فركانس جديد تو خروجي pll يه سري تقسيم كننده هايي بيرون pll تعبيه شدن كه فركانس مورد نياز رو براي واحد هاي Core , Usb , Peripherals تنظيم مي كنن .

    میکرو میتونه با همون فرکانس pll کار کنه؟یعنی تقسیم نشه
    بازم در جواب سواله شما بايد بگم كه نه اين امكان وجور نداره چون مهمترين فاكتوري كه بر اساس اون سرعت عملكرد يه ميكروكنترلر رو بررسي مي كنيم سرعت مغز پردازنده سيستمه كه براي سري at91sam7 نهايتش 55مگاهرتزه .

    تو سري مجلاتي كه از طرف تيم تحقياتي آرم ايران ميكرو منتشر شده، خيلي روي اين مباحث بحث كرديم، توصيه مي كنم با دقت مطالعه شون كنيد و از ديتا شيت خود تراشه مورد نظرتون هم استفاده مفيد رو ببرين
    ویرایش توسط Division : 28-06-2010 در ساعت 23:43
    سادگی نهایت کمال است
    یه مدتی میشه که نیستم... ولی به زودی بر می گردم...

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


  18. #12
    کاربر فعال
    تاریخ عضویت
    Nov 2007
    نوشته ها
    164
    تشکر
    29
    تشکر شده 32 بار در 27 پست

    پیش فرض

    من از کریستال 12 مگ استفاده کردم اما وقتی از کتابخانه delay استفاده میکنم زمانش بیشتر از چیزیه که میخوام دلیلش بخاطر کریستاله؟مثلا delay 1 ثانیه 8 ثانیه طول میکشه باید چی کار کنم؟من کتابخانه delay را دیدم
    void delay_s(unsigned long c){
    do{
    unsigned long f=0;
    x=crystal/5;
    for (f=0;f<x;f++);
    y++;
    } while(y<c);
    y=0;
    }
    چرا تقسیم به 5 شده کریستال؟من اول برنامه کریستال را 12مگ کردم اما بازم زمانش درست نشد
    ویرایش توسط zavar : 29-06-2010 در ساعت 11:42

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

    پیش فرض

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

  20. #14
    کاربر فعال
    تاریخ عضویت
    Nov 2007
    نوشته ها
    164
    تشکر
    29
    تشکر شده 32 بار در 27 پست

    پیش فرض

    از at91sam7x256 ممنونم از راهنماییتون

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

    پیش فرض

    ببخشيد كه جواب سواله شما رو با تاخير ميدم چون به شدت درگير امتحانات هستم

    من برنامه شما و كتابخونه تاخير رو بررسي كردم و به اين نتيجه رسيدم كه اين كتابخونه كه نمي دونم كي اونو نوشته مشكل داره و اصلا استاندارد نيست به دليل اينكه پالس هاي كلاك رو درست حساب نكرده و محاسبه پريود زمانيش مشكل داره تازشم اين كتابخونه برا كريستال 18432000 نوشته شده بود كه با خوده اين كريستالم باز محاسباتش درست از آب در نمي اومد

    من تابع تاخير رو بيرون كتابخونه از اول شبيه سازي كردم و تونستم تاخير دقيقا يه ثانيه اي درست كنم، سورس كد تاخير و كل برنامه رو براتون ميزارم خودتون تست كنيد انشاءالله مشكل حل ميشه .

    کد:
    #include <AT91SAM7X256.h>
    #include <lib_AT91SAM7X256.h>
    #define   crystal 12000000
    
    
    void delay_s(unsigned long c)
    {
    unsigned long x,y=0,f;
    x=crystal/5;
    do
    {
    for(f=0;f<x;f++);
    y++;
    }while(y<c);
    }
    
    
    int main(void)
    {
    AT91F_PMC_EnablePeriphClock(AT91C_BASE_PMC, 1 << AT91C_ID_PIOA);
    AT91F_PIO_CfgOutput( AT91C_BASE_PIOB, AT91C_PIO_PB0);
    ( AT91F_PIO_GetInput( AT91C_BASE_PIOB) , 0x02) ;
    AT91F_PIO_CfgPullup( AT91C_BASE_PIOB, AT91C_PIO_PB1);
    AT91F_PIO_SetOutput ( AT91C_BASE_PIOB, AT91C_PIO_PB0);
    
    while (1)
    {
    AT91F_PIO_ClearOutput ( AT91C_BASE_PIOB, 0x01);
    delay_s(1);
    AT91F_PIO_SetOutput ( AT91C_BASE_PIOB, 0x01);
    delay_s(1);
    };
    }
    تو برنامه بالا كافيه فقط زمان رو بر حسب ثانيه به تابع delay_s بدين تا براتون تاخير x ثانيه اي دقيق توليد كنه ولي قبلش حتما بايد كريستالتون رو تو خط اول برنامه كه من 12 مگ تعريف كردم، تعريف كنيد .

    من يه پيشنهاد دارم اونم اينكه به جاي اينكه از اين نوع كتابخونه ها استفاده كني كه اكثرا غيره اصولي نوشته ميشه و بيشتر تو پروژه هاي شخصي جواب ميدن، خودتون از تعريف تابع تو محيط برنامه نويسي خودتون استفاده كنيد اين جوري همه سورس دسته خودتونه .

    موفق باشيد
    سادگی نهایت کمال است
    یه مدتی میشه که نیستم... ولی به زودی بر می گردم...

  22. #16
    کاربر فعال
    تاریخ عضویت
    Nov 2007
    نوشته ها
    164
    تشکر
    29
    تشکر شده 32 بار در 27 پست

    پیش فرض

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

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

    پیش فرض

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

    درباره علت تقسيم فركانس كاري ميكرو به عدد 5 ،بايد بگم كه براي هر سيكل شمارشي كه كانتر توي برنامه فرعي انجام ميده ، 5 تا كلاك پالس زمان لازمه و به همين دليل فركانس اسيلاتور رو به عدد ثابت 5 هميشه تقسيم مي كنيم .

    خيلي سادس خودتم ميتوني محاسبه كني به اينصورت كه شما اگه اسيلاتورت 12 مگاهرتزي باشه فركانسش رو تقسيم بر 5 كن به اون دليلي كه توضيح دادم كه ميشه حدود 2.4 مگاهرتز الان براي محاسبه مدت زمان يه پالس تو تابع فرعي بايد فركانس كاري رو به زمان كاري تبديل كني كه اونم ميشه ريورسه فركانسه كاري كه ميشه 0.41 ميكرو ثانيه .
    يعني براي يه شمارش ميكروي شما اين مدت زمان رو لازم داره الان يه تناسب ببند به اينصورت كه اگه يه ثانيه بخواي سر ميكرو رو گرم كني چند شمارش نياز داري كه ميشه 410000 شمارش .

    ما در تابع فرعي اين كار رو پارامتريك كرديم همين
    سادگی نهایت کمال است
    یه مدتی میشه که نیستم... ولی به زودی بر می گردم...

  24. #18
    کاربر فعال
    تاریخ عضویت
    Nov 2007
    نوشته ها
    164
    تشکر
    29
    تشکر شده 32 بار در 27 پست

    پیش فرض

    این 5 تا کلاک پالس بخاطر تعداد دستوراته؟من تفاوت برنامه شما را با برنامه مجله پیدا نکردم میشه یه توضیح بدید که ایراد اون برنامه کجا بود؟مگه میکرو با کلاک pll کار نمیکنه؟پس چرا زمان را با مقدار کریستال محاسبه میکنیم؟در ضمن کتابخانه lcd هم خیلی درست کار نمیکنه دوباره از شما متشکرم

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

    پیش فرض

    این 5 تا کلاک پالس بخاطر تعداد دستوراته؟
    دو تاش براي واكشي دستور از حافظه فلشه و 3 تاش هم براي اجراي يه دوره زماني تو روتين حلقه شمارنده هستش.

    من تفاوت برنامه شما را با برنامه مجله پیدا نکردم میشه یه توضیح بدید که ایراد اون برنامه کجا بود؟
    بارزترين تفاوت ديناميك نبودن برنامه توي هدر هستش به اين صورت كه برنامه هدر براي كلاك ثابت 18432000 تعريف شده ولي تابع فرعي كه من تو متن برنامه تعريف كردم براي حالت ديناميك تعريف شده يعني مي تونيد مستقيما مقدار فركانس كاري رو وارد كنيد .

    مگه میکرو با کلاک pll کار نمیکنه؟
    نه PLL به صورت ديفالت خاموشه اينو خودتون مي تونيد از ويزارد چك كنيد .

    چرا زمان را با مقدار کریستال محاسبه میکنیم؟
    دوست عزيز مقدار كريستال براي ميكرو يه ملاكي از تعريف زمانه يعني ميكرو يه نوسان اسيلاتورش رو به عنوان يه واحد زماني تصور مي كنه و اين مسئله براي تمامي پردازنده ها صادقه .
    شما فكر كن در واقع اسيلاتور ساعت مچي هر پردازنده اي به شمار مياد .

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

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


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

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