¿Cómo debe configurar avr el bit fusible?
La configuración de los bits de fusible AVR es una tarea relativamente detallada y los usuarios a menudo pasan por alto su importancia o les resulta difícil dominarla. Los siguientes son algunos puntos clave y asuntos relacionados a los que se debe prestar atención al configurar el bit fusible del AVR.
(1) En el manual del dispositivo AVR, programado y no programado se utilizan para definir el estado del bit del fusible. "No programado" significa que el estado del fusible es "1" (deshabilitado"); el estado del fusible es "0" (permitido). Por lo tanto, el proceso de configuración del bit de fusible es en realidad "configurar el bit de fusible para que se convierta en un estado no programado "1" o en un estado programado "0".".
(2) Cuando utilice un software de herramienta de programación que determine el valor del estado del bit de fusible seleccionando una marca de verificación "√", primero lea atentamente las instrucciones de uso del software y asegúrese de que "√" Significa configurar el bit del fusible. El estado es "0" o "1".
(3) Se debe prestar especial atención al utilizar el programa de descarga de programación en CVAVR. Dado que el estado inicial de la mayoría de los bits de fusible se define como "1" cuando se abre inicialmente la interfaz de descarga de programación de CVAVR, no lo haga. use su programación La opción "todos" en las opciones del menú. En este momento, la opción "todos" configurará los bits de fusible del chip en función de la definición del estado inicial de los bits de fusible, pero de hecho, a menudo no es el resultado de configuración requerido por el usuario. Si desea utilizar la opción "todos", primero debe usar "read-gt;fuse bits" para leer el estado real de los bits de fusibles en el chip y luego usar la opción "todos".
(4) Antes de usar un nuevo chip AVR, primero debe verificar la configuración de sus bits de fusible, luego configurar los bits de fusible de acuerdo con las necesidades reales y registrar el estado de cada bit de fusible.
(5) Después de cifrar el chip AVR, los datos en el Flash interno y E2PROM del chip no se pueden leer. El estado del bit del fusible aún se puede leer pero la configuración no se puede modificar. El comando de borrado del chip sirve para borrar los datos en Flash y E2PROM, y al mismo tiempo configurar el estado del bit de bloqueo de dos bits en "11", en un estado desbloqueado. Pero el comando de borrado de chip no cambia el estado de otros bits de fusible.
(6) El procedimiento operativo correcto es: cuando el chip no está bloqueado, descargue el código de ejecución y los datos, configure los bits de fusible relevantes y finalmente configure los bits de bloqueo del chip. Después de bloquear el chip, si descubre que la configuración del bit del fusible es incorrecta, debe usar el comando de borrado del chip para borrar los datos del chip y desbloquearlo. Luego vuelva a descargar el código y los datos en ejecución, modifique los bits de fusible relacionados con la configuración y finalmente configure el bit de bloqueo del chip nuevamente.
(7) Cuando se utiliza el modo serie ISP para descargar la programación, el bit del fusible SPIEN debe configurarse como "0". Cuando el chip sale de fábrica, el estado del bit SPIEN por defecto es "0", lo que significa que el ISP puede descargar datos en modo serie. Sólo cuando este bit está en el estado de programación "0" se puede realizar la descarga del ISP a través del puerto SPI del AVR. Si este bit está configurado como "1" no programado, la descarga de datos en serie del ISP se prohíbe inmediatamente. En este momento, los datos sólo pueden realizarse. descargarse a través del método paralelo o el método de programación JTAG puede restablecer el estado de SPIEN a "0" y abrir el ISP. En circunstancias normales, el estado de SPIEN debe mantenerse en "0", lo que permite que la programación del ISP no afecte la función de E/S de sus pines. Siempre que esté diseñado el circuito del hardware, preste atención al aislamiento necesario entre la interfaz del ISP y. los dispositivos conectados en paralelo, como usar resistencias en serie o romper puentes, etc.
(8) Cuando su sistema no utiliza la interfaz JTAG para la programación de descarga o la depuración de simulación en línea en tiempo real, y los pines de la interfaz JTAG deben usarse como puertos de E/S, el bit de fusible Se debe configurar JTAGEN. El estado es "1". Cuando el chip sale de fábrica, el estado de JTAGEN por defecto es "0", lo que significa que la interfaz JTAG está permitida y los pines externos de JTAG no se pueden utilizar como puertos de E/S. Cuando el estado de JTAGEN se establece en "1", la interfaz JTAG se desactiva inmediatamente. En este momento, JTAG solo se puede restablecer a "0" a través del modo paralelo o la programación del ISP para abrir JTAG.
(9) En circunstancias normales, no configure el bit de fusible para definir el pin RESET como E/S (como configurar el estado del bit de fusible ATmega8 RSTDISBL en "0"), lo que provocará Descargas de ISP La programación no se puede realizar porque antes de ingresar al modo de programación ISP, es necesario bajar el pin RESET para que el chip entre primero en el estado de reinicio.
(10) Cuando se utiliza un chip AVR con un oscilador RC interno, se debe prestar especial atención a la configuración del bit fusible CKSEL. En circunstancias normales, el estado del bit CKSEL cuando el chip sale de fábrica utiliza de forma predeterminada el oscilador RC interno de 1 MHz como fuente de reloj del sistema. Si utiliza un oscilador externo como fuente de reloj del sistema, no olvide configurar correctamente el bit fusible CKSEL primero; de lo contrario, la sincronización de todo su sistema tendrá problemas. Cuando no utilice un oscilador externo (o una fuente de oscilador específica) como fuente de reloj del sistema en su diseño, no opere incorrectamente ni configure incorrectamente el bit fusible CKSEL para usar un oscilador externo (u otros tipos diferentes de fuentes de oscilación). Una vez que esto sucede, el chip no se puede operar usando el método de programación ISP (porque el método ISP requiere que el reloj del sistema del chip funcione y genere señales de control de sincronización) y el chip parece "roto". En este momento, la única solución es quitar el chip y usar programación paralela, o usar JTAG (si se permite JTAG y hay una interfaz JTAG en la placa de destino). Otra forma de rescatar es intentar superponer artificialmente temporalmente diferentes tipos de señales de reloj de oscilación en los pines de cristal del chip. Una vez que el ISP pueda operar el chip, configure inmediatamente el CKSEL para usar el oscilador RC interno de 1 MHz como fuente de reloj. y luego reconfigure CKSEL correctamente de acuerdo con la situación real.
(11) Cuando utilice un chip AVR que admita IAP, si no utiliza la función BOOTLOADER, tenga cuidado de no configurar el fusible BOOTRST en el estado "0", lo que hará que el chip no funcione. comenzar desde Flash cuando esté encendido. Comience a ejecutar el programa en 0x0000. El estado predeterminado del bit BOOTRST es "1" cuando el chip sale de fábrica. Consulte el contenido relevante de este capítulo para conocer la configuración de BOOTRST, el diseño del programa BOOTLOADER y la aplicación de IAP.
Configuración de bits de fusible importantes en ATmega128
(1) Bit de fusible M103C. La configuración de M103C establecerá si ATmega128 funciona en modo compatible con ATmega103 o en el propio ATmega128. Cuando ATmega128 sale de fábrica, el estado predeterminado de M103C es "0", lo que significa que funciona en modo compatible con ATmega103 de forma predeterminada. Cuando el diseño del sistema del usuario hace que el chip funcione en modo ATmega128, el estado del M103C primero debe configurarse como "1".
(2)CLKSEL0..3. CLKSEL0, CLKSEL1, CLKSEL2 y CLKSEL3 se utilizan para seleccionar la fuente de reloj del sistema. Hay cinco tipos diferentes de fuentes de reloj para elegir (con divisiones finas para cada tipo). La configuración predeterminada del chip cuando sale de fábrica es "0001" y "10" para CLKSEL3..0 y SUT1..0 respectivamente. Incluso utilizando el oscilador RC interno de 1 MHz, utilice el retraso de inicio más largo. Esto garantiza que la descarga inicial del ISP pueda realizarse independientemente de si el circuito oscilador externo está funcionando. Debe tener mucho cuidado al reescribir los bits del fusible CLKSEL3..0, porque una vez que la reescritura sea incorrecta, el chip no podrá iniciarse.
(3) JTAGEN. Si no se utiliza la interfaz JTAG, el estado de JTAGEN debe establecerse en "1", es decir, JTAG está deshabilitado y los pines JTAG se usan para los puertos de E/S.
(4)ESPIEN. Se permite la descarga de datos y programas a través de SPI y el estado predeterminado es "0". Generalmente conserva su estado.
(5)WDTON. El temporizador de vigilancia está siempre activado. WDTON tiene el valor predeterminado "1", lo que impide que el temporizador de vigilancia esté siempre activado.
Si este bit se establece en "0", el temporizador de vigilancia siempre estará activado y no podrá ser controlado por el programa interno. Esto es para evitar que un código desconocido apague el temporizador de vigilancia escribiendo en el registro cuando el programa se ejecuta. Aunque apagar el temporizador de vigilancia requiere una forma especial, garantiza una mayor confiabilidad).
(6)EESGUARDAR. Si se conserva el contenido en E2PROM al ejecutar el comando de borrado. El estado predeterminado es "1", lo que significa que el contenido en E2PROM se borra junto con el contenido en Flash. Si este bit se establece en "0", el comando de borrado antes de descargar el programa solo será válido para el área del código FLASH, pero no para el área E2PROM. Esto es muy útil cuando desea conservar los datos en la E2PROM al actualizar el sistema.
(7) ARRANQUE. Determina la dirección de la primera instrucción que se ejecutará cuando se enciende el chip. El estado predeterminado es "1", lo que significa que la ejecución comienza desde 0x0000 al inicio. Si BOOTRST se establece en "0", la ejecución del programa comienza desde la dirección inicial del área BOOTLOADER al inicio. El tamaño del área BOOTLOADER está determinado por BOOTSZ1 y BOOTSZ0, por lo que su primera dirección también cambia en consecuencia.
(8) BOOTSZ1 y BOOTSZ0: Estos dos determinan el tamaño del área BOOTLOADER y su dirección inicial. El estado predeterminado es "00", lo que significa que el área del BOOTLOADER tiene 4096 palabras y la dirección inicial es 0xF000.
(9) Se recomienda que los usuarios utilicen el método ISP para configurar los bits de fusible. La herramienta de configuración utiliza BASCOM-AVR (versión de prueba de descarga en línea, que no tiene restricciones en las descargas de ISP) y un cable de descarga compatible con STK200/STK300 (consulte el Capítulo 4).
Nota: Diferentes AVR tienen diferentes fusibles. Debes consultar cuidadosamente el manual del chip antes de usarlo.
Debemos prestar atención al estudio manual, no solo para dominar cómo usarlo, sino también para comprender y dominar fundamentalmente los principios y estructuras. Para los futuros ingenieros de hardware, el manual de datos es el verdadero "libro" y todo lo demás es "experiencia práctica". Si no estás familiarizado con los "Sutras", no puedes cultivarte para convertirte en un "inmortal". ¡Este es también uno de los propósitos de "M128" y "M8"!
5.1.1 Configurar correctamente los bits de los fusibles del AVR
Configurar los bits de los fusibles del AVR es una tarea relativamente detallada, y los usuarios a menudo pasan por alto su importancia o les resulta difícil dominarla. Los siguientes son algunos puntos clave y asuntos relacionados a los que se debe prestar atención al configurar el bit fusible del AVR. Para conocer la definición y función específicas de los bits de fusible ATmega128, consulte los capítulos relevantes de este libro. En el apéndice se proporcionará una tabla resumida completa.
(1) En el manual del dispositivo AVR, programado y no programado se utilizan para definir el estado del bit del fusible. "No programado" significa que el estado del fusible es "1" (deshabilitado"); el estado del fusible es "0" (permitido). Por lo tanto, el proceso de configuración del bit de fusible es en realidad "configurar el bit de fusible para que se convierta en un estado no programado "1" o en un estado programado "0".".
(2) Cuando utilice un software de herramienta de programación que determine el valor del estado del bit de fusible seleccionando una marca de verificación "√", primero lea atentamente las instrucciones de uso del software y asegúrese de que "√" Significa configurar el bit del fusible. El estado es "0" o "1".
(3) Se debe prestar especial atención al utilizar el programa de descarga de programación en CVAVR. Dado que el estado inicial de la mayoría de los bits de fusible se define como "1" cuando se abre inicialmente la interfaz de descarga de programación de CVAVR, no lo haga. use su programación La opción "todos" en las opciones del menú. En este momento, la opción "todos" configurará los bits de fusible del chip en función de la definición del estado inicial de los bits de fusible, pero de hecho, a menudo no es el resultado de configuración requerido por el usuario. Si desea utilizar la opción "todos", primero debe usar "read-gt;fuse bits" para leer el estado real de los bits de fusibles en el chip y luego usar la opción "todos".
(4) Antes de usar un nuevo chip AVR, primero debe verificar la configuración de sus bits de fusible, luego configurar los bits de fusible de acuerdo con las necesidades reales y registrar el estado de cada bit de fusible.
(5) Después de cifrar el chip AVR, los datos en el Flash interno y E2PROM del chip no se pueden leer. El estado del bit del fusible aún se puede leer pero la configuración no se puede modificar. El comando de borrado del chip sirve para borrar los datos en Flash y E2PROM, y al mismo tiempo configurar el estado del bit de bloqueo de dos bits en "11", en un estado desbloqueado. Pero el comando de borrado de chip no cambia el estado de otros bits de fusible.
(6) El procedimiento operativo correcto es: cuando el chip no está bloqueado, descargue el código de ejecución y los datos, configure los bits de fusible relevantes y finalmente configure los bits de bloqueo del chip. Después de bloquear el chip, si descubre que la configuración del bit del fusible es incorrecta, debe usar el comando de borrado del chip para borrar los datos del chip y desbloquearlo. Luego vuelva a descargar el código y los datos en ejecución, modifique los bits de fusible relacionados con la configuración y finalmente configure el bit de bloqueo del chip nuevamente.
(7) Cuando se utiliza el modo serie ISP para descargar programación, el bit del fusible SPIEN debe configurarse como "0". Cuando el chip sale de fábrica, el estado del bit SPIEN por defecto es "0", lo que significa que el ISP puede descargar datos en modo serie. Sólo cuando este bit está en el estado de programación "0" se puede realizar la descarga del ISP a través del puerto SPI del AVR. Si este bit está configurado como "1" no programado, la descarga de datos en modo serie del ISP se prohíbe inmediatamente. solo se puede descargar a través del método paralelo o el método de programación JTAG puede restablecer el estado de SPIEN a "0" y abrir el ISP. En circunstancias normales, el estado de SPIEN debe mantenerse en "0", lo que permite que la programación del ISP no afecte la función de E/S de sus pines. Siempre que esté diseñado el circuito del hardware, preste atención al aislamiento necesario entre la interfaz del ISP y. los dispositivos conectados en paralelo, como usar resistencias en serie o romper puentes, etc.
(8) Cuando su sistema no utiliza la interfaz JTAG para la programación de descarga o la depuración de simulación en línea en tiempo real, y los pines de la interfaz JTAG deben usarse como puertos de E/S, el bit de fusible Se debe configurar JTAGEN. El estado es "1". Cuando el chip sale de fábrica, el estado de JTAGEN por defecto es "0", lo que significa que la interfaz JTAG está permitida y los pines externos de JTAG no se pueden utilizar como puertos de E/S. Cuando el estado de JTAGEN se establece en "1", la interfaz JTAG se desactiva inmediatamente. En este momento, JTAG solo se puede restablecer a "0" a través del modo paralelo o la programación del ISP para abrir JTAG.
(9) En circunstancias normales, no configure el bit de fusible para definir el pin RESET como E/S (como configurar el estado del bit de fusible ATmega8 RSTDISBL en "0"), lo que provocará Descargas de ISP La programación no se puede realizar porque antes de ingresar al modo de programación ISP, es necesario bajar el pin RESET para que el chip entre primero en el estado de reinicio.
(10) Cuando se utiliza un chip AVR con un oscilador RC interno, se debe prestar especial atención a la configuración del bit fusible CKSEL. En circunstancias normales, el estado del bit CKSEL cuando el chip sale de fábrica utiliza de forma predeterminada el oscilador RC interno de 1 MHz como fuente de reloj del sistema. Si utiliza un oscilador externo como fuente de reloj del sistema, no olvide configurar correctamente el bit fusible CKSEL primero; de lo contrario, la sincronización de todo su sistema tendrá problemas. Cuando no utilice un oscilador externo (o una fuente de oscilador específica) como fuente de reloj del sistema en su diseño, no opere incorrectamente ni configure incorrectamente el bit fusible CKSEL para usar un oscilador externo (u otros tipos diferentes de fuentes de oscilación). Una vez que esto sucede, el chip no se puede operar usando el método de programación ISP (porque el método ISP requiere que el reloj del sistema del chip funcione y genere señales de control de sincronización) y el chip parece "roto". En este momento, la única solución es quitar el chip y usar programación paralela, o usar JTAG (si se permite JTAG y hay una interfaz JTAG en la placa de destino).
Otra forma de rescatar es intentar superponer artificialmente temporalmente diferentes tipos de señales de reloj de oscilación en los pines de cristal del chip. Una vez que el ISP pueda operar el chip, configure inmediatamente el CKSEL para usar el oscilador RC interno de 1 MHz como fuente de reloj. y luego reconfigure CKSEL correctamente de acuerdo con la situación real.
(11) Cuando utilice un chip AVR que admita IAP, si no utiliza la función BOOTLOADER, tenga cuidado de no configurar el fusible BOOTRST en el estado "0", lo que hará que el chip no funcione. comenzar desde Flash cuando esté encendido. Comience a ejecutar el programa en 0x0000. El estado predeterminado del bit BOOTRST es "1" cuando el chip sale de fábrica. Consulte el contenido relevante de este capítulo para conocer la configuración de BOOTRST, el diseño del programa BOOTLOADER y la aplicación de IAP.
5.1.2 Configuración de bits de fusibles importantes en ATmega128
La sección anterior presentó los puntos clave y las precauciones para configurar los bits de fusibles del AVR. Esta sección explica cómo usar ATmega128 en circunstancias normales. En este momento, se explican varias configuraciones importantes de bits de fusibles.
(1) Punta fusible M103C. La configuración de M103C establecerá si ATmega128 funciona en modo compatible con ATmega103 o en el propio ATmega128. Cuando ATmega128 sale de fábrica, el estado predeterminado de M103C es "0", lo que significa que funciona en modo compatible con ATmega103 de forma predeterminada. Cuando el diseño del sistema del usuario hace que el chip funcione en modo ATmega128, el estado del M103C primero debe configurarse como "1".
(2)CLKSEL0..3. CLKSEL0, CLKSEL1, CLKSEL2 y CLKSEL3 se utilizan para seleccionar la fuente de reloj del sistema. Hay cinco tipos diferentes de fuentes de reloj para elegir (con divisiones finas para cada tipo). La configuración predeterminada del chip cuando sale de fábrica es "0001" y "10" para CLKSEL3..0 y SUT1..0 respectivamente. Incluso utilizando el oscilador RC interno de 1 MHz, utilice el retraso de inicio más largo. Esto garantiza que la descarga inicial del ISP pueda realizarse independientemente de si el circuito oscilador externo está funcionando. Debe tener mucho cuidado al reescribir los bits del fusible CLKSEL3..0, porque una vez que la reescritura sea incorrecta, el chip no se iniciará. Consulte el punto 10 en la sección anterior.
(3) JTAGEN. Si no se utiliza la interfaz JTAG, el estado de JTAGEN debe establecerse en "1", es decir, JTAG está deshabilitado y los pines JTAG se usan para los puertos de E/S.
(4)ESPIEN. Se permite la descarga de datos y programas a través de SPI y el estado predeterminado es "0". Generalmente conserva su estado.
(5)WDTON. El temporizador de vigilancia está siempre activado. WDTON tiene el valor predeterminado "1", lo que impide que el temporizador de vigilancia esté siempre activado. Si este bit se establece en "0", el temporizador de vigilancia siempre estará activado y no podrá ser controlado por el programa interno. Esto es para evitar que un código desconocido apague el temporizador de vigilancia escribiendo en el registro cuando el programa se ejecuta. Aunque apagar el temporizador de vigilancia requiere una forma especial, garantiza una mayor confiabilidad).
(6)EESGUARDAR. Si se conserva el contenido en E2PROM al ejecutar el comando de borrado. El estado predeterminado es "1", lo que significa que el contenido en E2PROM se borra junto con el contenido en Flash. Si este bit se establece en "0", el comando de borrado antes de descargar el programa solo será válido para el área del código FLASH, pero no para el área E2PROM. Esto es muy útil cuando desea conservar los datos en la E2PROM al actualizar el sistema.
(7) ARRANQUE. Determina la dirección de la primera instrucción que se ejecutará cuando se enciende el chip. El estado predeterminado es "1", lo que significa que la ejecución comienza desde 0x0000 al inicio. Si BOOTRST se establece en "0", la ejecución del programa comienza desde la dirección inicial del área BOOTLOADER al inicio.
El tamaño del área BOOTLOADER está determinado por BOOTSZ1 y BOOTSZ0, por lo que su primera dirección también cambia en consecuencia.
(8) BOOTSZ1 y BOOTSZ0: Estos dos determinan el tamaño del área BOOTLOADER y su dirección inicial. El estado predeterminado es "00", lo que significa que el área BOOTLOADER tiene 4096 palabras y la dirección inicial es 0xF000.
(9) Se recomienda que los usuarios utilicen el método ISP para configurar los bits de fusible. La herramienta de configuración utiliza BASCOM-AVR (versión de prueba de descarga en línea, que no tiene restricciones en las descargas de ISP) y un cable de descarga compatible con STK200/STK300 (consulte el Capítulo 4).
Nota: Diferentes AVR tienen diferentes fusibles. Debes consultar cuidadosamente el manual del chip antes de usarlo.