اطلاعیه

Collapse
No announcement yet.

مشکل در خواندن پایه

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

    مشکل در خواندن پایه

    سلام
    یه مشکل جلب دارم

    پول پ پایه رو غیر فعال کرد
    اینقدر منتظر می مونم تا پایه یک بشه با این دستور میخونم (یعنی PDSR رو می خونم) وقتی یک شد بیت مورد نظرم (تو برنامم بیت سوم هست) دوباره ریجیستر رو می خونم با اینکه ولتاژ پایه 3 هست ولی بیت مورد نظرم صفر هستش (همون بیت سوم) بین دو تا خوندن هم سه ثانیه فاصله هستش

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

    نوشته اصلی توسط gbg
    سلام
    یه مشکل جلب دارم

    پول پ پایه رو غیر فعال کرد
    اینقدر منتظر می مونم تا پایه یک بشه با این دستور میخونم (یعنی PDSR رو می خونم) وقتی یک شد بیت مورد نظرم (تو برنامم بیت سوم هست) دوباره ریجیستر رو می خونم با اینکه ولتاژ پایه 3 هست ولی بیت مورد نظرم صفر هستش (همون بیت سوم) بین دو تا خوندن هم سه ثانیه فاصله هستش
    سلام
    واحد PIO یک کلاک داره که باید فعال بشه
    البته برای کنترل خروجی ها نیازی به فعال کردنش نیست ولی برای خوندن ورودی ها حتما باید فعال بشه وگرنه ورودی ها رو نمیخونه
    برای این کار باید کلاک واحد PIO رو از قسمت PMC فعال کنی
    اگر هدر lib_AT91SAM7X256.h رو به برنامت اضافه کنی میتونی از دستور زیر برا فعال کردنش استفاده کنی
    کد:
    AT91F_PMC_EnablePeriphClock(AT91C_BASE_PMC, 1 << AT91C_ID_PIOA);
    این دستور کلاک واحد PIO برای پورت A رو فعال میکنه
    برای پورت B هم به صورت مشابه هست
    برای خوندن ورودی هم باید PDSR رو بخونی
    موفق باشی
    زندگی یعنی امید و حرکت
    کارهایتان را آغاز کنید، توانایی انجام دادنش را بدست خواهید آورد
    سؤالاتی که در انجمن قابل طرح شدن هستند در پیام خصوصی جواب داده نمی شود.
    برای تشکر از دکمه تشکر کنار هر پست استفاده کنید، پست هایی که فقط حاوی تشکر هستند پاک می شوند.
    به دلیل کار بر روی پایاننامه و دفاع، مدتی نیستم!

    دیدگاه


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

      اینو نوشتم
      AT91C_BASE_PMC->PMC_PCER = (1 << AT91C_ID_PIOB);
      من از کتابخانه استفاده نکردم

      پورت B رو با رجیستر PMC_PCER فعال کردم

      دیدگاه


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

        نوشته اصلی توسط gbg
        اینو نوشتم
        AT91C_BASE_PMC->PMC_PCER = (1 << AT91C_ID_PIOB);
        من از کتابخانه استفاده نکردم

        پورت B رو با رجیستر PMC_PCER فعال کردم
        برای تنظیم کردن یه پایه به عنوان خروجی باید از کد زیر استفاده کنی
        کد:
        AT91C_BASE_PIOB->PIO_ODR = AT91C_PIO_PB0; 
        AT91C_BASE_PIOB->PIO_PER = AT91C_PIO_PB0;
        این کد برای پایه 0 از پورت B نوشته شده
        هر دوتا خط رو نوشتی یا نه فقط یکیشو نوشتی؟
        زندگی یعنی امید و حرکت
        کارهایتان را آغاز کنید، توانایی انجام دادنش را بدست خواهید آورد
        سؤالاتی که در انجمن قابل طرح شدن هستند در پیام خصوصی جواب داده نمی شود.
        برای تشکر از دکمه تشکر کنار هر پست استفاده کنید، پست هایی که فقط حاوی تشکر هستند پاک می شوند.
        به دلیل کار بر روی پایاننامه و دفاع، مدتی نیستم!

        دیدگاه


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

          آره نوشتم فقط ترتیبش فرق داره اول رجیستر PIO_PER رو مقدار دادم بعد PIO_ODR که فکر نکنم تاثیر داشته باشه

          دیدگاه


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

            نوشته اصلی توسط gbg
            آره نوشتم فقط ترتیبش فرق داره اول رجیستر PIO_PER رو مقدار دادم بعد PIO_ODR که فکر نکنم تاثیر داشته باشه
            میشه برنامتون رو کامل بزارید . دوباره بگید مشکلش چیه
            شاید بهتر بشه بررسیش کرد
            من الان مشکلی نمیبینم ولی شاید یه ریزه کاری باشه
            اگه برنامه رو کامل بدید شاید بشه یه کاریش کرد
            زندگی یعنی امید و حرکت
            کارهایتان را آغاز کنید، توانایی انجام دادنش را بدست خواهید آورد
            سؤالاتی که در انجمن قابل طرح شدن هستند در پیام خصوصی جواب داده نمی شود.
            برای تشکر از دکمه تشکر کنار هر پست استفاده کنید، پست هایی که فقط حاوی تشکر هستند پاک می شوند.
            به دلیل کار بر روی پایاننامه و دفاع، مدتی نیستم!

            دیدگاه


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

              میشه یکم درباره کدت توضیح بدی
              میخاستم تحلیلش کنم دیدم بس کار مشکلیه :smile:
              یکم توضیح بده قراره چه کار کنه تا دوباره روش کار کنم
              زندگی یعنی امید و حرکت
              کارهایتان را آغاز کنید، توانایی انجام دادنش را بدست خواهید آورد
              سؤالاتی که در انجمن قابل طرح شدن هستند در پیام خصوصی جواب داده نمی شود.
              برای تشکر از دکمه تشکر کنار هر پست استفاده کنید، پست هایی که فقط حاوی تشکر هستند پاک می شوند.
              به دلیل کار بر روی پایاننامه و دفاع، مدتی نیستم!

              دیدگاه


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

                خواستم بگم مشکله درکش ...
                ولی مهم اینه که ببینی تعریف ورودی رو درست انحام دادم و وقتی میخونم بار دوم صفر میخونه در صورتی که پایه هنوز به 2.8 ولت برق خروجی از ترانزیستور وصل هستش؟!

                دیدگاه


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

                  سلام
                  من اینو توی خود کیل دیباگ کردم (رو برد تست نکردما) و فهمیدم یه تابع توی کیل نوشتی به نام ReadKey این تابع باید به صورت زیر بشه البته منم فک میکردم همونی که شما نوشتی درسته ولی نمیدونم چرا اونجوری کار نمیکنه :sad:
                  کد:
                  if(((pKey->PIO_PDSR & KeyIn)== 0x10))
                  در واقع چون پول پ رو فعال کردی باید برنامه شما درست باشه ولی مثله این که نیست و باید برنامه رو تغییرش بدی
                  تغییرش بده تا بازم اگه نشد برسیش کنیم
                  برنامه رو کامل دیباگ کردم همین یه مشکل رو داشت
                  زندگی یعنی امید و حرکت
                  کارهایتان را آغاز کنید، توانایی انجام دادنش را بدست خواهید آورد
                  سؤالاتی که در انجمن قابل طرح شدن هستند در پیام خصوصی جواب داده نمی شود.
                  برای تشکر از دکمه تشکر کنار هر پست استفاده کنید، پست هایی که فقط حاوی تشکر هستند پاک می شوند.
                  به دلیل کار بر روی پایاننامه و دفاع، مدتی نیستم!

                  دیدگاه


                    #10
                    پاسخ : مشکل در خواندن پایه

                    این تیکه درست کار میکنه
                    پول پ داخلی هستش و وقتی فشرده میشه صفر میشه ، موقع شبیه سازی با کیل ، پول پ رو تشخیص نمیده و خودت باید یک کنی رجیستر رو
                    فکر کنم باگ کیل هستش

                    مشکل من اینجا اتفاق میوفته :

                    کد:
                    R=pKey->PIO_PDSR&LOCKSTATUS;
                    تو while اصلی تابع main
                    پایه یک هستش وبار اول یک میخونه k=2 قرار میده و بعدش میره دوباره R رو مقدار دهی میکنه ولی بون اینکه تغییری در پایه ایجاد شده باشه پایه رو صفر میخونه!

                    دیدگاه


                      #11
                      پاسخ : مشکل در خواندن پایه

                      ول پ داخلی هستش و وقتی فشرده میشه صفر میشه ، موقع شبیه سازی با کیل ، پول پ رو تشخیص نمیده و خودت باید یک کنی رجیستر رو
                      اشتباه نکن چون منم همین فکر رو میکردم ولی وقتی دیتا شیت رو خوندم گفته بود پایه هایی که پول پشون فعال باشه بیت مربوطه توی رجیستر PPUSR صفر میشه و اونایی که غیر فعال هستن یک میشن
                      ولی منم فکر میکنم خودش پول پ رو تشخیص نمیده و در عمل پول پ کار میکنه
                      راستی
                      شما LOCKSTATUS رو پول پ نکردی و برای همین باید حتما به صورت خارجی پول دان کنی وگرنه نویز برنامتو خراب میکنه
                      حتما اونو پول دان کن شاید دیگه به مشکل بر نخوری
                      یه مقاومت 10 کیلو خرجشه
                      زندگی یعنی امید و حرکت
                      کارهایتان را آغاز کنید، توانایی انجام دادنش را بدست خواهید آورد
                      سؤالاتی که در انجمن قابل طرح شدن هستند در پیام خصوصی جواب داده نمی شود.
                      برای تشکر از دکمه تشکر کنار هر پست استفاده کنید، پست هایی که فقط حاوی تشکر هستند پاک می شوند.
                      به دلیل کار بر روی پایاننامه و دفاع، مدتی نیستم!

                      دیدگاه


                        #12
                        پاسخ : مشکل در خواندن پایه

                        ممنون باشه اونو هم با یه 10 کیلو پول دان می کنم ببینم چی میشه
                        فعلا که برد دم دستم نیست

                        دیدگاه

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