Paso 4: conclusión
Espero que encuentres este código útil para su próximo proyecto que utiliza un codificador rotatorio o que te ha inspirado a considerar un codificador rotatorio como insumo para su próximo proyecto.
Resumen de los objetivos
He intentado escribir algo de código que se consigue un buen equilibrio de:
- Portabilidad (código de manipulación de puerto es el compromiso cuando se mueve a otros chips)
- Velocidad (manipulación puerto realmente ayuda)
- Compilado de bajo tamaño del código (puerto manipulación y bitmath ayuda)
- Registra confiablemente rotación lenta y rápida manual
- Reduce llamadas rutinarias del servicio interrupción pedante (con aumento de interrupción y temporalmente deshabilitar interrupciones)
Salvedades y Ideas para la mejora
Este código no es perfecto por cualquier medio y que te gustaría cambiar para usar otros pines. He probado este código con el bosquejo que estaba causando más demoras y menos confiables lecturas con los otros enfoques discutidos - ciertamente no he comparó con temporizadores para ver cuyo código produce menos rutinas de servicio de interrupción nugatorios, toma menos tiempo para ejecutar o filtra el mayor porcentaje de rebotes de contacto. Tal vez alguien podría como hacer un banco de pruebas contra los otros enfoques por ahí.