miércoles, 8 de febrero de 2012

Microcontrolador vs Microprocesador


Después de conocer un poco sobre estos dos conceptos ahora vamos a ver una comparación entre los mismos. Sus diferencias y similitudes.
Se suele pensar que un microcontrolador es lo mismo que un microprocesador, pero eso no es cierto. Se diferencian en varios aspectos.

Funcionalidad:
El primero y más importante a favor de un microcontroladores su funcionalidad. Por otro lado, para que se pueda usar un microprocesador, se le deben añadir otros componentes, por ejemplo la memoria. Aunque un microprocesador es una poderosa máquina de cálculo, no está preparado para la comunicación con el entorno exterior; para que esto sea posible se le deben añadir circuitos especiales. Las primeras computadoras se hicieron al agregar periféricos externos tales como memoria, líneas de entrada/salida, temporizadores y otros al microprocesador. Con la mejora en la fabricación de circuitos integrados se logró incluir tanto el microprocesador como los periféricos en un solo chip. A este chip se le dio el nombre de microcontrolador.

Arquitectura:
Los Microprocesadores tradicionales se basan en la arquitectura de Von Newmann, mientras que los microcontroladores trabajan con arquitectura de Harvard.

Componentes:
El microcontrolador está diseñado para agrupar todas las funciones en una sola unidad. No se necesitan componentes externos (periféricos) para su aplicación, porque todos los circuitos necesarios ya están incorporados.
El microcontrolador le lleva una gran ventaja a los microprocesadores ya que todo lo que contiene el microprocesador por llamarlo así el microcontrolador es como una mini computadora ya que contiene las 3 funciones principales de  la computadora dentro de un mismo chip o circuito integrado:
·        CPU (Unidad Central de Procesamiento)
·        Memora de Datos y Programa
·        Unidades de E/S
Por ejemplo la configuración mínima básica de un microprocesador estaba constituida por un Micro de 40 Pines, Una memoria RAM de 28 Pines, una memoria ROM de 28 Pines y un decodificador de direcciones de 18 pines; pero un microcontrolador incluye todo estos elementos en un solo Circuito Integrado por lo que implica una gran ventaja en varios factores:

Tiempo y dinero:
En el circuito impreso por su amplia simplificación de circuiteria, el costo para un sistema basado en microcontrolador es mucho menor y, lo mejor de todo, el tiempo de desarrollo de su proyecto electrónico se disminuye considerablemente.

Programación:
Ambos se programan en un lenguaje de bajo nivel.

Otros:
Los microcontroladores representan la inmensa mayoría de los chips de computadoras vendidos, sobre un 50% son controladores "simples" y el restante corresponde a DSPs más especializados. Mientras se pueden tener uno o dos microprocesadores de propósito general en casa, usted tiene distribuidos seguramente entre los electrodomésticos de su hogar una o dos docenas de microcontroladores. Pueden encontrarse en casi cualquier dispositivo electrónico como automóviles, lavadoras, hornos microondas, teléfonos, etc.

Bibliografía:
http://paginas.fisica.uson.mx/horacio.munguia/aula_virtual/Recursos/Introduccion%20PIC16f84.pdf
http://paginas.fisica.uson.mx/horacio.munguia/aula_virtual/Recursos/Introduccion%20PIC16f84.pdf
http://altf4edb.blogspot.com/2008/11/microcontroladores.html
http://es.wikipedia.org/wiki/Microcontrolador

Microcontroladores


Ahora hablaremos un poco sobre los microcontroladores, su funcionamento y componentes del mismo.


Es un circuito integrado programable, capaz de ejecutar las órdenes grabadas en su memoria. Está compuesto de varios bloques funcionales, los cuales cumplen una tarea específica. Un microcontrolador incluye en su interior las tres unidades funcionales principales de una computadora: unidad central de procesamiento, memoria y periféricos de entrada y salida.

Esto es a lo que nosotros también conocemos como PIC, el pic forma parte de la grande familia de microcontroladores que existen.
Son diseñados para reducir el costo económico y el consumo de energía de un sistema en particular. Por eso el tamaño de la unidad central de procesamiento, la cantidad de memoria y los periféricos incluidos dependerán de la aplicación.  Estos microcontroladores se encuentran en muchos lugares funcionando como pueden ser componentes eléctricos, electrodomésticos donde funcionan sin la interacción con un ser humano, es decir son invisibles.


