اطلاعیه

Collapse
No announcement yet.

خواندن موج مربعی با sam7s64

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

    خواندن موج مربعی با sam7s64

    سلام
    من یه قطعه ای دارم که 990 میلی ثانیه خاموش و 10 میلی ثانیه روشن و این رو به صورت 0 و 3 به روی خط قرار میده من این رو وصل کنم به پایه میکرو میکرو میتونه صفر و یک شدن رو بخونه
    به صورت یه کلاک مربعی عمل میکنه

    #2
    پاسخ : خواندن موج مربعی با sam7s64

    نوشته اصلی توسط gbg
    سلام
    من یه قطعه ای دارم که 990 میلی ثانیه خاموش و 10 میلی ثانیه روشن و این رو به صورت 0 و 3 به روی خط قرار میده من این رو وصل کنم به پایه میکرو میکرو میتونه صفر و یک شدن رو بخونه
    به صورت یه کلاک مربعی عمل میکنه
    سلام
    یه مشکلی الان من درست متوجه نشدم که این پستت سوالی هست یا خبری
    ولی فک کنم سوالی هست
    خب باید بگم دو راه داری
    1- یک حلقه while بسازی و توی این حلقه مدام ورودی رو بخونی که این کار خیلی جالب نیست چو میکرو فقط میتونه ورودی رو بخونه و کارای دیگه رو نمیتونه انجام بده
    2- ورودیتو بدی به یکی از وقفه ها و با اونا روی لبه پایین رونده یا بالا رونده و یا هر دو ورودیتو بخونی که خیلی هم کار راحتیه و البته خیلی خیلی بهتر حالت 1
    موفق باشی
    زندگی یعنی امید و حرکت
    کارهایتان را آغاز کنید، توانایی انجام دادنش را بدست خواهید آورد
    سؤالاتی که در انجمن قابل طرح شدن هستند در پیام خصوصی جواب داده نمی شود.
    برای تشکر از دکمه تشکر کنار هر پست استفاده کنید، پست هایی که فقط حاوی تشکر هستند پاک می شوند.
    به دلیل کار بر روی پایاننامه و دفاع، مدتی نیستم!

    دیدگاه


      #3
      پاسخ : خواندن موج مربعی با sam7s64

      سوالی بودش
      من تو برنامه های قبلیم برای خواندن نوشتن از رجیستر استفاده میکردم ولی اینبار از lib_AT91SAM7S64.h استفاده کردم
      مشکل اینجاست که در زمانی که ولتاژ ورودی 3 ولت هستش میکرو عدد یک رو می خونه و وقتی هم که صفر میشه باز میکرو یک رو میخونه
      پول پ داخلی رو فعال کردم

      بعد از main هم

      کد:
      AT91F_PIO_Enable(AT91C_BASE_PIOA,AT91C_PIO_PA8)
      اینو نوشتم

      کد:
       while(1){
       AT91F_PMC_EnablePeriphClock(AT91C_BASE_PMC,1 << AT91C_ID_PIOA);
       AT91F_PIO_CfgInput(AT91C_BASE_PIOA, AT91C_PIO_PA8);
       AT91F_PIO_CfgPullup(AT91C_BASE_PIOA, AT91C_PIO_PA8);
       
       ChanelStatus=AT91F_PIO_GetInput(AT91C_BASE_PIOA);
       AT91F_PMC_DisablePeriphClock(AT91C_BASE_PMC,1 << AT91C_ID_PIOA);
       if((ChanelStatus & 0x08)==0x08) break;
       }

      دیدگاه


        #4
        پاسخ : خواندن موج مربعی با sam7s64

        نوشته اصلی توسط gbg


        کد:
        AT91F_PIO_Enable(AT91C_BASE_PIOA,AT91C_PIO_PA8)
        اینو نوشتم

        کد:
         while(1){
         AT91F_PMC_EnablePeriphClock(AT91C_BASE_PMC,1 << AT91C_ID_PIOA);
        AT91F_PIO_CfgInput(AT91C_BASE_PIOA, AT91C_PIO_PA8);
         AT91F_PIO_CfgPullup(AT91C_BASE_PIOA, AT91C_PIO_PA8);
         
         ChanelStatus=AT91F_PIO_GetInput(AT91C_BASE_PIOA);
         AT91F_PMC_DisablePeriphClock(AT91C_BASE_PMC,1 << AT91C_ID_PIOA);
         if((ChanelStatus & 0x08)==0x08) break;
         }
        مگه PA8 رو نمیخای بخونی؟
        PA8 میشه نهمین پایه پس چرا با 0x08 مقایسه کردیش؟
        باید با 0x0100 چک کنی نه 0x08
        اینجوری میشه
        کد:
        if((ChanelStatus & 0x0100)==1) break;
        زندگی یعنی امید و حرکت
        کارهایتان را آغاز کنید، توانایی انجام دادنش را بدست خواهید آورد
        سؤالاتی که در انجمن قابل طرح شدن هستند در پیام خصوصی جواب داده نمی شود.
        برای تشکر از دکمه تشکر کنار هر پست استفاده کنید، پست هایی که فقط حاوی تشکر هستند پاک می شوند.
        به دلیل کار بر روی پایاننامه و دفاع، مدتی نیستم!

        دیدگاه


          #5
          پاسخ : خواندن موج مربعی با sam7s64

          ای خاک بر سرم با این تبدیل به هگز کردنم :angry:

          ولی فکر کنم اینجوری باید بنویسم

          کد:
          if((ChanelStatus & 0x0100)==0x0100) break;
          حالا چک می کنم جفتش رو

          دیدگاه


            #6
            پاسخ : خواندن موج مربعی با sam7s64

            آقای ایمانی فر دستت درد نکنه درست شد

            اینجوری هم میشد نوشت که درگیر شیفت به چپ و تبدیل به هگز نشد

            کد:
            if((ChanelStatus & AT91C_PIO_PA8)==AT91C_PIO_PA8) break;

            دیدگاه


              #7
              پاسخ : خواندن موج مربعی با sam7s64

              نوشته اصلی توسط gbg
              آقای ایمانی فر دستت درد نکنه درست شد

              اینجوری هم میشد نوشت که درگیر شیفت به چپ و تبدیل به هگز نشد

              کد:
              if((ChanelStatus & AT91C_PIO_PA8)==AT91C_PIO_PA8) break;
              خواهش میکنم
              ولی یه چیزی بگم بهت
              عینه همین کدی رو که نوشتی و گرفتی ورودی رو and کردی با یک مقدار، به صورت تابع داخل خود lib_AT91SAM7S64.h بود
              عیب نداره همیشه پیش میاد از این سوتیا
              من خودم یه هفته هست که یه سوتی بد و مسخره دادم و امروز تازه فهمیدم خندم گرفته . البته یه هفته کلافم کرده بودا :angry:
              موفق باشی :job:
              زندگی یعنی امید و حرکت
              کارهایتان را آغاز کنید، توانایی انجام دادنش را بدست خواهید آورد
              سؤالاتی که در انجمن قابل طرح شدن هستند در پیام خصوصی جواب داده نمی شود.
              برای تشکر از دکمه تشکر کنار هر پست استفاده کنید، پست هایی که فقط حاوی تشکر هستند پاک می شوند.
              به دلیل کار بر روی پایاننامه و دفاع، مدتی نیستم!

              دیدگاه


                #8
                پاسخ : خواندن موج مربعی با sam7s64

                سه روز بود الافش بودم نمیدونم چطور یک رو شیفت دادم 8 بار به جای 256 دوباره به 8 رسیدم
                ولی راحتم کردی بخدا

                دیدگاه

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