اطلاعیه

Collapse
No announcement yet.

کمک فوری برای راه اندازی وقفه تایمر

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

    کمک فوری برای راه اندازی وقفه تایمر

    با سلام خدمت تمامی دوستان
    چند وقته به راه اندازی وقفه تایمر at91sam7s در نرم افزار keil نیاز پیدا کردم ولی تا به حال موفق نشدم. :read:از دوستان تقاضا دارم کمکم کنند.
    با استفاده از تایمر می خوام فرکانس یک سیگنال رو اندازه بگیرم.(در واقع می خوام زمان پیکهای سیگنال ECG رو تشخیص بدم).اگه میشه راهنماییم کنید. :cry2:

    #2
    پاسخ : کمک فوری برای راه اندازی وقفه تایمر

    سلام
    از کتاب میکروکنترلرهای armسری at91 ترجمه مهندس حامد پور می تونی کمک بگری من با نرم افزار IARکار کردم با KEIL اشنا نیستم ولی کتاب مرجع خوبی میتونی استفاده کنی

    دیدگاه


      #3
      پاسخ : کمک فوری برای راه اندازی وقفه تایمر

      با سلام من یک برنامه برای وقفه نوشتم اگه مشکلی داشتی در خدمتم
      کد:
      #include<AT91SAM7S256.H>
      #include<delay.h>
      #include<lib_AT91SAM7S256.h>
      #include<PIO.H>
      #include<lcd4bit.h>
      void timer0_irq_handler(void)__irq
      {
      lcd_clear();
      delay_s(1);
      lcd_putsf("INTERUPt active timer0");
      delay_s(2);
      lcd_clear();
      AT91C_BASE_AIC->AIC_EOICR = AT91C_BASE_TC0->TC_SR;
      }
      void main()
      {
      lcd_pin(1,0,1,2,3,6,5);
      lcd_clear();
      lcd_putsf("test interupt timer");
      delay_s(4);
      AT91C_BASE_PMC->PMC_PCER=(1<<AT91C_ID_PIOA);  //inable unit clock for pio
      AT91C_BASE_PMC->PMC_PCER=(1<<AT91C_ID_TC0);	 //inable unit clock for timer
      AT91F_PIO_CfgOutput( AT91C_BASE_PIOA, AT91C_PIO_PA0);
      AT91F_PIO_SetOutput(AT91C_BASE_PIOA, AT91C_PIO_PA0);
      AT91C_BASE_TC0->TC_CMR=0X4004;
      AT91C_BASE_TC0->TC_RC=0XFFF2;
      AT91C_BASE_TC0->TC_CCR=0X5;
      AT91C_BASE_AIC->AIC_SVR[AT91C_ID_TC0]=(unsigned int)timer0_irq_handler;
      AT91C_BASE_AIC->AIC_SMR[AT91C_ID_TC0]=0X7;
      AT91C_BASE_AIC->AIC_IVR=0;
      AT91C_BASE_AIC->AIC_ICCR=(1<<AT91C_ID_TC0);
      AT91C_BASE_AIC->AIC_ICCR = (1 << AT91C_ID_TC0);
      AT91C_BASE_TC0->TC_IER=AT91C_TC_CPCS;
      AT91C_BASE_AIC->AIC_IECR=(1<<AT91C_ID_TC0);
      while(1)
      {
      lcd_putsf("loop timer");
      delay_s(1);
      }
      }

      دیدگاه


        #4
        پاسخ : کمک فوری برای راه اندازی وقفه تایمر

        سلام
        این برنامه رو توی کیل نوشتین؟
        پس چرا من جواب نمیگیرم؟

        دیدگاه


          #5
          پاسخ : کمک فوری برای راه اندازی وقفه تایمر

          سلام
          من ی برنامه پیوست کردم برای X256 که از وقفه تایمر استفاده میکنه
          شباهت زیادی دارن سری S و X و میتونی راحت از این برنامه ایده بگیری
          من خودم S ندارم وگرنه تست میکردم برات بهت میدادم
          فایل های پیوست شده
          زندگی یعنی امید و حرکت
          کارهایتان را آغاز کنید، توانایی انجام دادنش را بدست خواهید آورد
          سوالاتی که در انجمن قابل طرح شدن هستند در پیام خصوصی جواب داده نمی شود.
          برای تشکر از دکمه تشکر کنار هر پست استفاده کنید، پست هایی که فقط حاوی تشکر هستند پاک می شوند.
          به دلیل کار بر روی پایاننامه و دفاع، مدتی نیستم!

          دیدگاه


            #6
            پاسخ : کمک فوری برای راه اندازی وقفه تایمر

            یه سوال که داشتم، این بود که هر کاری که میکنم، فقط یک بار میره تو اینتراپت، بعنی برای دفعه دوم دیگه نمیره تو اینتراپت... چه کنم؟

            دیدگاه


              #7
              پاسخ : کمک فوری برای راه اندازی وقفه تایمر

              نوشته اصلی توسط sadegh4PC
              یه سوال که داشتم، این بود که هر کاری که میکنم، فقط یک بار میره تو اینتراپت، بعنی برای دفعه دوم دیگه نمیره تو اینتراپت... چه کنم؟
              ی سری کد انتهای اون مثالی که من گذاشتم نوشته شده. انتهای تابع وقفه. اون کد به خاطر همین چیزی هست که شما گفتی
              کد:
              AT91F_AIC_AcknowledgeIt(AT91C_BASE_AIC);
              البته این تیکه کد برای خروج از روال وقفه هم هستا
              در ضمن باید رجیستر Status تایمر هم توی روال وقفه بخونی وگرنه بازم همین مشکل پیش میاد
              کد:
              Status = AT91C_BASE_TC1->TC_SR;
              	Status = Status;
              زندگی یعنی امید و حرکت
              کارهایتان را آغاز کنید، توانایی انجام دادنش را بدست خواهید آورد
              سوالاتی که در انجمن قابل طرح شدن هستند در پیام خصوصی جواب داده نمی شود.
              برای تشکر از دکمه تشکر کنار هر پست استفاده کنید، پست هایی که فقط حاوی تشکر هستند پاک می شوند.
              به دلیل کار بر روی پایاننامه و دفاع، مدتی نیستم!

              دیدگاه

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