Tpm1 error en captura de tiempos de flancos

estoy tratando de capturar loss tiempos del tpm1 por input capture del mc9se8 de flancos ascendente y descendente y las medidas me dan erroneamente ... capturo los pulsos de un control sony y los datos del tpm1cov no concuerdan con los establecidos,,,
utilizo reloj interno 4mhz y los datosleidos del tpm1cov los envio via serial el pc
solamante estoy leyendo el flanco de subida que es el que contiene el valor tpm1cov
al leer el flanco de subida este tpm1cov contiene valor del tiempo entre el flanco de bajada y el de subida,,
lo que se debe visualizar en el hiperterminan deben ser 2400...1200...600 que son los tiempos de los pulsos que demora el start..en 1 y un cero aproximadamente--

MC9SE8SE8

#include <hidef.h> /* for EnableInterrupts macro */
#include "derivative.h" /* include peripheral declarations */
#include <stdio.h>


void interrupt VectorNumber_Vtpm1ch0 ISR_TPM1C0SC_CH0F( void) {

vvv=TPM1C0SC ;
TPM1C0SC_CH0F = 0;
if(PTAD_PTAD6==0){; //flanco de BAJADA


TPM1CNTH=0;
TPM1CNTL=0 ;
T1=0 ;

} else
T2=TPM1C0V ;

}



void main(void) {

/* CONFIGURACION DEL SOPT1
SOPT1_COPT = 00 disable perro guardian copt es desabilitado;
SOPT1_STOPE =0 stop modo desabilitado //( SOPT1 & 0x3F );
SOPT1_TPM1PS=1 Configuración de pin entrada de input capture pta6 canal 0 */
SOPT1= 0B00000100 ;

/*CONFIGURACION DEL TPM1SC
TPM1SC_TOIE =0 No habilitamos interrupciones por overflow
TPM1SC_CPWMS=0 Todo canal input capture
TPM1SC_PS =2 ;PS=2 División 1/4
TPM1SC_CLKSB =0 Frecuencia para modulo bus 4 mhz ;rate clock
TPM1SC_CLKSA =1 Frecuencia para modulo bus 4 mhz ;rate clock */
TPM1SC=0B00001010 ;


/*CONFIGURACION DEL TPM1C0SC
TPM1C0SC_CH0IE=1 Habilitada interrupción por input capture por canal 0
TPM1C0SC_MS0A= 0 Input capture
TPM1C0SC_MS0B= 0 Input capture
TPM1C0SC_ELS0B=1 Captura flanco de subida y bajada
TPM1C0SC_ELS0A=1 Captura flanco de subida y bajada */
TPM1C0SC=0B01001100 ;

serial transmicion
SCIBDH =0X00 ; /* Hardware interrupts from LBKDIF disabled,
Hardware interrupts from RXEDGIF disabled */
SCIBDL =0X1F ; /* When BR = 1 to 8191, the SCI baud rate = BUSCLK/(16×BR).
See also BR bits in */
SCIC1 =0X00 ; /*R:LOL: and T:LOL: use separate pins,USO NORMAL.
Provided LOOPS = 1, RSRC = 0 selects internal loop;
Normal- start + 8 data bits (LSB first) + stop.
No hardware parity generation or checking.Even parity.*/
SCIC2 =0X0C ;/*Hardware interrupts TDRE,TC,RDRF,IDLE disableds.


for(;;) {


asm wait;//modo de bajo consumo

DIEZMIL= T2/10000+48;
AUX= T2%10000;
MIL= AUX/1000+48;
AUX2= AUX%1000;
CENTENAS= AUX2/100+48 ;
AUX3=AUX2%100;

DECENAS = AUX3/10+48;
UNIDADES = AUX3%10+48;

SCID=DIEZMIL;
while(!(SCIS1 &0X80));
SCID=MIL;
while(!(SCIS1 &0X80));
SCID=CENTENAS;
while(!(SCIS1 &0X80));
SCID=DECENAS;
while(!(SCIS1& 0X80));
SCID=UNIDADES ;
while(!(SCIS1& 0X80));


SCID= 10;
while(!(SCIS1& 0X80));
SCID= 13;
while(!(SCIS1& 0X80));
}
}


adjunto datos del
 
sigo con el inconveniente y no se si será problema del reloj interno que es muy impresiso que me da mucho errores al leer el tiempo en el contador ...

cualquier sugerencia gracias
 
Atrás
Arriba