lpc23xx timer capture yükselen ve düşen kenar

Başlatan armsistem, 20 Haziran 2014, 17:41:32

armsistem

Arkadaşlar merhaba lpc23xx timer capture öğrenmeye çalışıyorum , bir butona 1 saniye basıldı yani lojik 0 oldu sonra 2 saniye bırakıldı sonra tekrardan devam edildi ,yukarıdaki işlem için yükselen ve düşen kenarları yakalamam gerekiyor. Yükselen kenarı yakalayabiliyorum fakat düşen kenarda nasıl bir işlem yapmam gerekiyor. Aşağıdaki kodlarda yükselen kenarı yakalıyorum lojik 1 , lojik 0 daki süreyi nasıl ölçebilirim.


void init_timer ( void ) 
{
     PINSEL3 |= 0x00300000;    
      PCONP = (PCONP & 0xFFE87FDE) | (1UL<<1);   
	 	 T0TCR = 0x02;		   // timer control durduruldu
	     T0PR = 12;     // ön bölücü kristal değeri
    	T0CCR = 0x0005;    		  //101
         T0TCR = 0x01;    	   // timer control başlatıldı
	   VICVectAddr4 = (unsigned long) TIMER0_IRQHandler;           /* set interrupt vector 4 */
   VICVectPriority4 = 15 ;           /* default priority is 15 (lowest), can be set between 0-15 */
   VICIntEnable |= (1UL<<4);           /* Enable TIMER0 Interrupt */  
}


  void TIMER0_IRQHandler (void) __irq 
{  
value=T0CR0; // read the capture value
T0IR = (0x00);   /* Clear CAP0.0 interrupt flag */
T0IR = (1UL<<4);   /* Clear CAP0.0 interrupt flag */
T0IR = (1UL<<5);   /* Clear CAP0.1 interrupt flag */
VICVectAddr = 0;     /* Acknowledge Interrupt */
// interrupt

   sprintf(str,"%d",value);
   u1_string_gonder("logic 1 -");
	    u1_string_gonder(str);
   u1_string_gonder("\n");  
  	 T0TCR = 0x02;		   // timer control durduruldu
         T0TCR = 0x01;    	   // timer control başlatıldı

}