¿Cómo configurar los Fuses del AVR?

Que tal comunidad.

Espero algien me pueda ayudar. Empece a programar el ATmega8535, utilizando los valores por default de los Fuses, osea configurados para el Oscilador interno. Ahora quiero utilizar un oscilador externo de 12MHz tanto para el ATmega8535, como para el ATmega8, pero no tengo idea de como configurar los Fuses, o como calcularlos.

Agradeceria mucho me pudieran explicar como calcularlos, de antemano gracias.
 
El ATMEGA8535 solo puede funcionar hasta a 8MHz con el oscilador interno... para llegar a 12MHz tienes que colocar un cristal externo, un oscilador o algun RC

Lo mismo va para el ATMEGA8....
 
Ten cuidado al cambiar los fuses, si estas usando un "programador serial", si lo configuras para usarlo con un cristal externo, perderas la sincronizacion y el micro ya no te respondera y deberas usar un programador paralelo para resetear la configuracion.
 
Gracias por sus consejos pero el programador que estoy utilizando, es USB, para ser mas especifico es del proyecto de "USBAsp", y utiliza para programar al "AVRdude", dentro de las especificaiones que tengo que escribir me pide un LFuse, HFuse, y EFuse, (Low, Heigh, Extra, Fuses), donde se supone debo poner el valor del los Fuses para utilizar el oscilador externo, y no se que valores escribir o como calcular esos valores.

De cualquier forma agradesco su tiempo, y espero alguien mas me pueda ayudar.
 
Para un cristal externo de 12MHz los fusibles deben quedar de la siguiente manera:

CKOPT = 0
SUT1..0 = 01
CKSEL3...1= 101 o 110 o 111 (cualquiera de estos valores)
CKSEL0 = 1
 
Muchas Gracias por la ayuda, ya entendi como obtener los valores de los fusibles, de la hoja de datos, como los que muestra "Chico3001", desgraciadamente me di cuenta ya muy tarde, y como andaba investigando por otros foros, puse algunos valores de fuses que me suguirieron, y ahora no puedo leer el micro, ni escribir ni nada. Compre otro y este si lo configure bien, pero no se si el primero se pueda recuperar o ya lo perdi.
 
Un micro no se echa a perder por configurar mal los bits de programacion, solo dale un borrado total y deberias poder leerlo de nuevo

Si no puedes leerlo casi con seguridad algo mas lo echo a perder (exceso de voltaje, estatica, o algo mal conectado)
 
Con perdon de Chico3001, si estas usando el USBASP y cambias el fusible de SPI si vas a terminar con un chip inutil, al menos para ti, hasta que consiguieras un programador hv.

En Esta Pagina puedes elegir las opciones de los fusibles y te genera una linea de comando que puedes agregar a la del avrdude.

Por ejemplo para un Atmega8535 configurado para un cristal de 12mhz externo y el programador usbasp nos da algo asi:

-U lfuse:w:0xcf:m -U hfuse:w:0xd9:m


La linea de comando seria:


avrdude -p m8535 -c usbasp -U lfuse:w:0xcf:m -U hfuse:w:0xd9:m
 
use atmega8 para programar con un puerto serial quizé cambiar la configuracion de los fusibles, pero me equivoque, y a la hora de escribir la configuracion, marco error, y ahora ya ni si quiera puedo leer los fusibles, como puedo recuperar la configuracion, con que programador??
 
Que tal Eclip-se, oye estoy muy apenado con molestarte por este medio pero espero agradecidamente me puedas ayudar en este problema. Te cuento, tuve un problema al configurar los fuses de un atmega8515 y por ello arme el circuito que propones, llamado resux, y bueno, no me funciona. Te cuento a mas detalles lo que me pasa:

- Al conectar el usb a la pc no reconoce el dispositivo, windows manda un error diciendo que ese disposito ha tenido un mal funcionamiento por lo que windows no lo reconoce.

- Al arrancar el programa, doy clic en Read pero me sale un mensaje de error mencionando que no se detecta el hardware. supongo que es por dos posibles razones, una que el programa del pic esta mal, lo cual no creo probable y en segunda que la conexion del conector USB la tengo mal. En este ultimo caso, la conexion del USB es como la pones en el esquematico?.

