lunes, 5 de septiembre de 2016

Tutorial 2 Microcontroladores: Elección del Compilador C

En internet existen muchos compiladores C para microcontroladores y algunas veces no se sabe cuál elegir al momento de empezar a formarse en este maravilloso mundo.
En este apartado trataremos de ayudar a comprender que compilador C es más apropiado y flexible para cada persona.

  • PIC C COMPILER
  • MIKROC PRO
  • HI TECH


Empecemos por el más famoso en todo el internet ya que ofrece un sin fin de librerías versátiles y útiles además de muchos usuarios que suben sus códigos y proyectos a la nube diariamente les hablo de:




PIC C COMPILER
Este compilador de la compañía CCS es el mejor de todos, ofrece librerías que pueden ser editadas para bien o para mal dependerá de que tan bueno sean programando. Pero por donde lo vean es uno de los más flexibles para empezar a programar ya que permite la fácil inclusión de librerías propias además del amplio abanico de ejemplos y tutoriales con los que cuenta.
Además trae su propio IDE (Entorno de Desarollo Integrado) y consta con un plugin que le permite ser instalado con el IDE de MPLAB.
Entre las librerías o funciones que maneja están:
  • I2C
  • ADC
  • CAN BUS
  • CCP (Compare-Capture-PWM)
  • DATA EEPROM
  • PSP
  • RS232
  • USB
  • PMP/EPMP
  • LCD
  • RTOS
  • TRM0, TRM1, TRM2…
  • WDT (Perro Guardian)
MIKROC PRO
Este compilador de la compañía Mikro Electronika es un buen compilador para empezar ya que está pensado para nivel educacional, ofrece muchas librerías para el manejo de periféricos y la programación se hace más sencilla, pero la desventaja que tiene es que por ser un compilador  estructurado no se puede hacer mucho con sus librerías ya que sería muy difícil lograr modificarlas.
Además trae su propio IDE (Entorno de Desarollo Integrado) su IDE y el de MPLAB son parecidos en cuando a la forma de manejar los registros.

Entre las librerías o funciones que maneja están:
  •  LCD
  • GLCD
  • MMC
  • CARD
  • PWM
  • SPI
  • PS/2
  • ETERNETH
  • EEPROM
  • CAN BUS
  • RS485
  • RS232
  • USB

HI TECH

Este compilador de la compañía MICROCHIP es un buen compilador pero no lo recomiendo para empezar a programar ya que este no cuenta con librerías ni drivers para nuestros proyectos, este es un compilador para profesionales en la programación ya que en este se necesitan crear las librerías para cada módulo del microcontrolador.
Este compilador se Instala en el IDE de MPLAB, aumentado sus potencialidades.
Dependiendo de la familia de PIC a programar tendrás que elegir su versión de descarga.



     Los enlaces de descargas los puede encontrar Aquí ..!!

                   Es bastante difícil hacer cada entrada, puedes agradecerlo fácilmente con un comentario así que no lo olvides.

                            !!..     Likeenme, Compartanme , Comentenme  .!!

sábado, 3 de septiembre de 2016

Tutorial 2 LabVIEW: Recepción Serial RS232

  

LabVIEW es un entorno de desarrollo integrado y diseñado específicamente para ingenieros y científicos que desarrollan sistemas de medidas y control. 
En esta entrada trataremos la recepción por el protocolo RS232, este es uno de los más antiguos y a pesar del paso del tiempo aún persiste su comunicación en algunos dispositivos. Aunque ya va en decadencia siempre es bueno saber cómo utilizarlo.
    Crear enlace en Labview 
1.  Lo que primero se debe de realizar en Labview es crear un <New VI> después al abrirse las dos ventas de Block diagram y Front Panel, nos pasaremos a la ventana de Block Diagram del cual buscaremos la opción de SERIAL, que está ubicado en <View> <Functions Palette> <Instrument I/O> <Serial> y seleccionamos la opción de VISA Configure Serial Port que nos servirá para configurar los baudios, bits de paridad entre varias opciones más.
2. Al agregar el control de configuración de puerto agregaremos 4 controles que harán la función de buscar el puerto estas son: VISA resource name que cada vez que exista un puerto disponible, este lo visualizara, baud rate que por defecto está a 9600 y podemos cambiar fácilmente escribiendo sobre la velocidad de recepción, Enable Event que nos habilitara los eventos de recepción serial y Discard Events que limpiara el evento una vez culminado. Para ello vamos a <View> <Functions Palette> <Instrument I/O> <VISA> <VISA advanced> <Event Handlng > y seleccionamos Enable Event, Discard Events y Select Event al cual con un click seleccionamos Serial Character.
3. Después de configurar correctamente el puerto, ahora podemos hacer un ciclo infinito  hasta que salgamos con un stop. Para ello buscaremos la opción de While Loop, Case Structure, que están ubicado en <View> <Functions Palette> <Programming> <Structures> y seleccionamos las opciones While Loop y Case Structure.
4. Ahora buscaremos la opción de leer en el puerto, que está ubicado en <View> <Functions Palette> <Instrument I/O> <Serial> y seleccionamos la opción de <Read> que nos permite recibir cadenas de caracteres, la misma paleta seleccionamos la opción <Close> que nos permite cerrar la sesión del objeto o visa creado. Volvemos a <View> <Functions Palette> <Instrument I/O> <VISA> <VISA advanced> <Event Handlng > y seleccionamos Enable Event, Discard Events y Select Event al cual con un click seleccionamos Serial Character.
Pasamos a la opción True del Case Structure y conectamos como se muestra en la figura.

