4 Replies Latest reply on Mar 9, 2017 11:06 AM by JoMe_264151

    Timer 2.70 no interrupt on terminal count



      I need a one shot 30 sec timer in my project with an interrupt on terminal count. 
      I think the timer component is configured correctly and it works as expected (counts for 30 sec and fires interrupt), when I attach the interrupt component to the "tc" output of the timer. 
      However, if I attach the interrupt component to the "interrupt" output, the interrupt never get fired (the ISR method is never being entered) although the counter counts down to zero and stops counting as expected being a one shot timer. 


      What do I miss? 


      Here is my design (part): https://www.dropbox.com/s/1ndrfp3wzxlobil/one-shot-timer.png?dl=0 
      Here is my timer config: https://www.dropbox.com/s/zx4625z1thdabub/one-shot-timer-conf.png?dl=0 


      Here is my code, attached you will find my test project as well: 


      #include <stdio.h> 
      #include "project.h" 


      void readData(); 
      void logMsg(); 
      static char logMsgLine[255]; 
      static uint8 isr_flag_timer_tc = 0; 


      * Timer ISR 
      CY_ISR( Timer_Int_Handler ) 

      if (Timer_ReadStatusRegister() & Timer_STATUS_TC_INT_MASK) { 
      isr_flag_timer_tc = 1; 

      sprintf(logMsgLine, "Interrupt %d looking for %d\n\r", Timer_ReadStatusRegister(), Timer_STATUS_TC_INT_MASK); 
      logMsg( logMsgLine ); 


      int main(void) 


      CyGlobalIntEnable; /* Enable global interrupts. */ 




      Timer_Int_StartEx( Timer_Int_Handler ); 






      void readData(){ 


      // Start the 30 sec timer 
      isr_flag_timer_tc = 0; // will be set to 1 on tc interrupt 
      Timer_Trigger_Write( 1 ); 


      // loop until 30 sec timer terminal count 
      // do something until 30 sec are over 
      sprintf(logMsgLine, " timer count %d\n\r", Timer_ReadCounter()); 
      logMsg( logMsgLine ); 


      if (isr_flag_timer_tc) { 
      isr_flag_timer_tc = 0; 
      // stop timer 



      * write a message to some terminal/chanel 
      void logMsg(char* msg) 

      UART_UartPutString( msg ); 


      /* [] END OF FILE */