Paso 2: Cuál es la diferencia entre núcleo AVR y Arduino
Esta es la primera pregunta básica para aquellos que son relativamente nuevos en materia de Arduino/AVR...
AVR:
Bueno, AVR es una familia de microcontroladores de "Microcontrolador ATMEL"
Como una familia contiene muchos de los miembros, la familia AVR también contiene diferentes tipos de microcontroladores. Todos ellos tiene arquitectura de Havard. Son microcontroladores de 8 bits. (Hay 32 bit AVR virutas también).
AVRs se pueden clasificar principalmente en tres grupos
1) tinyAVR. (pincount inferior con espacio inferior de programación)
megaAVR 2). (con espacio de programación medio)
xmegaAVR 3). (mayor espacio de programación con algunos extendida características como "DMA").
Así que hay muchos chips en estos 3 grupos.
Como por Ex-.
ATmega8/Atmega16/Atmega32/Atmega328 son todos los diferentes miembros de familia de la mega con unas características un poco diferentes unos de otros.
Para decir, Atmega328p tiene 32 k flash / 1k EEPROM / 2k de SRAM que Atmega8 tiene 8 k flash/512 bytes EEPROM / 1K de SRAM, aunque ambos tienen mismo no de pincount(28).
Por otra parte Atmega32 ha también 32k flash como Atmega328p pero con mayor pincount(40).
ATTINY45 es un microcontrolador popular de familia tinyAVR con solo 8 pines y con 4 k flash/512 bytes EEPROM y SRAM.
Así que tienes que elegir el que microcontrolador según su circuito necesita. Como si quieres parpadear un LED solo, luego ATTINY45 es perfecto pero si usted desea conducir un complejo LCD 128 x 64 como 20 x 4 entonces usted debe elegir mega8/328/32.
Este microcontroladores son chips en blanco sin nada programado en su flash/gestor de arranque. Ahora ¿Qué carajos es bootloader? Voy a comentar más adelante.
Tienes que diseñar un circuito de potencia adecuada para alimentarla, suministrar el reloj con el fin de ejecutarlo. También necesita a algún tipo de programadores para grabar programas en ellos.
Puede ser programados de diferentes formas, lo veremos en los próximos pasos cómo se puede hacer. También necesita a algún tipo de IDE donde puede escribir el programa. WinAVR es un IDE. También estudio de Atmel es otro IDE para escribir programas para microcontroladores de Atmel.
Vamos a elegir WinAVR para programar los microcontroladores core.
ARDUINO:
Podemos decir que Arduino es plataforma (incluyendo hardware y software) principalmente usada para prototipado. La gran ventaja de arduino es que se trata de un «código abierto».
Bueno, creo que tengo que enfocar más luz sobre esto... porque aquí viene la principal diferencia entre el AVR y Arduino
Por ejemplo, Arduino UNO rev3 es una tarjeta que contiene un microcontrolador AVR y todos los periféricos necesarios para que funcione igual como dije antes, la fuente de alimentación, circuito etc. del reloj. El microcontrolador utilizado aquí es una Atmega328p.
También hay un "arreglo" para programar el mega328p sin un programador de a bordo. Ahora ¿Cuál es el arreglo???
Hay un simple convertidor de USB a Serial en junta por la que se puede programar el mega328p. Pero cómo??? Aquí es donde, viene el "bootloader".
"bootloader" es un pequeño programa situado en una zona particular de flash del microcontrolador. Cuando el chip es reiniciar/encendido, el chip primero entra en el gestor de arranque (esta actividad también debe ser programada mediante el fusible bits) y ejecuta el código escrito en él. Pero cómo el código es capaz de programar la viruta sí mismo???
Decir, el código está escrito de tal manera, que espera para que los bytes de programación llegar desde la USB al convertidor Serial. Cuando programación bytes recibidos, almacena los bytes en la flash de programa y cuando todos los bytes recibidos, se reinicia a sí mismo y se ejecuta el código que recién se escribe en la flash de programa.
Pero surge una pregunta ahora después de la programación, si el mega328p es arrancar desde la flash de programa (evita el gestor de arranque), entonces ¿cómo puede ser programado en el próximo ciclo??
La respuesta es bastante simple, la mega328p nunca salta para comenzar la ubicación del programa flash primero. Siempre salta a la sección del cargador de arranque primero y esperar un tiempo para la llegada de databytes vía puerto serial. Si llegan datos dentro de la timeperiod, entonces comienza a programar a sí mismo como antes, si los datos no ha llegado dentro del tiempo determinado, entonces deja la sección del cargador de arranque y comienza la ejecución de código de flash de programa.
El byte enviando secuencia es conocido por el gestor de arranque y la ArduinoIDE.This es como funciona la programación de arduino sin la ayuda de un programador.
PERO...
Para grabar el bootloader en flash de AVR, algún tipo de programador (ya sea URL/ISP) debe ser utilizado por primera vez. Aquí es donde viene la necesidad de los programadores independientes.
Ahora sobre el IDE de arduino.
En el IDE de Arduino, hay muchas clases de tarjetas para elegir. Cada tarjeta utiliza diferentes tipos de microcontroladores. Como la ONU rev3 board utiliza Atmega328p.The mega2560 usos Atmega2560 etc. etc..
Luego viene otra parte emocionante de la Arduino." La biblioteca". Las bibliotecas son programas a diferentes módulos del microcontrolador (como TWI, SPI, puerto, etc) o a otro Hardware externo como LCD, motor paso a paso, diferentes tipos de sensores y muchos otros. Para que el microcontrolador funcione, tienes que escribir algunos códigos nominales utilizando las funciones de la biblioteca existente. También el lenguaje utilizado en el IDE de Arduino es C y C++. Pero no tienes que interactuar directamente con el hardware de lo atmega. Estas son atendidas en el fondo. Los comandos son mucho más simples que usando 'C'. Programo el chip atmega en dos diferentes IDEs más adelante.
Por otro lado, si tienes programar un núcleo AVR con Winavr o tal otro C basado en IDE, entonces tienes que saber la correcta arquitectura, hardware, módulos del microcontrolador y entonces sólo se puede programar. Pero ¿por qué uno iría en tal coplexity??? Esta es una cuestión de millones de dólares...
¿Te has sentido, que sólo utiliza de otro escrito código y funciones y no se puede modificar según sus necesidades o eres incapaz de ver cómo funciona el programa total en el fondo o te has sentido la necesidad de la ejecución de código línea por línea???
Si te has sentido alguno de los anteriormente mencionados, entonces su tiempo para escribir el núcleo ' C'code para ti AVR.
También si quieres dar rienda suelta a la potencia de la programación de AVR core nivel bajo con su propio escrito el código de la biblioteca y desea modificar los códigos según sus necesidades y paralelamente una mejor comprensión de su código todo... entonces se debe jugar con programación de AVR core.
Espero que he despejado tus dudas sobre la materia de Arduino y AVR. Llegado el momento de un break antes de entrar en la siguiente sección...