domingo, 26 de febrero de 2012

Tarea intro

La primera practicá consiste en elaborar un programa en lenguaje ensamblador, pero antes de pasar al código pondre un poco de lo que es el lenguaje ensamblador en si:

"El lenguaje ensamblador es un lenguaje de bajo nivel, es un derivado del lenguaje máquina y esta formado por abreviaturas de letras y números."

Para generar el código ensamblador primero utilizare el siguiente codigo en C el cual es para generar números aleatorios aqu,í el código:


Después compile el archivo para obtener mi código ensamblador utilizando el siguiente comando:
gcc -S rand.c

Despues de Compilar Obtuve el siguiente código:


Un código muy largo.. para esto analice el código y lo optimice un poco eliminando algunas lineas y este fue el resultado:


Para entenderle un poco mejor Comentarice algunas lineas para ubicar que era lo que hacia el programa. Para probar si funcionaba el codigo con menos lineas cree su ejecutable gcc -s Rand.s -o Rand.exe y lo ejecute ./Rand y este fue el resultado


Referencias:

Tambien me ayude con un post que mi companiero Juan Carlos hizo con anterioridad.

jueves, 16 de febrero de 2012

Arquitecturas de microcontroladores

En esta entrada hablare de las arquitecturas de los micro controladores, pero primero una breve definición de lo que son:

"Un microcontrolador es un circuito integrado que puede ser programable y capaz de ejecutar las ordenes que han sido programadas en el."

Ahora algo sobre las arquitecturas de los microcontroladores...

Inicialmente los microcontroladores tenian la arquitectura clasica de Von Neumann, esta arquitectura estaba caracterizada por disponer de una sola memoria principal donde se almacenan datos e instrucciones de forma indistinta, y a esta memoria se accede a través de un sistema de buses único.
La arquitectura Harvard dispone de dos memorias. una que contiene el programa y otra para almacenar los datos, permitiendo así accesos simultáneos utilizando buses diferentes. Actualmente la mayoría de los microcontroladores responden a esta arquitectura, como ejemplo: los microcontroladores PIC.




Microcontrolador PIC
Usare de ejemplo el PIC16F8X para mostrar la función de las patitas y de como pueden ser asignadas (entradas, salidas, etc..)

Los puertos A (color azul) pueden ser configurados como entradas o salidas. La pata 3 (RA4/TOCKI) puede ser configurado como entrada/salida o como temporizador. El puerto B (color naranja) tiene ocho pines que también se pueden configurar como entrada o salida. Los pines 15 y 16 son únicamente para el oscilador externo*. El pin 4 (Reset) se debe conectar a una resistencia para que el Pic funcione, y si se desea resetear entonces se conecta a un micropulsador con una resistencia de 100 Ohm a tierra.

Los pines 14 y 5 son de alimentacion los cuales no pueden pasar de 5 voltios.


Buscando informacion sobre los microcontroladores pic, encontre un proyecto diseniado con microcontroladores similar a algo de lo que haremos en la clase, este habla de como hacer para evitar que se quemen las cerraduras electricas de puertas comunitarias, mostrando un panorama de el lugar en el que usa y de como se puede implementar utilizando un Pic 12f629.


* Oscilador Externo: Es un circuito que indica al micro la velocidad a la que debe trabajar, se le conoce como oscilador o reloj, y es de vital importancia para que el sistema tenga un buen funcionamiento.

Referencias:

martes, 24 de enero de 2012

Que son los sistemas integrados?

Un sistema integrado es aquel que lleva a cabo una tarea predefinida, generalmente con requerimientos muy específicos e incluye hardware especifico para cada tarea.

Físicamente los sistemas integrados pueden ser desde dispositivos portátiles hasta grandes instalaciones como semáforos o controladores de fabricas.


Aplicaciones de sistemas integrados



  • Sistemas radar de aviones. El procesado de la señal recibida o reflejada del sistema radar embarcado en un avión requiere alta potencia de cálculo además de ocupar poco espacio, pesar poco y soportar condiciones extremas de funcionamiento (temperatura, vibraciones, etc.)
  • Salud. Aplicándose en la medicina, la cirugía y dispositivos portátiles de diagnostico y monitoreo en el hogar, como medidores de glucosa en la sangre o monitores de colesterol.
  • Teléfonos celulares: móviles como Palm, ipod, iPhone, etc..

Lenguaje de bajo nivel vs. alto nivel :D

Lenguajes de bajo nivel: son aquellos que son dependientes de la maquina, osea que el programa que se realiza con este tipo de lenguajes no se puede utilizar en otra maquina, ya que estan prácticamente diseñados a la medida del hardware y así aprovechan al máximo las características de este.

Algunos lenguajes de bajo nivel:
  • Lenguaje maquina: ordena a la maquina operaciones fundamentales para su correcto funcionamiento, combina 0 y 1 para formular ordenes entendibles para el hardware de la maquina. Es mas rápido que los lenguajes de alto nivel.
-Desventaja: es difícil de manejar y tiene códigos fuente enormes en donde encontrar un fallo es imposible.
  • Lenguaje ensamblador: es derivado del lenguaje maquina, esta formado por abreviaturas de letras y números. Como ventaja con respecto al código maquina es que los códigos fuentes eran mas cortos y los programas creados ocupan menos memoria.
    -Desventaja: dificultad de tener que aprender un nuevo lenguaje difícil de probar y mantener.
Lenguaje de alto nivel: Son aquellos que se encuentran mas cercanos al lenguaje natural que al lenguaje maquina. Son lenguajes independientes de la arquitectura del hardware, por lo que los programas creados pueden ser migrados a cualquier otra maquina sin ningún problema.

Algunos lenguajes de alto nivel:
  • FORTRAN
  • COBOL
  • BASIC
  • PASCAL
  • C
  • ADA
Una desventaja que presentan los lenguajes de alto nivel es que existe una gran cantidad de ellos en uso, ademas de las diferentes versiones o dialectos que se han desarrollado de algunos de ellos.



Referencias: