Agregar a favoritos      Ayuda      Português      Ingles     

Guia programacion microcontroladores




  1. Introducción
  2. EEProm de Datos
  3. Configuración y manejo de interrupciones

Introducción

En el siguiente apunte, se trataran temas importantes como los que se detallan a continuación:

  • Lectura / Escritura de EEPROM interna del PIC

  • Configuración y manejo de interrupciones

  • Matriz de LED

  • Lectura / Escritura de EEPROM/RAM/FRAM Externa por I2C

  • Lectura / Escritura de EEPROM Paralela

  • Manejo automático de tablas

  • Ingreso de datos por teclado matricial (3x3 y 3x4)

  • Visualización de datos en pantallas GLCD (128x64)

  • Manejo de memorias EEPROM 24Cxxx por comunicación I2C

  • Manejo de reloj/calendario de tiempo real PCF8583 y ds1307, con control de alarmas por fecha.

  • Configuración y manejo de temporizadores internos (TMRs disponibles en el microcontrolador elegido)

  • Configuración de interrupciones por: (Puertos, Tmrs, A/D, USART, CCP, EEPROM)

  • Comunicaciones RS232 por código y por USART

  • Comunicaciones RS485 por código y por USART

  • Comunicaciones USB

  • Comunicaciones RF (modulo TWS 434-RWS 434)

  • Comunicaciones Zigbee (modulo Xbee – Xbee PRO)

  • Comunicaciones IR

  • Modulo RFID

  • Conversión A/D a 8 y 10 Bits. La cantidad de canales depende del modelo de micro

  • Módulos CCP (Compara, Captura y PWM)

  • Vector de memoria

  • Encoder Incremental

  • Control de potencia AC

  • Motores Paso a Paso

  • Servo Motores

  • Receptor DTMF

  • Teclado A/D

  • Teclado Matricial

  • Teclado AT

  • Sensores: Temperatura, Humedad , etc.

  • Conversor Digital Analógico DS1803

  • Manejo de registros de desplazamiento

CAPITULO I

EEProm de Datos

En algunos proyectos es necesario guardar la información que se genera durante el proceso de una forma permanente, es decir, esos datos han de permanecer incluso cuando el sistema se desconecta de la alimentación.Para realizar esta función los microcontroladores PIC disponen de un área de datos EEPROM no volátil.

Memoria EEPROM de datos.

El PIC 16f84 dispone de una zona de 64 bytes de memoria EEPROM para almacenar datos que no se pierden al desconectar la alimentación. Esto es muy útil ya que permite guardar datos permanentemente.

Como en cualquier memoria EEPROM se pueden realizar dos tipos de operaciones:

  • Operación de lectura.

  • Operación de escritura y grabación.

Un ciclo de grabación en una posición EEPROM de datos dura unos 10 ms, un tiempo muy elevado para la velocidad del procesador, que se controla mediante un temporizador interno. Al escribir en una posición de memoria ya ocupada, automáticamente se borra el contenido que había y se introduce el nuevo dato.

El PIC 16f84a soporta 1 millón de ciclos de escritura/borrado de su memoria EEPROM de datos y es capaz de guardar la información durante mas de 40 años.

Monografias.com

Ejercicio 1:

  • Cada vez que el sistema es reseteado se incrementa un contador que se guarda en la primer posición de la EEPROM de datos del PIC y se visualiza en el modulo LCD.

Ejercicio 2

  • Bloquear un circuito: En algunos circuitos interesa que un circuito funcione solo un determinado numero de veces, es decir, bloquear el funcionamiento del mismo cuando el diseñador lo crea oportuno.

Cada vez que el sistema es reseteado incrementa un contador que se guarda en la primera posición de memoria EEPROM de datos del PIC y se visualiza en la pantalla. El sistema admite un máximo de reseteados(por ejemplo 13), a partir del cual ya no funcionara mas.Cada vez que se vuelva a alimentar el circuito aparecerá un mensaje de bloqueo.Para que el pic vuelva a funcionar hay que volverlo a grabar.

Ejercicio 3

  • Control de maquinas tipo su turno.En el modulo LCD se visualiza el numero del turno actual.Este se incrementa cada vez que se presiona el pulsador conectado al pin RA4.La memoria EEPROM de datos del PIC almacena el ultimo numero visualizado, de forma que ante un fallo de alimentación se reanude la cuenta en el ultimo numero.