En este ejemplo recibiremos un byte por el puerto RS232, pero solo tomaremos los 4 bits de menor peso de unos de los puertos del microcontrolador este solo lo enviaremos cada 100ms que servirán para sincronización.
5. Lo primero que haremos es pasarnos a la ventana Front Panel, del cual buscaremos la opción de Boolean, que está ubicado en <View> <Controls Palette> <Modern> <Boolean>  y seleccionamos la opción de Round LED. 


6. En este punto nos necesitamos convertir es Booleano en un array de Booleanos y para eso necesitamos ir a <View> <Controls Palette> <Modern> <Array, Matrix & Cluster>  y seleccionamos la opción de Array, introducimos el Rond LED dentro de la caja de Array y extendemos hasta tener 4 (cuatro) Round LED que conformaran el byte a recibir.



7. Bien ya tenemos nuestro panel de configuración para la comunicación RS232 y el Array de Booleanos que enviaremos solo nos faltaría un Botón para detener la aplicación cuando se requiera, en este caso vamos a <View> <Controls Palette> <Modern> <Boolean> y seleccionamos la opción de Stop Button.
8. Nos pasaremos a la ventana de Block Diagram, ubicamos el Stop Button y el Array con click derecho mostramos un menú del objeto y destildamos la opción View As Icon. 
     Como se dijo anteriormente el objeto Read nos permite recibir cadenas de caracteres por lo tanto hay que hacer un arreglo que nos convierta nuestro String en un Boolean Array para esto tendemos que hacer varias cosas:
  1.  <View> <Functions Palette> <Mathematics> <Numeric> <Conversion> y seleccionamos String To Byte Array
  2.  <View> <Functions Palette> <Programming> <Array> y seleccionamos Index Array
  3. <View> <Functions Palette> <Mathematics> <Numeric> <Conversion> y seleccionamos Number To Boolean Array y conectamos al Array de LED.

9. Ahora necesitamos saber cuándo ocurre un error de recepción de datos por el puerto RS232, labVIEW también nos brinda una función para saberlo, dando click derecho sobre el cable amarillo del Visa Read mostramos un menú del objeto y seleccionamos Cluster, Class & Variant Palette y unbundle By Name, nos saldrá la función status.
También es necesario darle un retardo a la aplicación y decirle que tipo de información va a leer para eso vamos a:
            a.     <View> <Functions Palette> <Instrument I/O> <VISA> <VISA advanced> <Event Handlng > Visa Wait on Event  y le creamos una constante de tiempo.
         b.   <View> <Functions Palette> <Instrument I/O> <VISA> <VISA advanced> y seleccionamos Property Node de la cual seleccionaremos <Serial Settings> Number of Bytes at Serial Ports



La función status nos informa si ocurrió o no un error con un bit que será True o False (1 ó 0).  Si es True se activara el Case Structure y simplemente no hará nada en caso contrario ejecutaran las funciones.
   
10. Bien es hora de configurar nuestro botón de stop que ya lo teníamos olvidado para eso vamos a  <View> <Functions Palette> <Programming> <Boolean> y seleccionamos OR, una vez hecho esto unimos las salidas de status y stop button a cada una de las entradas de la función de booleana OR y esta nos devolverá False mientras ambas entradas sean False (0) y nos devolverá True (1)  si alguna de las entradas cambia.


Ya tenemos todo lo necesario para poder recibir en labVIEW desde un microcontrolador por RS232, si han seguido los pasos al pie de la letra deberían tener algo como esto.


Muy bien amigos esto ha sido todo por este tutorial, configuren su microcontrolador para recibir datos por el puerto serial y disfruten de la experiencia.





  Es bastante difícil hacer cada entrada, puedes agradecerlo fácilmente con un comentario así que no lo olvides.

    !!..     Likeenme, Compartanme , Comentenme  .!!





Tutorial 1 LabVIEW: Transmisión Serial RS232

 

LabVIEW es un entorno de desarrollo integrado y diseñado específicamente para ingenieros y científicos que desarrollan sistemas de medidas y control. 

