TODOPIC
Otros Microcontroladores / Dispositivos programables => Microcontroladores 8 bits => Mensaje iniciado por: Picuino en 22 de Diciembre de 2015, 03:23:46
-
¿Cómo bloquear un microcontrolador Attiny88?
Lo he intentado con avrdude y he bloqueado el micro, pero ha dejado de funcionar.
Para bloquear he utilizado:
avrdude.exe -F -c usbasp -p t88 -P usb -b 115200 -v -e -U lock:w:0xFC:m
Un saludo
-
Es que lo estas borrando completamente... con el -e imagino que sera algo así:
avrdude.exe -F -c usbasp -p t88 -P usb -b 115200 -v -U flash:w:file:i -U hfuse:w:0x00:m -U lfuse:w:0x00:m
Y luego finalmente
avrdude.exe -F -c usbasp -p t88 -P usb -b 115200 -v -U lock:w:0xFC:m
Una ves bloqueado la unica forma de poder usarlo es borrar todo con el -e
avrdude.exe -F -c usbasp -p t88 -P usb -b 115200 -v -e
Es lo único raro que encuentro.
-
Muchas gracias Killer.
Eso pasa por hacer copy paste. Pensé que así no me olvidaba de nada y terminé metiendo la pata.
A ver cómo desbloqueo ahora el attiny con programación en paralelo...
Creó que va a ser mejor tirar el micro.
Saludos
-
La unica forma de "recuperarlo" es generar un borrado, que justamente lo haces con el -e, en el datasheet esta especificado como hacer un Chip Erase
The Chip Erase command will erase all Flash and EEPROM plus lock bits.
The Chip Erase command is loaded as follows:
1. Set XA1, XA0 to “10”. This enables command loading
2. Set BS1 to “0”
3. Set DATA to “1000 0000”. This is the command for Chip Erase
4. Give CLKI a positive pulse. This loads the command
5. Give WR a negative pulse. This starts the Chip Erase. RDY/BSY goes low
6. Wait until RDY/BSY goes high before loading a new command
-
Si no puedes borrarlo quizás hayas seleccionado por error el fuse de oscilador externo (que no cristal externo), y por tanto para poder comunicarte con él y borrarlo o reprogramarlo debes generar una onda cuadrada en el pin correspondiente a la entrada de oscilador externo, desconozco si éste es el caso de los fuses programador pero solo comentarlo por si pudiera ser.
Saludos.
-
No utilice atmel, pero me parece algo ilogico que suceda eso Jorge, se que alguos alegan haber tenido esos problemas y esa era la causa. Pero en la programacion segun el datasheet en ningun momento habla del oscilador conectado al dispositivo, ademas desde afuera del micro es que se provee una señal de clock, tanto para una conexion paralela como serie. Por lo cual no le veo mucho sentido a que esto ocurra realmente.
-
Muchas gracias
-
Una forma de bloquear el microcontrolador y que ya no se pueda borrar ni programar es simplemente configurar mal los fuses, seleccionar el oscilador externo por error cuando en su lugar se quiere seleccionar un cristal externo como fuente de reloj. Es error habitual que comete mucha gente al empezar a usar los Atmel, no digo que sea el caso pero solo anotarlo por si pudiera ser. Para poder "recuperarlo" (volver a cambiar los fuses) hay que conectar una señal cuadrada en el pin correspondiente del microcontrolador que simule ese oscilador externo.
Aunque en el interfaz de programación tengas una señal de reloj, el microcontrolador necesita su propia señal de reloj para poder ser programado.
Para programar Atmels yo uso el Atmel Studio, en el que se configuran todos los fuses de forma gráfica, por lo que es más difícil equivocarse.
-
estoy muy de acuerdo con Jorge, no se como seria el caso para los Pic, que al programarlo con el Oscilador externo , no pueda programarlo otras sin ponerle un Oscilador ;-)
aunque a mi, experimentando he dejado varios Atmel muertos, y no me lo reconoce el programador en ningun modo ,ISP o PHVS
Paralel High voltage Serial. ;-)
Saludos y Felices Fiestas :x)
-
yo creo, que te va a dar mas dolores de cabeza y vas a perder mas dinero (si lo contamos en tiempo) que si tiras el micro y te lo pillas uno nuevo.
un saludo
-
El micro es barato. Compré una buena tanda y me salieron a 0.70 Euros cada uno.
El micro no es el problema (ya lo habría tirado). El problema es que es un TQFP de 32 pines soldado.
No sé si me cuesta más desoldarlo y volver a soldar otro o recuperarlo.
Además me ha pasado en varias placas (creo que 4)
Saludos.
-
Perdonna Si Me Meto
Pero Creo Que Te Has Equivocado A La Hora De Gravar Los Fuses Con AvrDude
Segun Lo Que Dices Para bloquear he utilizado:
avrdude.exe -F -c usbasp -p t88 -P usb -b 115200 -v -e -U lock:w:0xFC:m
Si Te Fijas En La Pagina
http://www.engbedded.com/fusecalc/
Veras Te E Puesto Un Ejemplo Con Un Atmega88 Que Tiene Los Mismos Pin Que El Attiny88
En Esta Pagina Poniendo Los Extended Bits A FC Hay Una Nota Donde Explica
Que algunos Valores Numericos Contienen Los Bits No Definidos (Establecidas a '1' aquí)
Y Dependiendo Del Programa Con El Que Se Grave Estos Bits Serán Leídos Ya Sea Como '0' o '1'.
En Los Siguientes Valores Te Dicen Que Pongas Los (Conjunto Indefinido a '0'): Extended: 0x04.
Una Vez Cambiado Los Extended Bits En La Pagina Que Te E Subido
Veras En La Nota Como Te Dice Copiar y Pegar Esta Cadena De Opciones En Su Línea De Comandos Avrdude
Te Subo Un PDF Con Fotos Para Que Lo Veas Mejor
-
Finalmente he optado por tener 3 macros distintas
Una graba el firmware y lo verifica
Otra macro graba los fuses -U lfuse:w:0x62:m -U hfuse:w:0xDD:m -U efuse:w:0xFE:m
Otra macro bloquea el micro -U lock:w:0xFC:m
La configuración se puede calcular en este enlace y tomar un permalink a la configuración final:
http://eleccelerator.com/fusecalc/fusecalc.php?chip=attiny84&LOW=62&HIGH=DD&EXTENDED=FE&LOCKBIT=FC
Saludos.
-
My bueno el Calculador de FUSE,
me lo apunto ;-)
Saludos
-
Si Si Muy Bueno Pero Pregunto!!
Cual Es La Diferencia Gravando Los Extended Bytes Antes A FC Con Lo Que Se Te Quedo Bloqueado El Micro
Y Ahora Con FE
La Diferencia Esta Que Antes Con (FC) Bootloader Reset Address Desde 0x0F00
Byte Extendido : Selecionna El Tamaño Del Boot Y Del Vector Del Reset
BOOTSZ1 (2) Seleccion Del Tamaño Del Boot ( 1 = Sin Programar)
BOOTSZ0 (1) Seleccion Del Tamaño Del Boot ( 0 = Programado )
BOOTRTS (0) Seleccion Del Vector Del Reset ( 0 = Programado )
Y Ahora Con -U efuse:w:0xFE:m (FE) Bootloader Reset Address Desde 0x0F80
BOOTSZ1 (2) Seleccion Del Tamaño Del Boot ( 1 = Sin Programar)
BOOTSZ0 (1) Seleccion Del Tamaño Del Boot ( 1 = Sin Programar)
BOOTRTS (0) Seleccion Del Vector Del Reset ( 0 = Programado )
Y Ahora Veo Que Has Gravado Tambien Los Locks Bits A -U lock:w:0xFC:m
Los Bytes LB1 Y LB2
( LOCK BITS)
Seguridad De la Memoria : Tipo De Protecion
************************
..............
LB2 . LB1 .
..............
1 . 1 . Sin Habilitar La Protecion De La Memoria
..............
1 . 0 . Deshabilita Futuras Programacion De La Flash Y EEprom En Los Modos Paralelo Y Serial
.............. Los Bits De Los Fusibles De Programacion Estan Asegurados En Ambos Modos
. .
0 . 0 . Igual Al Anterior Y Tambien Se Deshabilita La Verificacion
Es Decir La Intencion Es Deshabilitar Futuras Programacion De La Flash Y EEprom En Los Modos Paralelo Y Serial
Y Ademas Deshabilita La Verificacion
Bueno Ya Nos Dira Si Te Funcionna Asi o Se Te Ha Vuelto A Bloquear
Siempre Es Bueno Aprender Algo Nuevo
Suerte
-
Primero que nada me resulta molesto ver que todas las palabras comienzen en mayusculas, pero eso es cuestion de cada uno.
Por el lado de los fuses, si es que se verifica del lado del micro entonces no va haber problemas, pero si se puede leer entonces hay que quitar la parte de la verificacion. Asi que los 2 buts deberian ir en 0.
Y la razon principal de esto es?.. Sigo sin ver el por que hablan de bits cuando claramente el datasheet habla que debe ejecutarse un borrado completo para desbloquearlo, el cual no posee ninguna relacion de si es 0xFE o si es 0xFC.
-
Hola KillerJC
No Pretendo Molestar Con Mi Forma De Escribir Y No Creo Que Lo Haga
Siempre A Sido Mi Forma De Escribir Desde Hace Mucho Años
En Relacion A si es 0xFE o si es 0xFC Es Sencillamente Hablamos De Los Bits Extendidos
Que No Tiene Nada Que Ver Con Los Locks Bits
Yo Entendi Que Va Volver A Gravar Otro Attniny88 Con Esta Configuracion 0xFC
Y La Diferencia Ahi Es Que Si Se Le Bloqueo El Micro Antes Con 0xFE
Se Le Volvera A Bloquear Con 0xFC Ya Que Solamente Cambia La Posicion de Donde Va Empezar El Bootloader
FIRSTBOOTSTART = 0xf80 = -U efuse:w:0xFE:m (FE)
SECONDBOOTSTART = 0xf00 = -U efuse:w:0xFC:m (FC)
No Trato De Discutir Sino De Dialogar Y Entender Lo Que Se Va Hacer
Y De Esta Manera Podamos Entender Todos Y Aprender Algo Mas
Te Pido Disculpa Si Te Has Sentido Ofendido No Era Esa Mi Intencion
Un Saludo
Belgitaes
-
En Relacion A Los Micros Bloqueados Podrias Intentar Y No Pierdes Nada Por Probar
Y Si Te A Pasado En Varias Placas Y Te Cuesta Mas Desoldar Y Volver A Soldar
Podrias Intentar Si Quieres Esto Antes De Desoldar
A Ver Si Te Funcionna
Suelda Un Cristal (Cualquier Valor De 6mhz a 20mhz) Y Dos Caps Ceramicos De 22pf
A La Patilla 6 Y 7 Del Attiny88
ground
|
|
cap
|
/-\ |
| |-------PCINT6/CLKI/ PB6
| |-------PCINT7/ PB7
| | |
\-/ |
|
cap
|
|
ground
Alimenta Tu Placa Y Preuba A Mandarle El Commando De Borrado
avrdude.exe -F -c usbasp -p t88 -P usb -b 115200 -v -e
-
Ok.
Lo probaré, gracias.
-
Ha funcionado.
He inyectado una señal de 3MHz directamente a CLKI y los micros que tenían mal los fuses se han podido reprogramar sin problemas con programación en serie (con avrdude + USBasp).
Ahora faltan los micros que he bloqueado (lock). Voy a intentar la programación en paralelo.
Un saludo.
-
Me Alegro Un Monton Que Hayas Podido Recuperarlos
Si Te Ha Funcionnado Tambien Deberia Funcionnar Con los LocksBits
En Principio El Commando De Borrado Borra Todos Los Valores
Y Cuando Este El Micro Alimentado A Traves De Tu Placa
Bueno Hablando Del Avrdude Aqui Va Un Commando Por Si Lo Quieres Probar
A Ver Si Te Funcionna
LEER FLASH
avrdude.exe -F -c usbasp -p t88 -P usb -b 115200 -v -U flash:r:"c:/LEERFLASH.bin":r
Con Este Commando Una vez Grabado El Attiny
Si Queremos Comprobar Que El Fichero Bin A Sido correctamente Grabado
Mandamos Este Comando El Cual Creara Un Nuevo Fichero Bin
En Este Caso LLamado Con Este Nombre LEERFLASH
Por Lo Que Con Abrirlo Con Un Programa Como por Ejemplo El HxD - Freeware Hex Editor
Para Su Lectura Podremos Ver Sin Sacar El Attiny Del Programador
Que Efectivamente A Sido Bien Grabado
No Sé Si Te Funcionnara Con El Attiny A Mi Me Funcionno Con El Atmega
Y Podia Comprobar Si El Atmega Estaba Bien Gravado
Siempre Es Bueno Aprender Algo Nuevo