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

موضوع: تعريف ورودي و خواندن آن

  1. #1
    عضو جدید
    تاریخ عضویت
    Nov 2009
    نوشته ها
    7
    تشکر
    0
    تشکر شده 0 بار در 0 پست

    پیش فرض تعريف ورودي و خواندن آن

    سلام . من ميخواستم يك پايه مثل پايه بيستم پورت ((بي)) رو ورودي تعريف كنم و مدام تو حلقه بينهايتم مقدارشو چك كنم تا زماني كه اين كليد صفر باشه يك ديود نوري رو كه به پايه بيستم پورت ((بي))وصله روشن بشه . ضمنا پايه وروديمو با يك مقاومت 10كيلو به 3.3ولت پول آپ كردم .
    #include "AT91SAM7X256.H" /* AT91SAMT7X256 definitions */
    #include "lib_AT91SAM7X256.h"
    void wait(void);
    int main (void)
    {
    AT91F_PIO_CfgOutput(AT91C_BASE_PIOB, AT91C_PIO_PB27);
    AT91F_PIO_CfgOutput(AT91C_BASE_PIOB, AT91C_PIO_PB28);
    AT91F_PIO_CfgInput(AT91C_BASE_PIOB, AT91C_PIO_PB20);

    while(1)
    {
    AT91F_PIO_ClearOutput(AT91C_BASE_PIOB, AT91C_PIO_PB27);
    wait();
    AT91F_PIO_SetOutput (AT91C_BASE_PIOB, AT91C_PIO_PB27);
    wait();
    if ((AT91F_PIO_GetInput(AT91C_BASE_PIOB) &AT91C_PIO_PB20) == 0)
    {
    AT91F_PIO_SetOutput(AT91C_BASE_PIOB, AT91C_PIO_PB28);
    }
    else
    {
    AT91F_PIO_ClearOutput(AT91C_BASE_PIOB, AT91C_PIO_PB28);
    }
    }
    }

    void wait (void)
    {
    unsigned int n;
    for (n = 0; n < 4000000; n++);
    }

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

  3. #2
    مدیر انجمن farzadsw آواتار ها
    تاریخ عضویت
    Feb 2009
    نام
    تهران
    نوشته ها
    485
    تشکر
    105
    تشکر شده 745 بار در 309 پست

    پیش فرض

    ببخشید ،سوالاتون چی بود؟!
    اگه این بوده که چرا کار نمیکنه ، باید این خط رو به اول برنامه اضافه کنید
    کد:
    AT91F_PMC_EnablePeriphClock(AT91C_BASE_PMC, 1 << AT91C_ID_PIOB);
    در ضمن خود میکرو پول آپ داخلی داره که بعد از هر بار ریست شدن به طور دیفالت پایه ها هم ورودی تعریف میشن و هم دارای پول آپ . اگه خواستید بین برنامه پول آپ رو عوض کنید از دستور
    کد:
    AT91F_PIO_CfgPullup(AT91C_BASE_PIOB,key);
    استفاده کنید (به جای key از اسم پایه استفاده کنید.)

  4. #3
    مدیرکل سایت kavir آواتار ها
    تاریخ عضویت
    Jun 2007
    نام
    زارعی
    نوشته ها
    3,547
    تشکر
    1,218
    تشکر شده 5,684 بار در 1,801 پست

    پیش فرض

    سلام
    خوب شد بحث شد
    من خودم شخصا با وردی یک خوندن مشکل دارم لطفا بگید کسی تست کرده تا الان؟
    و نمونه برنامه لطفا بذارید
    کویر ویدئو راه اندازی شد

    اگر چه دیر ولی برگشتم به جمع دوستان قدیمی....

  5. #4
    مدیر انجمن farzadsw آواتار ها
    تاریخ عضویت
    Feb 2009
    نام
    تهران
    نوشته ها
    485
    تشکر
    105
    تشکر شده 745 بار در 309 پست

    پیش فرض

    اون برنامه 7seg که براتون فرستادم رو امتحان نکردید؟ تو اون کلید کار میکنه

  6. #5
    مدیرکل سایت kavir آواتار ها
    تاریخ عضویت
    Jun 2007
    نام
    زارعی
    نوشته ها
    3,547
    تشکر
    1,218
    تشکر شده 5,684 بار در 1,801 پست

    پیش فرض

    اگر ممکنه یه بار دیگه بفرستید و فقط برای ورودی یک بگیره باشه
    کویر ویدئو راه اندازی شد

    اگر چه دیر ولی برگشتم به جمع دوستان قدیمی....

  7. #6
    عضو جدید
    تاریخ عضویت
    Nov 2009
    نوشته ها
    7
    تشکر
    0
    تشکر شده 0 بار در 0 پست

    پیش فرض

    ممنون.درست شد ولي همونطور كه گفتيد با يك كار نميكنه يعني نميشه پول دونش كرد و با يك كارش انداخت.

  8. #7
    مدیر انجمن farzadsw آواتار ها
    تاریخ عضویت
    Feb 2009
    نام
    تهران
    نوشته ها
    485
    تشکر
    105
    تشکر شده 745 بار در 309 پست

    پیش فرض

    برای اینکه موقع 1 کردن کلید کار کنه ، باید پول آپ رو صفر کنید (با همون دستور AT91F_PIO_CfgPullup) اما چون میکرو پول دان داخلی نداره ، مقدار ورودی نسبت به نویز خیلی حساس میشه . مثلا اگه دستتون رو نزدیک برد ببرید وضعیت ورودی تغییر میکنه. برای همین بهتره خودتون یه پول دان براش درست کنید.
    *به نظر من بهتره از حالت فعال به ازای کلید صفر استفاده کنید تا با استفاده از پول آپ داخلی ورودی رو بخونید.
    این برنامه 7سگمنت با پول آپ(کلید در حالت 0) :
    http://www.4shared.com/file/14170514...ee32/7seg.html

    برای کلید در حالت 1 باید این تغییرات رو بدید:
    AT91F_PIO_CfgPullup(AT91C_BASE_PIOA,key);
    تغییر پیدا کنه به
    AT91F_PIO_CfgPullup(AT91C_BASE_PIOA,0x00000000);


    همچنین

    if((AT91F_PIO_GetInput(AT91C_BASE_PIOA)& key)==0x00000000){
    تغییر پیدا کنه به

    if((AT91F_PIO_GetInput(AT91C_BASE_PIOA)& key)==key){

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


  10. #8
    عضو جدید
    تاریخ عضویت
    Sep 2009
    نوشته ها
    6
    تشکر
    2
    تشکر شده 4 بار در 2 پست

    پیش فرض

    سلام
    متاسفانه برنامه منم کار نمیکنه :?or
    حتی این خط
    AT91F_PMC_EnablePeriphClock(AT91C_BASE_PMC, 1 << AT91C_ID_PIOB);
    رو هم اضافه کردم به اول برنامه ولی جواب نداد

    برنامه که نوشتم این بود

    int main(void){


    AT91F_PIO_CfgOutput(AT91C_BASE_PIOB,AT91C_PIO_PB19 );

    (AT91F_PIO_GetInput(AT91C_BASE_PIOB),AT91C_PIO_PB1 );

    AT91F_PIO_CfgPullup(AT91C_BASE_PIOB,AT91C_PIO_PB1) ;


    while(1){

    if((AT91C_PIO_PB1)==0){

    delay_ms(100);
    AT91F_PIO_SetOutput(AT91C_BASE_PIOB,AT91C_PIO_PB19 );
    delay_ms(500);
    }

    AT91F_PIO_ClearOutput(AT91C_BASE_PIOB,AT91C_PIO_PB 19);

    }


    برنامه صفحه 10 مجله شماره 3 هم جواب نداد :?or

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

  1. مشکل در تعریف ماکرو
    توسط hamedb3269 در انجمن AVR
    پاسخ: 2
    آخرين نوشته: 23-10-2013, 13:39
  2. کمبود تعداد پایه‏های میکرو!
    توسط sobhan537 در انجمن AVR
    پاسخ: 27
    آخرين نوشته: 13-09-2013, 12:03
  3. تبدیل تعداد و شکل پالس
    توسط TABRIZMACHINE در انجمن الکترونیک
    پاسخ: 9
    آخرين نوشته: 02-09-2013, 04:42
  4. تعداد عمده قطعات
    توسط nima_elc در انجمن الکترونیک
    پاسخ: 4
    آخرين نوشته: 24-05-2013, 17:29
  5. تعطیلات و تشکیل گروههای همکار
    توسط kavir در انجمن گفت و گوي آزاد
    پاسخ: 2
    آخرين نوشته: 01-03-2009, 21:28

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

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