¿Cómo mantengo la funcionalidad de ICSP?

0

Soy un aficionado novato que construye un circuito trivial donde un ATTiny 85 controla un LED RGB. Además de las tres salidas PWM, tengo 2 entradas.

La primera entrada es un potenciómetro que estoy usando para configurar el brillo máximo del LED. El segundo es un divisor de voltaje donde una de las resistencias es una resistencia dependiente de la luz.

Me estoy quedando sin pines en el IC de 8 pines, así que tengo que usar el pin SCK como entrada. Si coloco el potenciómetro en el pin SCK, el ICSP ya no funciona; sin embargo, si coloco la salida del divisor de voltaje LDR en el pin SCK, ICSP funciona bien.

¿Cómo puedo determinar lo que está pasando aquí para poder tomar decisiones deliberadas sobre el uso de los pines? Además, ¿existe una forma común de aislar la actividad de ICSP y durante las actualizaciones aislar el IC del resto del circuito?

    
pregunta D. Patrick

1 respuesta

2

Para poder programar el chip, el programador debe poder conducir los pines que están input al chip a sus niveles digitales correctos, y el chip debe poder conducir el chip. pines que son salida desde el chip a sus niveles digitales adecuados.

Entonces, por ejemplo, el SCK es una señal generada por el programador y leída por el chip. Para que pueda programar el chip, el programador debe ser capaz de conducir esta línea tanto alta como baja. Si tiene otros componentes conectados a este pin, entonces el programa aún debe poder conducir este pin alto y bajo incluso con esos componentes conectados (¡y esperemos que sin freír esos componentes en el proceso!).

En su caso, parece probable que el programador no pueda conducir el pin alto y bajo con el potenciómetro conectado. Si observa ese pin utilizando un osciloscopio mientras intenta programar el chip, es probable que vea el voltaje moviéndose alrededor de algunos impulsados por el programador, pero el potenciómetro está ganando y los oscilaciones no están lo suficientemente cerca del suelo y Vcc para el chip. Para verlos como la señal del reloj.

La solución convencional de AI podría ser usar un potenciómetro más grande si está conectando el chip a la toma central. Todavía funcionará como se esperaba cuando se proporciona un voltaje de entrada al pin, pero debido a que hay una mayor resistencia entre el pin y Vcc y tierra, el programador podrá hacer cambios de voltaje más amplios contra él.

Una solución no convencional es proporcionar al programador salidas más potentes utilizando un búfer o un par de transistores. Esto puede ayudarlo a generar mayores oscilaciones de voltaje contra el componente que está conectado al pin, solo asegúrese de que el componente pueda tomarlo. Una vez usé este truco para poder colgar un LED bicolor de un pin IO y aún así poder usar el mismo pin para la programación.

Otro truco es ralentizar el reloj de programación (es decir, el parámetro -B en AVRDUDE). Esto puede ayudar si hay una parte unida al pin de programación que solo ralentiza los cambios de voltaje, como una capacidad.

En la otra dirección de los pines que el chip le envía al programador (como MISO ), está limitado por la capacidad de la unidad del chip, pero es posible obtener incluso pequeñas salidas dependiendo de a qué componente esté conectado. el pin. Por ejemplo, podría usar un par de OP AMP conectados entre el chip y el programador para convertir un pequeño movimiento de voltaje en el centro del rango en uno digital que pueda usar el programador.

Aquí hay una aplicación no de ATMEL que habla sobre esto, pero que solo cubre las estrategias convencionales ...

enlace

    
respondido por el bigjosh

Lea otras preguntas en las etiquetas