CAPITULO II

Configuración y manejo de interrupciones

Técnica Polling

Es la comprobación cíclica por parte del programa del estado de la entrada correspondiente.

Aunque es el método mas sencillo para leer una entrada presenta el inconveniente de una perdida de eficacia, ya que el programa tiene que quedar encerrado en un bucle permanente que permita leer la entrada.Las desventajas de la técnica polling son:

  • Hay que interrogar a las entradas en cada ciclo de programa.

  • Al periférico se le atiende después de realizar la consulta y no cuando solicita la intervención del microcontrolador.

Interrupciones

Una interrupción consiste en un mecanismo por el cual un evento interno o externo puede interrumpir la ejecución de un programa en cualquier momento. A partir de entonces se produce automáticamente un salto a una subrutina de atención a la interrupción, esta atiende inmediatamente el evento y retoma luego la ejecución del programa exactamente donde estaba en el momento de ser interrumpido, continuando su tarea justo donde la dejo. La interrupción tiene la característica de la inmediatez, nace de la necesidad de ejecutar una subrutina en el tiempo preciso y por lo tanto se precisa su intervención urgente.

Este método es mas eficaz que la técnica polling ya que el microcontrolador no perderá el tiempo preguntando a la línea de entrada para leer el estado, sino que únicamente atenderá al periférico cuando este se lo pida mediante la solicitud de interrupción.

Las interrupciones constituyen el mecanismo más importante para la conexión del microcontrolador con el exterior ya que sincroniza la ejecución de programas con los acontecimientos externos. Esto es muy útil, por ejemplo, para el manejo de dispositivos de entrada que requieren de una atención inmediata, tales como detección de pulsos externos, recepción de datos, activación de pulsadores, etc.

El Pic16f84 dispone de 4 posibles fuentes de interrupción:

  • Interrupción IN. Por activación del pin RB0/INT.

  • Interrupción RBI. Por cambio de estado en una o varias de las 4 líneas de más peso RB7:RB4 del puerto B.

  • Interrupción T01. Por desbordamiento del timer 0.

  • Interrupción EE1. Por finalización de escritura en la EEPROM de datos.

El programa deberá tener mecanismos que permitan identificar la causa de la interrupción.

Flags relacionados con las interrupciones:

Los flags relacionados con las interrupciones se alojan en los registros INTCON y OPTION.

Del registro INTCON

El registro INTCON(Interrupts Control Register) es el registro para el control de las interrupciones. Es el encargado del manejo de las interrupciones y contiene 8 bits, los cuales unos actúan como flags señaladores del estado de la interrupción y otros como bit de permiso o autorización para que se pueda producir la interrupción.

Monografias.com

  • GIE( Global Interrupt Enabel). Flag de habilitación global del permiso de interrupción. Se borra automáticamente cuando se reconoce una interrupción para evitar que ninguna otra se produzca mientras se esta atendiendo a la primera. Al retornar de la interrupción, el bit GIE se vuelve a activar poniéndose a ¨1¨. Para el resto de los flags no se ha previsto mecanismo de puesta a cero, por lo que el programa de atención a la interrupción debe realizar el tratamiento de la correspondiente interrupción y además debe poner el o los flags de indicación de interrupción a cero.

  • GIE=0. No autoriza interrupción de ningún tipo.

  • GIE=1. Autoriza cualquier tipo de interrupción. Se pone a 1 de forma automática.

  • EEIE( EEPROM Write Complete Interrupt Enable). Habilitación de la interrupción EEI. Flag que autoriza la interrupción por escritura completada de un byte en la EEPROM de datos del Pic.

  • EEIE=0. Interrupción EEI deshabilitada.

  • EEIE=1. Interrupción EEI habilitada.

  • TOIE( TMR0 Interrupt Enable Bit). Habilitación de la interrupción T0I.Flag que autoriza la interrupción por desbordamiento del timer 0.

  • TOIE=0. Interrupcion T0I deshabilitada.

  • TOIE=1. Interrupción T0I habilitada.

  • INTE( External INT Enable Bit). Habilitación de la interrupción externa INT. Flag que autoriza la interrupción externa a través del pin RB0/INT.

  • INTE=0. Interrupción INT deshabilitada.

  • INTE=1. Interrupción INT habilitada.

  • RBIE( RB Port Change Interrup Enable). Habilitación de la interrupción RBI. Flag que autoriza la interrupción por cambio de estado de las líneas RB7:RB4 del puerto B.

  • RBIE=0. Interrupción RBI deshabilitada.

  • RBIE=1. Interrupción RBI habilitada.

  • TOIF(TMR0 Overflow Interrupt Flag Bit). Flag de estado de la interrupción producida por el TMR0. Indica que se ha producido una interrupción por desbordamiento del timer, es decir, que se ha pasado de b¨11111111¨ a b¨00000000¨.

  • TOIF=0. El TMR0 no se ha desbordado.

  • TOIF=1. El TMR0 se ha desbordado. (Debe borrarse por software).

  • INTF( External Interrupt Flag Bit). Flag de estado de la interrupción externa INT. Indica que se ha producido una interrupción a través del pin RB0/INT.

  • INTF=0. No hay interrupción externa por el pin RB0/INT.

  • INTF=1. Ha ocurrido una interrupcion externa por el pin RB0/INT. (Debe borrarse por software).

  • RBIF( RB Port Change Interrupt Flag ). Flag de estado de la interrupción RBI. Indica que se ha producido una interrupción por cambio de estado de cualquiera de las líneas RB4 a RB7.

  • RBIF=0. Ninguna de las entradas RB7 a RB4 ha cambiado de estado.

  • RBIF=1. Cualquiera de las líneas RB7 a RB4 del puerto B a cambiado. (Debe borrarse por software).

