Está en la página 1de 10

Caso Diseo Uso de temporizadores

Planteamiento del problema Se requiere el diseo de un generador de seales cuadradas (0-5V) con frecuencia ajustable, que funcione en tres escalas (Hz, kHz, MHz). La salida debe ser el pin RC0, y los pines RD0, RD1, RD2 se utilizaran como indicadores de escala respectivamente. Utilice para ello el MCU PICmicro 18F4550 y la circuitera perifrica necesaria para su operacin adecuada. Requerimientos y restricciones: Escoja el Timer 0 para la implementacin. Cul es la resolucin de operacin del temporizador que conviene utilizar y porque? Frecuencia de operacin del MCU es 8 MHz, con oscilador interno. El ajuste de la frecuencia de funcionamiento del generador debe hacerse utilizando un potencimetro conectado a AN0 del MCU y las seales INT0, INT1, INT2 se usan para seleccionar la escala. Utilice el ADC con alineacin izquierda para variar la frecuencia de salida del sistema. Cul es el % de error terico en la seal generada? Implemente el Hardware requerido para la operacin deseada. o Diagrama de primer nivel o Diagrama de segundo nivel o Diagrama de tercer nivel (Esquemtico) Implemente el software para la operacin adecuada del sistema. o o Diagrama de flujo general Diagrama de flujo especfico

Pgina 1 de 10

Para recordar: El microcontrolador PIC18F4550 dispone de un conjunto de temporizadores para manejar eficientemente todas las operaciones que involucran al tiempo y al conteo de eventos. El TMR0 se puede utilizar como temporizador o contador ascendente con un tamao de 8 o 16 bits. Los registros TMR0H:TMR0L guardan el valor inicial del conteo. Este valor evoluciona desde 0000h hasta FFFFh, instante en el que se activa la bandera TMR0IF y se regresa al valor de 0000h. Se puede provocar una peticin de interrupcin si se desea. El diagrama muestra como se puede realizar el conteo a partir del reloj de Fosc/4 directamente o una seal predividida. Tambin se puede utilizar como contador de pulsos desde la patilla T0CKI, ya sea en flanco negativo o positivo, segn la patilla T0SE.

Figura 1. Diagrama del TMR0 tomado de la hoja de datos del PIC18F4550 Recuerde que para la operacin en 16 bits, a la hora de ingresar la precarga en los registros de cuenta TMR0H:TMR0L se debe ingresar primero el valor del registro TMR0H y sucesivamente el del TMR0L. Para calcular el valor de esta precarga se utiliza la ecuacin (1).

Pgina 2 de 10

2. Diagramas de bloques
Los diagramas de bloques de la propuesta se detallan a continuacin.

Figura 2. Diagrama de bloques de primer nivel

Figura 3. Diagrama de bloques de segundo nivel

Pgina 3 de 10

Figura 4. Diagrama esquemtico del circuito del caso

Pgina 4 de 10

2. Anlisis de la solucin
Se pide utilizar el TMR0, el cual tiene la principal ventaja de poder ingresar un preescalamiento de frecuencia de hasta 1:256, lo cual es conveniente para manejar un amplio rango de tiempos. Para responder a la pregunta Cul es la resolucin de operacin del temporizador que conviene utilizar y porque?, se debe de analizar concretamente cada modo de operacin (Hz, kHz, MHz) y definir qu rango ser utilizado en cada caso. En primera instancia se debe reconocer que la mxima frecuencia disponible es de Fosc/4, es decir, 2MHz, lo cual es una limitante para el rango de MHz. Para realizar el generador, se supondr que se quiere obtener una seal de salida cuadrada con un 50% de ciclo de trabajo. Sin embargo, es necesario tomar en cuenta que el desbordamiento del TMR0 indicar un cambio por cada medio ciclo. Observe la siguiente figura: V

t/ms
0.5ms 1ms

Figura 5. Seal de 1000Hz En este caso para obtener una seal de 1kHz (periodo de 1ms), es necesario que el TMR0 funcione al doble de la frecuencia (periodo de 0.5ms) para que indique el cambio del bit, y poder en cuestin de dos conteos del TMR0 obtener un periodo completo de la seal cuadrada deseada. Esta consideracin permite llegar a la conclusin de que la mxima frecuencia que se puede generar en la salida es de 1MHz!!! 2.1. Escala Hz Se supondr que en este rango se podr variar la frecuencia desde 1Hz hasta 1000Hz. Debido a las consideraciones anteriores, esto significa que se debe de configurar el TMR0 desde los rangos de 2Hz hasta 2000Hz. Se utilizar el preescalador de 1:256 para este caso que permite sin problema alcanzar frecuencias de 2Hz sin problema. Con la ecuacin (1) se calculan los valores de las precargas de los lmites, ya sea cuando el ADC est en 0, o por el otro lado en el mximo 255. Tabla 1. Valores lmite para precarga en Hz Frecuencia x ADRESH 2 Hz 61629 0 2000 Hz 65532 255 Con estos valores se puede trazar una curva de modo que al obtener la ecuacin de la recta se encuentre una funcin aproximada para realizar el ajuste de la medicin del potencimetro convertida a un valor de frecuencia dentro del rango.

Pgina 5 de 10

66000 65000 64000 63000 62000 61000 60000 0 255

y = 15,302x + 61629

Figura 6. Curva de ajuste para escala de Hz

Como slo se trabajarn nmeros enteros, la ecuacin aproximada para el ajuste es:

2.2. Escala kHz La seleccin de la ecuacin de ajuste en este caso se har considerando que: - La mxima frecuencia ser de 1Mhz, obtenida con 2MHz del TMR0 sin preescalador y con la precarga en su mximo valor 65535. - Se busca una pendiente de un valor entero para no sobrepasar el valor mximo. Tabla 2. Valores lmite para precarga en kHz Frecuencia x ADRESH 1,960 kHz 64515 0 2000 kHz 65535 255 La seleccin de la frecuencia menor se realiz por conveniencia para obtener directamente una pendiente de valor exacto.

Pgina 6 de 10

66000 65000 64000 63000

y = 4x + 64515
62000 61000 60000 0 255

Figura 7. Curva de ajuste para escala de kHz

La ecuacin del ajuste es:

2.3. Escala MHz En este caso se utilizar siempre el TMR0 generando desbordamientos cada 2MHz, para obtener una nica salida a 1MHz.

3. Diagramas de flujo
A continuacin los diagramas de flujo: principal, interrupciones y subrutina del ADC.

Pgina 7 de 10

Rutina principal
Main program

Configuracin de los bits

Deshabilitar interrupciones Puertos E/S ADC TMR0 Interrupciones

Inicializacin

Habilitar interrupciones

Subrutina LeeADC

TMR0IF=1?

NO

Borrar bandera TMR0IF

Bit toggle RC0 (BTG)

NO

Escala MHz?

SI

Pgina 8 de 10

Rutina INT0 (Hz)

INT0

Borrar bandera INT0IF

m=15 b=61629

Config TMR0 preescala 1:256

Retorno

Rutina INT1 (kHz)

INT1

Borrar bandera INT1IF

m=4 b=64515

Config TMR0 sin preescala

Retorno

Rutina INT2 (MHz)


INT2

Borrar bandera INT2IF

Config TMR0 sin preescala TMR0H:TMR0L=0xFFFF

Retorno

Pgina 9 de 10

Subrutina LeeADC
LeeADC

Set GO/DONE!

GO/DONE!=0 ?

NO

SI
Retorno

Pgina 10 de 10

También podría gustarte