Cómo cambiar el fusible bits de AVR Atmega328p - microcontrolador de 8 bits con Arduino (2 / 7 paso)

Paso 2: Bits de comprensión fusible de la hoja de datos

Los microcontroladores AVR AtmegaXXX viene con un oscilador interno de 1 MHz por defecto. En este instructable mostraré cómo cambiar los fusibles de Atmega328P-PU a trabajar al oscilador interno 8MHz. La ubicación de fusibles específicos bits difiere entre todos los bytes de tres fusibles (fusibles bajas, alta y extendidas) función chip AVR utilizado. Así que asegúrese de anotarlos antes de les.

Fusibles de Byte bajo

El fusible de byte bajo aborda el reloj de la fuente, qué tan rápido se ejecutará el chip y el tiempo que espera en el arranque. 1 byte equivale a 8 bits. Así que hay 8 bits en el byte bajo fusible. Estos 8 bits se explican aquí:

  • Bit 7: CKDIV8: cuando juego divide la velocidad de reloj de 8
  • Bit 6: CKOUT: cuando los pulsos de reloj son PB0 salida (Pin 14)
  • Bit 5: SUT1: retardo de inicio
  • Bit 4: SUT0: retardo de inicio
  • Bit 3: CKSEL3: establecer el origen del reloj
  • Bit 2: CKSEL2: establecer el origen del reloj
  • Bit 1: CKSEL1: establecer el origen del reloj
  • Bit 0: CKSEL0: establecer la fuente de reloj

Los chips ATmega pueden funcionar a diferentes velocidades o frecuencias y la frecuencia está determinada por la fuente de reloj que se utiliza. La fuente de reloj se establece mediante la CKSEL3... fusible 0 bits. Para trabajar con la fuente de reloj interna necesitamos establecer CLSEL3 = 0, CKSEL2 = 0, CKSEL1 = 1 y CKSEL0 = 0. Usted tiene que encontrar este valor en la hoja de datos del microcontrolador. En la hoja de datos hay un capítulo "reloj del sistema y opciones de reloj". Hay un subtema en ese capítulo "Fuentes de reloj". Allí encontrarás una tabla donde el valor de CKSEL3... 0 puede ser fuente. He adjuntado una captura de pantalla de la hoja de datos.

Para el tiempo de inicio hay otro subtema "calibrado RC oscilador interno". Allí encontrarás otra tabla para el SUT0... 1. voy a la opción de poder levantamiento lento. Así SUT1 = 1 y SUT0 = 0.

Ahora nos quedamos con dos más bits para configurar: CKOUT y CKDIV8. No necesito ninguna salida de pulso de reloj en PB0. Así que pondré esto a 1 (sin programar).

La máxima frecuencia del oscilador interno RC para Atmega328P-PU es 8 MHz. Esto se logra cuando la CKDIV8 es 1 (o). Si establece este a 0 (o programada) entonces tu chip será runt a 1 MHz. Para poder ejecutar el chip en 8 MHz tenemos que establecer CKDIV8 = 1.

Ahora la combinación de los 8 bits, la requiere fusibles baja byte es 11100010.

Fusibles de byte alto

El fusible de byte alto se explica a continuación. Usted puede simplemente omitir esta parte. Aquí sólo he explicado el bits del fusible alta. No necesita cambiar los bits del fusible alta para cambiar la fuente de reloj y frecuencia de funcionamiento. Pero si usted está interesado en saber sobre el byte alto funde luego ir a través del siguiente párrafo.

Hay 8 bits en el fusible de byte alto también. Estos son:

  • Bit 7: RSTDISBL: desactivar reinicio externo
  • Bit 6: DWEN: habilitar depuración de alambre
  • Bit 5: SPIEN: activar serial programación y descarga de datos
  • Bit 4: WDTON: temporizador de vigilancia siempre en
  • Bit 3: EESAVE: borrar de la memoria EEPROM de preservar a través de chip
  • Bit 2: BOOTSZ1: establece el tamaño de memoria del gestor de arranque
  • Bit 1: BOOTSZ0: establece el tamaño de la momory de gestor de arranque
  • Bit 0: BOOTRST: seleccione el vector de reset

Ahora voy a explicar cada uno:

RSTDISBL (desactivar el reset externo)