Del registro OPTION

La misión principal del registro OPTION es gobernar el comportamiento del TMR0, pero también tiene un bit relacionado con las interrupciones externas.

Monografias.com

  • INTEGD( Interrupt Edge Select Bit). Selector de flanco de la interrupción INT.

  • INTEGD=0. Interrupción por flanco descendente.del pin RB0/INT.

  • INTEGD=1. Interrupción por flanco ascendente.del pin RB0/INT.

Interrupción Externa INT

La fuente de interrupciones externas INT es muy importante para atender eventos externos en tiempo real. Cuando en la línea RB0/INT se hace una petición de interrupción el bit INTF del registro INTCON se pone a "1" de forma automática y si el bit GIE esta a "1", se pone en marcha el mecanismo ya comentado de la interrupción.

Mediante el bit INTDEG del registro OPTION es seleccionado el flanco activo de RBO/INT, ya que con este puesto a "1" el flanco activo es el ascendente y cuando esta a "0" el flanco activo es el descendente.

El programa de atención a la interrupción antes de regresar al programa principal debe borrar el flag INTF, puesto que en caso contrario al ejecutar la instrucción de retorno se volverá a ejecutar el mismo proceso de interrupción.

Ejercicio 4

Cada vez que se presiona el pulsador conectado al pin RB0/INT se incrementa un contador que es visualizado en el modulo LCD.La lectura del pulsador se hará mediante interrupciones.

Interrupción RBI

Para activar la interrupción por cambio de nivel en los pines los bits RBIE y GIE del registro INTCON deben estar a "1", en estas condiciones cuando se produce un cambio de nivel en cualquiera de las líneas RB7 a RB4 se activa el flag RBIF del registro INTCON.

TMR0

Muchos sistemas necesitan un estricto control de los tiempos que duran sus distintas acciones.

El proceso mediante el timer es mucho más preciso que mediante rutinas de retardos.

El timer se implementa por medio de un contador que determina un tiempo preciso entre el momento que es cargado y el instante en el que se produce su desbordamiento.

Un timer consiste en un contador ascendente/descendente que, una vez inicializado con un valor, su contenido se incrementa con cada impulso de entrada hasta llegar a su valor máximo b¨11111111¨, desbordando y volviendo a empezar desde cero.

Monografias.com

El pic16f84 dispone de un timer principal denominado timer 0 o TMR0 que es un contador ascendente de 8 bits.El TMR0 se inicializa con un valor, que se incrementa con cada impulso de de entrada hasta un máximo de b¨11111111¨; con el siguiente impulsote entrada el contador se desborda pasando a valer b¨00000000¨.

