¿Cómo configurar los Fuses del AVR?

Hola.
Y desde ya, gracias a cualquiera que apote, insulte, agreda o simplemente se sonría.​
Como verán y algunos saben, he aprendido solo.​
Aunque el "patadón inicial", me lo dio cosmefulanito04, que primero me hizo perder el miedo a los micros.​
Luego me hizo los primeros programas, explicándome algunas funciones con mucha paciencia, (incluido unos cuantos "cachetázos por la nuca por burro") Perdón cosme. :oops: :oops: :oops:
¡Muchas gracias querido amigo, por todo eso!

Bueno, para ir directo al problema, la cuestión es...
Me doy cuenta que lo que leo y deduzco de las hojas de datos, razonamiento y aplicación.​
¡Lo hago todo mal!
Y entonces, el asunto no es que le encuentre la vuelta o lo solucione, sino que alguien me explique, o mejor me enseñe a razonar esto de forma correcta y el por qué.

Podría ir a el foro AVRFREAKS (soy miembro)​
Pero las explicaciones de cómo o por qué, no las entiendo mucho (casi nada), aunque segurísimo que la solución la tengo, pero no me sirve, porque no entiendo bien cómo se llego a ello.
Yo recurro a una Herramienta muy útil y gratuita, según muchísimos que la recomiendan, pero a mi me confunde, y es la página http://www.engbedded.com/fusecalc/


Una vez allí, empiezan mis problemas.
Por ejemplo: elijo el ATmega328P y me aparece esto.
Ver el archivo adjunto 153919
Hasta ahí si lo veo y entiendo bien, porque es la configuración de los fuses de fábrica (virgen)
Lo que sigue es la representación, según los tipos de programadores que se usen.

Ver el archivo adjunto 153920
Si lo comparo con la captura de la lectura que me manda mi programador (serial si-prog), es parecida pero no igual.


Si prestan atención, ya hay diferencia en las casillas de BOOTSZ1, BOOTSZ0 y BOOTSRST
Acá la primera duda de si está bien lo que yo entiendo, que eso de fábrica no viene.
Por lo que entiendo, es la configuración del espacio para el programa (inicio)
La parte que sigue es para la configuración de programadores por hexadecimal, y aquí a veces le pego, otras veces no.

Porque si por ejemplo, tomo un programa de la WEB y declaran los fuses así, esta página da la posibilidad , de que los traspase al otro formato anterior.

Ver el archivo adjunto 153922

Pero por distintas pruebas, programas (me paso con los polacos)
Varios usaban hexadecimal, yo y otro ruso, el programador serial, pero nos daba diferente configuración, que de esa página. Aún no sé por qué.

El otro ejemplo que tengo problemas, es con el ATmega128A

Ver el archivo adjunto 153924

Otra duda que se me genera, es que por defecto, la página manda la configuración de la primera línea, como se ve en la imagen, que es del oscilador.​
Si bien entendí, tendría que ser por "default value", como se ve en la imagen siguiente.

Ver el archivo adjunto 153929

Por lo tanto, la parte siguiente es distinta o diferente.

Ver el archivo adjunto 153925

Y hay diferencias que no entiendo, de cómo me manda mi programador en la lectura de fábrica.

Ver el archivo adjunto 153926

También hay diferencia en hexadecimal.

Ver el archivo adjunto 153930

Por consejo de cosmefulanito04, fabriqué la placa como se indica en el foro de PONYPROG

Ver el archivo adjunto 153931

En la imagen hay una reforma con el original, porque al pin de reset le puse un puente, porque pienso usar el Watch Dog de Reset, entonces queda libre la resistencia al +VCC

Bueno, espero que me puedan enseñar y aprender bien cómo configurar el cristal externo a 16 MHz.

Muchas gracias a todos.​
PD: Hoja de datos atmega328p Ver el archivo adjunto 153886
 

