Explicación de las piezas del fusible AVR

Cada microcontrolador AVR, desde el ATtiny en su termostato hasta el ATMega en su Arduino, almacena su configuración en una serie de piezas fusibles. Estos bits de fusión controlan configuraciones como el multiplicador del oscilador interno (y por lo tanto la velocidad del chip), o si el pin de reinicio se puede usar como pin GPIO. [YS] simplemente organice un tutorial increíble para comprender estas piezas de fusible / cerradura, y es solo la guía de referencia que necesitará cuando descubra que su AVR funciona 8 veces más lento de lo que le gustaría.

Por ejemplo, [YS] utiliza la configuración predeterminada de ATMega48. De fábrica, el ‘Mega48 se envía con sus fusibles ajustados para usar un oscilador RC interno de 8MHz con el juego de bits CKDIV8. Esto da como resultado que el chip funcione a 1 MHz, un poco lento para [YS]’Placer.

Mirando la hoja de datos de ATMega48, [YS] encontró que el fusible CKDIV8 era el séptimo bit en el byte de fusible bajo. De fábrica, el valor predeterminado para este byte es 0b01100010. Para eliminar el bit ‘dividir reloj entre 8’, [YS] necesario para cambiar el byte bajo a 0b11100010, o 0xE2. Esto lo hace AVRdude agregando lfuse: w: 0xE2: m a los comandos ingresados ​​durante la programación.

