Paso 4: Implementación de código abierto I2C ATTiny USI - Resumen
Para este prefacio, la tabla que se muestra en la imagen principal de este paso es un regulador del motor personalizado paso a paso unipolar que diseñé como parte de mi proyecto esta primavera. La Junta es capaz de controlar un motor paso a paso unipolar solo con PWM, velocidad variable y tres modos de escalonamiento (single-stepping, poder caminar y caminar por el medio). También opera en ráfagas, como el controlador sólo ejecutará el motor para el número determinado de pasos. Para un funcionamiento continuo, el contador de paso a paso debe ser recargado por lo que está impulsando la junta antes de que llegue a cero. Nada de esto es importante para el tutorial.
Lo importante aquí es que el robot estos poder tableros tiene tres ruedas (las ruedas omnidireccionales, dispuestas en un patrón triangular). Quería construir tres tableros idénticos pero sólo utilizar una única interfaz serial RS-232 de la computadora principal del robot (una laptop) para el control de los tres. La idea que se me ocurrió fue utilizar el puerto serie para la interfaz de la computadora y el bus I2C para conectar todos los tableros de tres. En esta configuración, la placa conectada a la PC toma la función de maestro además de ser un nodo esclavo. La PC envía que I2C mensajes en el bus de las tres juntas operar sobre el formato.
Para esta tarea, mi consejos tendría que apoyar modos tanto I2C, siendo capaces de funcionar como un esclavo y un amo dependiendo de las operaciones del puerto serie. Sabiendo muy poco sobre el hardware de la USI y sólo un poco más sobre el protocolo I2C en general, set para dominar el protocolo I2C, para hacerlo mi esclavo y mando a mi las transmisiones de datos. Y que lo hice, y funcionó bien para el proyecto.
Todo hasta que me dieron mi frambuesa Pi por lo menos, porque cuando finalmente consiguió alrededor a jugar con la IP, he intentado conectar mi I2C motor placas al puerto I2C en un intento de tener un robot Pi-powered. Por desgracia, no importa qué comandos me envió, el Pi podría no lograrás comunicación. Ya que nunca había validado mi protocolo más allá de mi propio código maestro hablando con mi propio código de esclavo, pensé no aplicar el derecho sólo de protocolo y se sentó abajo para hacer que todo funcione correctamente. Que hice con el nuevo código mucho más ágil, organizado y comprensible (abundancia para todo aquel que quiera aprender!). Puesto que mi viaje en el mundo de I2C era áspera, me decidí a publicar aquí para que ver y entrar en tanto detalle como pude para aclarar la funcionalidad de I2C.
En los próximos pasos se hablo sobre el hardware de la USI y funciona como un maestro y un esclavo. También he adjuntado mi archivos de código USI. Quiero gente para una buena implementación de USI y también quiero que lea cómo funciona, sabiendo exactamente lo que está sucediendo es crucial cuando trata de un sistema complejo, de bajo nivel, así que he comenté mis archivos bien.