اطلاعیه

Collapse
No announcement yet.

کار با تایمر SAM7X

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

    #31
    پاسخ : کار با تایمر SAM7X

    هم گلوبال بود و هم مثل شما تعریف کرده بودم
    نشد
    بخاطر همین از RTT استفاده کردم هر یک ثانیه یکبار اینتراپت میزنه
    و یه تابع نوشتم که هر لحظه خواستم مقدارش رو می خونم

    دیدگاه


      #32
      پاسخ : کار با تایمر SAM7X

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

      دیدگاه


        #33
        پاسخ : کار با تایمر SAM7X

        ببخشید این دستور
        کد:
        AT91F_AIC_AcknowledgeIt(AT91C_BASE_AIC);
        مقدار کدوم رجیستر رو تغییر میده؟من چون با iar کار می کنم هدرم اینو نداره. :biggrin:

        دیدگاه


          #34
          پاسخ : کار با تایمر SAM7X

          نوشته اصلی توسط gizmo89
          ببخشید این دستور
          کد:
          AT91F_AIC_AcknowledgeIt(AT91C_BASE_AIC);
          مقدار کدوم رجیستر رو تغییر میده؟من چون با iar کار می کنم هدرم اینو نداره. :biggrin:
          بفرما
          اینجوریه
          کد:
          AT91C_BASE_AIC->AIC_EOICR = AT91C_BASE_AIC->AIC_EOICR;
          زندگی یعنی امید و حرکت
          کارهایتان را آغاز کنید، توانایی انجام دادنش را بدست خواهید آورد
          سوالاتی که در انجمن قابل طرح شدن هستند در پیام خصوصی جواب داده نمی شود.
          برای تشکر از دکمه تشکر کنار هر پست استفاده کنید، پست هایی که فقط حاوی تشکر هستند پاک می شوند.
          به دلیل کار بر روی پایاننامه و دفاع، مدتی نیستم!

          دیدگاه


            #35
            پاسخ : پاسخ : کار با تایمر SAM7X

            نوشته اصلی توسط علی ایمانی فر
            حالا الان مشکلت حل شده؟
            به اون چیزی که میخاستی رسیدی؟
            اگه نه بگو یه فکری به حالش کنیم و ببینم اگه بتونم کمکت کنم
            آره حل شد و فکر می کنم RTT براش هم مناسب تره
            من یه مدتی رو می خواستم صبر کنم برای انجام کاری ولی میکرو به بقیه کارهاش ادامه بده و وقتی که زمان مورد نظرم سپری شد اون کار انجام بشه

            دیدگاه


              #36
              پاسخ : پاسخ : کار با تایمر SAM7X

              نوشته اصلی توسط علی ایمانی فر
              بفرما
              اینجوریه
              کد:
              AT91C_BASE_AIC->AIC_EOICR = AT91C_BASE_AIC->AIC_EOICR;
              ممنون آقای ایمانی فر،من این رو آخر روتین وقفه تایمر قرار دادم.ولی وقتی دوبار در main تابع رو فرا خوانی میکنم،اولی رو انجام نمیده، و میره یه راست سراغ دومی.مشکل فکر می کنین از کجا باشه؟

              دیدگاه


                #37
                پاسخ : پاسخ : کار با تایمر SAM7X

                نوشته اصلی توسط gizmo89
                ممنون آقای ایمانی فر،من این رو آخر روتین وقفه تایمر قرار دادم.ولی وقتی دوبار در main تابع رو فرا خوانی میکنم،اولی رو انجام نمیده، و میره یه راست سراغ دومی.مشکل فکر می کنین از کجا باشه؟
                منظورتون از فراخوانی چیه؟ چیو فراخوانی میکنی؟ میشه کدتو بزاری ببینم
                زندگی یعنی امید و حرکت
                کارهایتان را آغاز کنید، توانایی انجام دادنش را بدست خواهید آورد
                سوالاتی که در انجمن قابل طرح شدن هستند در پیام خصوصی جواب داده نمی شود.
                برای تشکر از دکمه تشکر کنار هر پست استفاده کنید، پست هایی که فقط حاوی تشکر هستند پاک می شوند.
                به دلیل کار بر روی پایاننامه و دفاع، مدتی نیستم!

                دیدگاه


                  #38
                  پاسخ : پاسخ : پاسخ : کار با تایمر SAM7X

                  نوشته اصلی توسط علی ایمانی فر
                  منظورتون از فراخوانی چیه؟ چیو فراخوانی میکنی؟ میشه کدتو بزاری ببینم
                  پیغام فرستادم

                  دیدگاه


                    #39
                    پاسخ : پاسخ : پاسخ : کار با تایمر SAM7X

                    نوشته اصلی توسط gizmo89
                    پیغام فرستادم
                    وقتی تابع وقفه تعریف کردین آخرش باید __irq رو بزارین
                    مثلا
                    کد:
                    void IRQ1_irq_handler(void) __irq 
                    {
                    	
                    	//printf("AT+CPOWD=1\n");
                    	
                    	//printf("AT+CPOWD=1%c",Enter);
                    	tftlcd_fill(GREEN);
                    	tftlcd_gotoxy(0,7);
                    	tftlcd_putsf("Flag 3",RED,BLUE,1);
                    	
                    	
                    	
                    	AT91F_AIC_AcknowledgeIt(AT91C_BASE_AIC);
                    	
                    	//* get Usart status register
                    	
                    }
                    شما توی تابعی که نوشتین irq__ نزاشتین
                    زندگی یعنی امید و حرکت
                    کارهایتان را آغاز کنید، توانایی انجام دادنش را بدست خواهید آورد
                    سوالاتی که در انجمن قابل طرح شدن هستند در پیام خصوصی جواب داده نمی شود.
                    برای تشکر از دکمه تشکر کنار هر پست استفاده کنید، پست هایی که فقط حاوی تشکر هستند پاک می شوند.
                    به دلیل کار بر روی پایاننامه و دفاع، مدتی نیستم!

                    دیدگاه


                      #40
                      پاسخ : کار با تایمر SAM7X

                      تازه یه چیز دیگه
                      شما آخر تابع وقفه تون این دستور رو هم نزاشتین که
                      کد:
                      AT91C_BASE_AIC->AIC_EOICR = AT91C_BASE_AIC->AIC_EOICR;
                      زندگی یعنی امید و حرکت
                      کارهایتان را آغاز کنید، توانایی انجام دادنش را بدست خواهید آورد
                      سوالاتی که در انجمن قابل طرح شدن هستند در پیام خصوصی جواب داده نمی شود.
                      برای تشکر از دکمه تشکر کنار هر پست استفاده کنید، پست هایی که فقط حاوی تشکر هستند پاک می شوند.
                      به دلیل کار بر روی پایاننامه و دفاع، مدتی نیستم!

                      دیدگاه


                        #41
                        پاسخ : پاسخ : کار با تایمر SAM7X

                        نوشته اصلی توسط علی ایمانی فر
                        تازه یه چیز دیگه
                        شما آخر تابع وقفه تون این دستور رو هم نزاشتین که
                        کد:
                        AT91C_BASE_AIC->AIC_EOICR = AT91C_BASE_AIC->AIC_EOICR;
                        چرا case 0 در واقع جاییه که حرکت تموم میشه ، end of interrupt گذاشتم.--irq چه کار می کنه؟

                        دیدگاه


                          #42
                          پاسخ : پاسخ : کار با تایمر SAM7X

                          نوشته اصلی توسط gizmo89
                          چرا case 0 در واقع جاییه که حرکت تموم میشه ، end of interrupt گذاشتم.--irq چه کار می کنه؟
                          نه
                          حتما باید آخر تابع باشه. همون جایی که تابع تموم میشه. فکر کنم یه جورایی آدرس رو معلوم میکنه
                          شما قبل از بستن آکولاد اون کد رو بزار
                          __irq مشخص میکنه که این تابع برای وقفه هست
                          البته من توی keil استفاده میکنم ولی حتما IAR هم میخاد دیگه
                          زندگی یعنی امید و حرکت
                          کارهایتان را آغاز کنید، توانایی انجام دادنش را بدست خواهید آورد
                          سوالاتی که در انجمن قابل طرح شدن هستند در پیام خصوصی جواب داده نمی شود.
                          برای تشکر از دکمه تشکر کنار هر پست استفاده کنید، پست هایی که فقط حاوی تشکر هستند پاک می شوند.
                          به دلیل کار بر روی پایاننامه و دفاع، مدتی نیستم!

                          دیدگاه


                            #43
                            پاسخ : پاسخ : پاسخ : کار با تایمر SAM7X

                            نوشته اصلی توسط علی ایمانی فر
                            نه
                            حتما باید آخر تابع باشه. همون جایی که تابع تموم میشه. فکر کنم یه جورایی آدرس رو معلوم میکنه
                            شما قبل از بستن آکولاد اون کد رو بزار
                            __irq مشخص میکنه که این تابع برای وقفه هست
                            البته من توی keil استفاده میکنم ولی حتما IAR هم میخاد دیگه
                            eoi رو بردم آخر روتین،بیرون سوییچ ولی باز هم وقتی دوبار صدا میزنم دومی اجرا میشه.یه نگاهی به آخر تابع move اونجا که pimr مقداردهی شده بندازین.اونجا نباید بیت مربوط به اینتراپت رو صفر کنم؟

                            دیدگاه


                              #44
                              پاسخ : پاسخ : پاسخ : کار با تایمر SAM7X

                              نوشته اصلی توسط gizmo89
                              eoi رو بردم آخر روتین،بیرون سوییچ ولی باز هم وقتی دوبار صدا میزنم دومی اجرا میشه.یه نگاهی به آخر تابع move اونجا که pimr مقداردهی شده بندازین.اونجا نباید بیت مربوط به اینتراپت رو صفر کنم؟
                              سلام
                              ببین اون آخرای تابت اینو نوشتی
                              کد:
                               AT91C_BASE_PITC->PITC_PIMR=0x3000BB8;
                              ولی من دیتا شیت رو نگاه کردم فقط 8 بیت کم ارزش imr مقدار میگیره و بقیه بلا استفاده است. بعدشم شما وقفه برای overflow و مقایسه با RC رو میخای پس باید اینو بنویسی
                              کد:
                               AT91C_BASE_PITC->PITC_PIMR=0x0000011;
                              درسته؟
                              در ضمن چرا بالای تابع از 1<<AT91C_ID_SYS استفاده کردی؟
                              باید از این AT91C_ID_TC1 استفاده میکردی برای فعال کردن وقفه تایمر
                              زندگی یعنی امید و حرکت
                              کارهایتان را آغاز کنید، توانایی انجام دادنش را بدست خواهید آورد
                              سوالاتی که در انجمن قابل طرح شدن هستند در پیام خصوصی جواب داده نمی شود.
                              برای تشکر از دکمه تشکر کنار هر پست استفاده کنید، پست هایی که فقط حاوی تشکر هستند پاک می شوند.
                              به دلیل کار بر روی پایاننامه و دفاع، مدتی نیستم!

                              دیدگاه


                                #45
                                پاسخ : پاسخ : پاسخ : پاسخ : کار با تایمر SAM7X

                                نوشته اصلی توسط علی ایمانی فر
                                سلام
                                ببین اون آخرای تابت اینو نوشتی
                                کد:
                                 AT91C_BASE_PITC->PITC_PIMR=0x3000BB8;
                                ولی من دیتا شیت رو نگاه کردم فقط 8 بیت کم ارزش imr مقدار میگیره و بقیه بلا استفاده است. بعدشم شما وقفه برای overflow و مقایسه با RC رو میخای پس باید اینو بنویسی
                                کد:
                                 AT91C_BASE_PITC->PITC_PIMR=0x0000011;
                                درسته؟
                                در ضمن چرا بالای تابع از 1<<AT91C_ID_SYS استفاده کردی؟
                                باید از این AT91C_ID_TC1 استفاده میکردی برای فعال کردن وقفه تایمر
                                نه آخه pit جزو سیستمه،باید وقفه سیستم فعال بشه دیگه!؟
                                بیت 24 مد رجیستر pit، واسه فعال کردن pit و بیت 25 برای فعال کردن وقفه pit هستش.pimr همون pit mode register است.
                                یه تابع delay با pit داشتم از اون استفاده کردم واسه این .منتها اون دیگه وقفه نداشت و فقط به یک دور pit نیاز داشت.فکر کنم اصلا اون خط آخرش زیادی باشه.
                                عجیبه،آخه چرا اولی رو اجرا نمی کنه ،یهو می ره دومی.بر عکسش با عقل بیشتر جور در میاد.

                                دیدگاه

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