Stellaris Interrupt Ayarları

Başlatan fractal, 24 Mart 2013, 21:50:35

fractal

stellaris lm3s serisinde bir türlü pwm interruptı yapamıyorum.amacım uDMA kullanmak.onun için ilk önce pwm interruptı çalıştırayım dedim ama olmadı.netteki bir çok örneği inceledim benim kodlarda aynı ama çalışmıyor...


         

 IntMasterEnable();

    
          PWMGenIntClear(PWM_BASE, PWM_GEN_0, PWM_INT_CNT_ZERO);
          PWMGenIntTrigEnable(PWM_BASE, PWM_GEN_0, PWM_TR_CNT_ZERO);

          PWMIntEnable(PWM_BASE, PWM_INT_GEN_0);

        //  IntEnable(INT_PWM0);

         IntEnable(INT_PWM0_0  );   //PWM_INTEN_INTPWM0

       
Restantum cogniscutur Quantum deligutur

fractal

register lara direkt yazdığımda da çalıştıramadım.ilginç program bir türlü kesme  prorgramına dallanmıyor.derleyicide hata vermiyor.
Restantum cogniscutur Quantum deligutur

z

NVIC'dan da enable etmek gerekiyordur.
Bana e^st de diyebilirsiniz.   www.cncdesigner.com

fractal

interrupt.c ekliyorum.ama #include "inc/hw_nvic.h" ekleyince zaten lm3s5g51.h içindede aynı şeyler var uyarısı veriyor.

nvic de kullandığım register şu;


NVIC_EN0_R |=PWM_INTEN_INTPWM0       0x00000001  // PWM0 Interrupt Enable
NVIC_PEND0_R |=NVIC_PEND0_INT10        0x00000400  // Interrupt 10 pend


bunlar yeterli değilmi?
Restantum cogniscutur Quantum deligutur

fractal

hocam sanırım sorunum şu kesme alt programının ismi.şimdi ben pwm min kesmesini kullanıcam;örnek programlarda
PWM0IntHandler ismini vermişler.ama oraya başka birşeyde yassam oluyor.bence kodlarım doğru sanırım kesme programının ismi yanlış.buraya ne yazmalıyım ve neye göre olmalı.şu vektör adreslri ile ilgili olmalı sanırım..
Restantum cogniscutur Quantum deligutur

z

Şu anda aklımda bir şey yok. Debug etme kaabiliyetini geliştirmen gerekiyor.

Laf olsun diye kendi stratejilerini geliştir. Mesela ilgili ilgisiz interrupt vektörlerinin alayını kendi pwm int rutinine yönlendir.

Böylece pwm interrupt oluştuğunda senin rutinin kesin çalışır.

Daha sonra sırayla vektörleri başka alana kaydırırsın. İlgisiz olanları elersin.

Demek istediğim kendi yaranı kendin sarabilirsin.
Bana e^st de diyebilirsiniz.   www.cncdesigner.com

fractal

#6
interrup vektörlerini araştırıyorum.sanırım bu vektörler startup da tnımlı olması gerekiyor.ben kemse vektörüne nerde nasıl isim vereceğimi ve bunu nerde tanıtacağımı tam olarak cözemedim.
nette böyle bir örnek buldum.uguladım ama çalışmadı...

extern void PWM0IntHandler(void); 


--------------------------------------------
----------------------------------------
//***************************************************************************** 
__attribute__ ((section(".isr_vector"))) 
void (* const g_pfnVectors[])(void) = 

    (void (*)(void))((unsigned long)pulStack + sizeof(pulStack)), 
                                            // The initial stack pointer 
    ResetISR,                               // The reset handler 
    NmiSR,                                  // The NMI handler 
    FaultISR,                               // The hard fault handler 
    IntDefaultHandler,                      // The MPU fault handler 
    IntDefaultHandler,                      // The bus fault handler 
    IntDefaultHandler,                      // The usage fault handler 
    0,                                      // Reserved 
    0,                                      // Reserved 
    0,                                      // Reserved 
    0,                                      // Reserved 
    IntDefaultHandler,                      // SVCall handler 
    IntDefaultHandler,                      // Debug monitor handler 
    0,                                      // Reserved 
    IntDefaultHandler,                      // The PendSV handler 
    SysTickIntHandler,                      // The SysTick handler 
    IntDefaultHandler,                      // GPIO Port A 
    GPIOBIntHandler,                        // GPIO Port B 
    GPIOCIntHandler,                        // GPIO Port C 
    IntDefaultHandler,                      // GPIO Port D 
    IntDefaultHandler,                      // GPIO Port E 
    UART0IntHandler,                        // UART0 Rx and Tx 
    IntDefaultHandler,                      // UART1 Rx and Tx 
    IntDefaultHandler,                      // SSI Rx and Tx 
    IntDefaultHandler,                      // I2C Master and Slave 
    IntDefaultHandler,                      // PWM Fault 
    PWM0IntHandler,                         // PWM Generator 0 
Restantum cogniscutur Quantum deligutur

fractal

Arkadaşlar sorunu çözdüm startup_ccs.c içine şu tanımı yapmamışım.onu yapınca çalıştı..

extern void PWM0IntHandler (void);
Restantum cogniscutur Quantum deligutur