Está en la página 1de 39

INSTRUMENTACIÓN AVANZADA

Departamento de Ingeniería Eléctrica y Electromecánica


Facultad de Ingeniería – Universidad Nacional de Mar del Plata

Muestreo de señales analógicas

Principal requerimiento que surge al muestrear una señal continua:

• Definir el periodo de muestreo con suficiente exactitud.


• Ajustar el mismo a un valor adecuado de acuerdo al tipo de señal
que se desea adquirir.

2
INSTRUMENTACIÓN AVANZADA
Departamento de Ingeniería Eléctrica y Electromecánica
Facultad de Ingeniería – Universidad Nacional de Mar del Plata

Teorema del muestreo


Se puede reconstruir una señal analógica a partir de sus valores
instantáneos equiespaciados (muestras). A partir de estos valores existen
∞ señales que pasan por esos puntos, pero si la señal original es de
banda limitada y las muestras son tomadas con un periodo suficiente,
entonces hay una única señal que se puede extrapolar de esas muestras
(se determina unívocamente).

Teorema del Nyquist


Si una señal de banda limitada es muestreada a una frecuencia de por lo
menos el doble de su máxima componente, ENTONCES es posible
recuperarla unívocamente (a partir de sus puntos muestra) con un filtro
pasabajos ideal.

3
INSTRUMENTACIÓN AVANZADA
Departamento de Ingeniería Eléctrica y Electromecánica
Facultad de Ingeniería – Universidad Nacional de Mar del Plata

Muestreo de señales analógicas


• El microcontrolador debería entonces adquirir un dato cada un delta
de tiempo determinado.

• ¿Cómo se hace esto en forma confiable…?

• Con interrupciones:

Las interrupciones son recursos o mecanismos del microcontrolador


para responder a eventos, permitiendo suspender temporalmente el
programa principal, para ejecutar una subrutina de servicio de
interrupción (ISR por sus siglas en inglés Interrupt Service Routine);
una vez terminada dicha subrutina, se reanuda la ejecución del
programa principal.
4
INSTRUMENTACIÓN AVANZADA
Departamento de Ingeniería Eléctrica y Electromecánica
Facultad de Ingeniería – Universidad Nacional de Mar del Plata

Gestión de Interrupciones en un microcontrolador

INICIO DE INTERRUPCIÓN

INICIO

ENTRADAS
CONFIGURACIÓN DE
INTERRUPCIONES
PROCESOS

CICLO CONTINUO
(EJECUCIÓN DEL
PROGRAMA SALIDAS
PRINCIPAL)

FIN DE INTERRUPCIÓN
5
INSTRUMENTACIÓN AVANZADA
Departamento de Ingeniería Eléctrica y Electromecánica
Facultad de Ingeniería – Universidad Nacional de Mar del Plata

Tipos de Interrupciones
Interrupciones por software
Tanto los PICs como los Atmega disponen de interrupciones por tiempo
que podemos aprovechar para generar intervalos (dt) de una manera
“precisa”. Cada vez que se dispare una interrupción tomaremos una
muestra.
Interrupción
Interrupción

6
INSTRUMENTACIÓN AVANZADA
Departamento de Ingeniería Eléctrica y Electromecánica
Facultad de Ingeniería – Universidad Nacional de Mar del Plata

Interrupciones en Arduino
Generación de dt para producir Interrupciones por software

Tipos de Timers
En los chips AVR Atmega 328 (Arduino UNO) se dispone de 3 timers, mientras
que en los Atmega 2560 (Arduino MEGA) se cuenta con 6 timers.

• Timer 0: contador de 8 bits (contará como máximo hasta 255). Se utiliza en


las funciones delay() y millis().
• Timer 1: contador de 16 bits (contará como máximo hasta 65535). Es
utilizado por la librería servo.
• Timer 2: contador de 8 bits. Similar al Timer 0. Es utilizado por la función
tono.
• Timer 3, 4 y 5: son tres contadores de 16 bits similares al Timer 1,
disponibles en la Arduino MEGA.

