Programacion micro

Espero que podais ayudarme a solucionar mi problema. Resulta, que estoy programando un pic para hacer un pulsómetro. Le meteré los pulsos(TTL) por el puerto b, por interrupciones. Pero ahora no se como hacerlo para contar el tiempo entre un pulso y otro, y poder sacar el periodo. Me ayudais???
Gracias.
 
Puedes utilizar el tmr0 (timer). te lo escribo en pseudocodigo
(ojo es para medir el periodo y no la anchura de pulso, aunque seria similar con algunos cambios)

#interrupcion
guardo el acumulador,banderas y todo lo necesario
duracion = Timer0
pongo el tmr0 = 0
restauro todo
#



#principal

duracion=0


bucle

Si duracion !=0 entonces print(duracion)
medida=duracion;
duracion=0

miro pulsadores ,led y demas cosas


fin





una forma de mejorar el conteo de pulsadores es hacer la mediana
es tan sencillo como

bucle (n<8)
{
mediana=mediana+duracion
}
mediana>>3

Lo sumas y luego lo rotas a la izquierda con un RRL, cada rotacion es una potencia de dos
2,4,8,16,32...por eso cojo 8 datos
En microchip tienen algunas funciones interesantes


Es muy importante conocer el tiempo entre pulsos

Para administrar el TMR, puede ser necesario utilizar argucias para aumentar el numero de bits.
La precision, si con 8 bits te apañas por que complicarse la vida.
El numero de interrupciones por segundo, nos indica el tiempo que nos sobra para otras tareas como mirar pulsadores, pantallas, led cosas no criticas.

Finalmente se trabaja por valores promediados asi se evita el vailoteo de los numeros, se reduce el riesgo de valores erroneos o ruidosas
 
Atrás
Arriba