- Medi los voltajes en el nodo "RESET" y en "VCC" pero esos son cero, cabe señalar que en el nodo que esta entre el diodo 1n4148 y la resistencia de 2.2kohms tengo 10v y pasando de esta tengo 0v, como veo el transistor esta funcionando como conmutador no?, una vez que reciba una señal negativa en la base el transistor, este conducira a "RESET" el voltaje de 13 volts que limita el diodo zener.

Esto es lo que note, no se que me podrias recomendar porque ya he revisado todo y no me hace nada de nada.

Espero puedas ayudarme, te lo agradecieria de mil maneras. Gracias
 
hola a todos, tuve "error de dedo" ja y volvi a configurar mal los fusibles del atmega 8, lo queria de forma de oscilador interno pero la configuracion quedo asi: CKSEL=1111 SUT=01 al revisal la hoja de datos Tabla 5 dice que es "Crystal Oscillator, BOD enable " y " 16K CK "
saben a que se refiere ?? que es "16 k" y "CK" , que debo de hacer en el oscilador para poder reconocerlo de nuevo?
 
Ahora ya se en que estoy mal, solo lo configure con oscilador externo, pero es mas bien una señal de reloj, todo esto lo dice la hoja de tados, teoricamente debe de funcionar asi, ja lo que tengo duda es que en la tabla 12 hay una parte que dice: Start-up Times for the External Clock Selection
Start-up Time from Power-down and Power-save 6 CK. no se como interpretar eso que significa 6 ck etc.....
 
Sale muchas gracias "Dseda86" ahora lo entiendo mejor, y si estoy de acuerdo en que todo la informacion esta en la hoja de datos, y te ayuda un buen la pagina recomendada
Ahora se mas a detalle como funciona y me doy cuenta que hay que saber leer.
Pude recuperar 3 atmega8 que parece ser que ya no funcionaba por una mala configuracion de fusibles, pero ahora se que con una programacion SPI solo no tienes qeu desactivara este para que pueda seguir funcionando, lo cual casi todos lo programas por esta forma no te perimiten modificarlo.
Solo tuve que meter una señal de reloj a una frecuencia de 1MH y con eso lo reconcio, y posteriormente conforme a las tablas lo configure con oscilador interno y ahora puedo programarlo sin problemas :) :) .
Siempre crei qeu forzosamente podia recuperar eso micros con una prgrmacion paralela lo cual no es necesario. :) :) saludos a todos!!
 
Efectivamente, yo tambien recupere un atmega8, porque le configure cristal externo, solo que como yo no tengo un generador de frecuencias me hize un astable con 555 a 100Khz luego en ponyprog seleccione la velocidad mas baja y wuala revivio mi atmega8, y efectivamente eso que dices del bit SPI ningun programador serial te permite modificarlos seria tonto jejejeje, si te das cuanta muchos cometen ese error al pensar que el micro ya no sirve por modificar el SPI cuando en realidad solo es la sincronia, en fin que yo no se que esperan los de ATMEL para corregir esto porque es una verdadera lata
 
Ten cuidado al cambiar los fuses, si estas usando un "programador serial", si lo configuras para usarlo con un cristal externo, perderas la sincronizacion y el micro ya no te respondera y deberas usar un programador paralelo para resetear la configuracion.


hola,me ha pasado este problema que comentas pero te refieres a un programador por puerto paralelo para resetearlo?
¿hay alguna otra manera de poder solucionarlo sin otro programador?,gracias
 
Hola rproto, inicialmente casi todo el mundo que utiliza AVRs tiene o se consigue un grabador serial (no se refiere a un grabador por puerto serie sino al modo en el grabador graba los datos en el AVR) como por ejemplo el famosos USBasp.
Es sabido que los AVR (ATmega32) vienen configurados de fabrica con oscilador interno de 1MHz. Si por algún motivo configuraste los fuses para usar un cristal externo, tienes que usar ese mismo cristal externo para la siguiente vez que lo quieras grabar, de otro modo no podrás regrabar al AVR...
Si por mala suerte cambiaste la configuración del bit SPIEN y lo deshabilitaste entonces estas perdido ya no podrás regrabar ese AVR a menos que uses un grabador paralelo.
en este link un poco de información sobre como grabar un AVR
Aquí un poco de información sobre grabar AVRs.
http://electronicamcu.blogspot.com/2017/02/grabando-avrs.html
 
Atrás
Arriba