Showing posts with label Computo Integrado. Show all posts
Showing posts with label Computo Integrado. Show all posts

May 26, 2012

Android + Bluetooth + Arduino. Proyecto

Bueno gente aquí les presento mi proyecto final, consiste en manejar mediante un dispositvo móvil con S.O Android un carrito mediante Bluetooth.

Para realizar la conexión entre el carrito y el dispositivo móvil utilicé un módulo bluetooth (el Rn-42) que se encuentra conectado a un Arduino UNO. El dispositivo móvil (en mi caso una tablet iconia A200) mandaba señales al arduino el cual movía el motor del carrito.

Los movimientos que realiza el carrito son hacia adelante y hacia atrás mediante el uso de botones, en este caso una interfaz gráfica que tiene un volante y el pedal de acelerador y freno. Mi idea era manejar el carrito mediante acelerómetro pero por cuestiones de tiempo no alcancé a implentarlo.

Bueno aquí les dejo una pequeña presentación y el codigo que utilicé.


Bueno aquí les dejo el sketch de arduino que permitirá la conexión bluetooth entre el móvil y el carrito


Y aquí el código de android para la interfaz y la conexión bluetooth con el arduino. Cabe aclarar que este código lo realicé en processing.

May 23, 2012

Acelerómetro en Android

Bueno aquí les dejare unos tutoriales para desarrollar una aplicación utilizando el acelerómetro de un dispositivo con SO Android

  • Creación de la clase Acelerómetro


  • Creación de administrador de sensor


  • Método OnSensorChanged



  • Final




Espero les sea de gran ayuda. Saludos!

Módulo Bluetooth RN-42

Este módulo de la compañía Roving Networks es pequeño y fácil de usar, está diseñado para reemplazar cables seriales. El stack Bluetooth está completamente encapsulado y el usuario final simplemente ve caracteres seriales siendo transmitidos y recibidos.

El RN-42 es un dispositivo Clase 2 con un rango de 50 a 60 pies con un correspondiente reducido consumo de potencia. Es perfecto para aplicaciones de corto alcance alimentadas mediante batería. Usa solamente 26uA en modo "sleep" mientras permanece aún conectado y reconocible. Múltiples modos de configuración de potencia permiten al usuario elegir el perfil de menor consumo de potencia para una determinada aplicación.

Soporta múltiples perfiles Bluetooth como SPP y HID, así como la inerface UART, lo cual facilita su integración simple con sistemas embebidos o para su conexión con dispositivos existentes. El RN-42 tiene certificación FCC y Bluetooth SIG, haciéndolo una completa solución Bluetooth integrada

El módulo RN-42 es un módulo Bluetooth de bajo consumo clase 2, es flexible y se encuentra entre los más económicoy que además cumple con el estándar 802.15.1

Una de sus principales ventajas es que soporta diferentes protocolos de comunicación.

Otra característica a resaltar es que es fácil de usar y está completamente certificado, lo que lo convierte en una solución muy viable.

Características:
  • Con su antena de alto rendimiento tipo chip y su soporte de Bluetooth enhanced data rate (EDR), el RN-42 proporciona una rata de hasta 3Mbps para una distancia de hasta 20m
  • Soporta Bluetooth v2.0+EDR
  • Modulo Bluetooth calificado 2.1/2.0/1.2/1.1
  • Interfaces de conexión de datos UART (SPP o HCI) y USB (sólo HCI)
  • Soporta ratas de datos SPP - 240Kbps (slave), 300Kbps (master)
  • Soporta ratas de datos HCI - 1.5Mbps, 3.0Mbps
  • Dispone de software para modo HCI ó SPP/DUN
  • Antena tipo chip
  • Alcance: hasta 20m con línea de vista.
  • Frecuencia: 2.402 ~ 2.48 GHz
  • Modulación: FHSS/GFSK (79 canales a intervalos de 1MHz)
  • Comunicación segura, encriptación de 128 bits
  • Corrección de errores
  • Potencia de salida: 4dBm
  • Sensitividad: -80dBm
  • Consumo de corriente en transmisión: 25mA
  • Consumo de corriente en recepción: 25mA
  • Voltaje de alimentación: 3V ~ 3.6VTamaño: 13.4mm x 25.8mm
Este modelo de bluetooth es  una excelente solución para agregar comunicación inalámbrica Bluetooth a sistemas integrados existentes.

Este módulo es utilizado para realizar el módem bluetooth - clase 2, y vendría a ser un "reemplazo de cable serial". Esta versión emplea el módulo RN-42. Este modem trabaja como un puerto serial ya que cualquier stream de datos desde 9600 hasta 115200bps puede ser enviado de manera inalámbrica.

Esta unidad puede ser operada entre 3.3V y 5.5V. Todas las señales son 3V-5.5V tolerantes. No se requiere acondicionamiento de niveles.

Características del módem bluetooth clase 2:
  • Radio modem Bluetooth FCC Clase 2
  • Dimensiones compactas
  • Link muy robusto con buena distancia de transmisión (18m) 
  • Bajo consumo de potencia : 25mA promedio
  • Opera en ambientes hóstiles de RF como WiFi, 802.11g, y Zigbee
  • Conexión encriptada
  • Frequencia: 2.4~2.524 GHz
  • Voltaje de operación: 3.3V-5V
  • Comunicaciones seriales 2400-115200bps
  • Temperatura de operación: -40 ~ +70C
  • Antena integrada

Aquí les dejo el datashield de este módulo, es un pdf que contiene un poco de información sobre el bluetooth además del datashield.

Tambiés aquí les proporciono las especificaciones técnicas y y un manual de usuario

Por último les dejo un programa para ejecutarse en un arduino y que será el que permitirá la conexión entre los dispositivos móviles y el arduino; además en este programa se declara el pin 13 del arduino como salida, con lo que se puede mandar señales para encender ya sea un led, un motor, etc








Este programa simplemente se pasa a arduino y es necesario desarrollar una aplicación o programa que permita reconocer los dispositivos con bluetooth entre ellos el arduino con su módem


Fuentes

Zigbee, Bluetooth (rn 42), Wi-Fi

Las especificaciones y características de Zigbee, Bluetooth y Wi-Fi, tienen diferencias marcadas como la velocidad de transmisión, consumo eléctrico, rango de alcance, tamaño del protocolo, técnica de modulación, tiempo de activación, etc.

Uno de los aspectos más importantes para seleccionar una u otra tecnología es el ancho de banda de datos que permite transmitir, pero a la hora de utilizar alguna de estas tecnologías en aplicaciones de control y de envío de pequeñas cantidades datos, este aspecto se vuelve menos relevante y otros como el rango, el consumo y el precio del dispositivo comienzan a tomar mayor importancia.

A pesar de que el rango de alcance y el consumo eléctrico está directamente ligados a la tecnología, si se revisan los dispositivos que hay actualmente en el mercado, se darán cuenta que estas características no son tan diferentes y que la mayoría de módulos disponibles pueden satisfacer  la necesidad que se tenga, haciendo que la decisión de que componente seleccionar se base en su precio, facilidad de implementación y uso y la confiabilidad de la marca.

