Picproje Elektronik Sitesi

MİKRODENETLEYİCİLER => ARM => Konuyu başlatan: armsistem - 20 Haziran 2014, 17:41:32

Başlık: lpc23xx timer capture yükselen ve düşen kenar
Gönderen: armsistem - 20 Haziran 2014, 17:41:32
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ı

}