Teoría

3) Encendido y Apagado de Leds

Los temas a tratar son los siguientes:

  • Compilar el mismo código entre varios microcontroladores.
  • ATmicro Database
  • ¿ Bascom Avr, Atmel Studio o Arduino ?

Compilar el mismo codigo entre varios microcontroladores

La siguiente explicación, lo indicare a modo de ejemplo, ya que de esta manera es más factible, entender cuales son los aspectos que se deben de tener en cuenta al momento de compilar un código para varios microcontroladores y para esto utilizare el Atmega328P y el Atmega164P.

La siguiente explicación, lo indicare a modo de ejemplo, ya que de esta manera es más factible, entender cuales son los aspectos que se deben de tener en cuenta al momento de compilar un código para varios microcontroladores y para esto utilizare el Atmega328P y el Atmega164P.

1 ATmega 328P

Figura 1: ATmega 328P

2 ATmega 164P

Figura 2: ATmega 164P

Inicio indicando que para entender, esta explicación es necesario ver primeramente el vídeo, ya que explicare algunos aspectos referentes al mismo.
La razón por la cual al modificar en la configuración del microcontrolador de
$regfile = "m328pdef.dat" a $regfile = "m164pdef.dat", para luego compilar el código y que no se obtenga ningún error, es porque además de que los microcontroladores poseen una arquitectura común, también el ATmega164P, posee el "Puerto B" con los pines que se configuraron, inicialmente como entradas y como salidas.

Si se observa en los gráficos superiores se divisa que el ATmega328P, no posee el "Puerto A", por tal motivo, si inicialmente se hubiera trabajado con el ATmega164P, el código podría ser el siguiente:

$regfile = "m164pdef.dat"
$crystal = 16000000

Config Pina.0 = Input : Set Porta.0
Config Pina.1 = Input : Reset Porta.1
Config Pina.2 = Output : Reset Porta.2
Config Pina.3 = Output : Set Porta.3
Config Pina.4 = Output : Set Porta.4

Entrada1 Alias Pina.0
Entrada2 Alias Pina.1
Salida_1 Alias Porta.2
Led_2 Alias Porta.3
Led_3 Alias Porta.4

Luego para adaptar este programa al microcontrolador ATmega328P, no solo se tiene que modificar en la parte inicial, cambiando $regfile = "m164pdef.dat" por $regfile = "m328pdef.dat", sino que también se tiene que modificar la nomenclatura del puerto A, cambiando los mismos por el puerto B, C o D y luego el programa realiza, una función idéntica a la inicial.

Por otra parte, el hecho de mudarse de un integrado de más pines a menos pines, sí es probable, cuando al final del desarrollo del proyecto, se determino que el mismo podría funcionar de alguna otra manera y por lo tanto se modifico la lógica inicial del proyecto, pero esta destreza se va aprendiendo a medida que realizan proyectos y programas.

Generalmente, en la mayor parte de los casos, se tiende a ampliar el alcance del proyecto y por tal motivo el requerimiento de pines o memoria va aumentando, o de ser un caso extremo, se puede optar hasta por un cambio de compilador.

Cuando la cantidad de pines, no es un inconveniente, refiriendome con esto, a que se ha determinado que se utilizara un microcontrolador de 28 pines, 40 pines, etc, el siguiente requerimiento radica en la capacidad en memoria o velocidad de trabajo del microcontrolador, siendo más recurrente que se necesite mayor memoria, por lo cual se debe adquirir un microcontrolador de mayor capacidad.

Por ejemplo suponiendo que determinamos que sera necesario utilizar 20 pines, para desarrollar un proyecto, por tal motivo, se podría utilizar cualquiera de los siguientes integrados de la Tabla 1, ya que los mismos tienen 23 pines útiles, además de poseer una distribución de pines similar y una arquitectura en común.

Tabla 1

Tabla 1: Microcontroladores

A medida que se desarrolla un programa, se determina, si es necesario, mayor frecuencia, más capacidad en memoria Flash, Ram o EEprom.

Considero que en este punto, ustedes, podrían concluir que para evitarse el trabajo de determinar que microcontrolador es de utilidad, mejor realizarían el proyecto con el ATmega328P, ya que el mismo tiene mejores características, en todo los aspectos en relación a los microcontroladores de la tabla, pero por otra parte se tiene que analizar que sí, el programa funciona perfectamente, en un ATmega48 y es necesario realizar varios proyectos idénticos, resulta económico la adquisición de los ATmega48 en relación a los ATmegas328P y esto repercute directamente en el costo de los gastos fijos que un determinado producto requiera.