Aquí les traigo información sobre XBEE, el módulo rn 42 (Bluetooth) y un módulo Wi-Fi

XBEE


Esta tecnología pertenece a la familia de módulos Zigbee de la empresa Digi International.

Esta familia ofrece cuatro tipos de antena: chip, whip, UFL y RPSMA. Esta tecnología está en dos versiones: Xbee y Xbee Pro. La segunda tiene un mayor rango de alcance y mayor consumo eléctrico.

Estos módulos tienen una interfaz de comunicación RS-232, algunos pines de entrada y salida digitales, otros de entrada analógica y de PWM (Pulse-width modulation). Son de montaje through hole, utilizan pines con una separación de 2 mm, más pequeño al estándar de 2.54 mm, lo que hace que se necesite un adaptador para utilizarlo en protoboards.

Los módulos XBEE pueden ser operados con comandos AT o con un API de más alto nivel. A pesar de incluir un microcontrolador, éste ya tiene un firmware programado, por lo que no es recomendable cambiarlo para utilizarlo en aplicaciones propias.

Básicamente el firmware del dispositivo, permite sin necesidad de un microcontrolador externo, la lectura y escritura remota de pines de entrada y salida y la transmisión de datos; por lo tanto, una posible configuración de la red, es la utilización de terminales brutas con entradas y salidas, controladas por módulos centrales inteligentes.

Características importantes:
  • Tasa de Transmisión: 250 Kbps
  • Rango:
    • Xbee: Interior 40m Exterior – Línea de vista 120m
    • Xbee pro: Interior 90m Exterior – Línea de vista Máximo 3200m
  • Consumo:
    • Xbee:
      • Transmisión: 35 mA – 45 mA
      • Recepción: 38mA – 40 mA
      • Sleep: 1uA
    • Xbee pro:
      • Transmisión: 205 mA – 220 mA
      • Recepción: 47mA – 62 mA
      • Sleep: 4uA

  • Precio: 21 USD.


RN-42

Es un módulo bluetooth de clase 2 certificado con antena PCB integrada de montaje superficial de la empresa Roving Networks. El módulo soporta los modos de transmisión SPP y HSI. Posee dos interfaces de comunicación UART y USB y algunos pines de entrada y salida digitales y uno de entrada análogica, que pueden ser gestionados remotamente a través de comandos ASCII.

RN-42 puede ser utilizado sin necesidad de microcontrolador, siempre y cuando no se necesite que el dispositivo tome decisiones en el sitio.

Roving Networks ofrece un amplia gama de módulos bluetooth con interfaces RS232, RS422 y USB, que facilita su aplicación en la industria.

Características importantes:
  • Tasa de Transmisión: Máximo 3Mbps
  • Rango: 10 – 20m
  • Consumo:
    • Transmisión: 30mA
    • Sleep: 26uA
  • Precio: 19.95 USD


RN-131C

Es un módulo Wi-Fi certifcado con posibilidad de usar antena PCB integrada de montaje superficial o antena UFL de la empresa Roving Networks. El módulo soporta TCP/IP y protocolos de autenticación WEP-128, WPA y WPA2.

Posee una interfaz de comunicación UART y algunos pines de entrada y salida digitales y otros de entrada análogicas, que pueden ser gestionados remotamente a través de comandos ASCII, utilizando la interfaz UART a través de una red ADHOC.

El módulo trae aplicaciones desarrollados para implementación de DHCP,DNS, FTP, HTTP, UDP, TELNET, ICMP y ARP; y además a través del servicio FTP, se puede actualizar el firmware del dispositivo.

Roving Networks ofrece un amplia gama de módulos Wi-Fi con interfaz RS232 que facilita su aplicación en la industria.

Características importantes:

  • Tasa de transmisión: 1 – 11Mbps for 802.11b / 6 – 54Mbps for 802.11g
  • Rango: 100 m
  • Consumo:
    • Transmisión: 210 mA
    • Recepción: 40 mA
    • Sleep: 4uA
  • Precio: 39 USD



Como pueden ver estas tres opciones proporcionan excelentes alternativas para la implemetación de redes inalámbricas. Incluso el costo de la tecnología Wi-Fi, no aumenta mucho con respecto a las otras opciones.

Estas características permiten que la decisión de escoger alguna de estas tecnologías se base en cuál tecnología maneja mejor el desarrollador, usos de la tecnología y el tipo de dispositivos con que van a hacer interfaz los módulos empleados (celulares con bluetooth, routers inalámbricos, etc.).

Además el uso de estándares de comunicación serial en los dispositivos, facilita la interfaz entre tecnologías, permitiendo implementar redes mixtas, donde el control de sensórica y actuadores sea llevado a cabo a través de zigbee y el manejo de dispositivos móviles o estacionarios de control con bluetooth o Wi-Fi.

Fuentes:

May 17, 2012

Proyecto PIC

Mensaje con display

Idea.

Para mi proyecto con PIC lo que realicé fue mostrar un mensaje utilizando un display. Como mensaje muestra: HOLA SOY JOnHY, pero puede mostrar muchos mensajes más, solo letras que puedan ser formadas con el display.

Componentes

  • PICf628a
  • 1 Display de cátodo común
  • 6 resistencias de 330 ohms
  • Cables
  • Compilador: Pic Basic Pro
  • IDE: MicroCode Studio.

Diagrama 



Código


May 9, 2012

Microcontrolador PIC16F628A

Como ya habíamos visto en una entrada anterior los microcontroladores PIC son fabricados por la empresa MICROCHIP Technology INC. cuya central se encuentra en Chandler, Arizona. Esta empresa ocupa el primer lugar en venta de microcontroladores de 8 bits desde el 2002. 

Su gran éxito se debe a la gran variedad (más de 180 modelos), gran versatilidad, gran velocidad, bajo costo,bajo consumo de potencia, y gran disponibilidad de herramientas para su programación. Uno de los microcontroladores más populares y más conocidos en la actualidad es el PIC16F628A y sus variantes, PIC16F627A y PIC16F648A, estos modelos (los tres serie A) soportan hasta 100 000 ciclos de escritura en su memoria FLASH, y 1 000 000 ciclos en su memoria Eeprom, este está reemplazando rápidamente al popular PIC16F84A ya que presenta grandes ventajas, por ejemplo:



Como pueden observar en la tabla el PIC16F628A tiene gran ventaja sobre otros PIC, además de que cuenta con:

  • Un oscilador interno RC de 4MHZ 
  • MCLR (master clear) programable 
  • Mayor capacidad de corriente
  • Programación en bajo voltaje. 

Todas estas características hacen al  PIC16F628A el microcontrolador ideal para estudiantes y aficionados, ya que al tener oscilador interno y el MCLR programable, es mucho más sencillo ponerlo en funcionamiento, basta con conectar al pin 14 a 5V y el pin 5 a tierra para que empiece a trabajar.


Arquitectura