PC6 del Atmega328 es un pin de reset, mantenga bajo (a tierra) y el chip se restablecerá. Así es como funciona el interruptor en el Arduino. Cuando usted presiona el botón de reset se conecta PC6 tierra y restablece el chip. PC6 también puede ser utilizado como un pin de IO normal pero trata de desactivar la función de restablecimiento en los giros que significa que el chip no puede ser en línea programado (en línea de programación requiere un reset). Esta es una de las opciones es mejor no cambiar. Me imagino que RSTDISBL se pone en ejecución por razones de seguridad detener el chip de ser reprogramado o el firmware que descargaron. Cuando RSTDISBL está programada la puesta en marcha de tiempo (SUT1 SUT0) se incrementa a 14CK + 4.1ms para el modo de programación se pueden introducir.
De forma predeterminada, la configuración es RSTDISBL = 1 (sin programar).

DWEN (depuración habilitar el alambre)

Chips ATmega han construido en la depuración de herramientas por defecto desactivado. El fusible DWEN se utiliza para activarlos. DWEN utiliza el mismo pin como reset (PC6) y DWEN está habilitado (y no se configuran los bits de cierre) el pin de reset se convierte un pin de comunicación y normal ya no funciona. Por ejemplo, si habilita DWEN en un Arduino el botón ya no funciona. Para utilizar la depuración de la en-viruta necesita un programador compatible como el dragón del AVR. Ya que no tengo un programador adecuado he no utilizado nunca y no sé cómo utilizar depuración. Si quieres saber más hay un buen artículo para empezar.

Este es uno de los fusibles con que debe tener cuidado. Si habilita DWEN y también activar los bits de cierre no puede programar el chip de la manera normal.

Si están empezando dejar DWEN 1 (sin programar). Después de todo, reset es muy útil.

SPIEN (Serial activar programación y descarga de datos)

Chips ATmega pueden ser programados usando programación serial. Programación serial se utiliza para a bordo la programación utilizando un protocolo serial a través de un ISP (programador serial inline) o UART (receptor asincrónico universal / transmisor). El método normal de los chips ATmega de programación es a través de la interfaz SPI con el SCK (reloj), MOSI (entrada) y pines MISO (salida). Si deshabilita la serie programación de entonces ya no puede usar el SPI para programar el chip. También puede deshabilitar el serial usando los bits de cierre de la programación. Para uso normal y el desarrollo deja SPIEN habilitado, sin embargo, si usted tiene un dispositivo que es final y no programar más entonces usted puede utilizar esta opción para detener personas que acceden a la viruta a través de comunicación serial.

El ajuste predeterminado es SPIEN habilitado, SPIEN = 0 (programado).

WDTON (temporizador de vigilancia siempre)

El perro guardián consiste en un temporizador que hará que el chip de reset si no recibe un OK señal en momentos específicos. Esto puede ser útil cuando usted tiene código inestable o tiene un sistema que no debe bloquear permanentemente. Cuando se activa el temporizador del vigilante, debe chocar un bosquejo o congelar el temporizador a tiempo y reajustar la viruta provocando un reinicio similar a presionar el botón de reset un un Arduino funcionando. El temporizador del vigilante puede activarse en software para la configuración de fusibles no necesita realmente ser utilizado. Por defecto, el temporizador del vigilante es off, WDTON = 1 (sin programar).

EESAVE (memoria EEPROM preservar)

Cuando está programado el chip ATmega se borra la memoria justo antes de que el nuevo código es cargado. En circunstancias normales la memoria EEPROM se borra así como la memoria del programa. El fusible EESAVE puede utilizarse para contar el chip no para borrar la EEPROM. Esto es útil cuando desea actualizar el código, pero mantener la configuración del usuario que se almacena en la EEPROM.
Tengo la costumbre de poner el fusible; EEPROM tiene un ciclo de vida limitado tan menos escribe en él lo mejor. Borrado de la eeprom no tiene efecto en subir nuevo código y la mayoría de mis proyectos no utiliza la memoria eeprom para no borrarlos no es un problema. La dropController almacena ajustes y gota veces en eeprom y lo puse EESAVE para conservar los datos cuando subo nuevas versiones del código.

El valor predeterminado es EESAVE = 1 (sin programar), y memoria EEPROM se borra durante el borrado del chip para la programación del ciclo.

BOOTSZ1 y BOOTSZ0 (Boot loader tamaño)

