Monografías Plus »

Guia programacion microcontroladores



Introducción

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

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:

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:

Ejercicio 2

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

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:

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:

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

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

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:

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

 

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"®