Ejemplos donde podemos encontrarlos:



Micro porque son  pequeños, y controladores, porque controlan máquinas o incluso otros
controladores. Los Microcontroladores, por definición entonces, son diseñados
para ser conectados más a máquinas que a personas. Son muy útiles porque
usted puede construir una máquina o artefacto, escribir programas para
controlarlo, y luego dejarlo trabajar para usted automáticamente.


Los dispositivos de entrada pueden ser un teclado, un interruptor, un sensor, etc.
Los dispositivos de salida pueden ser LED's, pequeños parlantes, zumbadores, interruptores de potencia u otros dispositivos como relés, luces, un secador de pelo, en fin.. lo que quieras.
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 tales, que junto a las inmensas posibilidades de E/S que brindan han conquistado a programadores y desarrolladores. Su principal ventaja (y según sus detractores la principal desventaja) es su carácter general, la flexibilidad que les permite ser empleados en casi cualquier aplicación. Otras familias de microcontroladores son más eficaces en aplicaciones específicas.
La familia PIC se divide en cuatro gamas, gamas que podemos llamar mini, baja, media y alta. 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 refleja en el encapsulado, la complejidad interna y de programación, y en el número de aplicaciones.







Bibliografía:
http://es.wikipedia.org/wiki/Microcontrolador
http://microcontroladores-e.galeon.com/
http://www.robotshop.com/content/PDF/what's-a-microcontroller-1.1-spanish-28122.pdf
http://r-luis.xbot.es/pic1/pic01.html
http://www.pic16f84a.org/
http://www.neoteo.com/microcontroladores

Microprocesadores

Investigando un poco sobre los microprocesadores y microcontroladores que los hardware que esteremos usando este curso para programas, en si primero definimos cada uno de estos y después encontramos diferencias y similitudes entre los mismos. Para programar se necesita lenguaje maquina como el assembler y es el lenguaje que usan estos componentes.


Un microprocesador es un sistema que explora secuencialmente una información  almacenada, llamada programa, la interpreta y la ejecuta.
En un sistema en el cual interviene un Microprocesador, este por si solo no funcionaría como debe, con solo aplicarle voltaje en sus terminales. Se le deben de integrar al sistema mas componentes o circuitos.
Por lo que un sistema basado en un microprocesador está compuesto por cuatro partes principales:
·         MEMORIA
·         PUERTOS PROGRAMALES DE I/O
·         PERIFERICOS
·         MICROPROCESADOR
Memoria
La unidad de almacenamiento de memoria es donde se mantienen las instrucciones y los datos mientras se ejecuta un programa en la computadora. La unidad de almacenamiento recibe solicitudes de datos por parte de la CPU, transfiere datos de la memoria al CPU, y transfiere datos del CPU  a la memoria.
La memoria físicamente es un conjunto de circuitos electrónicos que se usan para almacenar una gran cantidad de datos binarias (1 y 0).
Tipos de memoria:
·         R O M (Read Only Memory).
·         R A M (Random Access Memory).

Interconexión con Buses
Es   un   conjunto  de  interconexiones   común  a  varios dispositivos (procesador, memoria, puertos, etc.), que   permiten  la   comunicación o intercambio  de información en un tiempo exacto a la vez.
Un BUS está constituido por varios caminos de comunicación, o  líneas.
Cada línea es capaz de transmitir señales binarias representadas por “1” y por “0”. En un intervalo de tiempo, se  puede  transmitir  una  secuencia  de  dígitos  binarios  a  través  de una única  línea. Se pueden utilizar  varias  líneas del bus para transmitir dígitos binarios simultáneamente (en paralelo). Por ejemplo, un dato de 8 bits puede transmitirse mediante ocho líneas del bus.
Se clasifican en tres grupos funcionales:
·         BUS DE DATOS
·         BUS DE DIRECCIONES
·         BUS DE CONTROL