Adjuntos

  • fusebit engbedded fuse calculador 2.jpg
    fusebit engbedded fuse calculador 2.jpg
    80.7 KB · Visitas: 15
  • fusebit atmega328p.jpg
    fusebit atmega328p.jpg
    47.8 KB · Visitas: 11
  • fusebit engbedded fuse calculador 3.jpg
    fusebit engbedded fuse calculador 3.jpg
    128.4 KB · Visitas: 10
  • fusebit engbedded fuse calculador 4.jpg
    fusebit engbedded fuse calculador 4.jpg
    147.1 KB · Visitas: 9
  • fusebit engbedded fuse calculador 5.jpg
    fusebit engbedded fuse calculador 5.jpg
    86 KB · Visitas: 9
  • fusebit atmega128A.jpg
    fusebit atmega128A.jpg
    47.8 KB · Visitas: 9
  • fusebit engbedded fuse calculador 7.jpg
    fusebit engbedded fuse calculador 7.jpg
    146.3 KB · Visitas: 9
  • fusebit engbedded fuse calculador 6.jpg
    fusebit engbedded fuse calculador 6.jpg
    125.9 KB · Visitas: 12
  • atmega 128 conexion pony prog.jpg
    atmega 128 conexion pony prog.jpg
    160.1 KB · Visitas: 14
  • ATmega128A.pdf
    5.6 MB · Visitas: 1
Última edición:
Estube leyendo todo el tema,soy principiante en AVRy tengo dudas con los fuses.

Existe un codigo en C, donde pueda configurarlso, por ejemplo el FUSE HIGH = D9h, FUSE LOW = 62h y el FUSE EXT= FFh.
no tengo la posibilidad de utilizar el AVRdude ya que mi programador no lo admite.

se puede configurar los 'fuses' solo con un codigo en C que le agregue a mi programa principal?
 
Estuve leyendo todo el tema, soy principiante en AVR y tengo dudas con los fuses.
Yo también las tuve, pero leyendo la hoja de datos aclaré mis dudas.
No tengo la posibilidad de utilizar el AVRdude, ya que mi programador no lo admite.
¿Qué programador tienes?
Te recomiendo el USBasp, con ese podrás usar la interface o GUI, AVRDUDESS.
¿Existe un codigo en C donde pueda configurarlo?
Por ejemplo: el FUSE HIGH = D9h, FUSE LOW = 62h y el FUSE EXT= FFh.
¿Se pueden configurar los 'fuses' sólo con un código en C que le agregue a mi programa principal?
Que yo sepa no se puede, los fuses los configuro con AVRDUDESS.
Existen otras interfaces que usan avrdude.exe, pero a mi me pareció muy buena la GUI AVRDUDESS.
 
Última edición:
Hola
Estube leyendo todo el tema,soy principiante en AVRy tengo dudas con los fuses.

Existe un codigo en C, donde pueda configurarlso, por ejemplo el FUSE HIGH = D9h, FUSE LOW = 62h y el FUSE EXT= FFh.
no tengo la posibilidad de utilizar el AVRdude ya que mi programador no lo admite.

se puede configurar los 'fuses' solo con un codigo en C que le agregue a mi programa principal?
La configuracion de los fusebit en atmega (atmel) ., es totalmente distinta a los (PIC) ., microchip​
muchos se confunden ., porque en los pic ., los fuses ., se establecen en la compilacion​
En cambio en los atmega ., los fusebit establecen los parametros de funcionamiento ., independientemente a la compilacion ( se graban de manera separada ., y no es un lenguaje como por ej:C ., ASM o C++ )​
Hay muchisimos parametros mas ., en una configuracion de los fusebit​
Estan los conocidos (y otros no tanto) ., programas para configuracion de los FUSEBIT., ej: fusecalac http://eleccelerator.com/fusecalc/fusecalc.php?chip=atmega328p&LOW=62&HIGH=DD&LOCKBIT=FC
O este otro http://www.engbedded.com/fusecalc/ ., el cual hasta el dia de hoy no los entiendo ., porque hay muchisimos mas parametros de los que uno toma en cuenta​
He leido guias al respecto y algunos tutoriales ., pero sinceramente no entendi nada ., y se que son importanticimas ., ejemplo : el tiempo de arranque ( hay diferentes tienpos en cada MCU ) y son distintos entre los modelos​
Quise habrir un post ., para aprender sobre eso ., pero no se entendio​
Las herramientas de compilacion (compiladores) ., no dicen ni hacen nada de eso ., o sea (arreglatelas solito) ., si va mal ¡¡ se bloquea el micro !!​
Y eso no permite grabarlo de nuevo ., no se rompe ni se quema ., pero para volverlo a dejar en condiciones de uso ., hace falta una herramienta ., como el fusebitdoctor ., para desbloquearlo​
Espero que se alla entendido lo que explique en el mensaje​
 