Para autorizar la interrupción por desbordamiento del TMR0 los bits TOIE y GIE del registro INTCON deben posicionarse en "1".En estas condiciones cuando el temporizador TMR0 se desborda, al pasar de "11111111" a "00000000" activa el flag TOIF del registro INTCON produciendo una interrupción.

Los impulsos aplicados al TMRO, pueden provenir de los pulsos aplicados al pin T0CKI o de la señal de reloj interna(fosc/4), lo que permite actuar de dos formas diferentes:

  • Como contador de impulsos que le llegan por el pin RA4/T0CKI.

  • Como temporizador de tiempos.

TMR0 como contador

Cuando el TMR0 trabaja como contador se le introducen los impulsos desde el exterior por el pin RA4/T0CKI(TMR0 External Clock Input). Su misión es contar el número de acontecimientos externos representados por los impulsos que se aplican al pin T0CKI.

Monografias.com

TMR0 como temporizador

Cuando el TMR0 trabaja como temporizador cuenta los impulsos de fosc/4.Se usa para determinar intervalos de tiempos concretos.Para una frecuencia de reloj igual a 4 MHz el TMR0 se incrementa cada 1 &µs.

Como se trata de un contador ascendente el TMR0 debe ser cargado con el valor de los impulsos que se desean contar restados de 256 que es el valor de desbordamiento.Por ejemplo, para contar 4 impulsos, se carga al TMR0 con 256-4=252.

De esta manera con la llegada de 4 impulsos, el timer se ha desbordado alcanzando el valor b¨00000000¨ que determina el tiempo de temporizacion, en este caso 4 &µs si los impulsos se hubieran aplicado cada microsegundo.

Divisor de frecuencia (Prescaler)

A veces es necesario controlar tiempos largos y aumentar la duración de los impulsos que controlan el TMR0.Para cubrir esta necesidad se dispone de un circuito programable llamado divisor de frecuencia o prescaler que divide la frecuencia utilizada por diversos rangos para poder conseguir temporizaciones mas largas.

En realidad el pic16f84 dispone de dos temporizadores:

El TMR0, que actúa como temporizador principal.

El wathdog(perro guardián), que vigila que el programa no se cuelgue.Para ello, cada cierto tiempo comprueba que el programa esta ejecutándose normalmente y, si no es asi, reinicializa todo el sistema.

El prescaler puede aplicarse a uno de los dos temporizadores, el TMR0 o el watchdog. Cuando se asigna al TMR0 los impulsos pasan primero por el divisor de frecuencia y una vez aumentada su duración se aplican al TMR0.

Registro Option:

La misión principal del registro option es gobernar el comportamiento del TMR0.

Los bits utilizados por el timer son:

Monografias.com

PS2:PS0.(Prescaler rate select bits).Bits para seleccionar los valores del prescaler o rango con el que actúa el divisor de frecuencia.

PSA(prescaler assignment bit).Asignación del divisor de frecuencia

PSA=0. El divisor de frecuencia se asigna al TMR0.

PSA=1. El divisor de frecuencia se asigna al Watchdog.

Monografias.com

TOSE(TMR0 source Edge Select bit).Selecciona flanco de la señal de entrada de TMR0:

TOSE=0.TMR0 se incrementa en cada flanco ascendente de la señal aplicada al pin RA4/TOCKI.

TOSE=1.TMR0 se incrementa en cada flanco descendente de la señal aplicada al pin RA4/TOCKI.

TOCS(TMR0 Clock Source Select bit).Selecciona la fuente de señal del TMR0.

TOCS=0.Pulso de reloj interno. Fosc/4(TMR0 como temporizador).

TOCS=1.Pulso introducidos a través del pin RA4/TOCKi(TMR0 como contador).

Ejemplo:

Visualizar en la pantalla LCD el numero de impulsos que se aplican al pin T0CKI(Los incrementos se realizaran cada 2 impulsos, ya que Niple no permite la activación del wath dog).Estos pulsos se proporcionan por medio de la pulsación de S1

Monografias.com

Programa Principal:

Monografias.com

Rutina de interrupción:

Monografias.com

Ejemplo del TMRO como temporizador:

El principal problema cuando se configura el TMR0 como temporizador es el cálculo de tiempos de temporizacion.Se puede utilizar la siguiente formula:

Temporizacion=TCM.Prescaler. (256-Carga del TMR0).

Donde:

Temporizacion, es el tiempo deseado.