En esta entrada trataremos la transmisión  por el protocolo RS232, este es uno de los mas antiguos y a pesar del paso del tiempo aun persiste su comunicación en algunos dispositivos. Aunque ya va en decadencia siempre es bueno saber como utilizarlo.

    Crear enlace en Labview 

1. Lo que primero se debe de realizar en Labview es crear un <New VI> después al abrirse las dos ventas de Block diagram y Front Panel, nos pasaremos a la ventana de Block Diagram del cual buscaremos la opción de SERIAL, que está ubicado en <View> <Functions Palette> <Instrument I/O> <Serial> y seleccionamos la opción de VISA Configure Serial Port que nos servirá para configurar los baudios, bits de paridad entre varias opciones más.

 

2. Al agregar el control de configuración de puerto agregaremos dos controles que harán la función de buscar el puerto que es VISA resource name que cada vez que exista un puerto disponible, este lo visualizara. En baud rate por defecto esta a 9600 que podemos cambiar fácilmente escribiendo sobre la velocidad de transmisión.
 
 

3. Después de configurar correctamente el puerto, ahora podemos hacer un ciclo infinito  hasta que salgamos con un stop. Para ello buscaremos la opción de While Loop, que esta ubicado en <View> <Functions Palette> <Programming> <Structures> <While Loop>.

 
   
4. Ahora buscaremos la opción de escribir en el puerto, que está ubicado en <View> <Functions Palette> <Instrument I/O> <Serial> y seleccionamos la opción de <Write> que nos permite solo enviar cadenas de caracteres, la msma paleta seleccionamos la opcion <Close> que nos permite cerrar la sesion del objeto o visa creado. 

 


En este ejemplo enviaremos un byte por el puerto RS232, este byte sera de un arreglo de switches pero para enviar este dato debe de transformarse de un arreglo booleano a numero y de este a un arreglo de caracteres. 
5. Lo primero que haremos es pasarnos a la ventana Front Panel, del cual buscaremos la opción de Boolean, que está ubicado en <View> <Controls Palette> <Modern> <Boolean>  y seleccionamos la opción de Vertical Toogle switch.
  
6. En este punto nos necesitamos convertir es Booleano en un array de Booleanos y para eso necesitamos ir a <View> <Controls Palette> <Modern> <Array, Matrix & Cluster>  y seleccionamos la opción de Array, introducimos el Vertical Toogle switch dentro de la caja de Array y extendemos hasta tener 8 (ocho) Vertical Toogle switch que conformaran el byte a enviar.
 

7. Bien ya tenemos nuestro panel de configuración para la comunicación RS232 y el Array de Booleanos que enviaremos solo nos faltaría un Botón para detener la aplicación cuando se requiera, en este caso vamos a <View> <Controls Palette> <Modern> <Boolean> y seleccionamos la opción de Stop Button.

8. Nos pasaremos a la ventana de Block Diagram, ubicamos el Stop Button y el Array con click derecho mostramos un menú del objeto y destildamos la opción View As Icon. 
Como se dijo anteriormente el objeto Write nos permite enviar cadenas de caracteres por lo tanto hay que hacer un arreglo que nos convierta nuestro Array de Booleanos a String para esto tendemos que hacer varias cosas:

     a.  <View> <Functions Palette> <Mathematics> <Numeric> <Conversion> y seleccionamos                     Boolean Array To Number
     b.  <View> <Functions Palette> <Programming> y seleccionamos Build Array
     c.  <View> <Functions Palette> <Mathematics> <Numeric> <Conversion> y seleccionamos Byte           Array To String

 

9. Ahora necesitamos saber cuando ocurre un error de transmisión de datos por el puerto RS232, labVIEW también nos brinda una función para saberlo, dando click derecho sobre el cable amarillo del Visa Write mostramos un menú del objeto y seleccionamos Cluster, Class & Variant Palette y unbundle By Name, nos saldrá la función status. En ese momento el cable de conexión de Visa Write y Close se rompe debemos volver a conectarlo.


 
      