El PIC16F628A utiliza un procesador con arquitectura Harvard, lo que le da un mayor rendimiento en el procesamiento de las instrucciones, a diferencia de la arquitectura VonNeumann, esta arquitectura utiliza dos bloques de memorias independientes, una contiene instrucciones y la otra sólo datos, cada una con su sistema de buses de acceso, 8 líneas para los datos y 14 líneas para las instrucciones, con lo que es posible realizar operaciones de acceso lectura o escritura simultáneamente en las 2 memorias, a esto se le conoce como paralelismo.


El CPU de los microcontroladores de la familia 16F6XX emplea una arquitectura RISC (reduced instruction set computer) con un conjunto de 35 instrucciones que pertenecen a la gama media de la familia de los PIC, la mayoría de estas instrucciones se ejecutan en un ciclo de instrucción a excepción de los saltos que requieren de 2 ciclos

Dentro de su procesador existe una pila de 8 niveles que permiten el anidamiento de subrutinas, esto quiere decir que puede retomar 8 lugares diferentes de línea de programa e ir regresando a cada uno en el orden inverso al que fueron anidados.

Aquí les dejo el diagrama de los bloques funcionales del pic.



Memoria de programa

Como puse en una entrada anterior a esta memoria también se le conoce como memoria de instrucciones, aquí se escribe las ordenes para que el CPU las ejecute. 


Este PIC tiene memoria de programa no volátil tipo FLASH, a diferencia de la memoria EEPROM, la memoria FLASH se caracteriza por ser más rápido en el proceso de escritura/borrado eléctrico, además dispone de mayor capacidad de almacenamiento, esta característica hace que sea ideal para prácticas de laboratorio en donde la grabación y el borrado son frecuentes, que como dije antes, soporta 100 000 ciclos de escritura/borrado. 

El bus de direcciones de la memoria de programa es de 13 bits, por lo que el Contador de Programa (PC) puede direccionar 8192 posiciones de 14 bits cada una, desde la 0000h hasta 1FFFh; de las cuales sólo las primeras 2048 líneas tiene implementadas, desde la 0000h hasta la 07FFh; es decir que el PC sólo utiliza los 11 primeros bits de direcciones los demás bits los ignora.


Memoria de datos

El PIC16F628A tiene dos tipos de memorias de datos, la RAM estática o SRAM (Random Access Memory) y una memoria auxiliar no volátil llamada EEPROM

LA SRAM es un tipo de memoria volátil, es decir sus datos permanecen en la memoria mientras exista alimentación en el dispositivo y es de vital importancia porque ahí residen dos tipos de datos, los registros de propósito general (GPR), en donde se almacenan las variables; y los registros especiales (SFR), que son los encargados de llevar el contador de programa, el conteo del temporizador, el estado de los puertos, la configuración de las interrupciones, etc.

La memoria EEPROM puede ser accedida por el usuario mediante programación, es muy útil para almacenar datos que el usuario necesita que se conserven aún sin alimentación, tal es el caso de la clave de una alarma, esta puede ser modificada, pero no debe perderse por un corte de energía. Esta memoria tiene una capacidad de 128 posiciones de 8 bits cada una. La serie PIC16F6XXA, tiene una retención de datos en esta memoria mayor a 100 años.

Este microcontrolador es fabricado con tecnología CMOS (Complementary metal-oxide semiconductor) lo que hace que su consumo de potencia sea muy bajo (2 mA a 4 Mhz) debido a que esta tecnología hace que este microcontrolador este configurado de tal forma que, en estado de reposo, el consumo de energía es únicamente el debido a las corrientes parásitas. 

Además tiene la característica de que es completamente estático, lo que significa que si el reloj se detiene los datos de la memoria RAM no se pierden, esto mientras el microcontrolador sigue alimentado. 

La memoria de datos RAM, tiene 512 líneas de 8 bits cada una y está particionada por 4 bancos; el banco 0, banco 1, banco 2 y banco 3, cada uno con 128 bytes, el acceso a cada banco de memoria lo realiza los bits RP1 y RP0 del registro STATUS, la mayoría de los bytes son ocupados por los Registros de Funciones Especiales (SFR) o no están implementadas. Para el caso del PIC16F628A sólo 224 posiciones de memoria RAM están disponibles para los Registros de Propósito General (GPR),

Aquí les dejo una imagen con el diagrama de la memoria de datos SRAM:



Características

Las características más sobresalientes de este PIC son:

  • Procesador con arquitectura Harvard.
  • Rango de operación desde 3V. hasta 5.5V.
  • Programable con bajo voltaje LPV (5V).
  • 8 niveles de Pila.
  • 15 pines de I/O y 1 sólo de entrada (RA5).
  • Pin RA5 MCLR programable como reset externo o pin de entrada.
  • Conjunto reducido de instrucciones RISC (35) gama media.
  • Oscilador interno RC (resistencia condensador) de 4 MHZ calibrado de fábrica al ±1 %.
  • Velocidad de operación hasta 20 MHZ con oscilador externo.
  • Admite 8 configuraciones de oscilador.
  • Instrucciones de un ciclo excepto los saltos (200nS por instrucción a 20 MHZ).
  • Resistencias Pull-Up programables en el puerto B.
  • Temporizador Perro guardián WDT independiente del oscilador.
  • Programación serial en Circuito ICSP por 2 pines: RB6 reloj y RB7 datos.
  • Código de protección programable por sectores.
  • Memoria de programa FLASH 2048K. de 100.000 ciclos escritura/borrado.
  • Memoria de datos EEPROM de 1.000.000 ciclos escritura/borrado de 100 años retención.
  • 2 circuitos comparadores análogos con entradas multiplexadas.
  • 3 Timers, Timer 0 a 8 bits, Timer 1 a 16 bits y Timer 2 a 8 bits.
  • Módulos CCP, Captura compara 16 bits, y PWM, modulación de ancho de pulso 10 bits.
  • 10 fuentes de interrupción.
  • Módulo de comunicación serial USART/SCI.
  • Capacidad de corriente para encender leds directamente (25 mA I/O) por cada pin.

Fuentes


Memoria en Arduino

En Arduino existen 3 tipos de memoria en el microcontrolador utilizado por la placa:
  • Memoria Flash (espacio del programa) 
    Esta memoria es no volátil, si Arduino deja de ser alimentado eléctricamente los datos que haya en esta memoria permanecerán. En esta memoria es donde Arduino almacena el sketch, ques es el nombre que usa Arduino para un programa. Es la unidad de código que se ejecuta en la placa Arduino.

    El tamaño de la memoria Flash de Arduino puede variar dependiendo del microcontrolador, aunque no es muy grande. Por ejemplo, para el chip ATmega168 el tamaño de la Flash es de 16 kb, de los cuales 2 kb son utilizados por el bootloader. Para el ATmega328 (chip que incorpora Arduino UNO) el tamaño de la memoria Flash es de 32KB, de los cuales el bootloader usa 0.5 KB.
  • SRAM (static random access memory, memoria estatica de acceso aleatorio) 
    Es el espacio donde los sketches almacenan y manipulan variables a ejecutarse, y es de tipo volátil.

    La información guardada en esta memoria será eliminada cuando Arduino pierda la alimentación. Esta memoria es de uso exclusivo para el programa en ejecución.

    Esta memoria es muy pequeña, por lo que se deben optimizar los programas al máximo y no abusar de variables de tipo char muy grandes. Hay que tener en cuenta que cada carácter de una variable char utiliza un byte. En el microcontrolador ATmega 168 el tamaño de la memoria SRAM es de 1024 bytes, para el caso de un chip ATmega328, como el de Arduino UNO, el tamaño es de 2KB (2048 bytes).

    Si la SRAM se queda sin espacio, el programa de Arduino fallará de forma imprevista, aunque se compile y se suba a Arduino correctamente la aplicación no se ejecutará o se ejecutara de manera extraña.
  • EEPROM
    Es un espacio de memoria que puede ser utilizada por los programadores para almacenar información de largo plazo.

    El tamaño de la EEPROM para un chip ATmega128 es de 512 bytes, para un chip ATmega328 es de 1KB (1024 bytes). Hay que tener en cuenta que el tamaño de la memoria EEPROM interna de Arduino es "pequeño" pero Arduino admite añadir módulos de memoria EEPROM externa de mayor tamaño.