Los chips ATmega tienen la habilidad de usar un gestor de arranque, esto es un pequeño programa que se ejecuta cuando el chip es primera vez o cuando se reinicia. Se utilizan normalmente los cargadores de arranque para inicializar el dispositivo y Compruebe la comunicación externa. Arduino utiliza un gestor de arranque para comunicarse con un ordenador conectado a ver si hay un nuevo programa a ser cargado. Por esta razón que el Arduino se restablece cuando subes nuevo código, el reset ejecuta el cargador de arranque, los controles del cargador de arranque a ver si tienes el nuevo código.
El cargador de arranque se guarda en la memoria de programa, la misma memoria utilizada para la aplicación del usuario y desde el gestor de arranque puede ser de diferentes tamaños se puede saber el chip ATmega cuánto espacio para reservar. El cargador de arranque Arduino (más viejo) regular es de 2 kilobytes (KB) pero el Optiboot nuevos (se usa en la ONU) es de sólo 0,5 KB (512 bytes). Si utilizar Optiboot y establecer el tamaño del cargador de arranque por consiguiente ganarás un extra 1,5 KB para su propio programa. 1.5 KB puede ser un montón de espacio, funcionamiento fuera de espacio de programa es por eso que comenzó a programar chips ATmega de independiente en el primer lugar. El código para el controlador de la gota llegó a ser demasiado grande para el Arduino regular así que quité el cargador de arranque.
Si tienes un gestor de arranque BOOTSZ debe ser utilizado conjuntamente con BOOTRST. BOOTRST dice el chip ATmega de la dirección de memoria donde se inicia el cargador de arranque. Si BOOTRST no se establece la aplicación del usuario puede utilizar toda la memoria independientemente de los ajustes de BOOTSZ.

El valor predeterminado para los nuevos chips es BOOTSZ1 = 0 (programado) y BOOTSZ0 = 0 (programado) que significa que tienen el máximo de memoria reservado para un gestor de arranque.

BOOTRST (seleccione reset vector)

Chips ATmega pueden usar un gestor de arranque, esto es un pequeño programa que se ejecuta cuando se resetea el chip. Si tienes un gestor de arranque entonces es necesario que informe el MCU y esto es mediante el uso de la BOOTRST fusible de ajuste. Cuando el fusible de BOOTRST, en el reinicio el dispositivo saltará a la dirección del gestor de arranque. Si no juego, el chip se salta a la dirección de inicio del programa en 0 x 0000.

El valor predeterminado es BOOTRST = 1 (sin programar).

Si BOOTRST no está establecido (no arranque) los fusibles BOOTSZ no se utilizan independientemente del valor.

ADVERTENCIA: Los fusibles RSTDISBL, SPIEN y DWEN tienen el potencial para el chip ATmega de ladrillo, o por lo menos hacen muy muy difícil volver a utilizar el chip. Para uso general y especialmente si usted está empezando con chips independientes de programación, no debe cambiar estos ajustes del fusible. Usted debe también comprobar que no son cambiándolas cuando se vuelva a escriben los otros ajustes del fusible.

Así que nuestro nuestro byte requiere fusible alta es 11011011.

Fusible largo Bits

Los fusibles extendidos sólo se utilizan para establecer el nivel de detección de brown-out (DBO). Los chips ATmega pueden convertirse en inestable o poco confiable cuando se usa con voltaje insuficiente. Por ejemplo, el Atmega328 / 328P puede ejecutar con seguridad en 16 MHz si tiene al menos 4 V de la fuente. Cualquier cosa por debajo de 4V significa que el chip es probable que se portan mal. Esto sería un problema si el dispositivo se está utilizando con sensores para tomar medidas o confiado en tiempos precisos.

Para asegurar que el chip tiene suficiente voltaje de entrada un nivel de voltaje mínimo puede establecerse. Si el voltaje cae por debajo de este nivel entonces el chip se resetea. Esto se llama el nivel detector de brown-out. Básicamente, si el voltaje suministrado es inferior a la DBO el chip mantiene reset bajo.

No estoy pasando cada bits del byte de largo fusible. Por defecto todos los bits de este byte se establece como 1 (sin programar).

Y aquí está que nuestro byte largo fusible es 11111111.

Artículos Relacionados

Programación AVR con Arduino como ISP sin gestor de arranque y cristal externo

Programación AVR con Arduino como ISP sin gestor de arranque y cristal externo

Hola!!. Soy Avra y este es mi primer instructable. Aquí voy a explicar cómo grabar códigos en independiente AVR ICs sin usar cualquier USBASP, cualquier cristal externo y cualquier gestor de arranque. Sólo necesitas una placa de Arduino. Puede ser or
Programación de AVR con Arduino, AVRdude y AVR-gcc

Programación de AVR con Arduino, AVRdude y AVR-gcc

AVR es un tipo común, de bajo costo de microcontrolador que puede parecer intimidante trabajar con, pero no se preocupe! Una vez que tengas las herramientas configurar y conocimientos básicos pueden llegar a ser no sólo útil, sino fundamental a las n
Usando el pin 1 de Attiny13/25/45/85 sin meterse con el fusible bits

