Anda di halaman 1dari 11

Indice

El modulo ADC .............................................................................................................................. 2 Registros del modulo ADC. ........................................................................................................ 2 Calculo de temporizadores........................................................................................................... 6 Frecuencia interna o Fint. ........................................................................................................... 6 Temporizacin. .......................................................................................................................... 6 Calculo del TMR0....................................................................................................................... 6 Registros del TIMER0 y funcionamiento. .................................................................................. 7 Registros TMR0L Y TMROH. ...................................................................................................... 8 Registro de interrupciones (INTCON). ....................................................................................... 8 Interrupciones .............................................................................................................................. 9

Roberto Lpez Mtz.

Pgina 1

El modulo ADC
El modulo del convertidor analgico-digital tiene ocho entradas para el PIC18F458 este modulo cuenta con dos registros ADCON0 Y ADCON1, utilizados para el control ADC; El modulo A/D permite realizar conversiones de una seal de entrada a su equivalente digital en un nmero de 10 bits, de tal forma que el modulo incrementara su valor 1024 veces, para saber cunta sensibilidad tiene el ADC para percibir los cambios solo debemos dividir el valor del voltaje mximo de entrada entre 1023, para nuestro ejemplo 5V/1024=4.88mV as que cada 4.88mV el contador se incrementara en 1.

Registros del modulo ADC.


A/D registro alto (ADRESH). A/D registro bajo (ADRESL). A/D registro de control (ADCON0). A/D registro de control (ADCON1).

El registro ADCON0 controla el modo de operacin del ADC, mientras que el registro ADCON1 controla el funcionamiento de los pines de entrada del puerto ADC.

Roberto Lpez Mtz.

Pgina 2

El primer paso es seleccionar los bits para el reloj de conversin, es de vital importancia seleccionar un tiempo mayor a 1.6s, de lo contrario se generara un error, la siguiente tabla nos muestra los valores que se deben asignar a los registros ADCS2:ADCS0.

Las celdas sombreadas estn fuera del rango recomendado, (para nuestro caso utilizaremos un reloj de 32 TOSC, puesto que es el que nos da un rango exacto de 1.6s), los tiempos de reloj para el modulo ADC (TAD) se calculan dividiendo la frecuencia de reloj sobre el valor del cristal interno de tal forma que:

Para nuestro ejemplo utilizaremos un cristal de 20Mhz, as que nuestra ecuacin ser:

Por lo tanto los primeros dos bits de nuestro registro ADCON0 sern 10, puesto que son los valores de los bits ADCS1 y ADSC0, el bit ADCS2 se encuentra dentro del registro ADCON1 y deber ser manipulado en otro momento ya que por ahora nos enfocamos en el registro ADCON0. Ahora necesitamos seleccionar el canal analgico que vamos a utilizar para nuestra conversin as que utilizaremos los bits del 5 al 3 del registro ADCON0, como solo utilizaremos un canal debemos asignar los valores 000 a dichos bits. El bit 2 es el bit GO/DONE e indica el estado de la conversin si esta en 1 quiere decir que la conversin se ha llevando a cabo, si esta en 0 quiere decir que no hay conversin as que lo dejaremos en 0. El bit 1 no se utiliza por lo tanto se dejara en 0 tambin; Finalmente el bit 0 nos indica si el ADC est encendido o apagado, as que lo pondremos en 1 para indicar que utilizaremos el modulo ADC, si se deja en 0 quiere decir que el modulo ADC no ser utilizado, as que nuestro registro ADCON0 quedar de la siguiente forma. ADCON0=0B10000001; (As lo declaramos en Mikroc!), ahora es tiempo de continuar con el registro ADCON1.

Roberto Lpez Mtz.

Pgina 3

El bit 7 nos indica cmo se justificaran los datos en los registros alto y bajo, 1 indica justificacin a la derecha (quiere decir que los 6 bits mas significantes del registro ADRESH son 0), 0 indica justificacin a la izquierda esto quiere decir que los 6 bits menos significantes del registro ADRESL son 0 (para nuestra practica utilizaremos la justificacin a la derecha).