Algunos consejos para evitar consumir toda la memoria interna de la que dispone el Arduino son los siguientes:
  • Si el programa se comunica con una aplicación ejecutándose en una computadora, se puede intentar trasladar los datos a la computadora, y esto reducirá la carga en el Arduino.
  • Si el programa usa tablas de referencia o arreglos de gran tamaño, se recomienda utilizar el tipo de datos más pequeño que se pueda; por ejemplo, un int utliza 2 bytes, mientras que un byte utiliza solo 1 byte.
  • Si no se necesita modificar las cadenas o datos mientras el programa se ejecuta, se pueden almacenar en la memoria Flash en vez de la SRAM; para esto, hay que utilizar el instrucción PROGMEM.


Ampliar almacenamiento en Arduino

Cómo ya pudieron haber notado, las diferentes memorias de los chips de Arduino (Flash, SRAM y EEPROM) son muy limitadas para funcionalidades que requieren mayor espacio de memoria, por ejemplo, si se conecta una cámara de fotos o de vídeo a Arduino y se quiere guardar capturas de fotos o vídeos no servirán estas memorias.


Memoria EEPROM externa

Una posibilidad para ampliar la capacidad de memoria de Arduino es usar memoria EEPROM externa, adquiriendo este tipo de memoria se puede disponer de más memoria EEPROM para cualquier programa. Este tipo de memoria es no volátil y cabe aclarar que no tienen un gran tamaño, por ello, no serán útiles para proyectos con grandes requerimientos de espacio.

Para manejar este tipo de memorias existen librerías para trabajar con estas tarjetas en Arduino.


Tarjeta SD

Si lo que se va a desarrollar es un proyecto más grande, que requiere espacio de Megas o Gigas, por ejemplo trabajar con audio, vídeo, fotos, almacenamiento de datos, etc., la mejor opción es utilizar alguna memora extraíble.

Para conseguir almacenamiento extra se puede utilizar tarjetas flash (SD, microSD). Estás tarjetas permiten almacenar varios GBytes de datos en un espacio muy reducido.

Existen módulos SD para Arduino que se pueden acoplar fácilmente
Y al igual que con las memorias EEPROM externas, también existen librerías que permiten manejar este tipo de memorias.





Programa

Por último aquí les dejo un sencillo programa que escribe 1024 veces en la memoria EEPROM del Arduino UNO:



April 29, 2012

Memoria en microcontroladores

En los microcontroladores la memoria de instrucciones y datos está integrada en el propio circuito integrado. Una parte debe ser no volátil, esto es tipo ROM, y está destinada a contener el programa de instrucciones que tiene la aplicación. Otra parte de memoria debe ser de tipo RAM, esto es volátil, y se destina a guardar las variables y los datos.

Hay dos características que diferencían a los microcontroladores de los PC's:
  • No existen sistemas de almacenamiento masivo, como discos duros.
  • Como el microcontrolador sólo se destina a una tarea en la memoria de programa, sólo hay que almacenar un único programa de trabajo.

La memoria de datos (RAM) en estos dispositivos tiene poca capacidad pues sólo contiene las variables y los cambios de información que se produzcan en el transcurso de la ejecución del programa. Otra razón por la que los cicrocontroladores tienen poca memoria RAM es que como sólo existe un programa activo, no se requiere guardar una copia del mismo en la RAM pues se ejecuta directamente desde la memoria de programa (ROM).

Es común que los usuarios de PC's y desarrolladores de programas para PC esten acostumbrados a trabajar con Megabytes de memoria, pero los diseñadores con microcontroladores trabajan con capacidades de memoria de programa de 512 bytes, 1K, 2K (hasta 64K) y de RAM de 20 bytes, 68 bytes, 512 bytes (hasta 4K).

Según el tipo de memoria de programa que con la que cuenten los microcontroladores, la aplicación y utilización de los mismos es diferente. Estos son los 5 tipos de memoria ROM que se puede encontrar en el mercado:

  • ROM con máscara
Es una memoria no volátil de sólo lectura cuyo contenido se graba durante la fabricación del chip. Máscara viene de la forma cómo se fabrican los circuitos integrados, éstos se fabrican en obleas que contienen varias decenas de chips, dichas obleas se obtienen a partir de procesos fotoquímicos, donde se impregnan capas de silicio y oxido de silicio, y se erosionan al exponerlos a la luz. Como no todos los puntos terminan siendo erosionados, se sitúa entre la luz y la oblea una máscara con agujeros, de manera que donde deba incidir la luz, esta pasará.

Debido al elevado costo del diseño de la máscara es recomendable usar microcontroladores con este tipo de memoria cuando se precisan cantidades superiores a varios miles de unidades.

  • OTP (One Time Programmable)
El microcontrolador contiene una memoria no volátil de sólo lectura "programable una sola vez" por el usuario. El usuario puede escribir un programa en el chip usando un sencillo programador. La versión OTP es recomendable cuando es muy corto el ciclo de diseño del producto, o en la construcción de prototipos y series muy pequeñas.
  • EPROM (Erasable Programmable Read Only Memory)
Los microcontroladores con esta memoria pueden borrarse y grabarse muchas veces. La grabación se realiza de igual manera con un programador. Si después se quiere borrar el contenido, disponen de una ventana de cristal en su superficie por la que se somete a la EPROM a rayos ultravioleta durante varios minutos. Las cápsulas son de material cerámico y son más caros que los microcontroladores con memoria OTP que están hechos con material plástico. Hoy en día se utilizan poco, siendo sustituidas por memorias EEPROM o Flash.

Tanto en este tipo de memoria como en la OTP, se suele usar la encriptación mediante fusibles para proteger el código contenido.

  • EEPROM (Electrical Erasable Programmable Read OnIy Memory). 
Se trata de memorias de sólo lectura, programables y borrables eléctricamente. Tanto la programación como el borrado, se realizan eléctricamente desde un programador. No disponen de ventana de cristal en la superficie como en el caso de las memorias EPROM.