7
INSTRUMENTACIÓN AVANZADA
Departamento de Ingeniería Eléctrica y Electromecánica
Facultad de Ingeniería – Universidad Nacional de Mar del Plata

Interrupciones en Arduino
Generación de dt para producir Interrupciones por software

CLK 1/P > CLK

Clock Prescaler
(del cristal) N = N RESET? > ISR

Timer (Contador Disparo de interrupción


operando en modo (Interrupt Service Routine)
comparador)

Cuando el contador (Timer) operando en modo comparador, que cuenta


a un ritmo de CLK/P llega al valor de N RESET, llama a la rutina de servicio
de interrupción (ISR) asociada a dicho Timer.
8
INSTRUMENTACIÓN AVANZADA
Departamento de Ingeniería Eléctrica y Electromecánica
Facultad de Ingeniería – Universidad Nacional de Mar del Plata

Interrupciones en Arduino
Generación de dt para producir Interrupciones por software
Configuraremos el Timer 1 de la Arduino UNO ó MEGA 2560 para que cuente
pulsos de una señal de clock cuya frecuencia se fija previamente.

Ejemplo:
La placa opera con un oscilador de 16MHz. Existe un divisor de
frecuencia configurable por el usuario denominado “prescaler” que
puede tomar los valores 1, 8, 64, 256 ó 1024.
Por lo tanto la frecuencia de la señal de clock aplicada al Timer 1 será:

16𝑀𝐻𝑧
𝐹𝑐𝑙𝑜𝑐𝑘 =
𝑃𝑟𝑒𝑠𝑐𝑎𝑙𝑒𝑟

9
INSTRUMENTACIÓN AVANZADA
Departamento de Ingeniería Eléctrica y Electromecánica
Facultad de Ingeniería – Universidad Nacional de Mar del Plata

Interrupciones en Arduino
Generación de dt para producir Interrupciones por software

Por lo tanto dependiendo del valor dado al prescaler, se tendrá:

16𝑀𝐻𝑧
𝐹𝑐𝑙𝑜𝑐𝑘 =
𝑃𝑟𝑒𝑠𝑐𝑎𝑙𝑒𝑟

Prescaler Período de la Cantidad máxima de pulsos Tiempo


señal de clock que puede contar por máximo
ejemplo el Timer 1 transcurrido
1 0,0625 us 65535 4,0959375 ms
8 0,5 us 65535 32,7675 ms
64 4 us 65535 262,14 ms
256 16 us 65535 1,04856 s
1024 64 us 65535 4,19424
10
INSTRUMENTACIÓN AVANZADA
Departamento de Ingeniería Eléctrica y Electromecánica
Facultad de Ingeniería – Universidad Nacional de Mar del Plata

Interrupciones en Arduino
Generación de dt para producir Interrupciones por software
Configuración del Timer 1 para adquisición de señales analógicas

Debemos modificar los siguientes registros en memoria:

TCCR1B (Timer Counter Control Register)  Permite configurar el prescaler.


TIMSK (Timer/counter Interrupt Mask Register) Permite configurar al Timer 1
en modo comparador.
OCR1A (Output Compare Register) Permite configurar el valor de conteo
(N RESET) para el cuál se disparará la interrupción.

11
INSTRUMENTACIÓN AVANZADA
Departamento de Ingeniería Eléctrica y Electromecánica
Facultad de Ingeniería – Universidad Nacional de Mar del Plata

Interrupciones en Arduino
Configuración del Timer 1 para adquisición de señales analógicas

12
INSTRUMENTACIÓN AVANZADA
Departamento de Ingeniería Eléctrica y Electromecánica
Facultad de Ingeniería – Universidad Nacional de Mar del Plata

Interrupciones en Arduino
Configuración del Timer 1 para adquisición de señales analógicas

𝑓𝑐𝑙𝑘 = 16 𝑀𝐻𝑧 (frecuencia de clock proveniente del cristal)

