Estoy usando un ATtiny13 para controlar 15 LED de cinco pines de E / S (Charlieplexed). Estoy usando ADC0 (pin1) como entrada de un divisor de voltaje para proporcionar un control de velocidad. Para usar ADC0 correctamente, necesito deshabilitar el fusible de restablecimiento cuando escribo el programa.
El problema es que el programa se comporta de manera diferente cuando el fusible de restablecimiento está deshabilitado. En lugar de las 15 luces LED, solo 9 son. Los 9 LED que se encienden involucran a los 5 pines de E / S, en ambas polaridades, por lo que no creo que haya cambiado accidentalmente ninguna configuración de esos pines.
Aquí está la línea de comando que utilizo para actualizar el AVR (usando avrdude en wintel) y configurar los fusibles:
avrdude -c usbtiny -p attiny13 -U flash:w:program.hex -U lfuse:w:0x6a:m -U hfuse:w:0xfe:m
Y el esquema:
Antes de configurar los fusibles, el programa funciona perfectamente, encendiendo los 15 LED como se esperaba. La entrada en ADC0 restablecerá el micro cuando el voltaje caiga lo suficientemente bajo, como se esperaba, pero de lo contrario el control de velocidad funciona. Aquí hay un gráfico para mostrar cómo están conectados los LED:
LED # AVR PINs I/O PINs
1 5-6 1-2
2 6-5 2-1
3 5-7 1-3
4 7-5 3-1
5 5-2 1-4
6 2-5 4-1
7 5-3 1-5
8 3-5 5-1
9 6-7 2-3
10 7-6 3-2
11 6-2 2-4
12 2-6 4-2
13 6-3 2-5
14 3-6 5-2
15 7-2 3-4
Después de deshabilitar el fusible de restablecimiento, los LED 1 a 9 funcionan, 10 a 15 no. Hay un ligero parpadeo detectable en el LED 13. El control de velocidad ADC0 funciona en toda la gama, sin reiniciar el micro.
Estoy completamente confundido. ¿Alguien puede aconsejar?
Editar:
En caso de que sea importante, esto está utilizando un paquete SOIC-8. Anteriormente, he usado un DIP-8 y no he tenido este problema.