El desafío particular fue limitar el tamaño de código con el fin de encajar en lo 2 kB de memoria en el Attiny2313. Trabajó por almacenar la matriz de fuente de caracteres en el espacio de memoria de programa PROGMEM y utilizando directamente la manipulación puerto en combinación con operaciones matemáticas bit a bit .
La asignación de pines con la matriz de LED Kingbright TC07-11EWA 5 x 7 es:
Attiny2313 puerto LED matriz patillas (resistor de 470 Ohm)
PB0 12 6 Row 7
PB1 13 5 Row 6
PB2 14 4 Row 5
PB3 15 9 Row 4
PB4 16 2 Row 3
PB5 17 11 Row 2
PB6 18 12 Row 1
PD0 2 1 Column 1
PD1 3 3 Column 2
PD2 10 6 columna 3
PD3 7 7 Column 4
PD4 8 8 Column 5
PB5 (pin 9) es la entrada de pin para el botón. Pulsando el botón se conecta el botón pin a GND.
La alimentación es a través de un regulador lineal 7805 con dos 100 condensadores nF para la supresión de la oscilación. En la foto son difíciles de ver. También he añadido un enchufe y un interruptor. Estabilización mecánica se realizó con el uso de indescriminate de una pistola de pegamento caliente.
Parece que conducir directamente una matriz de LED con un microcontrolador no es el enfoque ortodoxo pero el Attiny2313 no ha quejado todavía.
Había dado más en el diseño del circuito habría dejado más espacio entre el Attiny2313 y la matriz de LED para dar cabida a otra línea de señal. Esta línea está ahora alrededor de la matriz y luego llegar a pin 12. Con un poco más de planificación también habría puse los condensadores nF 100 en algún otro lugar por lo que pude haber doblado el regulador 7805 hacia abajo. Todo podría realmente haber montar en el viejo caso de cassette de música.
Ignoraba un capacitor de desacople entre VCC y GND el Attiny2313 porque pensé que los condensadores en el regulador 7805 están lo suficientemente buenos. No hay también contra rebotes del botón de entrada ya hay un retardo en el software. La simplicidad del circuito no garantiza un botón de reset. Por último, no pongo un 10 resistencia k entre el pin 1 (RESET) y VCC como sugerido en algunos circuitos mínimos porque otras fuentes mencionan que hay una resistencia interna de pull-up de todos modos.
Ya no hay cristal, el microcontrolador utiliza su oscilador interno RC. He encontrado el momento para ser un poco apagado, así que tuve que determinar empíricamente los valores de retardo en el software. Después de accidentalmente cargar un bootloader en el Attiny2313, el tiempo parece mejorar. No tengo ninguna explicación para eso.
Para programar el Attiny2313 usé mi Arduino como un ISP con el apropiadamente llamado "ArduinoISP" bosquejo. Las indicaciones en el dibujo son sencillas. En preparación, he seguido estas instrucciones usando esta fuente para los archivos de núcleo requerido.
Como estoy utilizando un Arduino Duemilanove, tuve que colocar una resistencia de 120 Ohm entre el pin RESET y VCC para evitar mensajes de error durante la programación. Esto se describe aquí.
Espero que el código adjunto explica por sí mismo.
¡ Disfrute!
Anomalocaris