اطلاعیه

Collapse
No announcement yet.

مشخص کردن پین در برنامه نویسی ARM

Collapse
X
 
  • فیلتر
  • زمان
  • Show
Clear All
new posts

    مشخص کردن پین در برنامه نویسی ARM

    سلام دوستان!
    یه سوال پیش پا افتاده!

    ببینید ما قبلا برای اینکه توی avr یک پین رو مشخص کنیم به صورت زیر عمل میکردیم
    PORTA.5=0
    خوب الان ما با این ترفند میتویم پین مورد نظر را بهش دسترسی داشته باشیم!

    ولی توی ARM چطوریه؟؟! من با LPC1768 کار میکنم!
    مثلا میخوام بهش بگم که اگه فلان پین برابر با 0 بود فلان کار رو انجام بده!
    توجه کنید که من نمیخوام برای یک پین مقدار قرار بدم بلکه میخوام چک کنم ببینم مقدار پین چنده؟؟ برای همین نیاز دارم تا مشخص کنم دقیقا کدوم پین رو میخوام!
    مثلا الان در کد زیر اگه یخوایم توی IF بگیم که اگر پین دوم صفر شد فلان کار رو انجام بده! چطوری میگیم پین دوم؟؟؟

    کد:
    LPC_GPIO2->FIODIR1=0X00;  //KEY
    خیلی ممنون!
    :agree:

    #2
    پاسخ : مشخص کردن پین در برنامه نویسی ARM

    سلام
    کد:
    if(!(LPC_GPIO2->FIOPIN0 & 1<<1))
    اینو امتحان کن.
    یاعلی مدد
    در کشور هاي غربي انتقال تجربيات و دانش به افراد مبتدي يک پيشرفت محسوب شده و به آن مديريت دانش مي گويند. ولي متاسفانه اين فرهنگ هنوز در کشور ايران رايج نشده است !!!

    دیدگاه


      #3
      پاسخ : مشخص کردن پین در برنامه نویسی ARM

      سلام
      خیلی ممنون!

      1) ببینید الان من این کد زیر رو از توی Sample های برد کپی کردم!

      کد:
      if((LPC_GPIO2->FIOPIN & 1<<10) == 0) LPC_GPIO2->FIOSET=1;
      این کد برای اولین کلید برد هست که باهاش LED روشن میشه!
      الان توی این کد که نوشته 10>>1 کدوم پین از پورت منظورشه؟!!

      2) آیا در کد FIODIR0 منظور از 0، هشت پین اول پورت هست؟؟

      خیلی ممنون!

      دیدگاه


        #4
        پاسخ : مشخص کردن پین در برنامه نویسی ARM

        نوشته اصلی توسط dalmif
        سلام
        خیلی ممنون!

        1) ببینید الان من این کد زیر رو از توی Sample های برد کپی کردم!

        کد:
        if((LPC_GPIO2->FIOPIN & 1<<10) == 0) LPC_GPIO2->FIOSET=1;
        این کد برای اولین کلید برد هست که باهاش LED روشن میشه!
        الان توی این کد که نوشته 10>>1 کدوم پین از پورت منظورشه؟!!
        منظور پین 11 هستش . (البته اگه پین ها رو از 1 شماره گذاری کنیم) اما چون تو میکروها از 0 شماره گذاری میشه ، پین 10 مورد نظر هست .

        نوشته اصلی توسط dalmif
        2) آیا در کد FIODIR0 منظور از 0، هشت پین اول پورت هست؟؟
        بله . هشت پین اول مدنظر میباشد .
        یاعلی مدد
        در کشور هاي غربي انتقال تجربيات و دانش به افراد مبتدي يک پيشرفت محسوب شده و به آن مديريت دانش مي گويند. ولي متاسفانه اين فرهنگ هنوز در کشور ايران رايج نشده است !!!

        دیدگاه


          #5
          پاسخ : مشخص کردن پین در برنامه نویسی ARM

          نوشته اصلی توسط sejil
          سلام
          کد:
          if(!(LPC_GPIO2->FIOPIN0 & 1<<1))
          اینو امتحان کن.
          یاعلی مدد
          سلام
          برای مثال
          if((IO0PIN&(1<<11))==0)
          اگر پین یازدهم پورت صفرم برابر با 0 بود فلان کار را انجام بده

          دیدگاه


            #6
            پاسخ : مشخص کردن پین در برنامه نویسی ARM

            نوشته اصلی توسط sejil
            سلام
            کد:
            if(!(LPC_GPIO2->FIOPIN0 & 1<<1))
            اینو امتحان کن.
            یاعلی مدد
            برای مثال
            if((IO0PIN&(1<<11))==0)
            اگر پین یازدهم از پورت صفر برابر صفر بود فلان کار را انجام بده

            دیدگاه


              #7
              پاسخ : مشخص کردن پین در برنامه نویسی ARM

              نوشته اصلی توسط dalmif
              سلام دوستان!
              یه سوال پیش پا افتاده!

              ببینید ما قبلا برای اینکه توی avr یک پین رو مشخص کنیم به صورت زیر عمل میکردیم
              PORTA.5=0
              خوب الان ما با این ترفند میتویم پین مورد نظر را بهش دسترسی داشته باشیم!

              ولی توی ARM چطوریه؟؟! من با LPC1768 کار میکنم!
              مثلا میخوام بهش بگم که اگه فلان پین برابر با 0 بود فلان کار رو انجام بده!
              توجه کنید که من نمیخوام برای یک پین مقدار قرار بدم بلکه میخوام چک کنم ببینم مقدار پین چنده؟؟ برای همین نیاز دارم تا مشخص کنم دقیقا کدوم پین رو میخوام!
              مثلا الان در کد زیر اگه یخوایم توی IF بگیم که اگر پین دوم صفر شد فلان کار رو انجام بده! چطوری میگیم پین دوم؟؟؟

              کد:
              LPC_GPIO2->FIODIR1=0X00;  //KEY
              خیلی ممنون!
              :agree:
              برای مثال
              if((IO0PIN&(1<<11))==0)
              اگر پین یازدهم از پورت صفر برابر صفر بود فلان کار را انجام بده

              دیدگاه


                #8
                پاسخ : مشخص کردن پین در برنامه نویسی ARM

                نوشته اصلی توسط dalmif
                سلام دوستان!
                یه سوال پیش پا افتاده!

                ببینید ما قبلا برای اینکه توی avr یک پین رو مشخص کنیم به صورت زیر عمل میکردیم
                PORTA.5=0
                خوب الان ما با این ترفند میتویم پین مورد نظر را بهش دسترسی داشته باشیم!

                ولی توی ARM چطوریه؟؟! من با LPC1768 کار میکنم!
                مثلا میخوام بهش بگم که اگه فلان پین برابر با 0 بود فلان کار رو انجام بده!
                توجه کنید که من نمیخوام برای یک پین مقدار قرار بدم بلکه میخوام چک کنم ببینم مقدار پین چنده؟؟ برای همین نیاز دارم تا مشخص کنم دقیقا کدوم پین رو میخوام!
                مثلا الان در کد زیر اگه یخوایم توی IF بگیم که اگر پین دوم صفر شد فلان کار رو انجام بده! چطوری میگیم پین دوم؟؟؟

                کد:
                LPC_GPIO2->FIODIR1=0X00;  //KEY
                خیلی ممنون!
                :agree:


                توی آرم شماره پین ها رو با عدد هگز مشخص میکنن مثلا OXOOOOOOO1یعنی پین صفر،اینکه این پین مال کدوم پورت باشه رو توی دستورGPIOمیگیم مثلا GPIO0یاGPIO1.
                اما اینکه توی بعضی دستورها علامت>>میزاره به معنی شیفت دادن یک هست یعنی10>>1 به این معنیه که یک رو ده پین شیفت بده.
                میشه از هر دو روش برای ادرس دادن استفاده کرد. :job:

                دیدگاه


                  #9
                  پاسخ : مشخص کردن پین در برنامه نویسی ARM

                  سعی کن عادت کنی به شیف دادن. چون توی آرم تعداد پینها زیده و مثل AVR هشت بیتی نیست که سریع ذهنی محاسبه بشه.

                  مثلا اگر خواستی پین 31 را مقدار دهی کنی سریع 1 را به اندازه 31 واحد به چپ شیفت بده تا بهش برسی

                  31 >> 1
                  معادل 0x80000000


                  اینها را ببین (پینها همیشه از عدد صفر شروع میشن)
                  0 >> 1 پین صفر
                  1 >> 1 پین یک
                  ..
                  20 >> پین بیست

                  دیدگاه

                  لطفا صبر کنید...
                  X