Los microcontroladores con de memoria EEPROM una vez instalados en el circuito, pueden grabarse y borrarse cuantas veces se quiera sin ser retirados de dicho circuito, aunque también es finito por lo que no se recomiendo una programación continua. Para ello se usan "programadores en circuito" que proporcionan una gran flexibilidad y rapidez a la hora de realizar modificaciones en el programa de trabajo.

Se va extendiendo en los fabricantes la tendencia de incluir una pequeña zona de memoria EEPROM en los circuitos programables para guardar y modificar cómodamente una serie de parámetros que adecúan el dispositivo a las condiciones del entorno.

Este tipo de memoria es relativamente lenta. Hoy día están siendo sustituidas por memorias de tipo Flash.

  • FLASH
Esta es una memoria no volátil, de bajo consumo, que se puede escribir y borrar. Funciona como una ROM y una RAM pero consume menos y es más pequeña.

A diferencia de la ROM, la memoria FLASH es programable en el circuito. Es más rápida y de mayor densidad que la EEPROM.

La alternativa FLASH está recomendada frente a la EEPROM cuando se precisa gran cantidad de memoria de programa no volátil. Es más veloz y tolera más ciclos de escritura/borrado. Son perfectas para la enseñanza y la Ingeniería de diseño.


Las memorias EEPROM y FLASH son muy útiles al permitir que los microcontroladores que las incorporan puedan ser reprogramados sin tener que sacar el circuito integrado de la tarjeta. Con esto, un dispositivo con este tipo de memoria incorporado al control del motor de un automóvil permite que pueda modificarse el programa durante la rutina de mantenimiento periódico, compensando los desgastes y otros factores tales como la compresión, la instalación de nuevas piezas, etc.

Memoria en PIC

Los PIC tienen una serie de registros que funcionan como una RAM de propósito general. Los registros de propósito específico para los recursos de hardware disponibles dentro del propio chip también están direccionados en la RAM. Todos los PIC cuentan con algún tipo de mecanismo de manipulación de bancos de memoria que pueden ser usados para acceder a la memoria externa o adicional. Las series más recientes de dispositivos disponen de funciones que pueden cubrir todo el espacio direccionable, independientemente del banco de memoria seleccionado.

Todos los PICs (menos los dsPIC) manejan datos en partes de 8 bits. Como ya sabemos los PIC usan arquitectura Harvard, por lo que el tamaño de las instrucciones puede ser distinto del de la palabra de datos. De hecho, las diferentes familias de PICs usan tamaños de instrucción distintos, lo que hace difícil comparar el tamaño del código del PIC con el de otros microcontroladores.

La memoria de programa de los PIC puede ser ROM, OTP, EPROM o FLASH; y en ella se almacena las instrucciones del programa que ejecuta el microcontrolador.

En algunos modelos de PIC de gama media, la memoria de prograa se puede leer desde el programa que se está ejecutando, por esto es posible almacenar datos fijos en dicha memoria. En algunos otros modelos con memoria FLASH, se puede escribir datos en la memoria de programa.
Algunos modelos de PIC cuentan con memoria EEPROM en un espacio separado para almacenar datos fijos o que varían un poco.

La memoria de programa en los PIC se organiza en páginas. En la gama media puede haber hasta 4 páginas de 2k palabras cada una. Por lo tanto, la capacidad de memoria puede llegar hasta 8k palabras. Cabe aclarar que las plabras de esta gama de PIC son de 14 bits.


April 22, 2012

Arquitectura de microcontroladores

Anteriormente les hablé sobre los microcontroladores en general, en esta entrada les proporcionaré información sobre su arquitectura.

Bueno los microcontroladores actualmente están conquistando el mundo. Los podemos encontrar en nuestro trabajo, en el hogar y en nuestra vida, etc. Los podemos encontrar controlando el funcionamiento de los mouse y teclados de computadoras, en los teléfonos, en hornos microondas y televisiones, juguetes, refrigeradores, módems, en el sistema de arranque de un coche, etc. Como podemos ver cada vez existen más productos que incorporan un microcontrolador con el fin de aumentar sus prestaciones, reducir considerablemente su tamaño y costo, mejorar su fiabilidad y disminuir el consumo.

Una aplicación típica de los microcontroladores podría emplear varios microcontroladores para controlar pequeñas partes del sistema. Estos pequeños controladores podrían comunicarse entre ellos y con un procesador central, probablemente más potente, para compartir la información y coordinar sus acciones, como ocurre en cualquier computadora.

Algunos fabricantes de microcontroladores superan el millón de unidades producidas de un modelo determinado en una semana.



Arquitectura de los microcontroladores


  • Arquitectura Von Neumann
La arquitectura tradicional de computadoras y microprocesadores así como también de algunos microcontroladores está basada en la arquitectura Von Neumann, la cual consta de una unidad de proceso, también conocida como CPU, la cual está conectada a una memoria única dodne se guardan las instrucciones del programa y los datos.

El tamaño de la unidad de datos está fijo por el ancho del bus que comunica la memoria con la CPU. Por ello un microprocesador o microcontrolador de 8 bits con un bus de 8 bits maneja datos e intrucciones de una o más unidades de 8 bits de longitud. Cuando se presenta el caso de que se debe acceder a una instrucción de mpas de un byte (8 bits) de longitud, se tiene que realizar más de un acceso a la memoria.

Debido a que sólo tiene un sólo bus hace que el microcontrolador sea más lento en su respuesta, ya que no puede buscar en memoria una nueva instrucción mientras no finalicen las transferencias de datos de la instrucción anterior.

Las principales limitaciones de esta arquitectura son:

  • Limitación en la longitud de las instrucciones por el bus de datos, lo cual hace que el microcontrolador deba realizar varios accesos a memoria para buscar instrucciones más largas. 
  • Limitación en la velocidad de operación, causado por tener un sólo bus para datos e instrucciones que no deja acceder simúltineamente y esto impide superponer ambos tiempos de acceso. 




  • Arquitectura Harvard
Esta arquitectura a diferencia de la de Von Neumann tiene su unidad central de proceso (CPU) conectada a dos memorias por medio de dos buses diferentes,

Una de las memorias solamente tiene las instrucciones del programa, también se conoce como Memoria de Programa; y la otra memoria almacena datos, llamada Memoria de Datos.

Los dos buses que conectan las dos memorias son totalmente independientes y pueden ser de distintos anchos. Para un procesador de Set de Instrucciones Reducido, o RISC (Reduced Instruction Set Computer), el set de instrucciones y el bus de memoria de programa pueden diseñarse de manera que todas las instrucciones tengan una sola posición de memoria de programa de longitud.

Debido a que los buses son independientes, la CPU puede acceder al mismo tiempo a las dos memorias sin dejar de ejecutar la instrucción




Ventajas:
  • El tamaño de las instrucciones no está relacionado con el tamaño de los datos
  • El tiempo de acceso a las instrucciones puede ser simultánea con el de los datos, logrando una mayor velocidad en cada operación.

Desventajas:
  • Los microcontroladores con esta arquitura es que deben poseer instrucciones especiales para acceder a tablas de valores constantes que pueda ser necesario incluir en los programas, ya que estas tablas se encontraran físicamente en la memoria de programa (por ejemplo en la EPROM de un microprocesador).



