Yahoo Groups archive

Lpc2000

Index last updated: 2026-04-28 23:31 UTC

Message

Capture pin inconsistencies

2006-02-14 by jase_ko

Hi guys,

We are after a bit of help with the LPC2124.
We are trying to use the capture pin (CAP 0.2) to determine the 
speed of a vehicle based on the number of pulses we receive.

We find that we are getting consistant stray outliers.

Below is the source code we are using and the results we are getting 
to a terminal program.

Any help would be ace.

void main()
{

// init tick timer
  T0MR0 = 0xFFFFFFFF;
  T0MCR = 0x03;						

  // Interrupt and Reset on MR0
  VICVectAddr2 = (unsigned long)IRQTickTimer;	// set interrupt 
vector in 0
  VICVectCntl2 = 0x20 | 4;	// use it for Timer 0 Interrupt
  VICIntEnable |= 0x00000010;	// Enable Timer0 Interrupt

// init capture
  PINSEL1 |= 0x00000003;  // select capture pin on pin 16. (uses 
timer 0)
  T0CCR |= 0x00000040;	  // rising edge active (not falling 
edge)
  T0TCR = 0x00000001;	  // TC and PC are enabled for 
counting
  T0PR = 0x00000000;


// init serial comms
  // Initialise the UART0 serial communications.
  PINSEL0 |= 0x00000005;  // Enable RxD1 and TxD1
  U0LCR = 0x83;		  // 8N1 with DLAB enabled.
  U0DLL = 97;		  // 9600 Baud Rate @ 15MHz VPB Clock
  U0LCR = 0x03;		  // DLAB = 0
  U0FCR = 0xc7;		  // turn on fifo buffer

  // Initialise the UART1 serial communications.
  PINSEL0 |= 0x00050000;  // Enable RxD1 and TxD1
  U1LCR = 0x83;		  // 8N1 with DLAB enabled.
  SetUART1BaudRate();
  U1LCR = 0x03;		  // DLAB = 0


  static unsigned long prevTC = 0;
  unsigned long currTC = T0CR2;
  unsigned long prevTicks = 0;
  // ssv1.speed.ticks is an unsigned long

  while (1)
  {
    currTC = T0CR2;
    if (currTC > prevTC)
    {
      ssv1.speed.ticks = currTC - prevTC;
      prevTC = currTC;
      SerialSendLongInt (ssv1.speed.ticks); SerialSendString ("  ");
      SerialSendLongInt (ssv1.speed.ticks-prevTicks);
      SerialSendString ("\n");
      prevTicks = ssv1.speed.ticks;
    }
  }
}



Printout from the terminal
185078  -6
185085  7
185083  -2
185097  14
185096  -1
185056  -40
370182  185126
185082  -185100
185090  8
185068  -22
185088  20
185080  -8
185077  -3
185096  19
185105  9
185085  -20
185107  22
185108  1
185100  -8
185097  -3
185111  14
185099  -12
185112  13
185087  -25
185074  -13
370156  185082
185089  -185067
185096  7
185058  -38
185114  56
185088  -26
185095  7
185117  22
183515  -1602
371311  187796
555767  184456
185071  -370696
173318  -11753

Attachments

Move to quarantaine

This moves the raw source file on disk only. The archive index is not changed automatically, so you still need to run a manual refresh afterward.