Microcontroladores Sem7 TE

Descargar como pdf o txt
Descargar como pdf o txt
Está en la página 1de 23

2/05/2022

Microcontroladores
Semestre: 2022-1
Profesor: Kalun José Lau Gan
Semana 7: Caso reloj, conversión A/D y Multitarea en microcontroladores

¿Preguntas previas?
• Si el PIC18F4550 esta entrando a la etapa de madurez. ¿Por qué no se
usa el PIC18F45K50?

2
2/05/2022

¿Preguntas previas?
• Si yo consigo el PIC18F45K50, puedo usar los mismos códigos e
información que usé en el PIC18F4550?
• No, son modelos diferentes por lo que tendrán una configuración diferente
para cada modelo. Los aspectos funcionales de los periféricos serán muy
similares.
• ¿Dónde puedo ver acerca de los nuevos modelos de PIC18 que hay?
• https://www.microchip.com/en-us/products/microcontrollers-and-
microprocessors/8-bit-mcus/pic-mcus

• ¿Cuál me recomiendaría para futuras aplicaciones?


• El PIC18F45Q43

Preguntas previas:

4
2/05/2022

Agenda:
• Caso: Reloj con el Timer1 en RTC y display de cuatro dígitos de siete
segmentos
• Conversión A/D
• Multitarea
• Múltiples interrupciones
• Ejemplos de multitarea

Diseño: Reloj en el PIC18F4550

6
2/05/2022

Diseño: Reloj en el PIC18F4550


• El display es del tipo multiplexado de 4 dígitos de siete segmentos cátodo
común.
• Revisar rutina para la decodificación de números en siete segmentos (se
recomienda el empleo de TBLPTR).
• Revisar rutina de multiplexación en displays de siete segmentos.
• Revisar rutina de individualización de dígitos de un registro de 8 bits.
• El módulo Timer1 en modo RTC.
• Contemplar el uso del cristal 32.768KHz (en implementación) o fuente de reloj de
32.768KHz (en simulación en Proteus)
• Revisar rutina de interrupción para asegurarse de que se cumpla la carga de
cuenta inicial dentro de los 15.25μs.
• Sistema de cuenta del reloj.
• Considerando Sistema 24H: 00:00:00 – 23:59:59
• Opción de ingreso de la hora actual (ej: Interrupciones externas)
• Estrategia para poder visualizar el formato completo de la hora

8
2/05/2022

Avance del
código:

Repaso de conocimientos:

10
2/05/2022

Conversor A/D
Revisar Capítulo 21 de la hoja técnica del PIC18F4550
• Resolución:
• Cantidad de canales analógicos:
• Tiempo de adquisición:
• Rango de voltaje de entrada:
• ¿Cuáles son los valores límites de Vref+ y Vref-?
• Proceso de adquisición de una señal analógica
• ¿Interviene el teorema de muestreo?
• ¿Hay interrupciones?

11

Conversor A/D
• Resolución: 10bits (ADRESH:ADRESL)
• Posee un bit ADFM (justificación del resultado)
• Cantidad de canales analógicos: 13
• Se lee un canal analógico a la vez
• ¿Interviene el teorema de muestreo? Si.
• Tiempo de adquisición: se configura en reg. ADCON2
• Rango de voltaje de entrada: 0-5V? (Vref+ = VDD, Vref- = VSS)
• Proceso de adquisición de una señal analógica (ver datasheet)
• ¿Hay interrupciones? Si. ADIE, ADIF

12
2/05/2022

Conversor A/D: Diagrama de bloques

13

Registros de configuración para el A/D:

14
2/05/2022

Registros de configuración para el A/D:


Procedimiento para adquirir una muestra de una
señal analógica:

15

Para obtener el resultado de la conversión


A/D:

16
2/05/2022

Ejemplo, leer en AN0 el valor de voltaje de un potenciómetro


configurado como divisor de tensión y el resultado en 8 bits emitirlo
por el puerto D