Diagrama Arquitectura de PIC PIC16C84/ PIC16F84



Fuentes

April 19, 2012

Microcontroladores PIC

En la anterior publiqué sobre los microcontroladores en general, ahora traigo información sobre los microcontroladores PIC específicamente.

Los PIC pertenecen a la familia de microcontroladores tipo RISC y al igual que muchos microcontroladores son fabricados por la compañía Microchip Technology Inc. RISC (Reduced Instruction Set Computer, Computacion de Juego de Instrucciones Reducidas) es un tipo de microprocesador que posibilita la segmentación y el paralelismo en la ejecución de instrucciones y reduce los procesos a memoria; tiene 2 caracteristicas fundamentales:

  • Sus instrucciones son de tamaño fijo y tienen un reducido número de formatos 
  • Las únicas instrucciones que tienen acceso a la memoria de datos son las de carga y almacenamiento. 

El nombre real de los PIC es PICmicro, pero se conoce como Peripheral Interface Controller (Controlador de Interfaz Periférico)

El PIC original se diseñó para ser usado con la CPU de 16 bits para mejorar el rendimiento en cuanto a entradas y salidas. Este PIC utilizaba microcódigo simple que se encontraba almacenado en ROM para realizar las tareas de entrada y salida.

A comparación de ese PIC, actualmente existen gran cantidad de PICs, los cuales ya tienen periféricos integrados y con memoria que va desde los 512 a 32 000 palabras (palabra = instrucción en lenguaje ensamblador).


Características más destacadas de los PIC

  • Siguen una arquitectura del modelo Harvard. 
La característica más importante de utilizar esta arquitectura es en la organización de la memoria del sistema, ya que la memoria del programa o las instrucciones son independientes de la memora de datos.

Además de la memoria, el procesador tiene buses los buses segregados, de modo que cada tipo de memoria tiene un bus de datos, uno de direcciones y uno de control.

La principal ventaja de la arquitectura Harvard es que permite adecuar el tamaño de los buses a las características de cada tipo de memoria y debido a esto el PIC acceder simultáneamente a las dos memorias; y esto se traduce en un aumento en la velocidad de procesamiento. Los sistemas con esta arquitectura son dos veces mas rápidos que los que tienen una arquitectura Von Neumann

En general la arquitectura Harvard tiene la desventaja de que consume muchas líneas de E/S del procesador, pero en los PIC y sistemas integrados no es un problema serio.

  • Su arquitectura es un banco de registros. 
Esto implica que todos los elementos del sistema están implementados físicamente como registros.

  • Sus modelos son de arquitectura cerrada y arquitectura abierta. 
Arquitectura Cerrada. 
Este modelo no admite variaciones ni ampliaciones ya que tiene una determinada CPU, cierta capacidad de memoria de datos, un tipo y capacidad de instrucciones definida, un numero de E/S establecido y un conjunto de recursos auxiliares concreto. Este modelo es el que elige Micrchip como principal.


Arquitectura Abierta 
Los PIC con esta arquitectura se caracterizan por disponer de una estructura interna determinada, pueden emplear sus líneas de E/S para sacar al exterior los buses de datos, direcciones y control, con lo que se posibilita la ampliación de la memoria y las E/S con circuitos integrados externos.
  • Utiliza la segmentación (“pipe-line”) en la ejecución de las instrucciones. 
La segmentación permite al procesador realizar al mismo tiempo la ejecución de una instrucción y la búsqueda del código de la siguiente. De esta forma se puede ejecutar cada instrucción en un ciclo. En los PIC cada ciclo de instrucción son cuatro ciclos de reloj.




  • Utilizan un Procesador RISC. 
El repertorio de instrucciones es muy reducido, las instrucciones son muy simples y suelen ejecutarse en un ciclo máquina. Estos procesadores tienen una estructura pipeline y ejecutan todas las instrucciones a la misma velocidad.

  • El formato de las instrucciones tiene la misma longitud. 
Esta característica es muy ventajosa en la optimización de la memoria de instrucciones y facilita enormemente la construcción de ensambladores y compiladores.
  • Las instrucciones son ortogonales 
Cualquier instrucción puede manejar cualquier elemento de la arquitectura como fuente o como destino.

  • Sus recursos son mínimos. 
  • Sistema POR ( POWER ON RESET). 
Todos los PIC tienen la facultad de generar una autoreinicialización o autoreset al conectarles la alimentación.
  • Perro guardián (Watchdog) 
Existe un temporizador que produce un reset automáticamente si no es recargado antes de que pase un tiempo prefijado. Así se evita que el sistema se quede "colgado" puesto que dada esa situación el programa no recargaría dicho temporizador y se generaría un reset.
  • Código de protección. 
Cuando se procede a realizar la grabación del programa, puede protegerse para evitar su lectura. También disponen de posiciones reservadas para registrar números de serie, códigos de identificación, prueba, etc.
  • Modo de reposo (bajo consumo o SLEEP). 
Ejecutando una instrucción (SLEEP), el CPU y el oscilador principal se detienen y se reduce notablemente el consumo.




Versiones de memoria de instrucciones para los PIC

  • Flash 
Utiliza una memoria EEPROM tipo Flash, que puede grabarse y borrarse muchas veces.




  • OTP ("One Time Programmable") "Programable una sola vez"
Sólo se puede grabar una vez por el usuario sin la posibilidad de borrar lo que se graba. Resulta mucho más económica en la implementación de prototipos y pequeñas series.


  • Versión QTP. 
Es el propio fabricante el que se encarga de grabar el código en todos los chips que configuran pedidos medianos y grandes.
  • Versión SQTP. 
El fabricante solo graba unas pocas posiciones de código para labores de identificación, numero de serie, palabra clave, checksum, etc.


Qué podemos hacer con ellos?
  • Son muy útiles para controlar con muchísima facilidad los displays de cristal liquido LCD

  • En muchas aplicaciones se requieren teclados especiales que se adapten exactamente a ciertas necesidades, como por ejemplo una cerradura electrónica, cambiar el menssje de alguna pantalla LCD, etc. Los Pic se puedan utilizar para realizar secuencias de rastreo y así saber que tecla se ha oprimido.


  • Como los PIC incluyen convertidores Analógico / Digitales el control de variables como temperatura, presión y flujo pueden realizarse con circuitos simples. Con unas cuantas resistencias y un buen sensor de temperatura se puede hacer un Termostato o un controlador de Flujo.

  • Tambíen los podemos encontrar en un robot y asi se puede asegurar que no hay Robot que no incluya un PIC en alguna de sus tantas funciones. Son muy importantes en control de servomecanismos, reconocimiento de voz, tareas secuenciales, etc.

  • Como dice en el punto anterior, son muy útiles para controlar motores de distintos tipos, como por ejemplo: de pasos, de corriente directa, servos, etc

Fuentes

Microcontroladores

