TODOPIC

Otros Microcontroladores / Dispositivos programables => Microcontroladores 8 bits => Mensaje iniciado por: Picuino en 22 de Diciembre de 2015, 03:23:46

Título: Cómo bloquear un microcontrolador Attiny88
Publicado 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
Título: Re:Cómo bloquear un microcontrolador Attiny88
Publicado por: KILLERJC en 22 de Diciembre de 2015, 11:00:52
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.
Título: Re:Cómo bloquear un microcontrolador Attiny88
Publicado por: Picuino en 22 de Diciembre de 2015, 16:19:25
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
Título: Re:Cómo bloquear un microcontrolador Attiny88
Publicado por: KILLERJC en 22 de Diciembre de 2015, 16:28:07
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

Citar
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
Título: Re:Cómo bloquear un microcontrolador Attiny88
Publicado por: Jorge555 en 22 de Diciembre de 2015, 18:40:33
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.
Título: Re:Cómo bloquear un microcontrolador Attiny88
Publicado por: KILLERJC en 23 de Diciembre de 2015, 05:12:44
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.
Título: Re:Cómo bloquear un microcontrolador Attiny88
Publicado por: Picuino en 23 de Diciembre de 2015, 06:04:32
Muchas gracias
Título: Re:Cómo bloquear un microcontrolador Attiny88
Publicado por: Jorge555 en 23 de Diciembre de 2015, 08:32:09
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.
Título: Re:Cómo bloquear un microcontrolador Attiny88
Publicado por: stk500 en 23 de Diciembre de 2015, 14:13:30
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)
Título: Re:Cómo bloquear un microcontrolador Attiny88
Publicado por: juaperser1 en 23 de Diciembre de 2015, 14:16:22
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
Título: Re:Cómo bloquear un microcontrolador Attiny88
Publicado por: Picuino en 23 de Diciembre de 2015, 18:04:25
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.
Título: Re:Cómo bloquear un microcontrolador Attiny88
Publicado por: Belgitaes en 27 de Diciembre de 2015, 10:15:18
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
Título: Re:Cómo bloquear un microcontrolador Attiny88
Publicado por: Picuino en 28 de Diciembre de 2015, 10:23:52
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.
Título: Re:Cómo bloquear un microcontrolador Attiny88
Publicado por: stk500 en 28 de Diciembre de 2015, 11:50:48
My bueno el Calculador de FUSE,
me lo apunto ;-)
Saludos
Título: Re:Cómo bloquear un microcontrolador Attiny88
Publicado por: Belgitaes en 28 de Diciembre de 2015, 19:07:13

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
Código: [Seleccionar]
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
Código: [Seleccionar]

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

Código: [Seleccionar]
( 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
Título: Re:Cómo bloquear un microcontrolador Attiny88
Publicado por: KILLERJC en 28 de Diciembre de 2015, 20:43:55
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.
Título: Re:Cómo bloquear un microcontrolador Attiny88
Publicado por: Belgitaes en 29 de Diciembre de 2015, 12:38:00
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
Título: Re:Cómo bloquear un microcontrolador Attiny88
Publicado por: Belgitaes en 29 de Diciembre de 2015, 12:51:08
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
 
Código: [Seleccionar]

            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
Título: Re:Cómo bloquear un microcontrolador Attiny88
Publicado por: Picuino en 29 de Diciembre de 2015, 14:45:58
Ok.
Lo probaré, gracias.
Título: Re:Cómo bloquear un microcontrolador Attiny88
Publicado por: Picuino en 30 de Diciembre de 2015, 13:27:49
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.
Título: Re:Cómo bloquear un microcontrolador Attiny88
Publicado por: Belgitaes en 30 de Diciembre de 2015, 14:33:26
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