17

Configuración para el A/D para AN.0:

18
2/05/2022

Conf. del A/D para AN0: (tiempo de adq y just res)

19

Código en MPASM

20
2/05/2022

Código en XC8 PIC Assembler

21

Simulación en Proteus

22
2/05/2022

El sensor de temperatura LM35


• Sensor de temperatura de rampa lineal
• Pendiente de 10mv/°C
• Alimentación 5V
• Reacción lenta ante cambios bruscos de
temperatura

23

Consideraciones para usar el LM35 con el


microcontrolador PIC18F4550
• Recortar la escala para una mayor facilidad en el tratamiento
numérico. Ej 0°C a 100°C
• Si recortamos a ese rango (recordando 10mv/°C):
• 0°C = 0V
• 100°C = 1V
• El conversor A/D se deberá ajustar el Vref+ a un valor de 1V para que
la señal adquirida obtenga todo el rango del A/D.

24
2/05/2022

Circuito de interface del PIC18F4550 con el


LM35

25

Ejemplo: Termómetro con LM35 y display


multiplexado de 4 digitos

26
2/05/2022

¿Cómo hago para hacer el escalamiento de medidas sin


hacer uso de operaciones de division y/o multiplicación?
• Ajustando el Vref para que tenga un
valor de peso binario:

27

(cont…)
• El resultado del A/D en 7 bits nos da el
valor de la temperatura sin necesidad
de hacer cálculos adicionales si es que
ajustamos el Vref+ a 1.27V
• Se requiere de un algoritmo (digbyte)
que me permita obtener los dígitos
centena, decena y unidad de manera
independiente para que en el proceso
de multiplexación los tome y se
visualice.
• Digbyte.inc deberá ser incluido en la
carpeta Header Files del árbol del proyecto
• Para poder simular el ejemplo en
Proteus:
• Desactivar el T1OSCEN para que el
PIC18F4550 reciba una señal cuadrada en
T13CKI de 32.768KHz y tener así el RTC

28
2/05/2022

(cont…) • Código en MPASM:

29

Circuito en Proteus

30
2/05/2022

¿Multitarea?

• Ejecución de varias tareas a la vez en el microcontrolador


• Sistemas RTOS (Real Time Operating System), relacionado con
lenguajes de alto nivel generalmente.
• En en assembler la multitarea esta relacionado con el uso de
interrupciones.
• Ejecución de una instrucción ≠ ejecución de una tarea

31

Ejemplo: Generación de dos ondas cuadradas


de 1.5KHz y 3.5KHz (asíncronas)
• Se usarán dos temporizadores: Timer0 (señal 1.5KHz) y Timer1 (señal 3.5KHz)
• Al presionar BTN (INT0) se intercambiarán (swap) la salida de las señales.
• Se activarán interrupciones por desborde de ambos temporizadores y la INT0
• Se emplearán prioridades en las interrupciones (a escoger)

32
2/05/2022

Análisis de las señales a reproducir (50% DC):

33

Configuración del Timer0 para temporizar


0.333ms

34
2/05/2022

Configuración del Timer0 para temporizar 0.333ms

35

Configuración del Timer1 para temporizar 143us

36
2/05/2022

Desarrollo del algoritmo en diagrama de flujo

37

Código en MPASM:
Nota: Cuentas iniciales de
TMR1 y TMR0
compensadas para
obtener 1.5KHz y 3.5KHz

38
2/05/2022

Simulación:

39

Modificación al ejemplo: Cambiando las


prioridades de las fuentes de interrupción

40
2/05/2022

Código en
MPASM:
Configuración
y rutina
principal

41

Código en MPASM:
Rutinas de interrupción

42
2/05/2022

Simulación en Proteus

43

Cuestionario:
• Modificar el ejemplo anterior para que se pueda modificar el duty
cycle de ambas ondas de manera independiente empleando un
teclado matricial para ello.

44
2/05/2022

Fin de la sesión

45

También podría gustarte