اطلاعیه

Collapse
No announcement yet.

مشکل با اینتراپت تایمر 0

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

    #16
    پاسخ : مشکل با اینتراپت تایمر 0

    نوشته اصلی توسط fedora
    مشکل به نظر من از بوت لودر. بچ هایی که با jtag پروگرمر کردن این مشکل نداشتن. چون برنامه ای به سادگی مشکل نداره. تو چند تا رفرنسم دیدم درست بود برنامه. چاره ای نیست بالاخره باید یه پروگرمر jtag هم بخریم !!!
    سلام
    بله بوت لودر کار راه بندازه برا کسی که فقط می خواهد فقط چند بار برنامه بریزه و والسلام
    پروگرام ساده و کم هزینه با فلاش مجیک که با پورت سریال انجام میشه که ساده ترین کار برای سخت افزارش اگر در روی برد ندارد یا لب تاب دارید اینه که یه mini programer بگیرید و استفاده کنید
    اگر می خواهید دیباگ هم بکنید جیلینگ دیگه شک نکنید لازمه و راحت
    فیلم آموزشی میکروکنترلر LPC1768
    فیلم آموزشی تکمیلی و پیشرفته میکروکنترلر LPC1768
    فیلم آموزش کاربردی زبان سی در میکروکنترلر ARM
    فیلم آموزش مقدماتی میکروکنترلر LPC1788 به زودی ...

    دیدگاه


      #17
      پاسخ : مشکل با اینتراپت تایمر 0

      درسته حق با شماست. متاسفانه همین بوت لودر منو از 1343 سرخورده کرد. در واقع میکروی خوبی بود. ولی با بوت لودر خیلی از برنامه هاش مث SSP یا Timer Interrupt یا حتی EXTINT جواب نمیداد. یه چند تا برنامه مث lcd کاراکتری یا سریالش جواب میداد.

      دیدگاه


        #18
        پاسخ : مشکل با اینتراپت تایمر 0

        با سلام
        من از کمپایلر IAR استفاده می کنم .
        با JLINK که برنامه رو تست می کنم وقتی اینتراپت تایمر اتفاق می افته برنامه در تابع STARTUP.S در خط
        B Default_Handler
        می مونه و اصلا جلو نمی ره نمی تونید بهم کمک کنید ؟

        دیدگاه


          #19
          پاسخ : مشکل با اینتراپت تایمر 0

          البته من در همان برنامه با اینتراپت پورت سریال مشکلی ندارم و به راحتی کار می کند ( دریافت)
          تنظیمات تایمر هم به شرح ذیل است:
          کد:
           PCONP|= (1<<1);
            PCLKSEL0 |= (1<<2);
            T0TC=0;
             T0TCR     = 1;        // reset timer
             //  LPC_TIM0->MR0     = 3124;     
             // LPC_TIM0->MCR     = 3;
           T0PR=0X0000FFFF;
           T0MR0=0x000FFFFF;
           //T0MR0=0 ;
           T0MCR=0x00000003;
           // T0TCR=1;
            NVIC_EnableIRQ(TIMER0_IRQn);
          وکل فایل SATRTUP.S:
          کد:
          /**************************************************
           *
           * Part one of the system initialization code, contains low-level
           * initialization, plain thumb variant.
           *
           * Copyright 2011 IAR Systems. All rights reserved.
           *
           * $Revision: 47021 $
           *
           **************************************************/
          
          ;
          ; The modules in this file are included in the libraries, and may be replaced
          ; by any user-defined modules that define the PUBLIC symbol _program_start or
          ; a user defined start symbol.
          ; To override the cstartup defined in the library, simply add your modified
          ; version to the workbench project.
          ;
          ; The vector table is normally located at address 0.
          ; When debugging in RAM, it can be located in RAM, aligned to at least 2^6.
          ; The name "__vector_table" has special meaning for C-SPY:
          ; it is where the SP start value is found, and the NVIC vector
          ; table register (VTOR) is initialized to this address if != 0.
          ;
          ; Cortex-M version
          ;
          
              MODULE ?cstartup
          
              ;; Forward declaration of sections.
              SECTION CSTACK:DATA:NOROOT(3)
          
              SECTION .intvec:CODE:NOROOT(2)
          
              EXTERN __iar_program_start
              PUBLIC __vector_table
              PUBLIC __vector_table_0x1c
          
              DATA
          __vector_table
              DCD   sfe(CSTACK)         ; Top of Stack
              DCD   __iar_program_start     ; Reset Handler
              DCD   NMI_Handler         ; NMI Handler
              DCD   HardFault_Handler      ; Hard Fault Handler
              DCD   MemManage_Handler      ; MPU Fault Handler
              DCD   BusFault_Handler      ; Bus Fault Handler
              DCD   UsageFault_Handler     ; Usage Fault Handler
          __vector_table_0x1c
              DCD   0              ; Reserved
              DCD   0              ; Reserved
              DCD   0              ; Reserved
              DCD   0              ; Reserved
              DCD   SVC_Handler         ; SVCall Handler
              DCD   DebugMon_Handler      ; Debug Monitor Handler
              DCD   0              ; Reserved
              DCD   PendSV_Handler       ; PendSV Handler
              DCD   SysTick_Handler       ; SysTick Handler
              DCD   WDT_IRQHandler       ; Watchdog Handler
              DCD   TMR0_IRQHandler       ; TIMER0 Handler
              DCD   TMR1_IRQHandler       ; TIMER1 Handler
              DCD   TMR2_IRQHandler       ; TIMER2 Handler
              DCD   TMR3_IRQHandler       ; TIMER3 Handler
              DCD   UART0_IRQHandler      ; UART0 Handler
              DCD   UART1_IRQHandler      ; UART1 Handler
              DCD   UART2_IRQHandler      ; UART2 Handler
              DCD   UART3_IRQHandler      ; UART3 Handler
              DCD   PWM1_IRQHandler       ; PWM1 Handler
              DCD   I2C0_IRQHandler       ; I2C0 Handler
              DCD   I2C1_IRQHandler       ; I2C1 Handler
              DCD   I2C2_IRQHandler       ; I2C2 Handler
              DCD   SPI_IRQHandler       ; SPI Handler
              DCD   SSP0_IRQHandler       ; SSP0 Handler
              DCD   SSP1_IRQHandler       ; SSP1 Handler
              DCD   PLL0_IRQHandler       ; PLL0 Handler
              DCD   RTC_IRQHandler       ; RTC Handler
              DCD   EINT0_IRQHandler      ; EXT Interupt 0 Handler
              DCD   EINT1_IRQHandler      ; EXT Interupt 1 Handler
              DCD   EINT2_IRQHandler      ; EXT Interupt 2 Handler
              DCD   EINT3_IRQHandler      ; EXT Interupt 3 Handler
              DCD   ADC_IRQHandler       ; ADC Handler
              DCD   BOD_IRQHandler       ; BOD Handler
              DCD   USB_IRQHandler       ; USB Handler
              DCD   CAN_IRQHandler       ; CAN Handler
              DCD   GPDMA_IRQHandler      ; General Purpose DMA Handler
              DCD   I2S_IRQHandler       ; I2S Handler
              DCD   Ethernet_IRQHandler     ; Ethernet Handler
              DCD   RIT_IRQHandler       ; Repetitive Interrupt Timer Handler
              DCD   MotorControlPWM_IRQHandler ; Motor Control PWM Handler
              DCD   QE_IRQHandler        ; Quadrature Encoder Handler
              DCD   PLL1_IRQHandler       ; PLL1 Handler
              DCD			USBActivity_IRQHandler	 	; USB Activity Interrupt
              DCD			CANActivity_IRQHandler	 	; CAN Activity Interrupt
          
          ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
          ;;
          ;; Default interrupt handlers.
          ;;
          
             PUBWEAK NMI_Handler
             PUBWEAK HardFault_Handler
             PUBWEAK MemManage_Handler
             PUBWEAK BusFault_Handler
             PUBWEAK UsageFault_Handler
             PUBWEAK SVC_Handler
             PUBWEAK DebugMon_Handler
             PUBWEAK PendSV_Handler
             PUBWEAK SysTick_Handler
             PUBWEAK WDT_IRQHandler
             PUBWEAK TMR0_IRQHandler
             PUBWEAK TMR1_IRQHandler
             PUBWEAK TMR2_IRQHandler
             PUBWEAK TMR3_IRQHandler
             PUBWEAK UART0_IRQHandler
             PUBWEAK UART1_IRQHandler
             PUBWEAK UART2_IRQHandler
             PUBWEAK UART3_IRQHandler
             PUBWEAK PWM1_IRQHandler
             PUBWEAK I2C0_IRQHandler
             PUBWEAK I2C1_IRQHandler
             PUBWEAK I2C2_IRQHandler
             PUBWEAK SPI_IRQHandler
             PUBWEAK SSP0_IRQHandler
             PUBWEAK SSP1_IRQHandler
             PUBWEAK PLL0_IRQHandler
             PUBWEAK RTC_IRQHandler
             PUBWEAK EINT0_IRQHandler
             PUBWEAK EINT1_IRQHandler
             PUBWEAK EINT2_IRQHandler
             PUBWEAK EINT3_IRQHandler
             PUBWEAK ADC_IRQHandler
             PUBWEAK BOD_IRQHandler
             PUBWEAK USB_IRQHandler
             PUBWEAK CAN_IRQHandler
             PUBWEAK GPDMA_IRQHandler
             PUBWEAK I2S_IRQHandler
             PUBWEAK Ethernet_IRQHandler
             PUBWEAK RIT_IRQHandler
             PUBWEAK MotorControlPWM_IRQHandler
             PUBWEAK QE_IRQHandler
             PUBWEAK PLL1_IRQHandler
             PUBWEAK	USBActivity_IRQHandler
             PUBWEAK	CANActivity_IRQHandler
          
              SECTION .text:CODE:REORDER(1)
              THUMB
          NMI_Handler
          HardFault_Handler
          MemManage_Handler
          BusFault_Handler
          UsageFault_Handler
          SVC_Handler
          DebugMon_Handler
          PendSV_Handler
          SysTick_Handler
          WDT_IRQHandler
          TMR0_IRQHandler
          TMR1_IRQHandler
          TMR2_IRQHandler
          TMR3_IRQHandler
          UART0_IRQHandler
          UART1_IRQHandler
          UART2_IRQHandler
          UART3_IRQHandler
          PWM1_IRQHandler
          I2C0_IRQHandler
          I2C1_IRQHandler
          I2C2_IRQHandler
          SPI_IRQHandler
          SSP0_IRQHandler
          SSP1_IRQHandler
          PLL0_IRQHandler
          RTC_IRQHandler
          EINT0_IRQHandler
          EINT1_IRQHandler
          EINT2_IRQHandler
          EINT3_IRQHandler
          ADC_IRQHandler
          BOD_IRQHandler
          USB_IRQHandler
          CAN_IRQHandler
          GPDMA_IRQHandler
          I2S_IRQHandler
          Ethernet_IRQHandler
          RIT_IRQHandler
          MotorControlPWM_IRQHandler
          QE_IRQHandler
          PLL1_IRQHandler
          USBActivity_IRQHandler
          CANActivity_IRQHandler
          Default_Handler
             B Default_Handler
          
              SECTION .crp:CODE:ROOT(2)
              DATA
          /* Code Read Protection
          CRP1  0x12345678 - Write to RAM command can not access RAM below 0x10000200.
                    - Read Memory command: disabled.
                    - Copy RAM to Flash command: cannot write to Sector 0.
                    - "Go" command: disabled.
                    - Erase sector(s) command: can erase any individual sector except
                    	 sector 0 only, or can erase all sectors at once.
                    - Compare command: disabled
          CRP2  0x87654321 - Write to RAM command: disabled.
                    - Copy RAM to Flash: disabled.
                    - Erase command: only allows erase of all sectors.
          CRP3  0x43218765 - Access to chip via the SWD pins is disabled. ISP entry
                     by pulling PIO0_1 LOW is disabled if a valid user code is
                     present in flash sector 0.
          Caution: If CRP3 is selected, no future factory testing can be
          performed on the device.
          
          */
          	DCD	0xFFFFFFFF
          
              END
          برنامه بعد از اینکه تایمر اینتراپت داد به خط B Default_Handler می رود و آنجا می ماند

          دیدگاه


            #20
            پاسخ : مشکل با اینتراپت تایمر 0

            تو صفحه یک بچه ها توضیح دادن، باید یه خط از فایل استارت پ رو حذف کنید. منم مث شما وقفه تایمر رو جواب نگرفتم ولی بقیه وقفه ها رو جواب گرفتم.

            دیدگاه


              #21
              پاسخ : مشکل با اینتراپت تایمر 0

              آخه اصلا فایل STARTUP.S ایشون شباهتی با فایلی که من دارم و گذاشتم نداره اون خط رو هم اصلا در فایل خودم پیدا نکردم که کجاست !
              من سایر تایمر ها رو امتحان نکردم بذار ببینم بقیه هم همینطوری هستند .

              دیدگاه


                #22
                پاسخ : مشکل با اینتراپت تایمر 0

                من تست کردم با تایمر 1 هم همین مشکل وجود دارد .
                البته من با iar کار می کنم
                اگر کسی با iar تونسته اینتراپت تایمر راه بندازه لطفا راهنمایی کنه .

                دیدگاه


                  #23
                  پاسخ : مشکل با اینتراپت تایمر 0

                  شما از چه پروگرمری استفاده می کنید؟

                  دیدگاه


                    #24
                    پاسخ : مشکل با اینتراپت تایمر 0

                    دیباگر jlink

                    عکسش رو هم هر کاری می کنم نمیاد لینکش رو می ذارم ببینید :

                    http://uplod.ir/4rs01crwj055/B_.jpg.htm

                    دیدگاه


                      #25
                      پاسخ : مشکل با اینتراپت تایمر 0

                      من با کیل کار می کنم. ولی پروگرمر جی لینک ندارم و از بوت لودر استفاده می کنم. ولی بچه هایی که با کیل کار می کنن و جی لینک دارن، وقفه های تایمر رو جواب گرفته بودن. تو این یه مورد با کیل کار کنین. گرچه چیزی از IAR کم نداره.

                      دیدگاه


                        #26
                        پاسخ : مشکل با اینتراپت تایمر 0

                        آقا مشکل رو پیدا کردم
                        خیلی مسخره بود
                        نام تابع اینتراپت در فایل startup.s با نام واقعی آن در برنامه فرق داشت و چون این اسم را استارت پ پیدا نمی کرد بدون آنکه error یا warning بدهد در زمان کمپایل شدن ، در زمان اجرا در فایل استارت پ می ماند و واقعا اسم ایندو خیلی به هم شبیه بود و من 100 ها بار نگاه کرده بودم و متوجه نشده بودم .
                        من توی فایل استارت پ :
                        TMR0_IRQHandler
                        TMR1_IRQHandler
                        TMR2_IRQHandler
                        TMR3_IRQHandler
                        نوشته بودم در حالیکه در برنامه :
                        void TIMER0_IRQHandler (void)

                        دیدگاه


                          #27
                          پاسخ : مشکل با اینتراپت تایمر 0

                          حالا یک موضوع دیگه من می خوام وسط برنامه سرعت تایمر رو تغییر بدم و در نتیجه اون ، اینتراپتهای که می خوره سریعتر یا کند تر بشه .
                          کدی که استفاده می کنم برای اینکار دقیقا شبیه به موقع شروه به کار اولیه است :
                          کد:
                            LPC_TIM1->TCR = 0;
                             LPC_TIM1->MR0 = TimerInterval;
                          	LPC_TIM1->MCR = 3;				/* Interrupt and Reset on MR1 */
                          
                          	NVIC_EnableIRQ(TIMER1_IRQn);
                          
                              LPC_TIM1->TCR = 1;
                          ولی بعضی مواقع با اینکار تایمر کار می کند ولی تا چند دقیقه اصلا اینتراپت نمی دهد .
                          h البته این زمان بین 5 تا 10 دقیقه است و بعد از اون با تنظیمات جدید اینتراپت می دهد و کار می می کند

                          دیدگاه


                            #28
                            پاسخ : مشکل با اینتراپت تایمر 0

                            برای اینکه زمان اینتراپت تایمر رو تغییر بدی منطقش اینه که تایمرو ریست کنی یعنی TCR صفر کنی بعد مقدار جدید MRx توش لود کنی و بعد از فراخوانی اینتراپت تایمرو روشن کنی.

                            توصیه من اینه که اول تایمرو خاموش کنین و سپس مراحل بالا رو دنبال کنین.
                            کد:
                            TCR = 3

                            دیدگاه


                              #29
                              پاسخ : مشکل با اینتراپت تایمر 0

                              آقا دست شما درد نکنه
                              در مورد DMA اگه اطلاعاتی دارید لطفا به من بدهید .
                              من می خوام از اینتراپت پورت سریال اون استفاده کنم به این شرط که وقتی دریافت تمام شد و مثلا 100 بایت دریافت کرد به من اینتراپت بده و دیتاها رو دونه به دونه بریزه توی یک بافر .
                              اصولا نمی دونم این اینتراپت DMA چه زمانی رخ می دهد :
                              کد:
                              void DMA_IRQHandler(void)
                              ممنونم

                              دیدگاه


                                #30
                                پاسخ : مشکل با اینتراپت تایمر 0

                                اتفاقا مدتی DMA ذهنم مشغول کرده، ولی نکته زیاد داره و خیلی باید تو آرم حرفه ای شده باشیم که باهاش کار کنیم. البته غول نیست ! ولی نتیجه گرفتم نتیجش میذارم تو همین تاپیک.

                                دیدگاه

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