𝑓
𝑐𝑙𝑘
𝑓𝑐𝑜𝑛𝑡𝑒𝑜 = 𝑝𝑟𝑒𝑠𝑐𝑎𝑙𝑒𝑟 (frecuencia de clock del contador)

1
𝑇𝑐𝑜𝑛𝑡𝑒𝑜 = 𝑓 (tiempo entre cada conteo)
𝑐𝑜𝑛𝑡𝑒𝑜

1
𝑇𝑠 , 𝑓𝑠 = 𝑇 (periodo o frecuencia de muestreo deseados)
𝑠

𝑇𝑠 𝑓𝑐𝑜𝑛𝑡𝑒𝑜
𝑁𝑚𝑎𝑥 = 𝑇𝑐𝑜𝑛𝑡𝑒𝑜 − 1 = 𝑓𝑠
−1 (valor máximo de reset del contador)

13
INSTRUMENTACIÓN AVANZADA
Departamento de Ingeniería Eléctrica y Electromecánica
Facultad de Ingeniería – Universidad Nacional de Mar del Plata

Muestreo de señales analógicas


Mientras la adquisición está en curso:
• es la alternativa que estuvimos analizando
• aprovecha el dt (una pausa) entre muestra y
Alternativas
muestra para enviar los datos a la PC
para la • la tasa de muestreo dependerá además de la
transferencia velocidad del conversor A/D, de la velocidad de la
de datos entre comunicación.
la placa y la PC

Una vez finalizada la adquisición:


• es una alternativa que implica guardar los datos
en la memoria de la placa para luego enviarlos a la
PC
• la tasa de muestreo dependerá de la velocidad
del conversor A/D pero la cantidad de datos a tomar
de la memoria de la placa.
14
INSTRUMENTACIÓN AVANZADA
Departamento de Ingeniería Eléctrica y Electromecánica
Facultad de Ingeniería – Universidad Nacional de Mar del Plata

Frecuencia de Muestreo: Caso Arduino


Tiempo de conversión del ADC muestreando un solo canal

𝑠
𝑓𝑐𝑙𝑘 = 100 𝑘𝐻𝑧 ⇒ 𝑇𝑐𝑙𝑘 = 1. 10−5
𝑐𝑖𝑐𝑙𝑜
𝑠
𝑡𝑐𝑜𝑛𝑣 ≅ 14 𝑐𝑖𝑐𝑙𝑜𝑠 . 1. 10−5 = 1,4. 10−4 𝑠 ⇒ 𝑓𝑠 𝑚á𝑥 ≅ 7,1𝑘𝐻𝑧
𝑐𝑖𝑐𝑙𝑜

15
INSTRUMENTACIÓN AVANZADA
Departamento de Ingeniería Eléctrica y Electromecánica
Facultad de Ingeniería – Universidad Nacional de Mar del Plata

Frecuencia de Muestreo: Caso Arduino


Tiempo de conversión del ADC muestreando un solo canal

Esta frecuencia es por defecto, pero a


través de un prescaler se puede
duplicar trabajando a una resolución
de 10 bits o superar aun más para
resoluciones menores de operación.

𝑠
𝑓𝑐𝑙𝑘 = 100 𝑘𝐻𝑧 ⇒ 𝑇𝑐𝑙𝑘 = 1. 10−5
𝑐𝑖𝑐𝑙𝑜
𝑠
𝑡𝑐𝑜𝑛𝑣 ≅ 14 𝑐𝑖𝑐𝑙𝑜𝑠 . 1. 10−5 = 1,4. 10−4 𝑠 ⇒ 𝑓𝑠 𝑚á𝑥 ≅ 7,1𝑘𝐻𝑧
𝑐𝑖𝑐𝑙𝑜

16
INSTRUMENTACIÓN AVANZADA
Departamento de Ingeniería Eléctrica y Electromecánica
Facultad de Ingeniería – Universidad Nacional de Mar del Plata

