Paso 2: Diseño de Software
Programación de la 12F609 separa a los hombres de los muchachos. Mientras que el hardware puede ser super sencillo, el software no lo es. Pasé semanas (OK, tal vez dos) verter sobre esta materia. El código siguiente ha sido altamente optimizado solo para esta aplicación. No hay prácticamente ninguna sobra RAM o ROM de sobra. De hecho, quedó sin RAM muchas muchas veces y tenía a éter gota funcionalidad o busque más optimizaciones.
El 12F609 no tiene un UART. Así que, recibiendo nuevos comandos manteniendo los canales PWM se convirtió en mi pesadilla. Los canales PWM deben mantenerse aunque se recibe un nuevo personaje. El ojo humano es tan bueno al ver el pequeño bache que emana de un LED.
Recibir un nuevo personaje utilizando el software no es gran cosa. Sin embargo, recibir caracteres al actualizar salidas PWM. El truco es para actualizar los canales de salida LED mientras se espera el siguiente bit en el enlace comm. En efecto, es multitarea y conseguir que todos los trabajadores fue una molestia importante. Simplemente imposible sin un LSA (analizador lógico de estado). Usé un pin de salida como un pin de depuración. Quisiera cambiar el pin en ciertos eventos y busque en mi LSA. Con este truco, pude ver cada bit recibida por mi código.
OK, OK, ya lo suficiente. A continuación puede encontrar los archivos de origen que hacen toda la magia. Soy publicarlos con la esperanza de que otros pueden aprender de mis esfuerzos. Existe algún buen código allí.
En lugar de describir todo el software en detalle, los comentarios en el código deberían explicar más cosas. Recuerde que en caso de duda "Usar la fuerza - ver el origen." He añadido un montón mas comentarios al código en un intento de hacerlo más legible. Espero que estarás de acuerdo que es, de hecho, legible.
=========================================
Actualización: 16 de mayo de 2012
A continuación es un accesorio de Zip que tiene 32 hexagonal archivos dentro. Cada archivo hexadecimal es lo mismo excepto el número de nodo codificadas. Así, para flash nodo #1 Utilice archivo "1.hex" para programar el micro.
Esto debería ayudar a la gente que no tiene acceso al CCS C Compiler.