Hola.
N
ecesito ayuda para saber que tipo de fuse settings poner en mi circuito.
Mi circuito esta formado por un Atmega328p con su respectivo circuito y un oscilador de 16KHz crystal modelo CRYTALHC49S package HC49/S.
Mi idea es quemar el bootloader con arduino NANO en el Atmega 328p y depues con un adaptador TTL cargar mi programa.
Pero necesito saber que fuse settings poner.
Gracias
 
Última edición por un moderador:
Saludos. Tengo una duda acerca de usar un ATmega88PA con la tarjeta Arduino Uno.
Como sabrán, esta tarjeta usa un ATmega328P y sus variantes, con su respectivo Bootloader.
La diferencia es solo lo correspondiente a la memoria, porque tienen los mismos registros y pinout.
Así que me dí a la tarea de instalar el MiniCore el cual contiene varios Bootloaders.
Usando el programador USBAsp le grabé el "optiboot_flash_atmega88p_UART0_115200_16000000L_B5.hex"
Ya que la tarjeta Arduino Uno usa un cristal de 16 MHz.
Según la información, dice lo siguiente: "Hit Burn Bootloader. If an LED is connected to pin PB5 (Arduino pin 13), it should flash twice every second."
O sea que cuando está grabado el Bootloader el LED por defecto (pin13) debe destellar dos veces por segundo.
Y esto lo hace después de grabar el Bootloader estableciendo los fuses que, según yo son los correctos.
m88p Fuse bits Options.jpg Fuses & lock bits.jpg

Estos fuses vienen siendo para Full Swing según la hoja de datos:
Full Swing Datasheet.jpg
Y ahí se menciona que esta configuración sirve para resonadores cerámicos o cristales de cuarzo desde 0.4 MHz hasta 20 MHz.
Así que opté por grabar estos fuses para usar este chip con la tarjeta Arduino Uno pero con un ATmega88PA
Nota: No es relevante para mí establecer cualquier otro tipo de fuses, los llamados dañinos para un programador ISP como el USBAsp, ya que tengo un programador paralelo de alto voltaje y también un recuperador de fuses para varios ATmega.
Así que por este lado no tengo problema con probar varias configuraciones de fuses, el problema que tengo es que no logro establecer comunicación de Arduino IDE o B4R con la tarjeta.

Me aparece lo siguiente:
Error subiendo.jpg
A veces llega a "programar" pero el LED del PB5 o pin 13, no hace nada y solo queda encendido.
Cuando eso se llega a dar, se muestra así:
Subido.jpg
Y bueno, el asunto es que no sé ya por dónde está el problema, yo pienso que en el Bootloader, ya que no sé qué tenga que ver un ATmega88 con un m88P/m88PA o m88PB, pero el MiniCore solo tiene estos:
Bootloaders disponibles.jpg

Aunque también pueden ser los fuses, pero confío en que por ahí no va la cosa si es que la hoja de datos no miente.


Esta es la configuración que uso en el IDE Arduino:
IDE Config.jpg
Espero que alguien me pueda asesorar con esto, ya que yo no lo he logrado. :unsure:
Gracias.

Como nota adicional:
Si solo compilo el programa y luego lo grabo directamente al ATmega88PA con el USBAsp, sí que funciona y hasta he programado el ATmega88PA con la librería LiquidCrystalI2C sin inconvenientes.
El propósito es que pueda usar la tarjeta Arduino Uno con el Bootloader.
Es algo a lo que le quiero encontrar el problema, y si alguien lo encuentra me voy a desasnar bastante. :LOL:
 