Tiempo para el envío de las muestras: Caso Arduino


Tiempo de envío de datos

Por cada canal muestreado, se envían 2 bytes en cada interrupción a una


velocidad de 115200 baudios:

𝑏𝑦𝑡𝑒𝑠 𝑏𝑖𝑡𝑠
2 . 10 𝑠
𝑐𝑎𝑛𝑎𝑙 𝑏𝑦𝑡𝑒
𝑡𝑒𝑛𝑣𝑖𝑜 = ≅ 1,73. 10−4 ⇒ 𝑓𝑠 𝑚á𝑥 ≅ 5,7𝑘𝐻𝑧
𝑏𝑖𝑡𝑠 𝑐𝑎𝑛𝑎𝑙
115200 𝑠

17
INSTRUMENTACIÓN AVANZADA
Departamento de Ingeniería Eléctrica y Electromecánica
Facultad de Ingeniería – Universidad Nacional de Mar del Plata

Aspectos a tener en cuenta para medir una señal


alterna con la placa PIC o Arduino

1. El rango de conversor A/D del PIC 18F2550 es:


Limitaciones 0 V – 5 V (tensión de alimentación)
A TENER EN CUENTA pero en nuestro caso, como hay unos diodos de
protección la tensión de alimentación no es 5V sino unos
4,2V)
0V = 0 en el conversor 4,2V=1023 en el conversor

2. El rango de conversor A/D del Arduino es:


0 V – 5 V (tensión de alimentación)
0V = 0 en el conversor 5V=1023 en el conversor

18
INSTRUMENTACIÓN AVANZADA
Departamento de Ingeniería Eléctrica y Electromecánica
Facultad de Ingeniería – Universidad Nacional de Mar del Plata

Aspectos a tener en cuenta para medir una alterna


con la placa PIC o Arduino
3. El PIC o el Arduino no pueden medir tensiones negativas.
Limitaciones
Debemos acondicionar la señal a medir para eliminar los
A TENER EN CUENTA
valores negativos

Circuito básico propuesto para superponer una continua de valor Vcc/2 a Vx:
Vx
Tensión en PIC
1.5
5
4.5
1
4
0.5 3.5
3
0 2.5
2
-0.5
1.5
-1 1
0.5
-1.5 0

19
Guía de
Ejercicios
N° 8

20
INSTRUMENTACIÓN AVANZADA
Departamento de Ingeniería Eléctrica y Electromecánica
Facultad de Ingeniería – Universidad Nacional de Mar del Plata

CÓDIGO ARDUINO

21
INSTRUMENTACIÓN AVANZADA
Departamento de Ingeniería Eléctrica y Electromecánica
Facultad de Ingeniería – Universidad Nacional de Mar del Plata

//DECLARACIONES

// SALIDAS DIGITALES:
const int D0=4; const int D1=5; const int D2=7; const int D3=9;

// ENTRADAS DIGITALES:
const int D4=2; const int D5=3; const int D6=6; const int D7=8;

// ENTRADAS ANALÓGICAS:
const int AN0=0; const int AN1=1; const int AN2=2; const int AN3=3;

// VARIABLES
char caracterEntrada; int entradaDigital, b0, b1, b2, b3, dato;
byte vector1[2], vector2[10];
String canal; boolean estado; int contador; int dato1, dato2, dato3, dato4;

22
INSTRUMENTACIÓN AVANZADA
Departamento de Ingeniería Eléctrica y Electromecánica
Facultad de Ingeniería – Universidad Nacional de Mar del Plata