El bit 6 es el registro ADCS2 y se utiliza para seleccionar la frecuencia de reloj recordemos que para nuestro ejemplo utilizaremos un TAD de 32, as que deber ser un 0. Los bits 5 al 4 no se utilizan as que les asignaremos un valor de 0. Finalmente los bits 3 al 0 nos ayudaran a seleccionar las entradas analgicas y la funcin de los bits del puerto A, como en este caso no utilizaremos ningn bit para voltajes de referencia y trabajaremos solo con el canal A0 deberemos asignar los valores 1110, as que nuestro registro deber ser declarado en MikroC de la siguiente forma:

Roberto Lpez Mtz.

Pgina 4

ADCON1=0B10001110; Por lo tanto las declaraciones debern hacerse de la siguiente forma: TRISA= 0B00000001; ADCON0=0B10000001; ADCON1=0B10001110;

Posteriormente se deber inicializar el modulo ADC con el comando Adc_Init();

Nota: Este es solo un resumen pequeo del funcionamiento de modulo ADC del PIC18F458, si deseas aprender ms sobre este modulo consulta el datasheet, puesto que aun hay mas funciones y especificaciones que te sern tiles como el uso de voltajes de referencia para ganar resolucin.

Roberto Lpez Mtz.

Pgina 5

Calculo de temporizadores
Frecuencia interna o Fint.

Fint es la frecuencia interna a la que trabaja el microcontrolador y esta se obtiene dividiendo el valor del cristal que se usa en el microcontrolador por 4, mientras que TFint es el perodo de la frecuencia interna del microcontrolador.

Temporizacin.

Donde 2n representa el nmero de bits del microcontrolador, TMR0 representa el valor a cargar en el registro del Timer 0 y P es el valor del prescaler que ser utilizado.

Calculo del TMR0.

Nota: cuando se trabaja con un microcontrolador con registros de 16bits se debe cargar primero el registro alto del TMR0 para evitar problemas con el TIMER y se le debe de sumar dos a la cuenta para que el microcontrolador se sincronice correctamente con la frecuencia de trabajo del cristal, en caso del que el resultado del clculo TMR0 no sea un nmero entero se le debe redondear al entero ms cercano.

Roberto Lpez Mtz.

Pgina 6

Registros del TIMER0 y funcionamiento.


Es necesario manipular los registros del TIMER0 manualmente para poder inicializar el modulo correctamente con las especificaciones que nosotros deseamos, ya que es necesario indicar el prescaler, si va a trabajar como un modulo de 8 o 16 bits, si deseamos utilizar interrupciones y si deseamos que el prescaler se asigne al TIMER0 o al WATCH DOG TIMER! Caractersticas del TIMER0 Seleccin de formato de 8 o 16 bits mediante software. Se puede leer y escribir. Software de 8 bits programable, dedicado al prescaler. Fuente de reloj seleccionable (interna o externa). Interrupciones por desbordamiento 0hFF, en modo del 8 bits y 0hFFFF en modo de 16 bits (el formato puede ser en hexadecimal, decimal, binario y octal, recuerden que MikroC trabaja con todos los formatos). Seleccin de trabajo con flancos de subida o bajada para el reloj externo.

Roberto Lpez Mtz.

Pgina 7

El bit 7 activa o desactiva el TIMER0 para este caso ser 1 puesto que vamos a trabajar con el TIMER. El bit 6 indica si el modulo tendr un registro de 8 o de 16 bits, para nuestro ejemplo ser de 16 bits, por lo tanto es igual a 0. El bit 5 ser un 0 puesto que utilizaremos el reloj de instrucciones interno (este depende de la frecuencia interna o Fint). El bit 4 indica en qu momento se incrementara el contador del timer, para nuestro ejemplo ser en el flanco de subida as que ser 1. El bit 3 nos indica si el prescaler se va a asignar a nuestro TIMER o no, si se asigna la frecuencia interna ser divida por el numero del prescaler, de lo contrario, esta frecuencia pasara sin ser dividida, en este ejemplo trabajaremos con el prescaler as que el bit ser 0. Los bits 2-0 nos indican el valor del prescaler, como vamos a trabajar con una frecuencia de 1s hasta el desbordamiento solo dos valores nos funcionan el de 128 y el 256, para nuestro ejemplo seleccionare el de 128 as que los bits restantes sern 110. El TIMER funciona de forma paralela as que no importa que est haciendo el microcontrolador, el TIMER seguir incrementando su cuenta hasta provocar un desbordamiento, una vez que el desbordamiento ocurra podemos generar una interrupcin si se desea para realizar alguna actividad especfica y posteriormente volver a continuar con el programa principal a partir de donde este se quedo.

