Solución de problemas de una configuración de reloj ATMega328p

5

Estoy intentando ejecutar mi ATMega a 16 MHz usando este cristal

Configuro el bit lfuse en F7 (vea aquí )

El comando que utilicé para establecer el bit lfuse fue

C:\>avrdude -p m328p -P lpt1 -c stk200 -U lfuse:w:0xf7:m

avrdude: AVR device initialized and ready to accept instructions

Reading | ################################################## | 100% 0.02s

avrdude: Device signature = 0x1e950f
avrdude: reading input file "0xf7"
avrdude: writing lfuse (1 bytes):

Writing | ################################################## | 100% 0.00s

avrdude: 1 bytes of lfuse written
avrdude: verifying lfuse memory against 0xf7:
avrdude: load data lfuse data from input file 0xf7:
avrdude: input file 0xf7 contains 1 bytes
avrdude: reading on-chip lfuse data:

Reading | ################################################## | 100% 0.00s

avrdude: verifying ...
avrdude: 1 bytes of lfuse verified

avrdude: safemode: Fuses OK

avrdude done.  Thank you.

Tenía un código en el chip que parpadeaba un LED una vez por segundo. Después de configurar el bit lfuse se detuvo.

Intenté leer el bit lfuse a través de

C:\Documents and Settings\admin>avrdude -p m328p -P lpt1 -c stk200 -U lfuse:r:-:
h -U hfuse:r:-:h

avrdude: AVR device not responding
avrdude: initialization failed, rc=-1
         Double check connections and try again, or use -F to override
         this check.


avrdude done.  Thank you.

Creo que tengo la configuración del cristal correctamente en los pines 9 (TOSC1) & 10 (TOSC2). Estoy usando 22 pF caps.

Estoy viendo 5V en el pin 10 y 0V en el pin 9

¿Qué pasos puedo seguir para solucionar esto?

    
pregunta JonDrnek

2 respuestas

3

Esa es una respuesta realmente extraña que estás viendo. Por supuesto, existe la sugerencia obvia de: ¿has intentado apagar y encender todo en la cadena? (PC- > STK200- > devboard) Pero también, ¿tienes otro programador AVR que puedas probar? ¿Tienes otro ATmega328P que puedes probar leyendo & ¿escritura? ¿Alguna vez ha podido leer la configuración de los fusibles con algún programador?

Otras cosas para probar: ¿Puedes quitar el cristal y ver si puedes comunicarte con el chip? ¿Su programador tiene la capacidad de ajustar la velocidad de SCK? (El STK500 puede hacer esto, no estoy seguro de STK200) Puede ser que el chip se haya puesto en un modo de muy baja velocidad.

Como último recurso, deberá colocar el chip en un programador de alto voltaje. Sé que al menos el STK500 puede hacer eso, y hay algunos circuitos para piratear un HVP de un puerto Arduino o LPT. He tenido que resucitar algunos chips AVR de esa manera debido a una falla eléctrica o he fallado la configuración.

    
respondido por el todbot
1

Un par de pensamientos. ¿A qué se colocaron los fusibles antes de cambiarlos? ¿Has confirmado tu cableado con el esquema? Recuerda, necesita el cristal conectado para programarlo.

Comprobando la hoja de datos, parece que 0xF7 fue la configuración incorrecta de usar. CKSEL 3..0 se establece en 1000 por 0xF7. Hay una tabla en la hoja de datos, que recomienda este valor para los osciladores de .8 a .9MHz, y establece específicamente que esta configuración es no para usarse con cristales. El ajuste correcto para el byte bajo de los fusibles fue 0xF1, esto pone CKSEL 3..1 en 111, que se recomienda para el cristal de cuarzo de 16MHz. La información relevante está en la página 29 de la hoja de datos.

Probablemente necesitará un programador de la vieja escuela para solucionar el problema, de lo contrario, habrá bloqueado el chip.

    
respondido por el wackyvorlon

Lea otras preguntas en las etiquetas