void setup() { //SETUP

// DECLARACIÓN DE SALIDAS DIGITALES:


pinMode(D0, OUTPUT); pinMode(D1, OUTPUT);
pinMode(D2, OUTPUT); pinMode(D3, OUTPUT);

// DECLARACIÓN DE ENTRADAS DIGITALES:


pinMode(D4, INPUT); pinMode(D5, INPUT);
pinMode(D6, INPUT); pinMode(D7, INPUT);

// CONFIGURACIÓN DEL PUERTO SERIE


Serial.begin(115200);

// INICIALIZACIÓN DE SALIDAS (se ponen en 0)


digitalWrite(D0,0); digitalWrite(D1,0);
digitalWrite(D2,0); digitalWrite(D3,0);

// INICIALIZACIÓN DE CONTADOR
contador = 0; estado = false;
23
}// FIN DEL SETUP
INSTRUMENTACIÓN AVANZADA
Departamento de Ingeniería Eléctrica y Electromecánica
Facultad de Ingeniería – Universidad Nacional de Mar del Plata

void loop() {//CICLO PRINCIPAL


if (Serial.available()) { // si llegó uno o más caracteres desde la PC
caracterEntrada = Serial.read(); // toma un nuevo byte

// ATENCIÓN AL COMANDO 'A' (ESCRITURA DE SALIDAS DIGITALES)


if (caracterEntrada == 'A') {
delay(5);
caracterEntrada = Serial.read(); // toma un nuevo byte
digitalWrite(D0,caracterEntrada); // escribe la salida digital D0
delay(5);
caracterEntrada = Serial.read();
digitalWrite(D1,caracterEntrada);
delay(5);
caracterEntrada = Serial.read();
digitalWrite(D2,caracterEntrada);
delay(5);
caracterEntrada = Serial.read();
digitalWrite(D3,caracterEntrada);
24
}// FIN DE ATENCIÓN AL COMANDO 'A'
INSTRUMENTACIÓN AVANZADA
Departamento de Ingeniería Eléctrica y Electromecánica
Facultad de Ingeniería – Universidad Nacional de Mar del Plata

// ATENCIÓN AL COMANDO 'B' (LECTURA DE ENTRADAS DIGITALES)


if (caracterEntrada == 'B') {
b0 = digitalRead(D4); // lee la entrada D4
b1 = digitalRead(D5);
b2 = digitalRead(D6);
b3 = digitalRead(D7);
entradaDigital = 1 * b0 + 2 * b1 + 4 * b2 + 8 * b3;
Serial.write(lowByte(byte(entradaDigital))); // envía el estado de las
// entradas en los 4 bits
// menos significativos
} // FIN DE ATENCIÓN AL COMANDO 'B'

25
INSTRUMENTACIÓN AVANZADA
Departamento de Ingeniería Eléctrica y Electromecánica
Facultad de Ingeniería – Universidad Nacional de Mar del Plata

// ATENCIÓN AL COMANDO 'C' (LECTURA DE UNA ENTRADA ANALÓGICA)


if (caracterEntrada == 'C') {
delay(5);
caracterEntrada = Serial.read(); // toma un nuevo byte
canal = caracterEntrada + ""; // convierte el caracter en string
dato = analogRead(canal.toInt()); // lee el canal analógico solicitado
vector1[0] = lowByte(word(dato)); // genera el primer byte
vector1[1] = highByte(word(dato)); // genera el segundo byte
Serial.write(vector1,2); // envía los dos bytes en binario
}// FIN DE ATENCIÓN AL COMANDO 'C'

26
INSTRUMENTACIÓN AVANZADA
Departamento de Ingeniería Eléctrica y Electromecánica
Facultad de Ingeniería – Universidad Nacional de Mar del Plata

// ATENCIÓN AL COMANDO 'I' (IDENTIFICACIÓN DE LA PLACA)


if (caracterEntrada == 'I') {
Serial.write("ARDUINO MEGA 2560 R3");
}// FIN DE ATENCIÓN AL COMANDO 'I'

27
INSTRUMENTACIÓN AVANZADA
Departamento de Ingeniería Eléctrica y Electromecánica
Facultad de Ingeniería – Universidad Nacional de Mar del Plata

// ATENCIÓN AL COMANDO 'D' (LECTURA DE 4 CANALES ANALÓGICOS


// 500 muestras por canal a una tasa de 2500 muestras/seg en cada canal)
if (caracterEntrada == 'D') {
contador = 0;
configuraInterrupcion1(1,0,0,7999);
}// FIN DE ATENCIÓN AL COMANDO 'D„
}// fin del if principal
}// fin del loop