También como indiqué, en la tabla anterior, hay varios microcontroladores que poseen una arquitectura en común y dependiendo del proyecto, nosotros elegimos cual integrado se va ha utilizar, el mismo que puede influir directamente en el costo final del proyecto, por tal motivo es necesario familiarizarse con los microcontroladores existentes, y esto no se puede hacer con el compilador de arduino ya que su gama de microcontroladores esta limitada a pocos integrados.

ATmikro Database

3 ATmikro Database

Figura 3: ATmikro Database

ATmikro Database, es un apk que se descarga gratuitamente desde Google Play y el mismo tiene una base de datos, en donde están todos los microcontroladores de Atmel, con sus respectivas características y además nos permite realizar una busqueda para filtrar las opciones de pines, memoria o características especiales, que se pueden utilizar en el proyecto, para elegir al integrado que mejor se adapte a nuestro proyecto.

4 ATmikro Database

Figura 4: ATmikro Database

5 ATmikro Database

Figura 5: ATmikro Database

¿ Bascom Avr, Atmel Studio o Arduino ?

En este punto hablo un poco acerca de lo que he concluido que es viable, no por costo inicial, sino por el ahorro final.

Comienzo indicando que si hablo de Bascom Avr, no es porque obtenga algún beneficio de esta empresa, sino que fue el primer lenguaje con el que inicie en los microcontroladores avr y a medida que desarrollaba varios proyectos, me encontre con otros programas como Win Avr, Avr Studio que despues se llamo Atmel Studio, Arduino, IAR Systems, Codevision y a medida que especializaba mis proyectos, necesitaba requerimientos especificos, quedandome finalmente con dos programas para estos microcontroladores, Bascom AVR y Atmel Studio.

Arduino es libre, realizado bajo la filosofia Open Source y nos distribuye los diseños de las placas y el Software de forma gratuita, pero alguién ha considerado en realizar algun entrenador como la placa de la siguiente figura, a pesar de tener la información disponible, pues creo que muy pocos, porque tiene dispositivos SMD, además de una suelda a doble lado, personalmente no lo he hecho.

6 Arduino Mega ADK

Figura 6: Arduino Mega ADK

Arduino ha condicionado al estudiante a basar el desarrollo de un proyecto en placas especificas y además ha evitado la intervención directa, del estudiante en el desarrollo del proyecto, debido ha que ha creado varios módulos que se adaptan unos sobre otros, como el mostrado en la siguiente figura, como que nos ha facilitado demasiado las cosas en verdad. Considero que con esto ha logrado que el estudiante o aficionado, se limite a utilizar una determinada placa y en caso de requerir realizar otro proyecto idéntico, obligatoriamente necesitara dicha placa y sus módulos, lo cual es inviable, si se requiere hacer varios proyectos similares, ya que esto influye directamente en el presupuesto del proyecto.

7 Placas Arduino

Figura 7: Placas de Arduino

Por otro lado Bascom AVR, de privativo tiene la adquisición de su software, pero nos permite compilar un proyecto para varios microcontroladores, pudiendo elegir entre una amplia gama de microcontroladores en donde selecionaremos al integrado que mejor se adapte a nuestro proyecto

Además Bascom AVR tiene varias placas entrenadoras, pero como su nombre lo indica son entrenadoras, en donde se aprende a utilizar los microcontroladores, aúnque no he utilizado ninguno de estos entrenadores de Bascom Avr, solucioné este inconveniente de aprendizaje, mediante el uso de las placas de Arduino, ya que las encuentran en la mayoría de las electrónicas, debido a que son muy populares.

Retomando algo de Arduino, admito que inicialmente me llamo mucho la atención, debido a que además de tener el Hardware Libre, la programación de su código se realiza en "C" y conozco el potencial de "C", ya que he utilizado Win Avr, Atmel Studio y Codevision, que a la final se resumen en utilizar Atmel Studio, así que decidí ver las ventajas de Arduino, decepcionandome de entrada, porque no encontré una placa para el ATmega164P, ni tampoco información que sea de utilidad para utilizar este Atmega. Así que continué con Arduino Uno, del cual hay varios ejemplos y realice comparaciones entre Atmel Studio y Arduino, comparando sus opciones de compilación, las librerías, las aplicaciones especiales, etc, y encontre varias limitantes, optando por elegir de entre los compiladores para "C", al de Atmel Studio y Arduino quedo solo para aplicaciones que no requieran un desarrollo especializado, como por ejemplo la adición de un control Touch, que constituya parte integral del control dentro del microcontrolador.

Despues de todo lo que he mencionado en estos tres artículos correspodientes a los tres primeros videos de este curso, expresio mi opinión acerca de Arduino, Bascom Avr y Avr Studio.

Concluyo indicando que Arduino, es el más popular, pero no es el unico, que se debería de aprender ha utilizar, también hay otras opciones de placas entrenadoras y de compiladores.

© 2017 Innova Domotics - Todos los derechos reservados