Está en la página 1de 13

CURSO DE PROGRA-

MACION DE DSPIC33-
FJ - NIVEL II
MODULO 1:
INPUT CAPTURE
Cap 1:¿Que es el Input Capture?
Cap 2: Modos de Funcionamiento
Cap 3: Registros
Cap 4: Registros del IC
Cap 5: EJEMPLOS DE APLICACION
Cap 1:¿Que es el Input Capture?
El módulo de captura de
entrada es útil en aplicaciones
que requieren medición de
frecuencia (período) y pulso.
El módulo de captura de
entrada captura el valor de 16
bits de el registro de base de
tiempo seleccionado cuando
ocurre un evento en el pin ICx.

El dsPIC33FJ32MC202/204 y
dsPIC33FJ16MC304 admiten
hasta 8 canales de captura de
entrada.
Cap 2: Modos de Funcionamiento
1. Modos de evento de captura simple:
- Capture el valor del temporizador en cada flanco descendente de entrada en el pin ICx
- Capture el valor del temporizador en cada flanco ascendente de entrada en el pin Icx

2. Capture el valor del temporizador en cada flanco (ascendente y


descendente).

3. Modos de eventos de captura del preescalador:


- Captura el valor del temporizador en cada cuarto flanco ascendente de entrada en el pin ICx
- Captura el valor del temporizador cada 16 aumentos borde de entrada en el pin Icx.

Cada canal de captura de entrada puede seleccionar uno de dos Temporizadores de


16 bits (Timer2 o Timer3) para la base de tiempos.
El temporizador seleccionado puede utilizar un temporizador interno o reloj externo.
Cap 2: Modos de Funcionamiento
El módulo de captura de entrada tiene múltiples modos operativos
seleccionables a través del registro ICxCON (bit de control
ICM<2:0>):
Seleccionar por modo de señal de entrada externa,
Modo de interrupción por señal de entrada externa.

El módulo de captura de entrada contiene un búfer FIFO de cuatro


niveles. Al configurar los bits de control, un usuario puede
seleccionar el número de capturas del contador antes de que el
módulo de captura de entrada genere una solicitud de interrupción.

5
Cap 3: Registros

6
Cap 3: Registros

7
Cap 3: Registros

8
Cap 4: Configuración del IC
void configuration_IC1(void) {
// Initialize the Input Capture Module
//Configurar COMO IC RP7
TRISBbits.TRISB7 = 1; //
RPINR7bits.IC1R = 7; //input capture

IC1CONbits.ICM = 0b00; // Disable Input Capture 1 module


IC1CONbits.ICTMR = 1; // Select Timer2 as the IC1 Time base
IC1CONbits.ICI = 0b01; // Interrupt on every second capture event
IC1CONbits.ICM = 0b011; // Generate capture event on every Rising edge
// Enable Capture Interrupt And Timer2
IPC0bits.IC1IP = 1; // Setup IC1 interrupt priority level
IFS0bits.IC1IF = 0; // Clear IC1 Interrupt Status Flag
IEC0bits.IC1IE = 1; // Enable IC1 interrupt
}

void __attribute__((interrupt, no_auto_psv)) _IC1Interrupt(void) {


t1 = IC1BUF; // Read and save off first capture entry-->Periodo
t2 = IC1BUF; // Read and save off second capture entry-->Periodo
IFS0bits.IC1IF = 0;
}

9
Cap 5:

EJEMPLOS DE APLICACION

10
Ejemplo 1: Detectar el flanco de subida y bajada y otros configuraciones del
IC, usando el RB7 como entrada de una señal de reloj. Utilizar un led para
visualizar la interrupción.

11
Ejemplo 2: Medir la frecuencia de una señal de reloj mediante el IC y
visualizarlo en un terminal.

12
Ejemplo 3: Medir el ancho de un pulso mediante el IC y visualizarlo en un
terminal.

13

También podría gustarte