28
INSTRUMENTACIÓN AVANZADA
Departamento de Ingeniería Eléctrica y Electromecánica
Facultad de Ingeniería – Universidad Nacional de Mar del Plata

// FUNCIÓN configuraInterrupcion1()
void configuraInterrupcion1(boolean b0, boolean b1, boolean b2, int dN) {
cli(); // Deshabilita las interrupciones globales para configurar los registros
// del Timer 1
TCCR1A = 0; // Se vacía el registro
TCCR1B = 0; // Se vacía el registro
OCR1A = dN; // Registro que se comparará constantemente con el timer
TCCR1B |= (1 << WGM12); // Se configura un preescalador:
TCCR1B |= (b0 << CS10); // Se pone a b0 el bit CS10 (Clock Select bit 10)
TCCR1B |= (b1 << CS11); // Se pone a b1 el bit CS11 (Clock Select bit 11)
TCCR1B |= (b2 << CS12); // Se pone a b2 el bit CS12 (Clock Select bit 12)
TIMSK1 = (1 << OCIE1A); // Se configura el timer como comparador
sei(); // Habilita las interrupciones globales para que funcionen las
// interrupciones programadas
} // fin de la función configuraInterrupcion1()

29
INSTRUMENTACIÓN AVANZADA
Departamento de Ingeniería Eléctrica y Electromecánica
Facultad de Ingeniería – Universidad Nacional de Mar del Plata

// INTERRUPCIÓN 1
ISR(TIMER1_COMPA_vect) {
dato1 = analogRead(AN1);
dato2 = analogRead(AN2);
//dato3 = analogRead(AN2);
//dato4 = analogRead(AN3);
vector2[0] = lowByte(word(dato1)); vector2[1] = highByte(word(dato1));
vector2[2] = lowByte(word(dato2)); vector2[3] = highByte(word(dato2));
//vector2[4] = lowByte(word(dato3)); //vector2[5] = highByte(word(dato3));
//vector2[5] = lowByte(word(dato4)); //vector2[7] = highByte(word(dato4));
Serial.write(vector2,4);
// estado = ~estado;
// digitalWrite(D3,estado);
contador = contador + 1;
if (contador == 500){
contador = 0;
deshabilitaInterrupcion1();
} //FIN DEL IF
30
}// FIN DE LA INTERRUPCIÓN 1
INSTRUMENTACIÓN AVANZADA
Departamento de Ingeniería Eléctrica y Electromecánica
Facultad de Ingeniería – Universidad Nacional de Mar del Plata

//FUNCIÓN deshabilitaInterrupcion1()
void deshabilitaInterrupcion1(){
cli(); // Deshabilita las interrupciones globales para configurar los registros
// del Timer 1
TCCR1A = 0; // Se vacía el registro
TCCR1B = 0; // Se vacía el registro // deshabilita el clock del contador
TCCR1B |= (0 << CS10); // Se pone a 0 el bit CS10 (Clock Select bit 10)
TCCR1B |= (0 << CS11); // Se pone a 0 el bit CS11 (Clock Select bit 11)
TCCR1B |= (0 << CS12); // Se pone a 0 el bit CS12 (Clock Select bit 12)
sei(); // Habilita las interrupciones globales
}// fin de la función deshabilitaInterrupcion1()

31
INSTRUMENTACIÓN AVANZADA
Departamento de Ingeniería Eléctrica y Electromecánica
Facultad de Ingeniería – Universidad Nacional de Mar del Plata

Otros tipos de Interrupciones


Interrupciones externas
Corresponden a eventos externos que generan un cambio del estado
lógico de un pin de entrada digital. La transición se detecta por cambio
en el nivel de tensión, por flanco ascendente o por flanco descendente.

