Arduino esta basado en el microprocesador RISC ( Reduced Instruction Set Computing ) ATMEGA328P, de la casa Atmel. Es el más popular, aunque este fabricante proporciona decenas de microprocesadores. Primos hermanos son el ATMEGA8, ATMEGA168, con características similares, aunque menores. La página de contacto del fabricante es
Las características esenciales del ATMEGA328P son las siguientes:
- Procesador de 8 bits.
- Frecuencia de trabajo: 20 Mhz.
- Encapsulado dual in line de 28 pines.
- Memoria flash para almacenar programas ( In System Programmable , o ISP ): 32 Kb .
- Memoria para variables, incluido stack ( SRAM ): 2 Kbytes.
- Memoria EEPROM ( Erasable Programmable Read Only Memory ): 1 Kb. Mantiene los datos una vez que el micro ha sido desconectado.
- 23 líneas de entrada/salida ( General Purpose Input Outputs, o GPIO ).
- 3 contadores/temporizadores.
- 32 registros.
- Interrupciones internas y externas.
- Una USART ( Universal Synchronous/Asynchronous Receiver Transmitter ).
- Interface Serie de 2 cables ( TWI ).
- Interface SPI ( Serial Peripherial Interface ).
- Un conversor Analógico Digital (ADC ) de 10 bits, con una resolución de 1024 bits.
Cada uno de estos dispositivos periféricos se controlan mediante registros específicos, conectados al bus de datos de 8 bits del microprocesador. Así pues, para acceder o iteractuar con estos periféricos debemos acceder a diferentes registros mapeados en memoria. Esto se puede hacer, por ejemplo, mediante punteros de C.
Por último, el microprocesador posee tres puertos, denominados B, C y D. con los cuales cada dispositivo periférico se comunica con el exterior. Cada puerto es configurable en lo que se conoce como multiplexado de pines ( pin-multiplexing ) para que los pines puedan tener diferentes funciones de entrada o salida.
El microprocesador puede ser programado modificando su memoria ISP flash mediante tres métodos diferentes:
- Interface serie SPI.
- Programador de memorias convencional tipo USBASP.
- Boot loader instalado en el núcleo del micro. Este es el método empleado por el IDE de Arduino, el cual integra en su placa un chip conversor USB a serie FT232D.
Una vez cargado el software, el programa se ejecuta mientras que haya alimentación o se actualice el software.
Con un costo inferior a 2 euros, el ATMEGA328P es un potente y flexible microprocesador monolítico para infinidad de aplicaciones de control embedidas ( embedded system ).
Existe un libro interesentate, para programadores muy expertos en arquitectura de ordenadores
Introduction to Embedded Systems
Using ANSI C and
the Arduino Development Environment
David Russell
2010, Morgan y Claypod
La primera parte del libro está dedicada al estudio de ANSI C. En la segunda ( capítulos 3 en adelante ) detalla la arquitectura y programación en ANSI C ( es decir, evitando todo tipo funciones de biblioteca ) de Arduino. Como me aburre pasar mucho tiempo en la playa, y no puedo dormir como otros,me lo leí este verano entre baño y baño bajo la sombrilla en Conil de la Frontera ( CÁDIZ ), que a ver si subo alguna foto de sus puestas de sol. ¿ No están los alemanes cada uno con su libro ? Pues nada, hay que ser europeo.
En general posee material muy interesante en los capítulos 6 ( General Purpose Input/Output ), 8 ( Analog Input Ports ) y 9 ( Interrupt Processing ), aunque deja que desear bastante en cuanto a ejemplos. No es en absoluto un libro didáctico, ni siquiera un manual, aunque los apéndices pueden ser de uso para programadores que no usen el IDE de Arduino. En fin, es un libro de lectura difícil, con el que no aprende a programar ni Denis Ritchie. Algo del material lo utilizaré en algún otro post, cuando investigue algo que tengo en mente...
Oye amigo tengo dudas en lo siguiente. Haciendo una comparación con los pics y propiamente con el pic16f87x, en este se tiene una memoria SRAM en el que las primeras direcciones son utilizadas para la configuración del pic y otra parte de la memoria es utilizada para los registros de propósito general. En el ATMEGA se tienen una memoria con espacio para 32 registro de propósito general pero y que pasa con los registro de configuración del micro, estos en que memoria se encuentran?
ResponderEliminar