10. La función status nos informa si ocurrió o no un error con un bit que sera True o False ( 1 ó 0 ).
Bien es hora de configurar nuestro botón de stop que ya lo teníamos olvidado para eso vamos a  <View> <Functions Palette> <Programming> <Boolean> y seleccionamos OR, una vez hecho esto unimos las salidas de status y stop button a cada una de las entradas de la función de booleana OR y esta nos devolverá False mientras ambas entradas sean False ( 0 ) y nos devolverá True ( 1 si alguna de las entradas cambia.


11. Por ultimo le daremos un retardo para que se ejecuten las funciones y para eso nos dirigimos a  <View> <Functions Palette> <Programming> <Timming> y seleccionamos Wait (ms), le agregamos una constante de 250 para que repita el proceso cada 250 ms, click derecho Create Constant.



Ya tenemos todo lo necesario para poder trasmitir desde labVIEW hasta un microcontrolador por RS232, si han seguido los pasos al pie de la letra deberían tener algo como esto.


Muy bien amigos esto a sido todo por este tutorial, configuren su microcontrolador para recibir datos por el puerto serial y disfruten de la experiencia.






  Es bastante difícil hacer cada entrada, puedes agradecerlo fácilmente con un comentario así que no lo olvides.
    !!..     Likeenme, Compartanme , Comentenme  .!!

Tutorial 1 Microcontroladores: Introduccion al Lenguaje C




  Un programa codificado en lenguaje C resulta muy útil en la aplicación de microontroladores, dado que su compilación es bastante eficiente y óptima acercándose a la codificación de lenguaje de máquina. Lo descriptivo de la sintaxis permite elaborar de mejor forma los algoritmos olvidándose de los molestos push y pop usados en el lenguaje de máquina cuando se usan saltos a subrutinas. 

  Se dice que el lenguaje C es un lenguaje de nivel medio. La razón de esta indicación está en que en C se pueden crear programas que manipulan la máquina casi como lo hace el lenguaje Ensamblador, pero utilizando una sintaxis que se asemeja más a los lenguajes de alto nivel. De los lenguajes de alto nivel toma las estructuras de control que permiten programar de forma estructurada.

 Al tener características de los lenguajes de bajo nivel se puede tomar el control absoluto del microcontrolador. Además tiene atajos que gustan mucho a los programadores al tener una sintaxis menos restrictiva que lenguajes como Pascal por ejemplo, lo que le convierte en el lenguaje idóneo para crear cualquier tipo de aplicación.

  Sus características básicas son:

  • Es un lenguaje estructurado y modular. Lo que facilita su compresión y escritura
  • Es un lenguaje que incorpora manejo de estructuras de bajo nivel (punteros, bits), lo que le acerca a los lenguajes de segunda generación
  • Permite utilizar estructuras de datos complejas (arrays, pilas, colas, textos,...)
  • Es un lenguaje compilado
  • Permite crear todo tipo de aplicaciones

  Elementos básicos:
  •   Comentario, este permite la documentación del código y se usa de acuerdo a la siguiente sintaxis

           /* Este es un comentario */
       o
          //    Este es un comentario
  • Inicio y fin de bloque, permite agrupar un número de instrucciones las que pueden ser ejecutadas con cierta prioridad. Se usa "{ " para iniciar bloque y " }" para finalizar bloque.

  // inicio de bloque
      // instrucciones
}   // final de bloque

  • Identificador, es el nombre que se le da a una variable o función por lo general asociado al tipo de dato que ha de contener la variable o al tipo de procedimiento que ha de realizar la función. Deben comenzar con una letra. Máxima longitud: 32 caracteres. Sólo pueden contener letras y números, pero no caracteres especiales, salvo el guión bajo, (underscore).
     No se deben confundir con palabras reservadas de C, (una variable, por ejemplo no puede llamarse int, ni main, etc.) y hay diferencias entre mayúsculas y minúsculas. Como norma se utilizan las minúsculas; las mayúsculas se usan para las constantes.
    Las palabras reservadas o también conocidas como “palabras claves” sirven para indicar al microcontrolador que realice una tarea muy determinada (desde evaluar una comparación, hasta definir el tipo de una variable) y tienen un especial significado para el compilador es por ello que no pueden usarse como identificadores:


Figura 1. Palabras reservadas
  • Tipo, es una palabra reservada definida que indica el tipo de variable que se ha de definir y su alcance numérico, esto de acuerdo a la figura 2.

Figura 2. Tipos de Variables

   Así, la definición de las variables se hace usando el tipo y un identificador que da el nombre de la variable finalizado por un " ; " (punto y coma). También puede definir varias variables con un solo tipo. En esta caso son separadas por " , " (coma) pero siempre se finaliza con " ; " (punto y coma).

char i;   // define variable tipo char de 8 bits
char j, i;
float x, r;
long a, b, c, d;
int i, j;   // define dos enteros

   Estructura básica de un programa:

   La estructura de un programa básico en lenguaje C se indica en el esquema de la figura. 3, el cual muestra un bloque principal llamado void main(void) y bloques de funciones. Puede ser, dependiendo de la aplicación, que solo se requiera del bloque principal.


Figura 3. Estructura básica de un programa 


Muy bien amigos esto a sido todo por este tutorial, pronto estaremos con  ustedes para empezar a programar.



  Es bastante difícil hacer cada entrada, puedes agradecerlo fácilmente con un comentario así que no lo olvides.

!!..     Likeenme, Compartanme , Comentenme  .!!