Se evita así el pooling, técnica ineficiente que consiste en sensar


constantemente el estado de las entradas digitales del
microcontrolador dentro de un bucle infinito.

Ejemplo:

32
INSTRUMENTACIÓN AVANZADA
Departamento de Ingeniería Eléctrica y Electromecánica
Facultad de Ingeniería – Universidad Nacional de Mar del Plata

Interrupciones en PIC
Generación de dt para producir Interrupciones por software
Tipos de Timers
En los PIC 18F2550 se dispone de 4 Timers.

• Timer 0: puede funcionar como temporizador o contador. Tiene16 bits


(contará como máximo hasta 65535).

• Timer 1 y 3: pueden funcionar como temporizadores o contadores


dependiendo del estado de unos registros de control asociados a ellos.
Tienen16 bits. Se pueden utilizar para programar interrupciones por tiempo
mediante unos módulos denominados CCP.

• Timer 2: contador o temporizador de 8 bits (contará como máximo hasta


255). Se puede utilizar para generar señales PWM también con CCP.

33
INSTRUMENTACIÓN AVANZADA
Departamento de Ingeniería Eléctrica y Electromecánica
Facultad de Ingeniería – Universidad Nacional de Mar del Plata

Interrupciones en PIC
Generación de dt para producir Interrupciones por software
Cada Timer del PIC 18F2550 cuenta pulsos de una señal de clock cuya
frecuencia se fija previamente.

Ejemplo:
Si el PIC trabaja con un oscilador de 20MHz por medio de una
elemento de hardware denominado PLL la frecuencia de reloj del
sistema será de 48MHz.
Existe un divisor de frecuencia configurable por el usuario denominado
“prescaler” que puede tomar los valores 1, 2, 4 u 8.
Por lo tanto la frecuencia de la señal de clock aplicada a un Timer será:

34
INSTRUMENTACIÓN AVANZADA
Departamento de Ingeniería Eléctrica y Electromecánica
Facultad de Ingeniería – Universidad Nacional de Mar del Plata

Interrupciones en PIC
Generación de dt para producir Interrupciones por software

Por lo tanto dependiendo del valor dado al prescaler, se tendrá:

Prescaler Período de la Cantidad máxima de pulsos Tiempo


señal de clock que se pueden contar por máximo
ejemplo el Timer 1 transcurrido
1 0,08333333 us 65535 5461,33 us
2 0,16666666 us 65535 10299,67 us
4 0,33333333 us 65535 21845,33 us
8 0,66666666 us 65535 43690,67 us

35
INSTRUMENTACIÓN AVANZADA
Departamento de Ingeniería Eléctrica y Electromecánica
Facultad de Ingeniería – Universidad Nacional de Mar del Plata

Interrupciones en PIC
Producido un dt disparamos una interrupción con el
módulo CCP1

El módulo CCP1
• El módulo CCP1 se puede asociar al Timer 1. (mediante un registro de
control asociado a CCP1).

• Mediante ese mismo registro de control asociado a CCP1 se lo puede


configurar en tres modos de funcionamiento. “compare, capture, o PWM”

• El CCP1 configurado en modo compare “dispara” una interrupción cuando


el valor del Timer 1 iguala a un valor seteado en CCP1.

36
INSTRUMENTACIÓN AVANZADA
Departamento de Ingeniería Eléctrica y Electromecánica
Facultad de Ingeniería – Universidad Nacional de Mar del Plata

Ejemplo : se quiere leer con el PIC dos entradas analógicas 500 veces cada 0,5 ms
(2000 muestras/s)

37
continua
INSTRUMENTACIÓN AVANZADA
Departamento de Ingeniería Eléctrica y Electromecánica
Facultad de Ingeniería – Universidad Nacional de Mar del Plata

Ejemplo : se quiere leer con el PIC dos entradas analógicas 500 veces cada 0,5 ms

38
Guía de
Ejercicios
N° 8

39

También podría gustarte