Disculpe mi ignorancia....
Nunca trabaje con Arduino, pero he llorado con otros.
Cuando todo me falla hacia adelante, camino para atras y suelo resolverlo ....
*Usaria un Xtal de la menor frecuencia posible al menos para empezar .
* Cables cortos en la comunicación..
* Leería el ripple de las fuentes del PIC con osciloscopio. Sobre todo la de grabación, que es mejor que sea exacta.
* El hecho que de vez en cuando grabe algo, me suena a falta de estabilidad en algún asunto.
* Casi siempre me resulto ser así, pero si es un tema de versiones , ahí ya no le puedo sugerir nada DOC...
Seguiré leyendo a ver si le encuentra el orificio al sesto. Saludos :rolleyes: :( :unsure:
 
Según la configuración que aparece ahí para tu microcontrolador indica esto:

# Upload port select
88.menu.bootloader.uart0.bootloader.extended_
fuses=0xfc

Selecciona un tamaño de bootloader de 256 palabras (512bytes). Acá dice que compilado es de 460 bytes.

De todas formas tu lo tienes en 1024 palabras (2KB), ahí ya veo un problema.


También, mas adelante:

# Clock frequencies
88.menu.clock.16MHz_external=External 16 MHz
88.menu.clock.16MHz_external.bootloader.low_fuses=0b1111{bootloader.cksel_bits}


Osea que desde CKSEL3-0 van todos a 1. (Cristal externo entre 8 y 16MHZ).

Obviamente instalando el bootloader para 16MHZ y 115200 baudios (Al menos el que yo creo que es el correcto).





Agrego:

También, no me acuerdo como se hacia pero es posible, compilaría un programa simple cualquiera y chequearía el .hex para ver en que dirección empieza, así sabría si hay una soperposición entre el bootloader y el programa.
Hay que buscar en los archivos fuente a donde salta el bootloader para confirmar que está todo bien.
 
Última edición:
*Usaria un Xtal de la menor frecuencia posible al menos para empezar .
* Cables cortos en la comunicación..
* Leería el ripple de las fuentes del PIC con osciloscopio. Sobre todo la de grabación, que es mejor que sea exacta.
Estoy usando una tarjeta original con su cable USB por defecto que no debe superar los 40 cms.
Cambiar el cristal no es viable pues la tarjeta tiene uno muy pequeño SMD y funciona perfectamente con el chip original (ATmega328P)
Repito, la intención es hacer funcionar esta tarjeta con un ATmega88PA
Yo he cambiado los bootloader de los arduino nano siguiendo las indicaciones de esta página:
Gracias por la información. Lo intentaré de esa forma, aunque creo que con el USBAsp lo estoy haciendo bien.
Al menos en lo que se refiere a grabar el Boootloader.

Edit.
El Optiboot no tiene Bootloader para el ATmega88 :(
Según la configuración que aparece ahí para tu microcontrolador indica esto:

# Upload port select
88.menu.bootloader.uart0.bootloader.extended_
fuses=0xfc

Selecciona un tamaño de bootloader de 256 palabras (512bytes). Acá dice que compilado es de 460 bytes.

De todas formas tu lo tienes en 1024 palabras (2KB), ahí ya veo un problema.


También, mas adelante:

# Clock frequencies
88.menu.clock.16MHz_external=External 16 MHz
88.menu.clock.16MHz_external.bootloader.low_fuses=0b1111{bootloader.cksel_bits}


Osea que desde CKSEL3-0 van todos a 1. (Cristal externo entre 8 y 16MHZ).

Obviamente instalando el bootloader para 16MHZ y 115200 baudios (Al menos el que yo creo que es el correcto).
Sí, creo que algo debo tener mal configurado, aunque ya lo he intentado con varias configuraciones de fuses y no va.
También, no me acuerdo como se hacia pero es posible, compilaría un programa simple cualquiera y chequearía el .hex para ver en que dirección empieza, así sabría si hay una soperposición entre el bootloader y el programa.
Hay que buscar en los archivos fuente a donde salta el bootloader para confirmar que está todo bien.
Eso sería leyendo la Flash del micro, pero el problema es que no puedo cargar ningún programa usando el Bootloader.
 
Última edición:
Eso sería leyendo la Flash del micro, pero el problema es que no puedo cargar ningún programa usando el Bootloader.
Me refería a revisar el .hex que general el compilador (En arduino se que había que toquetear en algún lado para que generara el hex sino se limita a compilar y subir), en teoría debería empezar después del sector de boteo.

Si el bootloader salta, por ejemplo, a 400H y el .hex compilado empieza en 100H va a haber problemas.

Al menos ya se descarta un problema.
 
Ok, sí, cuando no hay errores se logra compilar y siempre se generan dos archivos .hex
Uno básico y el otro para usar con Bootloader.
En realidad no sabría cómo saber en un ATmega el inicio del programa después del Bootloader, lo cual sí sé ver en un PIC. 😕

Adjunto los archivos que se generan.
 

Adjuntos

  • Compilados.rar
    3.1 KB · Visitas: 2
Edit.
El Optiboot no tiene Bootloader para el ATmega88
😳 😳 😳 😳 😳
Pero no habías indicado cuales eran los archivos que estaban disponibles??
En la web del MiniCore habla de que soporta un bootloader para el 88 :unsure:
El Optiboot tuneado que usa el minicore dice que permite escribir en Flash desde la misma aplicación, pero no sé será muy diferente del Optiboot normal.
En la web del Optiboot dice que minicore incluye el optiboot adecuado para las CPUs de 28 pines, así que cargando minicore debería incluir el bootloader. Y si el 88 es taaan parecido al 328 tal vez ese mismo funcione con muy pequeños cambios...
 
Pero no habías indicado cuales eran los archivos que estaban disponibles?
Así es, pero me refiero al que sugieren en la página que mencionaste, pensé que ahí habría otro que me pudiera servir, pero es muy limitado.
En la web del MiniCore habla de que soporta un bootloader para el 88 :unsure:
El Optiboot tuneado que usa el minicore dice que permite escribir en Flash desde la misma aplicación, pero no sé será muy diferente del Optiboot normal.
En la web del Optiboot dice que minicore incluye el optiboot adecuado para las CPUs de 28 pines, así que cargando minicore debería incluir el bootloader. Y si el 88 es taaan parecido al 328 tal vez ese mismo funcione con muy pequeños cambios
Sí, y ya probé con esos Bootloaders a varias frecuencias, pero no he logrado que funcione ninguno.
Obviamente cambiando los fuses para cada uno, pero algo no va bien.
Sigo investigando.
 
Después de borrar un 328P con el minipro e intentar los pasos llego al mismo lado: No se puede.

Lo único que veo es que la placa Uno (el micro que esta dentro a modo de programador) trata de comunicarse con el micro a programar mediante RS232 y no por SPI. Según el datasheet las únicas formas que hay para programar -a menos que tenga el bootloader ya instalado- es por SPI o paralelo.

Yo me acuerdo que hace unos años compre unos 328 sin bootloader y para grabarlo tuve que grabar en un 328 que ya tenia el bootloader un programa para "convertir" los datos seriales RS232 en SPI y tirar cables para programar el 328 virgen.
Para no tener que cablear siempre cree esta placa:

IMG_20220125_230149921.jpg

Ahora a buscar porque dicen que se puede colocar directamente en la placa del Uno y cargar el bootloader así.




Actualización:

Pues si, hay pasos que se saltaron. Así es como lo hice y funcionó:

Usando un Uno con el 328 con el bootloader subirle el sketch que aparece en: Archivos/ejemplos/ArduinoISP.
Cablear como sigue: (Yo hice la placa como aparece arriba)

BreadboardAVR.png

A partir de aca seguir los pasos que aparecen en Github del minicore.

Por cierto, estos son los fuses que tenia el 328 con el bootloader grabado. Yo grabé lo mismo salvo que la parte de los lock bit las deje sin chequear (BLB12 y 11). Y si, si ponía los CKSEL a 1 no lo reconocía.

fuses.png
 
Última edición:
Estoy usando una tarjeta original con su cable USB por defecto que no debe superar los 40 cms.
Cambiar el cristal no es viable pues la tarjeta tiene uno muy pequeño SMD y funciona perfectamente con el chip original (ATmega328P)
Repito, la intención es hacer funcionar esta tarjeta con un ATmega88PA

Gracias por la información. Lo intentaré de esa forma, aunque creo que con el USBAsp lo estoy haciendo bien.
Al menos en lo que se refiere a grabar el Boootloader.

Edit.
El Optiboot no tiene Bootloader para el ATmega88 :(

Sí, creo que algo debo tener mal configurado, aunque ya lo he intentado con varias configuraciones de fuses y no va.

Eso sería leyendo la Flash del micro, pero el problema es que no puedo cargar ningún programa usando el Bootloader.

¿ Es posible bajar la velocidad de comunicación del USB ? Una vez me paso, que era muy rápida
 
Por fin lo logré.
Usé el método que se menciona aquí: Bootloading an ATmega88 for Arduino
Es a la antigua pero funciona. :)
Ya me estaba desanimando pero de casualidad dí con esa página.
Se trata de modificar el archivo "boards.txt" con lo siguiente:
Código:
atmega88.name=ATmega88
atmega88.upload.protocol=arduino
atmega88.upload.maximum_size=7168
atmega88.upload.speed=19200
atmega88.bootloader.low_fuses=0xe2
atmega88.bootloader.high_fuses=0xdf
atmega88.bootloader.extended_fuses=0x00
atmega88.bootloader.path=atmega88
atmega88.bootloader.file=ATmegaBOOT_88_m88.hex
atmega88.bootloader.unlock_bits=0x3F
atmega88.bootloader.lock_bits=0x0F
atmega88.build.mcu=atmega88
atmega88.build.f_cpu=8000000L
atmega88.build.core=arduino
atmega88.build.variant=standard
Añadido eso ya me aparece la tarjeta "ATmega88" pero al compilar existió un problema...
Falta el parámetro de "upload tool"
Así que esa parte la copié del mismo archivo pero para otra tarjeta.
Esa parte faltante debe quedar así: atmega88.upload.tool=avrdude

El Bootloader recomendado no se ve nada optimizado, pero al menos ya anda el ATmega88PA en una tarjeta Arduino Uno.
Sin embargo, hay algo curioso que tengo duda y ya no lo comprobé por la emoción.
Y es que este Bootloader está programado para una frecuencia de reloj de 8 MHz, pero debe ser con oscilador interno.
No creo que se esté usando el cristal del Arduino Uno a 16 MHz, ya que el blink con el delay en 1000 ms va justo.
Recomiendan estos fuses:
Código:
EFUSE = 0x00
LFUSE = 0xE2
HFUSE = 0xDF
El AVRDUDESS me dio error con el Extended Fuse (EFUSE) que no podía estar en 0x00
Lo dejé como estaba en 0xF8 y creo que eso está bien. (Ese fuse nunca lo he tocado)

Aquí cabe aclarar lo siguiente:
En la parte: atmega88.bootloader.extended_fuses=0x00
Debería quedar con 0xF8
En la parte: atmega88.bootloader.path=atmega88
Esa será la carpeta donde se debe alojar el archivo .hex del Bootloader. (Yo la dejé así)
Dicha carpeta yo la creé en: C:\Program Files (x86)\Arduino\hardware\arduino\avr\bootloaders
En la parte: atmega88.bootloader.file=ATmegaBOOT_88_m88.hex
Ahí se debe escribir el nombre del archivo .hex
En mi caso tras compilar, fue: ATmegaBOOT_88.hex

Me hubiera gustado que el Bootloader para 16 MHz funcionara, aunque seguiré investigando sobre las causas del fallo en los Bootloaders del Optiboot.

Adjunto el archivo del Bootloader y el código fuente con todo y página, por eso de que luego los sitios desaparecen.
Gracias a todos por su valiosa cooperación. (y)
 

Adjuntos

  • Bootloading an ATmega88 for Arduino.rar
    827.1 KB · Visitas: 3
  • Uploaded.jpg
    Uploaded.jpg
    115.4 KB · Visitas: 2
Les proporciono esta información que supongo será de utilidad para grabar los ATmega8/48/88/128 sin Bootloader.
Esto nos deja un poco más de espacio en la memoria Flash y no prescindimos de la tarjeta Arduino, que es lo que comúnmente hago.

Para esto se necesita de lo siguiente:
Por fácilidad y pronto desarrollo, una tarjeta así:
Placa de desarrollo.jpg
Este tipo de tarjetas se consiguen por Internet con el nombre de: Placa de desarrollo ATmega8
Son muy baratas, unos 2.5 dólares con todo y envío, en mi caso a México desde China.

Un programador ISP USBAsp
USBAsp.jpg
Cables Dupont para puentes, que depende del caso pueden ser macho/hembra hembra/hembra

Cables Dupont.jpg
Para esto sí debemos instalar el MiniCore en Arduino, ya que necesitaremos establecer el tipo de programador.
Por lo general el USBAsp requiere del controlador "libusb0", en el caso de usar AVRDUDESS como programador,
pero el MiniCore con Arduino requiere otro controlador, el "WinUSB"
Así que por fácilidad en cuestión del cambio de controladores, uso Zadig
Por lo tanto, en Zadig debemos establecer lo siguiente:
Seleccionar en el menú "Options" "List All Devices" y seleccionar "USBasp"
Nos mostrará esto: (Depende del caso de ya haber instalado previamente el controlador "libusb0")
De cualquier forma podremos instalar el controlador "WinUSB" sea cual fuere el caso...
libusb0 to WinUSB.jpg
Ahí debemos seleccionar el controlador WinUSB como en la imagen y presionar el botón "Replace Driver"
Tras eso, Zadig reemplazará el controlador libusb0 por el WinUSB y listo.
Cabe decir que siempre podremos revertir los controladores de una forma muy sencilla con este programa.

Sucede qué... Aunque sepamos que el USBAsp que tenemos (Original) tenga los VID y PID corrrectos (0x16C0 y 0x05DC),
El MiniCore con AVRDUDE nos dirá que no se encuentra el dispositivo.
Por eso es que debemos cambiar los controladores.
Entonces tenemos que recordar qué... Si queremos usar AVRDUDESS debemos usar el controlador libusb0 y si queremos usar Arduino con el MiniCore, debemos usar el controlador WinUSB

Ahora, la configuración en el IDE Arduino debe quedar así (Obviamente cambiará el tipo de oscilador y microcrontrolador):
Config MiniCore.jpg
Aquí hay algo importante, y la vez muy mal, ya sea para el IDE Arduino como para el IDE B4R...
Sucede que forzosamente te piden un puerto serial, siendo que se está estableciendo un programador por USB. 😕
Bueno, que no panda el cúnico, 😅 con instalar un puerto serie virtual se resuelve ese problema.
En mi caso, la PC que uso tiene un puerto serial "COM1" que no sabía que estaba ahí. 😄
Es que lo tiene la tarjeta pero no tenía conector externo, hasta que le puse uno que quedó colgando por fuera y que ahora uso con el WinPIC (No confundir con el WinPIC800) y el hardware del JDM para programar o recuperar algunos PIC de gama baja o para reprogramar EEPROMS I2C
Cosas que descubres cuando entras al Administrador de dispositivos. 😄

En fin, ya con estas indicaciones podrán programar sin tarjetas Arduino ni Bootloaders, los microcrontroladores mencionados.
Y sobre todo, con costos obviamente más baratos, aparte de los beneficios de poder establecer tus propios fuses conforme a velocidad y reducción de consumo.

Les recuerdo que, tocar los fuses teniendo un programador ISP y modificar sin saber, se corre el riesgo de que ya no se reconozca el microcontrolador.
Así que mucho cuidado con eso, no es de espantarse, no le pasa nada al micro, ya que se puede recuperar, pero ya no por ISP.
Aunque hay trucos inyectando ciertas frecuencias por XTAl1, pero eso ya es otra historia.
 
Yo los arduinos que he resucitado ha sido desde el propio IDE del arduino, usando otro arduino o con un USB asp .
Flasheé una controladora de impresora 3D con la herramienta de atmel pero las demás con el propio arduino ide
 
Atrás
Arriba