اطلاعیه

Collapse
No announcement yet.

وفقه های sam7

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

    #16
    پاسخ : وفقه های sam7

    با تشکر از شما می شه این codeرو تو یه فایل zip بذارید تا بتونم کامپایل کنم شاید مشکل از کامپایلر باشه
    من که دیگه درمونده شدم

    دیدگاه


      #17
      پاسخ : وفقه های sam7

      یه چند روزی سخت امتحان دارم . انشا الله تا 3 روزه دیکه دوباره در خدمتون هستم .

      دیدگاه


        #18
        پاسخ : وفقه های sam7

        اقا مهدی این فایل هدر"include# "lib_AT91SAM7S64.h اینجا چه کارست این که مال مثال های iar هست!
        شما از توابع این هدر استفاده کردید؟

        دیدگاه


          #19
          پاسخ : وفقه های sam7

          اقا مشکل ما حل شد :wow:
          من برنامه ای که واسه irq1 نوشته بودم از مثال های atmel گرفته بودم و از توابع اون که فقط یکبار وقفه اجرا می شد هنوز نفهمیدم چرا ؟؟؟؟
          ولی وقتی برنامه رو به شکل برنامه timer شما نوشتم کار کرد !!!! راستی شما این جور نوشتن رو از کجا یادگرفتید؟
          یکی از تغییرات اساسی اضافه کردن __irq بود وقتی نبود تابع روتین وقفه فقط یه بار اجرا می شد شما میدونید چرا؟
          بازم از کمکتون ممنون موفق باشید خصوصا تو امتحان ها

          دیدگاه


            #20
            پاسخ : وفقه های sam7

            خوشحالم که مشکلتون حل شد .راستش یه چند روزی بد سرم شلوغه انشاالله بعدش بیشتر روی اینکه چرا کار نمی کرد قبلا با هم بحث می کنیم .

            دیدگاه


              #21
              پاسخ : وفقه های sam7

              کسی در مورد NESTING INTERRUPTS اطلاعی داره
              من اینو پیدا کردم اما هیچی نفهمیدم
              http://www.keil.com/support/docs/2910.htm

              دیدگاه


                #22
                پاسخ : وفقه های sam7

                سلام اقا مهدی
                خیلی ممنون از بابت نمونه کدی که قرار دادی چند تا سوال داشتم خواهش می کنم جواب بدید
                1-برای یک تایمر ممکن است در یک زمان چند وقفه تعریف شود مثل اور فلو و برابری با مقدار خاصی و ... اینها چگونه تنظیم می شوند یا برای یوزارت وقفه دریافت و ارسال توام برای یک واحد فعال می شوند
                2-چگونه از پایه های معمولی نه پایه های irq برای وقفه استفاده کنیم
                ممنون
                www.tehranelec.com

                دیدگاه


                  #23
                  پاسخ : وفقه های sam7

                  سلام
                  برنامه زیر اینتراپت PA.15 رو فعال میکنه که حساس به لبه بالارونده از صفر به یک میباشد به این صورت که اگر قبل از اتصال تغذیه به میکرو PA.15 رو گراند کنیم، با اتصال تغذیه، برنامه main اجرا شده و led متصل به PB.21 شروع به چشمک زدن میکند و در صورتیکه PA.15 رو از GND جدا کنیم برنامه وقفه اجرا میشود و led متصل به PB.19 به مدت 5 ثانیه روشن میشود و سپس خاموش میشود. اما مشکل اینجا است که روتین اینتراپت فقط یکبار اجرا میشود. و مشکل احتمالا در زیربرنامه وقفه میباشد و باید به رجیستر های AIC_EOICR و AIC_ICCR مقادیر مناسب رو اختصاص داد. در هر صورت آیا کسی میتونه مشکل این برنامه رو حل کنه؟


                  #include "AT91SAM7X256.h"
                  #include "lib_AT91SAM7X256.h"
                  #include "delay.h"
                  //*************************interrupt rutine********************
                  void isr_pi_ob (void)
                  {

                  AT91F_PIO_SetOutput (AT91C_BASE_PIOB, AT91C_PIO_PB19);
                  delay_s(5);
                  AT91F_PIO_ClearOutput(AT91C_BASE_PIOB, AT91C_PIO_PB19);

                  //AT91C_BASE_AIC->AIC_EOICR = AT91C_BASE_TC1->TC_SR;

                  //AT91C_BASE_AIC->AIC_ICCR = (1 << AT91C_ID_TC1); /* Interrupt Ack*/

                  *AT91C_AIC_EOICR = 0; /* End of Interrupt*/
                  }
                  //****************************************8
                  main(void){

                  // Setup interrupts
                  AT91F_AIC_ConfigureIt(AT91C_BASE_AIC, AT91C_ID_PIOA, AT91C_AIC_PRIOR_LOWEST, 0, isr_pi_ob);
                  AT91F_AIC_EnableIt(AT91C_BASE_AIC, AT91C_ID_PIOA);

                  // Setup PIO
                  AT91F_PMC_EnablePeriphClock(AT91C_BASE_PMC, 1 << AT91C_ID_PIOA); // Enable clock
                  AT91F_PMC_EnablePeriphClock(AT91C_BASE_PMC, 1 << AT91C_ID_PIOB); // Enable clock
                  AT91F_PIO_CfgInput(AT91C_BASE_PIOA, AT91C_PIO_PA15); // Input on PA15
                  AT91F_PIO_InterruptEnable(AT91C_BASE_PIOA, AT91C_PIO_PA15); // Interrupt on PA15


                  AT91F_PIO_CfgOutput(AT91C_BASE_PIOB, AT91C_PIO_PB19);
                  AT91F_PIO_CfgOutput(AT91C_BASE_PIOB, AT91C_PIO_PB21);
                  AT91F_PIO_ClearOutput(AT91C_BASE_PIOB, AT91C_PIO_PB21);
                  while(1){

                  AT91F_PIO_ClearOutput(AT91C_BASE_PIOB, AT91C_PIO_PB21);
                  delay_s(1);
                  AT91F_PIO_SetOutput (AT91C_BASE_PIOB, AT91C_PIO_PB21);
                  delay_s(1);
                  }
                  }

                  دیدگاه

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