¿Qué son?
Según Wikipedia esta es su definición: “es un circuito integrado programable, capaz de ejecutar las órdenes grabadas en su memoria” .En otras palabras es un circuito integrado o chip que incluye las 3 unidades funcionales de una computadora:
  • Microprocesador o CPU. 
  • Memoria RAM y ROM (generalmente de tipo Flash). 
  • Unidades de entrada/salida. 
  • Además de un módulo de reloj. 

Aunque en su definición se puede entender que es muy similar a una computadora, sus funciones son limitadas si se comparan con una computadora, pero poseen un alto nivel de especialización. Pero la verdad es que un microcontrolador es un cubo negro con patitas metalicas que se solda a una placa que no realiza nada, hasta que se le programa para realizar cierta función y esa función es parecida a una calculadora: frente a datos de entrada, sigue un algoritmo dado por un programador y cambia su estado interior y produce una salida. Las entradas y salidas pueden ser distintas, por ejemplo: periféricos, desde líneas de entrada digital que pueden estar a cero o a uno; LED’S encendiéndose y apagándose; hasta puertos usados en computadoras que permiten comunicar con otros dispositivos externos como otro microcontrolador o una computadora.

Un microcontrolador es diferente a un microprocesador (Athom o Pentium), no solo en lo físico sino en que es más fácil convertirlo en una “computadora” en funcionamiento, con un mínimo de chips externos de apoyo.

Las ventajas más destacadas de los microcontroladores son: su tamaño, su precio y su diversidad.




¿Qué hacen?

Los microcontroladores pueden ser programados para llevar a cabo diversas tareas.

Los podemos encontrar en casi cualquier dispositivo eléctrico como automóviles, lavarropas, hornos microondas, teléfonos, equipos de audio, etc..

Algunos ejemplos de aplicaciones con microcontroladores son: mandos a distancia, termómetros digitales, controles de acceso por puertas de seguridad, sistemas de alarma de los coches, controles y sensores de maquinaria, microrobótica, monederos electrónicos.

Los modernos microcontroladores a veces incluyen un lenguaje de programación integrado, como BASIC. En caso de que no dispongan de un intérprete integrado o “on-board”, se pueden programar desde una computadora, usando también alguna versión de Basic, C, Pascal, assembler, entre otros.


¿Por qué surgieron?

Cuando no existían los microprocesadores, los ingenieros y aficionados a la electrónica creaban sus circuitos electrónicos mediante diseños que implicaban muchos componentes individuales y complejos cálculos matemáticos. Un circuito lógico básico a menudo requería de muchos elementos electrónicos basados en transistores, resistencias, circuitos integrados con compuertas lógicas, etc; lo cual implicaba circuitos con muchos ajustes y una gran posibilidad de fallos.

En el año 1971 apareció el primer microprocesador, que fue desarrollado por Intel y su nombre fue 4004. A partir de ese momento, fue posible construir un equipo electrónico con un microprocesador, unos pocos circuitos accesorios y un software. Los diseños electrónicos comenzaron a ser mucho más pequeños y simplificados, los diseñadores de equipos electrónicos podían realizar mayor cantidad de tareas en menos tiempo y el tamaño de los equipos se redujo considerablemente; sin embargo, después de cierto tiempo apareció una nueva tecnología, llamada microcontrolador que simplifico aun más el diseño electrónico, al incluir en un mismo encapsulado el núcleo microprocesador, la memoria y las entradas y salidas.


Microcontrolador PIC

Microchip es la empresa que fabrica los microcontroladores PIC. En los últimos tiempos esta familia de microcontroladores ha revolucionado el mundo de las aplicaciones electrónicas. Tienen una facilidad de uso y programación y junto a las inmensas posibilidades de E/S que brindan este tipo de m,icrocontroladores han conquistado a programadores y desarrolladores. Su principal ventaja es su carácter general, la flexibilidad que les permite ser utilizados en casi cualquier aplicación.

La familia PIC se divide en cuatro gamas; las principales diferencias entre estas gamas radica en el número de instrucciones y su longitud, el número de puertos y funciones, lo cual se ve reflejado en el encapsulado, la complejidad interna y de programación, y en el número de aplicaciones:

  • Mini 
Tiene un capsulado de 8 pines, su principal característica es su reducido tamaño, al disponer todos sus componentes de solamente 8 pines. Se alimentan con un voltaje de corriente continua comprendido entre 2,5 V y 5,5 V, y consumen menos de 2 mA (miliAmpere) cuando trabajan a 5 V y 4 MHz. El formato de sus instrucciones puede ser de 12 o de 14 bits y su repertorio es de 33 o 35 instrucciones.

A pesar de tener solo 8 pines, se pueden destinar hasta 6 de ellos como E/S para los periféricos porque disponen de un oscilador interno R-C, lo cual es una de su principales características; los dos pines que restan son utilizados como alimentación.

  • Baja o clásica. 
Son una serie de PIC de recursos limitados, pero cuentan con una de la mejores relaciones costo/prestaciones de la familia. Sus versiones están encapsuladas con 18 y 28 patitas y pueden alimentarse a partir de una tensión de 2,5 V, lo que los hace la mejor opcion en las aplicaciones que funcionan con pilas debido a su bajo consumo (menos de 2 mA a 5 V y 4 MHz). Tienen un repertorio de 33 instrucciones cuyo formato consta de 12 bits.
  • Media 
Es la gama más variada y completa de los PIC. Abarca modelos con encapsulado desde 18 hasta 68 pines. Son los más adecuados en las aplicaciones complejas ya que tienen más prestaciones; poseen comparadores de magnitudes analógicas, convertidores A/D, puertos serie y diversos temporizadores.

Tienen un repertorio de instrucciones es de 35, de 14 bits cada una y compatible con el de la gama baja.


  • Alta 
Esta gama dispone de chips con 58 instrucciones de 16 bits y disponen de un sistema de gestión de interrupciones vectorizadas muy potente. También incluyen variados controladores de periféricos, puertos de comunicación serie y paralelo con elementos externos, un multiplicador hardware de gran velocidad y mayores capacidades de memoria, que alcanza los 8 k palabras en la memoria de instrucciones y 454 bytes en la memoria de datos.

La característica más sobresaliente de los componentes de esta gama es su arquitectura abierta, que consiste en la posibilidad de ampliación del microcontrolador con elementos externos. Esta gama tiene un encapsulado entre 40 y 44 patitas. Esta gama se utiliza en aplicaciones muy especiales, con grandes requerimientos.

Lo mejor de todo esto es que cualquier estudiante o aficionado puede utilizar microcontroladores en sus proyectos, ya que existe abundante documentación disponible para que su uso sea posible sin complicaciones.



Fuentes.
Que son?
Gamas de PIC
Wikipedia

April 17, 2012

Tarea Intro.Lenguaje Ensamblador

Para esta tarea de cómputo integrado decidí hacer el sencillo programa de el Triángulo de Pascal, este programa lo realicé en C. El programa lo hice lo más sencillo que pude, para poder comprenderlo un poco mejor.





Ensamblador.

Para obtener el código en ensamblador utilicé gcc, el cual utiliza as como ensamblador y por lo tanto utiliza la sintaxis AT&T, también se puede comprobar porque al comienzo de los registros va un %, lo cual es característico de AT&T.