Tipos de registros
Un registro es un medio de almacenamiento temporal para el microprocesador, de pocos bits (8,16,32,64,128, etc.), para poder guardar los datos y operandos que provienen de memoria o de otros registros. Son como localidades de memoria dentro del microprocesador.

Registro de 16 bits (ejemplo)


1. Registro de Instrucciones
Es donde se deposita el código de la instrucción a ejecutar, que posteriormente se decodificará y ejecutará. En microprocesadores actuales manejan hasta un 1Mb.
2. Registro Apuntador de Instrucciones
Llamado también CONTADOR DE PROGRAMA, y es el que lleva la secuencia del programa que se está ejecutando, por medio de una dirección  a  memoria, donde está depositado el código de la instrucción. Este es actualizado automáticamente por el microprocesador.
3. Registros Auxiliares
Estos permiten almacenar los datos dentro del microprocesador para que posteriormente sean tratados de acuerdo a la instrucción que se esté ejecutando.
4. Registro de Estados o Banderas
Este registro manejara situaciones de estados debido a una al resultado de una operación aritmética o lógica, y también para algún control que se quiera manipular en el microprocesador.








Unidad de Control




Ejemplo de los dos microprocesadores comerciales con mayor uso en el mercado actual:




Bibliografía:
http://www.maestrosdelweb.com/principiantes/historia-de-los-microprocesadores/
http://es.wikipedia.org/wiki/Categor%C3%ADa:Microprocesadores_Intel
http://es.wikipedia.org/wiki/Planificador
http://es.wikipedia.org/wiki/Microprocesador


domingo, 5 de febrero de 2012

Introducción a lenguaje ensamblador


Para comenzar el curso empezaremos conociendo que es el lenguaje ensamblador que utilizaremos y algunos conceptos básicos del mismo:

Definición: El lenguaje ensamblador es un tipo de lenguaje de bajo nivel utilizado para escribir programas informáticos, y constituye la representación más directa del código máquina específico para cada arquitectura de microprocesador.

La importancia del lenguaje ensamblador es principalmente que se trabaja directamente con el microprocesador; por lo cual se debe de conocer el funcionamiento interno de este, tiene la ventaja de que en el se puede realizar cualquier tipo de programas que en los lenguajes de alto nivel no lo pueden realizar. Otro punto sería que los programas en ensamblador ocupan menos espacio en memoria.

Ahora vamos a ver como se usa el programa programa escrito en lenguaje ensamblador consiste en una serie de instrucciones que corresponden al flujo de órdenes ejecutables que pueden ser cargadas en la memoria de una computadora.



Ejemplo:
Un procesador puede ejecutar la siguiente instrucción binaria como se expresa en código maquina:
Binario: 10110000 01100001
Hexadecimal: 0xb061
La representación equivalente en ensamblador es más fácil de recordar:
MOV AL , 061h
Esta instrucción significa:
Mueva el valor hexadecimal 61 (97 decimal) al registro “AL"


Cada instrucción de la máquina se transforma en una única instrucción en código simbólico. Pero además, para mejorar la legibilidad del programa, el código simbólico introduce instrucciones adicionales, que no corresponden a ninguna instrucción de la máquina y que proporcionan información. Se llaman "pseudo instrucciones“


El lenguaje de máquina está formado por instrucciones sencillas, que dependen de la estructura del microprocesador pueda especificar:
  • Registros específicos para operaciones aritméticas.
  • Direccionamiento o control de funciones.
  • Posiciones de memoria específicas.
  • Modos de direccionamiento usados para interpretar operandos.
Los microprocesadores están compuestos por circuitos lógicos (electrónica), en el cual interpretan en sus entradas niveles de voltaje. Nivel alto (3-5 volts) o nivel bajo (0 volts).
Estos niveles son interpretados como:

A los estados lógicos son llamados DIGITOS BINARIOS y se interpretan como BIT (Binary digIT).
Estos se pueden interpretar como:

Ya que estos dos estados lógicos por si solos no proporcionan mucha información, se agrupan en diferentes cantidades de bits para poder definir algún carácter (numérico, alfabético y especial) llamados PATRONES BINARIOS.

