lunes, 12 de junio de 2017

3ra Practica 2017-1 Registrador de Datos

Buscar información sobre:
  • Uso de Registrador de Datos (DATALOGGER) con Microcontroladores PIC
  • Comunicación Serial (rs232) Con la PC y un PIC
  • Comunicación I2C con otros dispositivos PIC

Se requiere ver los avances que tienen del Proyecto del mini Sumo del laboratorio.





  • http://www.aggsoft.com/serial-data-logger/tutorials/openoffice-real-time-charting-export.htm
  • http://pic-linux.forosactivos.net/t144-manejo-del-puerto-serie-con-python
  • https://forum.openoffice.org/en/forum/viewtopic.php?f=20&t=75316
  • http://api.libreoffice.org/examples/examples.html
  • https://forum.openoffice.org/en/forum/viewtopic.php?f=20&t=682
  • http://www.windmill.co.uk/openoffice.html
  • http://www.iearobotics.com/proyectos/cuadernos/ct11/ct11.html
  • http://www.techlib.com/electronics/serialport.htm
  • http://robottini.altervista.org/arduino-and-real-time-charts-in-excel
  • http://pi-plates.com/pplogger-an-open-source-multi-channel-data-logger-for-the-raspberry-pi/
  • https://support.office.com/en-us/article/RTD-function-e0cc001a-56f0-470a-9b19-9455dc0eb593?ui=en-US&rs=en-US&ad=US
  • http://www.hexcode.co.za/products/gs-911/support/how-tos/how-to-import-and-view-the-csv-realtime-data
  • http://pic-linux.forosactivos.net/t58-que-les-parece-algunos-ejemplos-en-asm
  • http://www.prometec.net/importar-csv-excel/
  • https://forum.openoffice.org/es/forum/viewtopic.php?f=50&t=1142

domingo, 11 de junio de 2017

Ultima semana para la Entrega de la 1° Practica

Tienen hasta el dia jueves 15 de Junio del 2017 12:00 pm, para la entrega de la primera practica del 2017-1.





 


sábado, 10 de junio de 2017

Interrupciones



Una interrupción es un evento que hace que el microcontrolador deje de ejecutar la tarea que está realizando para atender dicho acontecimiento y luego regrese y continué la tarea que estaba realizando antes de que se presentara la interrupción.

El PIC tiene varias fuentes de interrupción, si las interrupciones están habilitadas, cada vez que una de estos acontecimientos se presente, el PIC dejará de ejecutar el programa para ir a atender la interrupción y al termino de la misma continuará ejecutando el programa donde lo había dejado. Alguna de as fuentes de interrupción son:


  • Interrupción externa RB0/INT
  • Interrupción por cambio lógico en el puerto B
  • Interrupción por desborde del timer 0 (TMR0)
  • Interrupción por desborde del timer 1 (TMR1)
  • Interrupción por comparación exitosa exitosa en TMR2
  • Interrupción del comparador
  • Interrupción del transmisor del USART
  • Interrupción del receptor del USART
  • Interrupción del módulo CCP
  • Interrupción del EEPROM

Los siguientes bits de INTCON son los mas importantes:
  • GIE, se utiliza para habilitar las interrupciones en general, debe ser = 1.
  • INTE, se utiliza para habilitar la interrupción INT0, debe ser = 1.
  • INTF, es la bandera de interrupción de INT0, se colocará en 1, cada vez que se produzca una interrupción INT0, posteriormente debe ser inicializada “manualmente” con 0.

Es importante familiarizarse con el manejo de interrupciones, ya que nos evita poder manejar muchos tipos de eventos sin estar pendientes de ello.




Aunque el PIC cuenta con distintas fuentes de interrupción, solamente tiene un vector de interrupción por lo que si se habilitan varias interrupciones, al momento de presentarse cualquiera de ellas, el programa saltara a la misma rutina de interrupción y es responsabilidad del programador crear una rutina que identifique la fuente de la interrupción.



