Usando el pin de reinicio de AVR como ADC

3

Estoy usando un ATTINY13 para una aplicación de juguete. Simplemente parpadea los LED en patrones específicos. Decidí agregar un "control de velocidad" con un potenciómetro, pero el único pin que me queda es el pin de reinicio.

Hecreadoundivisordevoltajeyloherellenadoconresistenciasde330ohmios,ylascosasparecenfuncionarbienenunaplacadepruebas.

DespuésdeleerunpocosobreelusodelpindereinicioparaADC,parecequealgunaspersonasaconsejanquenosepuedevolveraprogramarelAVR.Nohetenidoesteproblema,perotampocoestoyhaciendoprogramaciónenelsistema.

ElcódigoqueestoyusandoparahabilitarADC0enelpin1(PB5)eselsiguiente:

DDRB=0b00001000;ADCSRA=0b11100111;ADMUX=0b00100000;

Mipreguntaes:¿Porquéfuncionaesto?MegustaríasaberunpocomásantesdecontinuarconlafabricacióndePCB.¿Essólounasuertetontahastaahora?

Supongoqueporqueelrestablecimientonunca"ve" a tierra, el micro nunca se restablece de forma espontánea en el circuito, pero no estoy seguro de cómo logré usar el pin de restablecimiento para ADC sin desactivar la reprogramación de flash.

Nota: Actualmente estoy usando una versión DIP-8 del chip en un zócalo, el cual me coloco en un programador para cambiar los parámetros. Cambiaré a una versión de SOIC para producción.

Otro: el encabezado de 6 pines se conecta a algunos LED de Charlieplexed

    
pregunta JYelton

1 respuesta

4

El fusible de desactivación de reinicio hace exactamente eso: desactiva la función de reinicio del pin asociado. Si configura ese fusible, no hay manera de reiniciar el dispositivo, excepto:

  • Ciclo de energía
  • Caducidad del temporizador de vigilancia
La

programación en serie en circuito (también conocida como ICSP), creo, se basa en restablecer el dispositivo mediante el pin de reinicio, por lo que no podrá reprogramar el dispositivo una vez que este fusible se haya configurado con ICSP. Sin embargo, hay más de una forma de reprogramar un AVR. Si el dispositivo admite la programación en serie o paralelo de alto voltaje (HVSP o HVPP), siempre hay una opción. O si puede incluir un gestor de arranque en el chip (que se puede hacer con un ATtiny85 por ejemplo, no estoy seguro sobre el ATtiny13), eso también puede funcionar.

Dicho esto, la sección de la hoja de datos 24.3.3 tiene los siguientes extractos:

  

Las combinaciones especiales de bits de fusible bloquearán el dispositivo para   Más programación efectivamente convirtiéndolo en un dispositivo OTP. los   Las siguientes combinaciones de ajustes / bits de fusible causarán este efecto:

     
  • oscilador interno de 128 kHz (CKSEL [1..0] = 11), tiempo de inicio más corto (SUT [1..0] = 00), Debugwire habilitado (DWEN = 0) o Restablecimiento deshabilitado RSTDISBL = 0.
  •   
  • Oscilador interno de 9.6 MHz (CKSEL [1..0] = 10), tiempo de inicio más corto (SUT [1..0] = 00), Debugwire habilitado (DWEN = 0) o Restablecimiento deshabilitado RSTDISBL = 0.
  •   
  • oscilador interno de 4.8 MHz (CKSEL [1..0] = 01), tiempo de arranque más corto   (SUT [1..0] = 00), Debugwire habilitado (DWEN = 0) o Restablecer deshabilitado RSTDISBL = 0.
  •   

Si no tiene la intención de admitir la programación de circuitos, puede programar de manera segura una vez y luego configurar el fusible de desactivación de reinicio y usar la función alternativa del pin. No desea dejar la función de restablecimiento habilitada en producción a menos que no le importe que el dispositivo se reinicie de manera arbitraria. Básicamente, si el pin está "bajo" durante un período de tiempo determinado, se restablecerá, final de la historia. Según la hoja de datos Tabla 18-4, el rango de valores de umbral posibles para el restablecimiento externo de disparo es de 0.2 * Vcc a 0.9 * Vcc ... quizás tenga suerte con los dispositivos que están más cerca de 0.2 * Vcc.

    
respondido por el vicatcu

Lea otras preguntas en las etiquetas