Bibliografía:
-http://es.wikipedia.org/wiki/Lenguaje_ensamblador
-http://homepage.mac.com/eravila/asmix86.html
-http://books.openlibra.com/pdf/pcasm-book-spanish.pdf
-http://dac.escet.urjc.es/~lrincon/uned/etc1/IntroduccionEnsamblador.pdf

jueves, 2 de febrero de 2012

Justificación de Proyecto

Hoy en día el uso de los celulares esta al alcance de todos, y su uso es indispensable para hacer muchas cosas durante el día. Las aplicaciones para los celulares cada vez crecen más y más, hoy en día se puede llegar a conectar hasta con un automóvil y es lo que tratara este proyecto. Para eso se realizó previamente un estudio de lo que ya existe.

En resumen: algunas interfaces están más completas que otras, por ejemplo en unas usan imágenes de volantes o palancas para simular el auto, y en otras simplemente botones. Hay ejemplos en android como para iPhone, las aplicaciones que encontré tienen un costo para su uso. Otro punto importante es que en su mayoría tiene la implementación con un arduino lo que permite conectividad por medio de bluethooth de estos dos aparatos y sea inalámbrico.
El mejor ejemplo que a mi consideración encontre:



Aquí mi cuadro de investigación:
Mi proyecto:
La idea es hacer la interfaz más amigable esto se lograra con el uso de metáforas por medio de botones lo que hará intuitivo a la hora de usar la aplicación. Tenga pocos elementos pero funcionales, la conectividad con bluethooth es la mas factible de las ideas en este momento, permitiendo así tener mayor movilidad por su conexión inalámbrica, si ven los proyectos que ya existen son buenos conceptos a seguir se necesita una aplicación mas sencilla y sobre todo que su distribución pueda ser más eficaz de forma que al final se planea publicar el proyecto de forma gratuita en algún store o en la web para así puedan surgir mas proyectos como estos y seguir mejorando.
Otra justificación para la elaboración de este proyecto sería que el siguiente semestre poder llevarlo a cabo de manera mayor, por ejemplo, implementando el sistema en algún automóvil real y no de juguete como ahora. Esto se lograría con la ayuda de compañeros de otras carreras a fines con el proyecto, pero esto ya se verá más delante si es que es posible. Mi proyecto lo realizare en Android por ser de distribución libre y obtener acceso al celular y poder hacer uso de estos elementos.
Bibliografía:

martes, 31 de enero de 2012

Proyecto Dispositivos Móviles


Gráfica que  muestra los pasos a seguir para la elaboración del proyecto. 
Actualizado: 05/FEB/12

Resumen de avances:

Planeación:
Instalación de Herramientas:
Diseño de Interfaz:
Interfaz (Código):
Implementación de funciones:
Prueba en celular:
Comunicación con Arduino:
Pruebas de errores:
Presentación:

martes, 17 de mayo de 2011

Decima Práctica

Sistemas Distribuidos


Hola, bueno en esta práctica trataremos el tema donde existe un sistema de más de una computadora, y en este sistema hay una interacción entre estas mismas. Nuestro software podría conectarse distribuidamente entre varias computadoras como y hacer uso de este software simultáneamente.
El uso de un sistema distribuido tiene que tener varias características como por ejemplo si se utilizaría nuestro programa por mas de un usuario y en alguna de las computadoras llegase a dejar de funcionar, en las demás computadoras tendría que seguir funcionando correctamente este seria un buen ejemplo de un buen sistema distribuido.
Otro punto a tomar en cuenta en la creación de esos sistemas es la transparencia en el uso del sistema desde una computadora remota al servidor principal, es decir, que si el administrador usase una computadora remota con el sitema este pareciese como si en realidad fuera el mismo que donde se encuentra instalado. Entonces, si el software esta distribuido en varias computadoras, su uso fuera como el de un mismo ordenador.
Otro punto importante que me parece interesante mencionar es que en un sistema distribuido puede llegar a crecer demasiado su uso, y debemos tener en cuenta eso, desde el uso con un solo ordenador o un solo usuario hasta llegar a tener gran cantidad de ellos y todos trabajando simultáneamente, un buen software o sistema debería seguir funcionando sin ningún problema.




