jueves, 22 de septiembre de 2011

Comparación de Microcontroladores


En esta entrada vamos comparar, explicando las ventajas y desventajas, de los distintos microcontroladores de distintas empresas. Vamos a comparar Atmel (con su micro ATMEGA8), FreeScale (con su micro GP32) y Microchip (con su micro PIC16F84).


Para comenzar, los micro-controladores ATMEL son más difíciles de conseguir, pero son más económicos.
Mientras  que los microcontroladores de FreeScale son 100 veces más rápidos que otros microcontroaldores. Es fácil de programar y reprogramar.
Los microcontroladores de Microchip ya han sido desarrolados en el blog.



Microcontroladores ATMEL
Los microcontroladores ATMEL son:

  • TinyAVR (8 bits):
    • Son muy pequeños
    • utilizan poca RAM
    • Utilizan poca Flash
    • Limitación de periféricos: Una instrucción por ciclo
    • Rápidos
    • Hasta 20MHz
    • Min: 0,7V
    • Uso general
    • De 0,5 a 8k de flash 

  • MegaAVR
    • Mejor que el TinyAVR
    • Función de Ahorro de Energía
    • Uso general (Ej. LCD)
    • Mejores periféricos y opciones
    • Desde 4 hasta 256k de memoria flash
  • 8/16BitsxMEGA 
    • Muy Grandes
    • Uso General
    • Rendimiento Extremo
    • USB
    • Con soldado superficial
    • Posibilidad de mover datos rápidamente de un periférico a otro
  • 32BitsxMEGA (Como los PIC32F)
    • Uso General
    • Conexión Ethernet
    • Hasta 66MHz
    • 1.5Mps/Instrucción
    • Ultrapotentes
  • Para Usos especificos
    • Manejo de Baterias
      • Control de Temperatura
      • Cortocircuitos
    • Para los Automóviles
  • ATMEGA8 (Equivalente al PIC12f873)




    • En Arg: ATM Mega8 L.
    • En US.: ATM Mega8 A.
    • 8Mhz / 16Mhz
    • 130 Instrucciones (Muchas)
    • RISC Avanzada
      • Muchas Instrucciones
      • Una Instrucción por Clock
      • Rápido
    • Compacto
    • 8k de Flash
    • 1k de RAM (GPR en Microchip)
    • 23 Pines de entrada/Salida
    • 18 Interrupciones
    • Lenguaje C
    • Comparador Analógico
    • 0,5 de EEPROM


Es importante resaltar que a diferencia de los PIC, los microcontroladores ATMEL no tienen bancos. La memoria RAM está dividida en 2 Registros y direcciones y a continuación de los registros los I/O registers.

Herramientas:
  • Programadores
    • AVRDUDE
    • PONYPROGE
  • Compiladores
    • GNUToolChain
  • Simlación:
    • SimulAVR + GDB
  • Entornos Gráficos
    • Code::Bocks
    • Eclipse Plugin AVR (Java)


La tensión máxima que puede soportar es de 6V
Alcaración: No hay que superar los 300mA entre la suma de todos los puertos.
BOOTLOADER: Sirve para que el microcontrolador.se autoprograme.

MOTOROLA - FREESCALE
Antiguamente la empresa que los fabricaba era Motorola, actualmente la empresa se llama FreeScale

Microcontrolador Utilizado: GP32
  • Ventajas
    • 100 Veces más rapido
    • Facilidad al programar y reprogramar
    • 8/16Bits
    • Posibilidad de multiplicar y dividir
    • Tiene una alta performance
    • Facilidad de comunicación con otros micro-controladores
    • Funciona entre -40C  a 85°C
    • 512Mb de memoria RAM
    • Memoria EEPROM de 32K
    • Modo Stand-By
    • Conversores A/D
    • Puerto SERIE
    • Tiene una memoria continua (Sin bancos)
    • Sencillo
    • Utiliza arquitectura Von Neumann
      • Memoria de Datos y Memoria de Programa en el mismo lugar:
      • Se congestiona el BUS.
    • Memoria Flash: 32K
    • Motorola es como una PC
    • Divide por 4 la frecuencia del oscilador
    • Para poner un literal: #[          --------- En pic es Movlw

    • Ejemplo: LDA $50 = movf 0x50,W (En PIC)
    • Ejemplo: mov $00,$F0 ---------- En pic hay que pasar SIEMPRE por el W.


 Archivo resultante del compilador:
  • ATMEL
    • .elf
  • Motorola
    • .S19
  • Microchip
    • Directamente el .Hex sin pasos posteriores.


