6
PRCCTICA 3 MICROPROCESADORES II EJERCICIO 1: Módulo CCP en modo captura Realizar el programa que mida el periodo de una señal cuadrada de niveles TTL y mostrarlo expresado en milisegundos y con un decimal de precisión en tres displays de 7 segmentos. La señal cuyo periodo hay que medir, procede de un generador de funciones que permite variar la frecuencia de la señal. La medida se efectuará mediante el empleo del módulo CCP1 de un microcontrolador PIC16F877 (ó PIC16F877A) trabajando en modo CAPTURA. El valor mínimo del periodo será de 0,1 ms (frecuencia máxima 10kHz) y el valor máximo será el correspondiente a la medida en 16 bits (65,535 ms que corresponden a una frecuencia mínima de 15,25 Hz). La medida efectuada se mostrará mediante 3 displays de ánodo común utilizada en prácticas precedentes. Las conexiones realizadas a los pines del microcontrolador PIC16F877 presente vienen reflejadas en las figuras 1 y 2 que se adjuntan con este enunciado. El microcontrolador dispone de un oscilador de 4MHz. La señal periódica se introducirá en la línea 2 del PORTC, asegurándonos de que la salida seleccionada en el generador de funciones sea de nivel TTL y verificando la polaridad de la misma.

Practica 3

Embed Size (px)

DESCRIPTION

El siguiente documento muestra algunos ejercicios para realizar sobre el miscocontrolador.nota: estos son solo ejercicios para practicar, no estan resueltos

Citation preview

Page 1: Practica 3

PRCCTICA 3

MICROPROCESADORES II

EJERCICIO 1: Módulo CCP en modo captura

Realizar el programa que mida el periodo de una señal cuadrada de niveles TTL y mostrarlo expresado en milisegundos y con un decimal de precisión en tres displays de 7 segmentos. La señal cuyo periodo hay que medir, procede de un generador de funciones que permite variar la frecuencia de la señal. La medida se efectuará mediante el empleo del módulo CCP1 de un microcontrolador PIC16F877 (ó PIC16F877A) trabajando en modo CAPTURA. El valor mínimo del periodo será de 0,1 ms (frecuencia máxima 10kHz) y el valor máximo será el correspondiente a la medida en 16 bits (65,535 ms que corresponden a una frecuencia mínima de 15,25 Hz).

La medida efectuada se mostrará mediante 3 displays de ánodo común utilizada en prácticas precedentes. Las conexiones realizadas a los pines del microcontrolador PIC16F877 presente vienen reflejadas en las figuras 1 y 2 que se adjuntan con este enunciado. El microcontrolador dispone de un oscilador de 4MHz.

La señal periódica se introducirá en la línea 2 del PORTC, asegurándonos de que la salida seleccionada en el generador de funciones sea de nivel TTL y verificando la polaridad de la misma.

Page 2: Practica 3

En el supuesto de que el periodo de la señal fuera superior a 65,535 ms, aparecerán “tres guiones” en el centro de los displays para indicar que el periodo está por encima del rango de medida:

Se utiliza el módulo CCP1 en modo captura para detectar los flancos de bajada en la señal periódica de entrada.

Se configura el TMR1 para que se incremente cada microsegundo y ésta sea por tanto la unidad de medida del periodo de la señal de entrada. El valor máximo del periodo sin que desborde el TMR1 sería de 65535µs, si se supera este valor se advertirá con una representación específica en los displays: “- - -”

Se pondrá a cero el TMR1 y se buscará la aparición de un flanco de bajada en RC2 para poner TMR1 a contar desde cero, se programará una interrupción para que en el momento en que se detecte el siguiente flanco de bajada en RC2, se capture el valor presente en el TMR1 (TMR1H y TMR1L) con los registros de CCPR1 (CCPR1H y CCPR1L).

Ese valor capturado en binario, se convertirá a un formato de representación decimal para nuestra interpretación y lectura directa en los displays, por tal motivo se descompondrán los dos bytes obtenidos en sus correspondientes dígitos BCD y se iluminarán los segmentos asociados a cada dígito. Como sólo disponemos de 3 displays, mostramos los 3 dígitos decimales más significativos y por tanto las unidades de medida mostradas serán milisegundos, colocamos el punto decimal en el display del centro:

Page 3: Practica 3

Para vigilar el posible desbordamiento de TMR1, se programa también la interrupción de este temporizador y en el supuesto de que se produzca tal desbordamiento antes de que se detecte la aparición del siguiente flanco, detectado por el módulo CCP, se mostrarán los 3 guiones en los displays (por ejemplo con un código distinto asignado en la tabla de búsqueda de los segmentos a iluminar).

EJERCICIO 2: Módulo CCP en modo PWM

Utilizar el Módulo CCP1 de un microcontrolador PIC16F877 (ó PIC16F877A) en modo PWM para Realizar un programa que genere notas musicales de 2 octavas de un teclado musical correspondientes a las frecuencias que van desde 261,1 Hz hasta 987,77 Hz. Las frecuencias para cada nota se muestran en la figura 4.

Figura 4.- frecuencias de las notas musicales

Las 2 octavas a ser representadas

Page 4: Practica 3

Utilice el CCP1 como salida del sonido, se recomienda que use teclados matriciales 5x5 para las conectar las 24 teclas correspondientes a las 2 octavas. Para generar las frecuencias de las notas use por comodidad solo CCPR1L y un Prescaler para TMR2=16. El tiempo en Duty o de trabajo (Ton) debe ser el 50% del periodo, por tanto la duración de los pulsos o de los periodos (T) será:

T=1/fHz = (PR2+1)* Prescaler_TMR2 * 4/4MHz

De esta ecuación se obtiene el valor que se debe cargar a PR2 para obtener el periodo correspondiente a cada una de las notas. El tiempo en Duty o de trabajo (Ton) está dado por:

Ton=1/(2*fHz)=4*(CCPR1L) * Prescaler_TMR2 * 1/4MHz

De esta ecuación se obtiene el valor que se debe cargar a CCPR1L para obtener el tiempo Duty o de trabajo del periodo correspondiente a cada una de las notas.

EJERCICIO 3: Módulo CCP en modo PWM

Utilizar el Módulo CCP1 de un microcontrolador PIC16F877 (ó PIC16F877A) en modo PWM para Control de un Servomotor de Posición con PWM a través de un Potenciómetro. La velocidad de un Servomotor de Posición varía en función de del tiempo Duty o de trabajo del periodo correspondiente. Por tanto el tiempo de trabajo irá cambiando para variar la velocidad del Servomotor de Posición, este tiempo de trabajo será generado por el potenciómetro por medio del modulo de conversión A/D. el voltaje de entrada por RA0 será almacenado en su equivalente binario en el registro ADRESH y luego copiado a CCPR1L para poder variar el tiempo de trabajo. El Módulo CCP1 debe generar una frecuencia de 244,14 Hz, esto se consigue con un PR2=0xFF y un Preescaler de 16 en TMR2. Recuerde que la señal analógica en este ejercicio en particular debe ingresar por RA0, por tanto debe definir esta entrada analógica y los voltajes de referencia, que serán los de alimentación del PIC, en el ADCON1. Seleccionar el canal de conversión (canal 0) en EL ADCON0. El esquema de este circuito se muestra en la figura 5.

Figura 5.- Esquema de Control de un Servomotor de Posición con PWM