Registros TMR0L Y TMROH.


En estos registros se almacenan los valores de la cuenta del TIMER0 y pueden ser modificados por software para obtener un desbordamiento en el tiempo deseado, para esto utilizamos la ecuacin de Calulo del TMR0 y cargamos el valor obtenido en los registros, si se trabaja con un TIMER de 8 bits solo se carga el registro TMR0L y si se trabaja con uno de 16 bits se deber cargar primero el registro TMR0H (representando este los 8 bits mas significativos) y despus el TMR0L (siendo este los 8 bits menos significativos) de lo contrario se podrn ocasionar errores.

Registro de interrupciones (INTCON).


En este registro se activan o desactivan las interrupciones del TIMER0 as como las interrupciones globales y se habilita la interrupcin por desbordamiento del TIMER0 (ver seccin de interrupciones).

Roberto Lpez Mtz.

Pgina 8

Interrupciones
El PIC18F458 tiene mltiples fuentes de interrupcin, estas pueden ser internas o externas, y cuanta con la opcin de seleccionar la prioridad de cada una de estas interrupciones lo que permite al usuario definir que procesos sern ms importes; Hay trece registros utilizados para el control de las interrupciones. RCON INTCON INTCON2 INTCON3 PIR1, PIR2, PIR3 PIE1, PIE2, PIE3 IPR1, IPR2, IPR3 Para nuestro ejemplo trabajaremos con el registro INTCON este se utiliza para manejar las interrupciones por desbordamiento del TIMER ya sea el TIMER0, 1, 2 o 3. Cuando se trabaja con interrupciones por diversos dispositivos se debern activar las interrupciones globales del registro GIE/GIEH (revisen el datasheet para ver exactamente cules). Existen interrupciones por recepcin de datos mediante el modulo UART, conversin de datos por el ADC, por los pines del microcontrolador, etc. (revisen la hoja de datos para ver cuntos tipos de interrupciones existen).

Registro INTCON
Este registro es legible y escribible, y cuenta con bits de prioridad y activacin, debido al nmero de interrupciones del PIC18F458, se cuenta con tres registros INTCON.

Roberto Lpez Mtz.

Pgina 9

El bit 7 activa las interrupciones globales as que para este ejemplo deberemos activarlo. El bit 6 activa las interrupciones perificas, ya sean por el puerto B o por alguna transmisin de datos o conversin del modulo ADC, (revisen la hoja de datos para mayor informacin) para nuestro ejemplo ser 0. El bit 5 es el que activa nuestra interrupcin por desbordamiento del TIMER0 as que deber ser 1. El bit 4 activa las interrupciones externas por el puerto B, para nuestro caso ser un 0, El bit 3 activa las interrupciones por cambios de estado en el puerto B para este ejemplo ser 0. El bit 2 es la bandera de la interrupcin por desbordamiento del TIMER0 deber ser 0 al inicio de la declaracin de bits del registro, una vez que la interrupcin ocurre este bit cambia a 1 y entra la funcin de interrupcin, una vez finalizadas las tareas a realizar en la interrupcin se deber poner en 0 este bit, esto debe hacerse manualmente y debe ser siempre la ultima instruccin realizada por la rutina de interrupcin. Roberto Lpez Mtz. Pgina 10

El bit 1 nos indica que ha ocurrido una interrupcin externa cuando el bit es igual a 1, entonces entrara una rutina de interrupcin, una vez ejecutada esta rutina deber ponerse a 0 este bit manualmente, esta deber ser la ltima instruccin de la rutina de la misma forma que el bit 2. El bit 0 nos indica que ha ocurrido un cambio en uno de los bits de puerto B (bits del 7 al 4 solamente), de la misma forma que los bits 2 y 1 deber ponerse a 0 el bit cuando finaliza la rutina de interrupcin.

Nota: Recuerden que existen ms interrupciones, que nos pueden ayudar en diversos programas, es cuestin personal estudiar la hoja de datos el microcontrolador para aprender ms, sobre las interrupciones yo solo les proporciono una gua simple para aprender, el nivel de aprendizaje que deseen adquirir depende solamente de ustedes.

Roberto Lpez Mtz.

Pgina 11

Anda mungkin juga menyukai