Utilicé la siguiente instrucción para obtener el código en ensamblador:

gcc -S Pascal.c

Y esto fue lo que me arrojó:



Como podrán ver de un pequeño programa en c me arrojó 235 líneas de código (O.o). En las líneas pueden observar una pequeña explicación de lo que hace cada una.


Optimización del código
Para optimizar el código quité las líneas del comienzo que vienen siendo el nombre del programa (que la agrega gcc por default) y las de alineación de la pila; también eliminé las líneas que relacionadas con la arquitectura de 64 bits; así como también las líneas de función que no afectaba el funcionamiento del programa.

Aquí el código optimizado y como podrán observar el código pasó de 235 líneas a 120 O.o:



Para comprobar que el código sigue funcionando igual que en C, lo que hice fue lo siguiente:

gcc Pascal.s -o Pascal.out

./Pascal.out

Y aquí el programa corriendo



Fuentes.
learnassembler
pdf

February 24, 2012

Lenguaje ensamblador.

En esta entrada les voy a hablar un poco sobre lo que es el lenguaje ensamblador, sus características y su relación con los sistemas integrados.

Lenguaje Máquina.

Primero que nada hay que saber lo que es el lenguaje máquina. El lenguaje máquina es un programa o una secuencia de instrucciones que viene dado por una secuencia de códigos binarios; también puede definirse como el sistema de códigos que pueden ser interpretados por un circuito programable, como por ejemplo un microprocesador o microcontrolador. Este lenguaje está compuesto por instrucciones que son las que le dicen que hacer a las computadora. Este lenguaje es diferente en cada computadora o arquitectura de la computadora.


Lenguaje Ensamblador

Es un lenguaje de programación de bajo nivel que utilizan las computadoras, microprocesadores, microcontroladores y otros circuitos programables. Este lenguaje implementa lo que viene a ser una representación simbólica del código del lenguaje máquina y otras constantes que son necesarias para programas en alguna arquitectura de computadora

Ventajas.
  • Como escribir lenguaje maquina es tedioso y susceptible a errores, el ensamblador facilita la tarea de no escribir lenguaje máquina.
  • Los programas realizados directamente en ensamblador se ejecutan más rápido y consumen menos recursos que los programas compilados desde un lenguaje de alto nivel.
  • Se puede controlar el tiempo de ejecución de una rutina, e impedir que se interrumpa.

Desventajas.
  • No es portable, es decir que depende de la arquitectura de la computadora, esto quiere decir que el lenguaje varía dependiendo de la computadora que se utilice.
  • Difícil de entender ya que es un lenguaje de bajo nivel, por lo tanto su estructura es parecida al lenguaje máquina.
  • El lenguaje ensamblador está definido por el fabricante de software, y se basa en los pasos de procesamiento, o también llamados instrucciones; en los registros del procesador, las posiciones de memoria y otras características del propio lenguaje.


Programa Ensamblador.

Es todo programa que traduce de lenguaje ensamblador a lenguaje maquina.


Antes de explicar el proceso que conlleva el traducir el lenguaje ensamblador es conveniente definir algunos conceptos.
  • Código fuente o programa fuente.
    Es un conjunto de líneas de texto, las cuales son las instrucciones que la computadora va a realizar para ejecutar lo dicho en el programa. Aquí se encuentran todos los programas en ensamblador y tienen la extensión *.asm, a partir de este código se realiza el código maquina el cual tiene la extensión *.hex.
  • Ensamblador o lenguaje ensamblador.
    Lenguaje de bajo nivel que traduce de ensamblador a lenguaje máquina.
  • Lenguaje en mnemónico.
    Son las listas de instrucciones y consisten en un conjunto de códigos simbólicos, los cuales corresponden a una instrucción en lenguaje máquina. Son grupos de caracteres alfanuméricos que simbolizan las órdenes o tareas a realizar.
  • Objeto o Código objeto.
    Es el código que resulta de la compilación del código fuente. Este código consiste en lenguaje máquina o también llamado bytecode.
  • Linker.
    Para obtener un programa ejecutable se deben enlazar todos los archivos de código objeto con un programa que se llama enlazador o linker.


Entonces el proceso es el siguiente el programa o código fuente es tomado por el ensamblador, el cual realiza una traducción desde sentencias mnemónicas a lenguaje máquina, esto es un objeto y después mediante un linker se obtiene el ejecutable.

                                     


Ensambladores de alto nivel.

Estos ensambladores incorporan características de un lenguaje de alto nivel. Proporcionan todas las características del lenguaje máquina, pero también incluyen sentencias como IF, WHILE, FOR.

Además de proporcionar lo anterior también nos proporcionan el ocultamiento de información, abstracciones de datos como por ejemplo estructuras, uniones, clases y conjuntos; capacidad de llamar funciones usando una sintaxis similar a la de los lenguajes de alto nivel.



Elementos Básicos del lenguaje ensamblador
  • Etiquetas.
    Es una palabra que se utiliza para designar una línea o sección del programa, también puede ser utilizada para ir de una parte hacia esa etiqueta. Las etiquetas empiezan con una letra, un guión bajo “_”. Las etiquetas deben de ser escritas en la primera columna.
  • Instrucciones.
    Estas son todas las operaciones que realiza el microcontrolador. Las instrucciones dependen de cada PIC. Estas instrucciones se pueden encontrar en la hoja de datos de cada PIC.
  • Operandos.
    Son los registros, variables o constantes. En ellos se emplea la instrucción que se está ejecutando.
  • Directivas.
    Se utilizan para especificar el procesador que se está utilizando así como también su configuración, para asignar locaciones de memoria, etc. Son también instrucciones pero estas son propias del lenguaje ensamblador.
  • Comentarios.
    Al igual que en los lenguajes de alto nivel, se pueden agregar oraciones para que el programa sea más claro. Aquí los comentarios deben empezar con punto y coma “;”.



Lenguaje Ensamblador y Microcontroladores.

Actualmente los microcontroladores solo pueden ser manipulados mediante lenguaje ensamblador. Cada microcontrolador tiene su propio lenguaje ensamblador. Los PIC's de gama mediana utilizan un lenguaje ensamblador que está compuesto por 35 instrucciones

Para ejecutar un programa en un microcontrolador es necesario “traducirlo” a lenguaje maquina. Y esto es posible gracias a los programas ensambladores.

Las instrucciones en cualquier microcontrolador tienen dos componentes: el código de operación y los operandos. En el código de operación están la ordenes (en código) para que el dispositivo ejecute la acción indicada por esa instrucción. Los operandos vienen a ser los datos necesarios para realizar esa acción.

Ejemplos de operandos en un PIC de gama media
·        Una dirección de la memoria de datos (de 7 bits).
·        Una dirección de la memoria de programa (de 11 bits).
·        Un dato de 8 bits.
·        La indicación (con 1 bit) de cuál es el destino del resultado de la instrucción: si es un registro W o un registro de la memoria de datos.

En microcontroladores existen instrucciones que no necesitan ningún operando pero hay otras que necesitan más de un operando.






Fuentes.