Los fusibles no tienen por qué asustar. Si puede convertir entre binario y hexadecimal, puede recordar que hay 7 bits en un byte (recuerde comenzar a contar desde 0) y tener acceso a una calculadora de fusibles fácil de usar, es posible cambiar todas las configuraciones en cualquier AVR que tenga a mano.

  • birdmun dice:

    Hay 8 bits en un byte.

    • SavannahLeón dice:

      Correcto pero empiezas a contar desde cero, no desde uno. Entonces, el bit 7 es el octavo bit.

      • foobar dice:

        el número de bits es 8. punto. los llamamos / indexamos del ‘bit 0’ al ‘bit 7’, pero también podríamos llamarlos del ‘bit a’ al ‘bit h’. todavía 8 bits individuales.

      • Aaron dice:

        Ya sea que cuente de cero a siete o de uno a ocho, aún cuenta ocho cosas separadas, por lo que en ambos casos es obviamente incorrecto decir que hay siete bits en un byte.

      • birdmun dice:

        Sé que mi reclamo fue casi trolling. Mi problema era la declaración, no el significado.

        Es temprano / tarde y necesito una siesta.

      • Everett dice:

        A medida que cuente los bits, nada que ver con su número, el artículo debe actualizarse.

      • Jarek dice:

        Vi la línea “son 7 bits en un byte”, luego inmediatamente me desplacé hacia abajo para ver a los comentaristas hacer espuma XD

      • Joel dice:

        ¡También me desplacé hacia abajo para ver la guerra en llamas en los bits en un byte! : D

      • Ali dice:

        jajaja

  • Washington dice:

    “Hay 7 bits en un byte (recuerde comenzar a contar desde 0)”,

    En realidad, no son 8 bits un poco, pero creo que querías decir que el más alto es 7 bits …

    • Brian Benchoff dice:

      Es un valor pedagógico decir que hay 7 bits en un byte.

      Dado que los bits de fusible están etiquetados de 0 a 7 en la documentación, decir “7 bits en un byte” es suficiente para engañar tu mente diciendo, “espera, ¿verdad?” y (con suerte) llega a la conclusión de “oh, sí. el bit cero. ‘

      Eso, y me complace atraer la ira de los comentaristas de HaD.

      • Aaron dice:

        Valor pedagógico, maldita sea, simplemente no está bien.

      • Washington dice:

        Estoy seguro de que mucho de lo que escuchamos a los políticos proponer es el valor del pedal … No se ajusta a eso.

        Admite que cometiste un error y sigue adelante. Te das cuenta de tu hombre y, por lo tanto, estás sujeto a errores, ¿verdad?

        • bhagy dice:

          Errar es hombre, perdonar es divino

          • Bart de Boisblanc dice:

            Realmente estropear necesita una computadora. 🙂

      • Gdogg dice:

        Esa es una excusa estúpida para joder.

      • Eric dice:

        “Es un valor pedagógico decir que hay 7 bits en un byte”.

        Eso es tan ridículo y equivocado, como si Mike Szczys dijera “Hay un valor pedagógico de mis errores ortográficos y gramaticales en cada publicación que escribo. Una escritura incorrecta obliga al lector a pensar en lo que realmente estaba tratando de decir”.

      • cantido dice:

        Reformularía el hecho de que no todos los bytes son 8 bits (http://en.wikipedia.org/wiki/Byte) .. No inventaría la estúpida historia; PAG

      • Cirilo dice:

        Por supuesto que es pedo-lógico, es un niño desagradable.

      • John dice:

        Dios mío, cualquiera aquí necesita saber qué quiere decir Brian, por qué lo escribió de tal manera que obviamente fue intencional, y nadie aquí tiene que pensar “espera, eso está mal”. Yo, por mi parte, lo encontré divertido.

        Hay 10 tipos de personas en el mundo, los que entienden los binarios y los que no los entienden.

      • John dice:

        No todos los que leen este sitio conocen estas cosas. Uno de los aspectos básicos al aprender sobre binario es 8 bits en un byte, y ver “Hay 7 bits en un byte” es simplemente confuso para alguien que intenta aprender.

      • SerpienteBrillo dice:

        Solo me gustaría decir que cuando tiene una matriz de 8 elementos y llama a .length (), espera 8, no 7. Sin embargo, los índices de esa matriz comienzan en cero en la mayoría de los lenguajes de programación y que el último elemento está en el séptimo índice. Es por eso que parece ser el concepto globalmente aceptado que cuando cuantificamos elementos, distinguimos la suma total, punto.

        Dirá que esto también se aplica a bits y bytes, si consideramos un byte como un contenedor de bits.

  • Proyectos de la casa del árbol dice:

    ¡Qué casualidad! Recientemente creé un tutorial similar para desmitificar los bytes de fusión para principiantes. Míralo si quieres http://www.treehouseprojects.ca/external-clock-avr-atmega-fuse-bits/

    Por cierto, no tienes que convertir entre binario y hexadecimal para establecer piezas fusibles (también pendiente en mi tut).

  • rbhd dice:

    > fusión de piezas
    y por eso prefiero PIC

    • Proyectos de la casa del árbol dice:

      ¿Qué pasa con los fusibles?

    • Sven dice:

      Sí, porque va a ser mucho más fácil porque lo llama bit de configuración en lugar de bit de fusible. (es lo mismo)

    • Tim Shuck dice:

      Los PIC también tienen bits de fusión. Se denominan Palabra (s) de configuración

    • ftorama dice:

      Entonces … guárdalos 😉

  • lejos dice:

    Para cambiar la velocidad del reloj, también puede escribir el registro CLKPR en su código. Útil, quizás, si estás cansado de los fusibles.

  • vic dice:

    Avr-libc le permite insertar los fusibles directamente en el código, de una manera clara y comprensible. Por ejemplo:


    FUSES =
    {
    .low = (FUSE_CKSEL0 & FUSE_CKSEL1 & FUSE_CKSEL3 & FUSE_SUT0 & FUSE_CKDIV8),
    .high = HFUSE_DEFAULT,
    .extended = EFUSE_DEFAULT,
    };

    Lo recomiendo encarecidamente porque el código está escrito para fusibles específicos, en realidad son parte del código. De esa manera, también puede agregarlos fácilmente al control de versiones.

    Luego se trata de escribir Makefile para quemar esos fusibles durante la programación. No tengo tiempo para escribir más sobre esto ahora, pero escribiré un tutorial para esto más adelante.

    • Adrian dice:

      Eso es genial, ¿puedes compartir un enlace a un tutorial o algo similar mientras configuras esto?

  • dice:

    “7 bits en un byte” es confuso para alguien que no está familiarizado con este tema, pero sabe muy bien que normalmente, pero no siempre, son 8 bits en un byte. +1 para actualizar un excelente punto de partida para aprender más sobre las piezas de fusible.

  • Bigote dice:

    Hay 8 bits en un byte.
    Corrígelo ahora. Esta no es una solicitud.

    • Greenaum dice:

      Entonces, ¿qué le hiciste al final?

      Y, por supuesto, todos los desarrolladores comienzan a contar hasta 0.

  • jc dice:

    ¿Wow en serio? Si no obtiene tal cosa de la documentación extremadamente bien escrita en alguna hoja de datos de avr, ¿consideraría siquiera programar avrs? Tal vez esas personas tengan que ceñirse a alguna solución básica en chip.

    • Jeff Pasko dice:

      Este comentario no deja lugar para los principiantes … Obviamente, debe lanzarse a este pasatiempo con la comprensión completa de todo lo que pueda encontrar, o ser capaz de comprender todos los documentos escritos. Descubrí que la documentación comienza en el nivel 3, omitiendo 0,1,2 y asumiendo muchos conocimientos que no poseo.

      • Mike Szczys dice:

        Tiendo a estar de acuerdo contigo. Me tomó años llegar al punto en el que me siento cómodo en un 92% leyendo hojas de datos. Todavía soy un poco vago acerca de los diversos enfoques sobre cómo se organizan las estimaciones, especialmente cuando se trata de gráficos y ecuaciones.

        No importa qué tan bien redactada esté la documentación, las personas aprenden de manera diferente y es probable que cualquier cosa bastante compleja tenga rincones oscuros de confusión. Me alegra ver que la gente está ayudando a iluminarlos para el resto de nosotros 😉

  • GeneralChat dice:

    ¿Alguien sabe por qué se llaman piezas de fuselaje? ¿Es un acrónimo?

    • Cirilo dice:

      originalmente se implementaron como un fusible literal con el que se aplicaría una corriente lo suficientemente alta como para hacer estallar el fusible. esto evitaría físicamente que la memoria del programa y la RAM se lean / escriban externamente a través de la interfaz de depuración o lo que sea que tenga.
      Actualmente está implementado en microcódigo. Físicamente, son interruptores configurados por el microcódigo durante el tiempo de inicio antes de que el control se transmita al usuario. Esto puede evitarse (no fácilmente) con una fuente de alimentación muy precisa y un temporizador preciso para proporcionar a la UC la energía suficiente durante el tiempo suficiente para introducirla en un punto de partida pero no entregarla al usuario. luego puede usar jtag para leer / escribir lo que quiera;)

  • wowme@wtf.com dice:

    salgamos del modo troll.

    Estados de YS

    supongamos que nunca usó una pequeña13.

  • YS dice:

    Oh, algo salió mal en mi ISP, así que tuve que vivir sin acceso a la red durante dos días. Pero ahora les responderé a todos en un modo establecido. 🙂

    Primero, cuando algo va más allá de mi comprensión, me refiero a los periódicos oficiales. 🙂 Al mirar las hojas de datos de Atmel, se puede ver claramente que los bits se enumeran desde cero. Dado que hay ocho bits en un byte (actualmente :)) el último bit tiene un número siete, por lo que podemos llamarlo un séptimo bit, ¿verdad? 🙂

    @Tree Projects: Vaya, es una coincidencia realmente interesante, porque incluso los nombres de los capítulos son casi iguales. Pero puedo ver que se está enfocando principalmente en las opciones del sistema de reloj, mientras que he tratado de hablar sobre fusibles en general.

    @ wowme @ wtf.com: ¿Por qué crees que no usé ATtiny13? 🙂 Creé un lector de 1 cable con este MCU (para mis estudios en la universidad).

  • zumbidos dice:

    Sí, también considere el error:

    8 bits en un byte, no 7.

    • YS dice:

      ¡Por supuesto! Pero el último, el octavo bit, tiene el número 7, porque comenzamos a contar desde cero.

      • Cirilo dice:

        pero-pero “cero” no es una palabra 🙂

  • chanakalin dice:

    Me ayuda a aprender los fusibles AVR. Muchas gracias.

  • Tim Shuck dice:

    La conclusión es: no importa si comienzas a contar desde 0 o 1, todavía hay 8 objetos gruesos a los que te refieres. es de 8 bits.

    • John dice:

      o 1000 (binario), o 10 (octal) o 32 (binario). Decir simplemente que hay 7 bits en un byte es incorrecto, decir que hay “7” bits en un byte (usando un sistema numérico decimal basado en 0 en lugar de uno basado en 1) es correcto.

    • John dice:

      Doh, 22 (trinario)

    • John dice:

      doh doh “ternara”

  • w dice:

    Es un Baker Seven bits en un byte.

    🙂

    http://en.wikipedia.org/wiki/Dozen#Baking

Eva Jiménez
Eva Jiménez

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *