No se pueden escribir bits de bloqueo en ATMega328p-pu

0

Estoy tratando de establecer los bits de bloqueo en mi ATMega328p-pu, usando un Arduino UNO como ISP.

esto es lo que sucede:

>avrdude -c arduino -p m328p -P COM4 -b 19200 -U lock:w:0xFC:m

avrdude: AVR device initialized and ready to accept instructions

Reading | ################################################## | 100% 0.03s

avrdude: Device signature = 0x1e950f (probably m328p)
avrdude: reading input file "0xFC"
avrdude: writing lock (1 bytes):

Writing |                                                    | 0% 0.00s ***failed;
Writing | ################################################## | 100% 0.16s

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

Reading | ################################################## | 100% 0.01s

avrdude: verifying ...
avrdude: verification error, first mismatch at byte 0x0000
         0x0c != 0xfc
avrdude: verification error; content mismatch

avrdude: safemode: Fuses OK (E:FD, H:DA, L:FF)

avrdude done.  Thank you.

Soy muy nuevo en el uso de avrdude y no tengo idea de cómo proceder con la depuración de este problema.

EDITAR: He intentado usar otro chip, pero exactamente la misma respuesta.

    
pregunta Owen Tourlamain

2 respuestas

0

Logré encontrar la respuesta, resulta que el que compró este chip (y el otro chip) había activado el bloqueo del cargador de arranque, y como mi comando estaba tratando de desactivar el bloqueo del cargador de arranque, el comando estaba fallando.

Avrdude informa que el bloqueo se vuelve a leer como 0x0C, que es mi comando (0xFC) menos los bits de bloqueo ya sexuales (0x0), así que tuve que cambiar mi comando a: -U lock:w:0x0C:m

    
respondido por el Owen Tourlamain
0

Para usar Arduino como ISP, debe especificar avrisp como programador:

avrdude -c avrisp -p m328p -P COM4 -b 19200 -U lock:w:0xFC:m

Consulte, por ejemplo, el tutorial de Sparkfun en Arduino como ISP.

No puedo confirmarlo ahora, pero creo que el programador arduino usa el protocolo serial del gestor de arranque Arduino, aunque pensé que era esencialmente STK500, así que no sé por qué se necesita como una opción separada . Quizás es solo un subconjunto de STK500 que se implementa en el cargador de arranque.

    
respondido por el Olof

Lea otras preguntas en las etiquetas