TCM , es el periodo de un ciclo de maquina e igual a TCM=4Tosc.Para 4MHz TCM=4.1/f=1&µs.

Prescaler, es el rango de divisor de frecuencia elegido.

(256-Carga del TMR0), es el número total de impulsos a contar por el TMR0 antes de desbordarse por cuenta la ascendente.

Ejemplo: ¿Qué valor hay que cargar en el TMR0 para lograr un tiempo de 500 &µs si se utiliza un prescaler de 2?

Solución: Sustituyendo en la ecuación queda:

Temporizacion=TCM.Prescaler. (256-Carga del TMR0).

500=1.2. (256- Carga del TMR0).

De donde se deduce que la carga del TMR0 tiene que ser igual a 6.

Ejercicio 5

Por la pata RB3 del puerto B se genera una onda cuadrada de 1Khz, por tanto, cada semiperiodo dura 500 &µs.Los tiempos de temporizacion se consiguen mediante el timer 0 del Pic.

Ejercicio 6

Cada vez que presione el pulsador conectado al pin RB0/INT se incrementara un contador que se visualizara en el modulo LCD. Si se mantiene pulsado se incrementa cada 200 mseg.

Ejercicio 7

Cada vez que presione el pulsador conectado a la línea RB0/INT se conmutara el estado de un led conectado a la línea RB1.

Ejercicio 8

Mientras se mantenga activado el pulsador conectado al pin RB0/INT el led conectado a la línea RB1 parpadeara con intervalos de 500 mseg en estado alto y 200 mseg en estado bajo.

Ejercicio 9

Cada tres veces que se actué sobre el pulsador conectado al pin RB0/INT el led conectado a RB1 conmuta de encendido a apagado y viceversa.

Ejercicio 10

Cada vez que se presione el pulsador conectado a la línea RB6 se incrementara un contador visualizado en el modulo LCD.

Ejercicio 11

Cada vez que se actué sobre el pulsador conectado al pin RB6 se incrementara un minutero, es decir, contará de 0 a 59 y cuando llegue a 59 volverá de nuevo a 0. Mientras se mantenga pulsado se incrementara cada 200 mseg,

Ejercicio 12

A las líneas RB7 y RB6 se conectan dos pulsadores que producen una interrupción en el pic cada vez que se pulsan. En el modulo LCD se visualizara el nombre del pulsador activado: "RB7" o "RB6".

Ejercicio 13

Por la pata Rb3 del puerto B se genera una onda rectangular de 500 &µs en estado alto y 300 &µs en estado bajo.

Ejercicio 14

Contar el número de veces que se presiona un pulsador en 1 segundo, rebotes incluidos.

CAPITULO III

Matriz de Led

  • Matriz de led 5x7.

  • Barrido de letra T.

  • Barrido lateral de letra T.

  • Uso de registros de desplazamiento para el barrido de cartel de leds.

 

Enviado por:

Ing.+Lic. Yunior Andrés Castillo S.

"NO A LA CULTURA DEL SECRETO, SI A LA LIBERTAD DE INFORMACION"®

www.monografias.com/usuario/perfiles/ing_lic_yunior_andra_s_castillo_s/monografias

Santiago de los Caballeros,

República Dominicana,

2016.

"DIOS, JUAN PABLO DUARTE, JUAN BOSCH Y ANDRÉS CASTILLO DE LEÓN - POR SIEMPRE"®


Comentarios


Trabajos relacionados

Ver mas trabajos de Hardware

 

Nota al lector: es posible que esta página no contenga todos los componentes del trabajo original (pies de página, avanzadas formulas matemáticas, esquemas o tablas complejas, etc.). Recuerde que para ver el trabajo en su versión original completa, puede descargarlo desde el menú superior.


Todos los documentos disponibles en este sitio expresan los puntos de vista de sus respectivos autores y no de Monografias.com. El objetivo de Monografias.com es poner el conocimiento a disposición de toda su comunidad. Queda bajo la responsabilidad de cada lector el eventual uso que se le de a esta información. Asimismo, es obligatoria la cita del autor del contenido y de Monografias.com como fuentes de información.

Iniciar sesión

Ingrese el e-mail y contraseña con el que está registrado en Monografias.com

   
 

Regístrese gratis

¿Olvidó su contraseña?

Ayuda