4 votos

Ayuda para entender este código de codificador timer tick

Podría alguien por favor por favor ayudarme a entender el siguiente código. Su funcionamiento en atmega128 @ 16 Mhz. Su lectura de un pulso del codificador. Utiliza el timer3. El codificador CHA está conectado a PIND2 (INT2) que es activa cuando hay una interrupción de bajo a alto. CHB del codificador se conecta a PINE7.

Absolutamente no puedo entender por qué TCNT3 >> 3 en este caso.

3voto

mathewbutler Puntos 479

La mejor opcion que se me ocurre es que el >>3 (dividir por 8) es un intento de evitar que va más allá del tamaño de la variable arraysum. Desde TCNT3 es un contador de 16 bits, si no hay algún tipo de factor de escala, que podría acabar fácilmente con un cubo de basura valor de arraysum.

Dicho esto, el >>3 probablemente no resolver completamente este problema. Creo que dependería de cómo rápidamente el codificador es llegar hilado y de la velocidad de reloj de la mega128. Si cada tick en D2 sucede a ocurrir cuando TCNT3 es muy grande, este algoritmo para la determinación de la velocidad de rotación va a tener problemas.

i-Ciencias.com

I-Ciencias es una comunidad de estudiantes y amantes de la ciencia en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X