Tiendas de Eléctrónica en Argentina:

Intek: No comercializan el GP32
           No tienen el ATMega8, pero ofrecen el ATMega88: (http://atmel.com/dyn/resources/prod_documents/8161S.pdf). Su valor es de $43,03.


MicroElectrónicaSH:

GP32:      $86,48
Atmega8: $23,04



A continuación, una tabla de comparación entre las tres empresas:


miércoles, 14 de septiembre de 2011

Programa LCD: "Hola Mundo"

Este programa, para el PIC16F84A, servirá para mostrar en un LCD (LM016L), la palabra "Hola Mundo"
Este programa utilizará las subrutinas del libro PIC16F84.

El programa es el siguiente:


BANK1
movlw b'11111'
movwf TRISA       ;todo el PORTA como entrada
movlw b'00000000'
movwf TRISB       ;todo el PORTB como salida
BANK0
;====================================================================
; Programa principal
;====================================================================
call LCD_Inicializa           ;Se inicializa el LCD
call Retardo_1ms

movlw 'H'
call LCD_Caracter

movlw 'o'
call LCD_Caracter

movlw 'l'
call LCD_Caracter

movlw 'a'
call LCD_Caracter

movlw ' '
call LCD_Caracter

movlw 'M'
call LCD_Caracter

movlw 'u'
call LCD_Caracter

movlw 'n'
call LCD_Caracter

movlw 'd'
call LCD_Caracter

movlw 'o'
call LCD_Caracter
 
goto $

include <RETARDOS.inc>
include <LCD_4BIT.inc>

Aclaración:
En la subrutina retardos.inc se realizó un cambio y se agregó un nuevo retardo para que el lcd funcione
con una frecuencia de 250k:

Luego podemos simularla en proteus, y nos quedará de la siguiente manera:


jueves, 8 de septiembre de 2011

Proyecto Final: Tablero de Corsi

El proyecto final de la materia del grupo será un tablero de CORSI. Un tablero de CORSI es como el popular juego "SIMON". Este tablero consta de 8 luces (Correspondientes a las letras A - H). Estas luces están conectadas a 8 pulsadores. Las secuencias están en la imagen al final de esta entrada. Cada luz tendrá que estar encendida por 2 segundos y apagadas por un segundo. Nuestro proyecto final es armar un programa que realicen las secuencias pactadas anteriormente. También va a tener un LCD, que le dirá al usuario la próxima instrucción a realizar. También tendrá una conexión para guardar los datos en una PC (USB  ó SERIE) que además podrá ver errores típicoscomo por ejemplo que se prendan más luces que las necesarias, menos que las necesarias, etc.
Funcionamiento del programa:

  • Al prender el equipo se seteará el LCD y luego dirá "Bienvenido" y luego "CESNI"
  • Luego el LCD esperará a que se presione un botón de START. En ese momento el display dirá NIVEL 1.
  • Las luces empezarán a prenderse y a apagarse según la tabla.
  • El usuario tendrá que repetir la secuencia. Si por alguna razón no la recuerda tendrá un botón para pasar a una segunda secuencia (Grupo 2).
  • Al realizar esto el display mostrará nivel 2 y mandará los datos vía PC.
  • Esto seguirá así con los demás niveles
Componentes necesarios para la realización del proyecto:
  • 1 LCD
  • 8 pulsadores
  • 8 luces
  • Conector USB ó SERIE
  • 1 pulsador "START"
  • 1 pulsador para tener otra secuencia del mismo nivel.
  • 1 llave de encendido

Este proyecto será destinado al CESNI (Centro de Estudios Sobre Nutrición Infantil) para que puedan completar su investigación.
SI SE REALIZA ALGÚN CAMBIO EN EL PROYECTO SERÁ CAMBIADO EN ESTA ENTRADA