Los registros asociados con las interrupciones son el registro de control de interrupción INTCON, el registro habilitación de interrupciones de periféricos PIE1 y PIE2, y el registro de interrupciones de periféricos PIR1 y PIR2. 
En el registro INTCON se encuentra el bit de habilitacion global de interrupciones GIE (bit 7), el bit de habilitacion de interrupción por periféricos PEIE (bit 6) y los bits de habilitacion de algunas interrupciones como la interrupción externa del pin RB0 (INTE), la interrupción por cambio de estado en los pines RB4 a RB7 (RBIE) y la interrupción por desborde del timer 0 (T0IE), así como las banderas correspondientes a cada interrupción (INTF, RBIF y T0IF). En el registro PIE1 se encuentran los bits de habilitacion de las demás interrupciones y en el registro PIR1 se encuentran las banderas asociadas con cada interrupción.



Para habilitar las interrupciones se deben seguir los siguientes pasos:

  • Habilitar el bit correspondiente a cada interrupcion.
  • Limpiar la bandera correspondiente a la interrupcion habilitada para evitar falsas interrupciones.
  • En caso de ser necesario habilitar el bit PEIE del registro INTCON (necesario para todas las interrupciones con excepcion de INTE y RBIE).
  • Habilitar el bit de habilitacion global de interrupciones GIE del registro INTCON.

En el código también es necesario indicar hacia que rutina debe saltar el programa al presentarse la interrupción. Ya se dijo que el vector de interrupción está en la dirección 0x04 por lo que es necesario agregar las lineas org 0x04 y goto ISR al programa, donde ISR es la rutina de servicio de interrupción, puede tener cualquier otro nombre, es solo a modo de ejemplo por el acrónimo de Interrupt Service Routine.


La ventaja de utilizar interrupciones es que mientras se espera a que se presente el evento que produce la interrupción, el microcontrolador puede estar ejecutando cualquier otra tarea. De ese modo el micro no esta ciclado en una sola tarea (polling) sino que puede seguir trabajando en otras hasta que una interrupción haga que el programa salte y ejecute la tarea que se quiera y al terminarla el programa continuara su ejecución en el punto en el que se encontraba en el momento de presentarse la interrupción.

Ejemplo de Interrupciones:





Se comienza declarando el vector de reset y el vector de interrupción, después se configuran los puertos, el puerto A como salida, la parte baja del puerto B como salida y la parte alta del puerto B como entrada. Hasta ahí lo único nuevo es la declaración del vector de reset.

Después se configuran las interrupciones: Primero se habilita el bit RBIE del registro INTCON que es el correspondiente a la interrupción por cambio de estado en los pines RB4 a RB7, después se pone a cero el bit RBIF del mismo registro para poner la bandera de interrupción en cero y así evitar entrar a la rutina de servicio sin que exista una interrupción, y por último se habilita el bit GIE para habilitar las interrupciones. De esta manera la interrupción queda configurada y habilitada. Es muy importante siempre limpiar las banderas de interrupción antes de habilitar el bit GIE.

Código de la INT:



Lo importante en la rutina es que al entrar a la misma se deshabilitan las interrupciones al poner a 0 el bit GIE, con esto evitamos que se produzca otra interrupción mientras se está atendiendo una. Después de hacer eso el programa simplemente identifica la tecla pulsada y enciende el led correspondiente. Ya que se encendió el led la rutina continua hacia la etiqueta SALIDA_ISR donde primero se limpia la bandera de interrupción poniendo a 0 el bit RBIF y después se vuelve a habilitar la interrupción poniendo a 1 el bit GIE, ambos del registro INTCON. Para terminar la rutina y regresar al programa principal se utiliza la instrucción retfie (Return From Interruption). La rutina de servicio de interrupción siempre debe terminar con esa instrucción.


jueves, 1 de junio de 2017

Interesante para analizar.


Lo bueno de estudiar es que se crean mentes criticas y tomamos nuestras propias decisiones y no deberían encantarnos como en el cuento de el flautista de Hamelin.

Pablo Aure         @pabloaure

Académico: Profesor universitario;
Secretario UC. Decano Facultad de Ciencias Jurídicas y Políticas(2006)