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

موضوع: مشکل در کانفیگ پین به عنوان ورودی در برد آموزشی

  1. #1
    کاربر علاقه مند myiranmicro آواتار ها
    تاریخ عضویت
    Apr 2011
    نام
    حامد عهدی قراملکی
    نوشته ها
    59
    تشکر
    15
    تشکر شده 14 بار در 11 پست

    پیش فرض مشکل در کانفیگ پین به عنوان ورودی در برد آموزشی

    با سلام خدمت متخصصین عزیز.
    تا اونجایی که میدونم به صورت پیشفرض (هنگام راه اندازی در at91 sam7x2546) کلیه پورت ها در حالت ورودی هستن.
    در برد آموزشی که از سایت خریدم سه تا کلید داره key1 متصل به پایه PA26 هست من با دستور
    *AT91C_PIOA_PDSR & AT91C_PIO_PA26
    میتونم فشرده شدن کلید رو برنامه نویسی کنم.
    حالا میخوام یه کلید دیگه داشته باشم روی پورت PB22 با دستور
    *AT91C_PIOB_PDSR & AT91C_PIO_PB22
    ولی کار نمیکنه.
    مقاومت Pull Up هم سخت افزاری هم نرم افزاری فعال کردم .
    وقتی هم پین PB22 رو خروجی تعریف میکنم میتونم LED روخاموش روشن کنم.
    به نظر شما مشکل چی میتونه باشه؟؟؟!!!

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

  3. #2
    کاربر ارشد 1nafar آواتار ها
    تاریخ عضویت
    Jul 2007
    نوشته ها
    2,745
    تشکر
    1,266
    تشکر شده 4,874 بار در 1,377 پست

    پیش فرض

    سلام
    تا اونجایی که میدونم به صورت پیشفرض (هنگام راه اندازی در at91 sam7x2546) کلیه پورت ها در حالت ورودی هستن.
    در حالت پیش فرض به دلیل غیر فعال بودن کلاک واحد pio کلیه پایه ها در حالت درین باز هستند ( نه ورودی هستند و نه خروجی )
    در برد آموزشی که از سایت خریدم سه تا کلید داره key1 متصل به پایه pa26 هست من با دستور
    *at91c_pioa_pdsr & at91c_pio_pa26
    میتونم فشرده شدن کلید رو برنامه نویسی کنم.
    حالا میخوام یه کلید دیگه داشته باشم روی پورت pb22 با دستور
    *at91c_piob_pdsr & at91c_pio_pb22
    ولی کار نمیکنه.
    مقاومت pull up هم سخت افزاری هم نرم افزاری فعال کردم .
    وقتی هم پین pb22 رو خروجی تعریف میکنم میتونم led روخاموش روشن کنم.
    به نظر شما مشکل چی میتونه باشه
    دلایل مختلفی میتونه داشته باشه و بهتر برنامه ای که نوشتید رو قرار بدید . یکی از مهمترین دلایل عدم غیر فعال کردن کلاک در pmc برای پورت b هست

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


  5. #3
    کاربر علاقه مند myiranmicro آواتار ها
    تاریخ عضویت
    Apr 2011
    نام
    حامد عهدی قراملکی
    نوشته ها
    59
    تشکر
    15
    تشکر شده 14 بار در 11 پست

    پیش فرض نحوه غیر فعال کردن کلاک pmc

    با تشکر از پاسخ شما.
    میشه بگین این کلاک PMC مربوط به پورت B رو با چه دستوری غیر فعال کنم.
    در ضمن این برنامه منه که درست کار میکنه (با فشار دادن و نگه داشتن دکمه ال ای دی روشن و با رها کردنش خاموش میشه)
    کد:
    #include <AT91SAM7X256.H>
    #include <lib_at91sam7x256.h> 
    #include <stdio.h>
    #include <stdint.h>
    #include "tdelay.h"
    #include "string.h"
    #include "ip_arp_udp_tcp.h"
    #include "websrv_help_functions.h"
    #include "enc28j60.h"
    #include "net.h" 
    #include "24C02.h"
    
    
    int main(void) 
    { 
    i2csw_init();
      while(1)
      {
              *AT91C_PIOB_OER  = (1<<19);     // LED1..4 are Outputs
              *AT91C_PIOB_PER  = (1<<19);     // Enable PIO
                        
                    if ((*AT91C_PIOA_PDSR & AT91C_PIO_PA26)==0)
                    {
      
                           *AT91C_PIOB_SODR = (1<<19);      //RED LED ON
                                    }
                           
                    if ((*AT91C_PIOA_PDSR & AT91C_PIO_PA26)!=0)
                    {
                          *AT91C_PIOB_CODR = (1<<19);      //RED LED OFF
                                    
                    }
    
    
      
      }// END WHILE     
    
    }
    ولی این یکی کار نمیکنه
    کد:
      while(1)
      {
              *AT91C_PIOB_OER  = (1<<19);     // LED1..4 are Outputs
              *AT91C_PIOB_PER  = (1<<19);     // Enable PIO
                        
                    if ((*AT91C_PIOB_PDSR & AT91C_PIO_PB22)==0)
                    {
      
                           *AT91C_PIOB_SODR = (1<<19);      //RED LED ON
                                    }
                           
                    if ((*AT91C_PIOB_PDSR & AT91C_PIO_PB22)!=0)
                    {
                          *AT91C_PIOB_CODR = (1<<19);      //RED LED OFF
                                    
                    }
    
      
      }
    ویرایش توسط myiranmicro : 10-10-2013 در ساعت 15:11

  6. #4
    کاربر علاقه مند myiranmicro آواتار ها
    تاریخ عضویت
    Apr 2011
    نام
    حامد عهدی قراملکی
    نوشته ها
    59
    تشکر
    15
    تشکر شده 14 بار در 11 پست

    Icon17 زدین به هدف مهندس

    حدس تون درست بود مهندس.
    زدین به هدف
    من تابع i2csw_init(); رو غیر فعال کردم برنامه از کار افتاد.
    داخل این تابع به دستور زیز رسیدم
    AT91C_BASE_PMC->PMC_PCER = ( 1<<AT91C_ID_PIOA );
    با دستور
    AT91C_BASE_PMC->PMC_PCER = ( 1<<AT91C_ID_PIOB );
    مشکلم حل شد.

    با تشکر فراوان
    ویرایش توسط myiranmicro : 10-10-2013 در ساعت 15:38

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


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

  1. ربات لوله پیما و دیوار پیما!
    توسط رهتازالکترونیک در انجمن اخبار کامپیوتر و IT و مسابقات رباتیک
    پاسخ: 0
    آخرين نوشته: 23-08-2010, 15:21
  2. تاپیک خداحافظی
    توسط morteza_rk در انجمن گفت و گوي آزاد
    پاسخ: 55
    آخرين نوشته: 20-08-2010, 02:41
  3. تاپیک جامع
    توسط sam166 در انجمن پیشنهادات ،انتقاد و نظرات شما در مورد انجمن
    پاسخ: 2
    آخرين نوشته: 30-04-2010, 19:40
  4. LCD کاراکتری با 3 پین
    توسط Morteza_rk در انجمن AVR
    پاسخ: 1
    آخرين نوشته: 15-11-2009, 01:35

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

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