Novena Práctica

Interfaces graficas de usuario

Hola, aquí se tratara el tema sobre una interfaz grafica para el uso de nuestro proyecto. Primero una corta definición sobre para que necesitamos nuestra interfaz grafica: consiste en proporcionar un entorno visual sencillo para permitir la comunicación con el sistema operativo de una máquina o computador.
Esto quiere decir que el proyecto que realizo esta enfocado a un usuario que no utiliza o conoce mucho sobre el uso del software es decir debe ser sencillo y practico de utilizar.
Este es el diseño que plantee la primer practica (ver primer practica) de un software que encontré en internet, de ahí fueron tomadas estas imágenes: 
Ahora una presentación de algunos diseños de mis ventanas de interfaz para el usuario contienen un diseño sencillo y fácil de usar:
El diseño de las ventanas son prácticas
con botones fáciles de entender, campos y tablas para el usuario final.





Octava Práctica

Pruebas unitarias



Son tipos de pruebas que se implementarían en un software como el nuestro:


Conclusión: La mayoría de las pruebas muy son necesarias antes de intentar comercializar o dar a los usuarios un sistema, sin estas pruebas entes de la salida del programa no seria factible y nuestro sistema tendría muchas fallas y quejas de los usuarios que lo utilizan.
Es imposible hacer todas las pruebas y considerar todo lo que el usuario final podría hacer, es decir hay demasiadas posibilidades de cómo nuestro sistema puede trabajar, pero en si tenemos que tener en cuenta las más comunes o las mas lógicas, y conociendo cuales podríamos checar primero se podría llegar a tener un sistema sin demasiados problemas.  

Séptima Práctica

Eventos, errores y excepciones



Hola, ahora hablare sobre los errores en los que el proyecto podría fallar también algunas soluciones.
Estableceremos unas cortas definiciones de esto:
Errores:  Un defecto de software ( bug en inglés), es el resultado de un fallo o deficiencia durante el proceso de creación de programas de ordenador o computadora (software). Dicho fallo puede presentarse en cualquiera de las etapas del ciclo de vida del software aunque los más evidentes se dan en la etapa de desarrollo y programación.
Evento:  se podría entender que es algo que pasa en un momento dado y causa o motiva a que suceda algo.
Excepciones:  Son interrupciones producidas por la propia CPU cuando se producen ciertas situaciones como división por cero, desbordamiento del n stack stack, fallo de , página etc.

Esto aplicado a mi proyecto:
Durante la elaboración del software van surgiendo muchos errores por ejemplo donde se crean ciclos infinitos, muchos problemas aritméticos esto en cuestión de los códigos y precios de productos. Intentar acceder a la base de datos de forma incorrecta. Borrar sin querer algunos datos de la base de datos, la mayoría de los problemas son a la hora de ejecución del programa pero también surgen después de ejecutarlo.
Por ejemplo, al ejecutarlo que los datos ingresados no sean lo que el programa esta esperando o esta diseñado para lo que el usuario esta escribiendo.
Algunas excepciones surgen cuando después de la ejecución se desea buscar mover o eliminar algún producto que no se encuentra en la base de datos. Por ejemplo que el código no existe el programa no sabe que realizar y deja de funcionar.

Manejar la corrección de errores:
En los lenguajes de programación como Java existen varias formas de corregir los errores, agregando excepciones al programa, en el código mejorar la seguridad en cuanto a que tanto el usuario puede modificar o afectar nuestra base de datos. También, agregando validaciones en nuestro software podemos mejorarlo y evitar algunas fallas después de la ejecución. Lo mejor para encontrar estos problemas es probar el software como si el usuario final ya lo estuviera usando es decir, tratar de pensar y manejarlo con la idea que nosotros no seremos los que manejaremos el software si no alguien que no lo diseño y no conoce como hacer para que todo vaya bien con el.

Conclusión: en el diseño del software se pueden encontrar muchos errores pero también hay que considerar el uso del software para alguien que no piensa de la misma manera que nosotros y tratar de mejorarlo también de esa forma.



Bibliografía:
http://es.wikipedia.org/wiki/Error_de_software