Usando el pin 1 de Attiny13/25/45/85 sin meterse con el fusible bits

En ocasiones me han estado utilizando un Attiny13, 25, 45 y 85 en un proyecto y sólo tenía un perno corto. Estos chips se suponen tienen 6 pines I/O pero pin número uno dobles (PB5/ADC0) como pin RESET y para utilizarlo como un pin de I/O, es necesar
¿Cierto grabado de foto de 8 bits con cortador laser chino - tal vez un mundos primero?

¿Cierto grabado de foto de 8 bits con cortador laser chino - tal vez un mundos primero?

Actualización 04/11/2016: el nuevo firmware está listo :)Puede descargar el archivo HEX aquí.Para subir a tu Mega2560 Utilice XLoader.El programa se explica más o menos: seleccione el archivo hexadecimal, tablero y com el puerto, subir de golpe y dis
Grabado de 8 bits con Dremel

Grabado de 8 bits con Dremel

Para nuestra noche de construir Dremel, que sabíamos que tendríamos muchas familias en la atención así que queríamos un proyecto fácil los niños podrían hacer y les dan la mano en la experiencia con la herramienta. Los niños en nuestro taller dibujar
Cambiar la velocidad de transmisión de MT3339 con Arduino (fijo)

Cambiar la velocidad de transmisión de MT3339 con Arduino (fijo)

para mi próximo proyecto de Arduino necesitaba un módulo GPS. Edición:Encontré un gran problema con este método,después de cortar la alimentación al módulo, la velocidad en baudios restablece a su propio ajuste de fábrica.Puede conectarse una batería
Cómo cambiar la tasa de parpadeo del LED mediante potenciómetro en el arduino uno.

Cómo cambiar la tasa de parpadeo del LED mediante potenciómetro en el arduino uno.

Este video contiene grupos de comandos y códigos de escritura que permiten un potenciómetro cambiar la velocidad de parpadeo del LED en la placa de arduino uno con '123d circuitos' online apertura de plataforma para la fabricación del circuito, progr
CPU 8 BITS sobre ARDUINO (SDK-8 BITS/8085AH)

CPU 8 BITS sobre ARDUINO (SDK-8 BITS/8085AH)

Durante mi tiempo de dictar clases en la Universidad Central de Venezuela, siempre ocurría el problema de realizar el proyecto de microprocesadores. muchos materiales, el pecado poco CLO2, backelitas etc.. Me dispuse a realizar un microsistema bonita
Controlador de matriz RGB Dual AVR

Controlador de matriz RGB Dual AVR

Un amigo mío tenía una gran idea para un proyecto impresionante. Quería crear un par de aparejos de servo que se imitan el movimiento de sus manos con un movimiento de salto. Encima de los servos sentarían algunos láseres por lo que podría crear algú
Fusible controlador de NES de granos

Fusible controlador de NES de granos

hacer un controlador de juego con los granos de fusible que se parece a un imán de nevera de granos fusibles que parece un controlador de NES de Nintendo.Estética de videojuegos Vintage hace un gran regreso hace unos años. Fusible de granos, con su a
RedBitOne - pequeña pero de gran alcance

RedBitOne - pequeña pero de gran alcance

Una ruptura pequeña atmega328p-au con todo el poder de la ONU Arduino(TM), verlo conduciendo su próximo proyecto de micro!Visita el Blog y participar en una encuesta sobre un AVRisp$ 10!OPEN SOURCE---todos los archivos están en El GITHUBno dude en ut
Forma remota controlada cámara VGA - Resumen

Forma remota controlada cámara VGA - Resumen

la idea detrás de este proyecto era muy simple: diseño de un sistema controlado remotamente económico capaz de la aún tomando fotos y subiéndolas a un almacenamiento remoto con una cámara para ser activado por comandos remotos o eventos de sensor. Y
¿Cómo programar Arduino chips sobre LPT con código c ++?

¿Cómo programar Arduino chips sobre LPT con código c ++?

Hi otra vez!Hoy te muestro cómo programar Arduino chip(like ATtiny85) con código c ++ (también conocido como código en el IDE de Arduino)Ya que se puede utilizar BSD(aka LPT) programador con el IDE de Arduino, hice este tutorital :)Nota: Este tutorit
Puerta de gato Twitter

Puerta de gato Twitter

Nota: para ver todo en una sola página, por favor diríjase a: www.tweetingcatdoor.com Después de recibir muchos correos electrónicos solicitando instrucciones y Kits para la construcción de la "Puerta de gato twitteando ", decidí hacer una versi