
152
CHAPTER 6
16-BIT TIMER/EVENT COUNTER 0
User’s Manual U12790EJ2V0UD
6.5.3 Two-pulse-width measurement by free-running counter
/******************************************************************************/
/*
*/
/*
Timer 0 operation sample
*/
/*
Two-pulse-width measurement sample by free-running
*/
/*
Measurement results up to 16 bits and not checked for errors
*/
/*
Result area at TI00 side
*/
/*
data[0]: End flag
*/
/*
data[1]: Measurement results (pulse width)
*/
/*
data[2]: Previous read value
*/
/*
Result area at TI01 side
*/
/*
data[3]: End flag
*/
/*
data[4]: Measurement results (pulse width)
*/
/*
data[5]: Previous read value
*/
/*
*/
/******************************************************************************/
#pragma sfr
#pragma EI
#pragma DI
#pragma interrupt INTTM00 intervalint rb2
#pragma interrupt INTTM01 intervalint2 rb2
unsigned int data[6];
/* Data area */
void main(void)
{
unsigned int length,length2;
PCC = 0x0;
/* Set high-speed operation mode */
data[0] = 0;
/* Clear data area */
data[1] = 0;
data[2] = 0;
data[3] = 0;
data[4] = 0;
data[5] = 0;
/* Set port */
PM3.2 = 1;
/* Set P32 as input */
PM3.3 = 1;
/* Set P33 as input */
/* Set interrupt */
TMMK01 = 0;
/* Cancel INTTM01 interrupt mask */
TMMK00 = 0;
/* Cancel INTTM00 interrupt mask */
/* Set timer 0 */
PRM0 = 0b11110010;
/* Both rising and falling edges */
/* Count clock is fx/2^6
*/
CRC0 = 0b00000101;
/* Set CR00 and CR01 to capture register */
TMC0 = 0b00000100;
/* Start in free-run mode */
EI();
while(1){
/* Dummy loop */
if(data[0] != 0)
/* TI00 measurement completion check */
{
TMMK01 = 1;
/* INTTM01 interrupt prohibited for
exclusive operation */
length = data[1];
/* Read measurement results */
data[0] = 0;
/* Clear end flag */
TMMK01 = 0;
/* Exclusive operation completed */
}
if(data[3] != 0)
/* TI01 measurement completion check */
{
TMMK00 = 1;
/* INTTM00 interrupt prohibited for
exclusive operation */
length2 = data[4];
/* Read measurement results */
data[3] = 0;
/* Clear end flag */
TMMK00 = 0;
/* Exclusive operation completed */
}