Paso 9: Que empiece la programación
Antes incluso había pensado sobre la cubierta que estaba programación el anillo. Pero desde que empecé a trabajar en el cuerpo que había dejado la parte de programación hasta el final, es por eso que tenía que incluir una toma de programación. Te imaginas si hubo un error en mi código y he tenido no hay manera de arreglarlo!
Aquí es donde se demostró otro problema. Un LED roto!!!! Había escrito un programa de prueba pequeña que mostraría un patrón en los LEDs cuando se aplica energía, este patrón ciclo aunque colores para decirme que todo estaba funcionando como se pretendía. Sin embargo sólo estuve probando cada segundo LED en el aro exterior. Una vez que había programado con el anillo interior que descubrí que trabajó sólo la primera mitad, la segunda mitad no mostrar nada. Extraño bastante, si el LED se alimenta de 3.6volts en vez de 5, datos pasaría a través de este LED, pero aún no muestra nada. Sin embargo los colores dados los LEDs son mucho mejores en 5v. así que decidí cortar mis pérdidas y sólo tiene que utilizar 60 LEDs de mi anillo.
Esto es realmente una bendición disfrazada, porque solo hice un rápido cálculo en la parte posterior de mi cabeza mientras que selección el cerebro de este reloj. El elegido MCU el MSP430G2553 sólo tiene 512bytes de RAM. Sí, bytes. Yo había programado un buffer para almacenar todos los valores de LED, entonces se transmitirían en un estallido rápido a todos los LEDs, este buffer toma 360 bytes de nuestro preciado recurso, que es un poco más del 70% de la RAM ido ahí.
Resulta que, una de las mejores características de este reloj es un arreglo de sensor táctil capacitiva que incrustado en el borde del PCB, honestamente ni siquiera sabía que si funcionaría, nunca he hecho sensores capacitivos de esa manera antes. Pero lo hicieron trabajar y trabajar bien. TI, la fabricación de la línea de microcontroladores MSP430, crear una API para la lectura de sensores capacitivos, la biblioteca de software táctil capacitiva. Es fantástico, sin embargo debido al trabajo que tiene que hacer, usa mucha RAM. Los 12 elementos que necesitaba para medir usan de 48 bytes, para almacenar los valores actuales de la medida y un valor de referencia. a continuación, llamar a la función consume espacio en la pila, que depurar algunas llamadas de biblioteca y encontré unos 30-40 bytes fue utilizado.
Si usted no está familiarizado con la disposición de memoria de computadora, y usted está interesado en él, sugiero que mires hacia arriba. Puesto sin rodeos cuando entra en la pila en el montón es conocido como un desbordamiento de pila. Estaba pasando a mí, me seguí poniendo extraño resultados impredecibles, porque dos partes de mi código fueron accediendo a la misma ubicación en memoria, reemplazar la información de los demás. Sin necesidad de búfer del anillo medio había liberado más que suficiente memoria RAM para mi código.