Escolar Documentos
Profissional Documentos
Cultura Documentos
de
Laboratorio
Procesamiento
Digital
de
Seales
Facultad
de
Ciencias,
UASLP
FACULTAD DE CIENCIAS
UASLP
Marzo/2014
Prcticas
de
Laboratorio
Procesamiento
Digital
de
Seales
Facultad
de
Ciencias,
UASLP
CONTENIDO
INTRODUCCIN ............................................................................................................ 1
CARACTERSTICAS GENERALES DEL dsPIC33FJ128GP802
......................................
2
ARQUITECTURA
DEL
dsPIC33FJ128GP802
.............................................................................
3
CREAR NUEVO PROYECTO EN MPLAB IDE
................................................................
4
SISTEMA MNIMO DE CONEXIN
.................................................................................
8
PROGRAMACIN DE dsPIC
.............................................................................................
8
Programador MINIPROG+
...........................................................................................
8
PICkit 2 v2.61
................................................................................................................
9
RESULTADOS
...................................................................................................................
10
BIBLIOGRAFA
.................................................................................................................
11
PRCTICA 1.- Puertos de Entrada/Salida. .................................................................... 12
PRCTICA 2.- El Temporizador ................................................................................... 15
PRCTICA 3.- Interrupciones ....................................................................................... 18
PRCTICA 4.- El ADC ................................................................................................. 22
PRCTICA 5.- CONVERSION EN SERIE ADC DAC ............................................ 28
Prcticas
de
Laboratorio
Procesamiento
Digital
de
Seales
Facultad
de
Ciencias,
UASLP
INTRODUCCIN
Existen dos familias de DSC por parte de Microchip, las series dsPIC30F y dsPIC33F.
El diseo de cada una de las prcticas de este manual se basa en el
dsPIC33FJ128GP802, el cual es un dispositivo de 16 bits que posee convertidores A/D
y D/A integrados, los cuales sern vitales para las tareas de procesamiento digital. En
las secciones subsecuentes se listarn sus caractersticas generales, y el esquema
mnimo de conexin.
Las prcticas siguientes se componen de dos partes: (i) la construccin del hardware, y
(ii) la implementacin del software. Para el hardware, se describe el material a utilizar y
los esquemas de conexin en cada prctica, y para el desarrollo del software, se
implementan los programas que estn codificados en lenguaje C. Con este fin, se
emplean los programas MPLAB IDE v8.89, Compilador c30 y PICkit2, todas estas
herramientas de software necesarias para la programacin del dsPIC33F. Todos estos
programas los facilita libremente el fabricante, las cuales aparecen en la bibliografa
para ser descargados desde la pgina de Microchip. En la siguiente seccin se describe
la creacin, compilacin y programacin del dsPIC.
1
Prcticas
de
Laboratorio
Procesamiento
Digital
de
Seales
Facultad
de
Ciencias,
UASLP
Arquitectura Harvard.
Ncleo de 16 bits.
Circuito integrado de 28 pines
Operacin de 3.0 3.6 Volts.
Operacin de hasta 40 MIPS.
Memoria de programa de 128kb.
5 Temporizadores de 16 bits.
Puertos con 21 entradas/salidas.
10/12 bits ADC con 1.1 Msps/500 ksps.
16 bits DAC (Audio).
Comunicacin USART.
Comunicacin I2C.
Interrupciones externas.
Rango de temperatura de -40C a 85C.
Optimizado para programar en lenguaje C.
Para conocer todas las especificaciones tcnicas se recomienda ver la hoja de datos
proporcionada por el fabricante, la cual se puede ser descargada desde el sitio oficial de
Microchip (ver bibliografa).
2
Prcticas
de
Laboratorio
dsPIC33FJ32GP302/304, dsPIC33FJ64GPX02/X04,
Procesamiento
Digital
de
Seales
AND dsPIC33FJ128GPX02/X04
Facultad
de
Ciencias,
UASLP
FIGURE 1-1: dsPIC33FJ32GP302/304, dsPIC33FJ64GPX02/X04, AND dsPIC33FJ128GPX02/
X04 BLOCK DIAGRAM
16
8 16 16 16 DMA
RAM
Data Latch Data Latch
23 PORTB
PCU PCH PCL X RAM Y RAM
23
Program Counter
Stack Loop Address Address
Control Control Latch Latch
16
Logic Logic DMA
23 Controller
16 16 PORTC
Remappable
Program Memory
Pins
EA MUX
Literal Data
Instruction
Decode and
Control Instruction Reg
16
Control Signals
to Various Blocks DSP Engine
16 x 16
OSC2/CLKO Timing Power-up W Register Array
OSC1/CLKI Generation Timer Divide Support
16
Oscillator
FRC/LPRC Start-up Timer
Oscillators
Power-on
Reset
Precision
16-bit ALU
Band Gap Watchdog
Reference Timer
16
Brown-out
Voltage Reset
Regulator
Note: Not all pins or features are implemented on all device pinout configurations. See pinout diagrams for the specific pins and features pres-
ent on each device.
3
Prcticas
de
Laboratorio
Procesamiento
Digital
de
Seales
Facultad
de
Ciencias,
UASLP
4
Prcticas
de
Laboratorio
Procesamiento
Digital
de
Seales
Facultad
de
Ciencias,
UASLP
5
Prcticas
de
Laboratorio
Procesamiento
Digital
de
Seales
Facultad
de
Ciencias,
UASLP
La ltima ventana nos muestra el modelo de dsPIC que se utilizar, compilador
y la ruta donde se guardaran los archivos del proyecto.
Una vez finalizado la creacin del nuevo proyecto, se crea un nuevo archivo.
(File New).
// CONFIGURACION DE BITS
// PROGRAMA PRINCIPAL
int main(void){
6
Prcticas
de
Laboratorio
Procesamiento
Digital
de
Seales
Facultad
de
Ciencias,
UASLP
LATAbits.LATA1=1;
}
7
Prcticas
de
Laboratorio
Procesamiento
Digital
de
Seales
Facultad
de
Ciencias,
UASLP
PROGRAMACIN DE dsPIC
Programador MINIPROG+
El programador MINIPROG+ (Figura 2), soporta diversas series de dispositivos PIC y
dsPIC para su programacin. Para la serie dsPIC33F la programacin se realiza a travs
del puerto ICSP+.
8
Prcticas
de
Laboratorio
Procesamiento
Digital
de
Seales
Facultad
de
Ciencias,
UASLP
Un esquema general de la conexin del programador a travs de ICSP+ (In Circuit
Serial Programming) se muestra en las figura 3.
PICkit 2 v2.61
Con el software PICkit 2, podemos programar el dsPIC, conectando a travs del puerto
USB el programador MINIPROG+. En las siguientes imgenes se muestra el
procedimiento para cargar el programa al dsPIC.
9
Prcticas
de
Laboratorio
Procesamiento
Digital
de
Seales
Facultad
de
Ciencias,
UASLP
Una vez conectado el puerto ICSP+ a los pines correspondientes del dsPIC, se ejecutar
el programa PICkit 2. Si se realiza correctamente la conexin entre programador y
dsPIC, nos mostrar la siguiente imagen.
Adems de mostrar las caractersticas del dispositivo, aparecen las opciones de leer,
borrar y programar el dispositivo, cabe mencionar que el software automticamente
asigna el valor de voltaje de programacin, que como se ha mencionado anteriormente
ser de 3.3 Volts. En el men File Import Hex File, se selecciona el archivo .HEX
que se gener al compilar el programa. Una vez seleccionado el programa se ejecuta la
opcin write para que sea cargado el programa al dsPIC.
RESULTADOS
Para verificar los resultados de este ejemplo, se conectarn diodos emisores de luz
(LED) en los bits 0 y 1 del puerto A (pin 2 y 3). El resultado obtenido se puede
visualizar en la figura 5.
10
Prcticas
de
Laboratorio
Procesamiento
Digital
de
Seales
Facultad
de
Ciencias,
UASLP
BIBLIOGRAFA
Pickit2 v2.61
http://www.microchip.com/stellent/idcplg?IdcService=SS_GET_PAGE&nodeId=1406&dDocNa
me=en023805
Datasheet dsPIC33FJ128GP802
http://ww1.microchip.com/downloads/en/devicedoc/70292d.pdf
Manual de PICkit 2
http://ww1.microchip.com/downloads/en/DeviceDoc/51553B.pdf
11
Prcticas
de
Laboratorio
Procesamiento
Digital
de
Seales
Facultad
de
Ciencias,
UASLP
PRCTICA 1.- Puertos de Entrada/Salida.
MATERIAL
1 dsPIC33FJ128GP802.
1 Push-button.
1 Resistencia de 1 k.
1 Diodo emisor de luz (LED).
1 Resistencia de 10 k.
1 Cristal de 20MHz.
2 Capacitores de 30F (cermicos).
1 Capacitor de 4.7 F (tantalio de preferencia).
1 Protoboard.
1 Fuente de CD de 3.3Volts
ACTIVIDADES
1. Crear un nuevo proyecto en MPLAB IDE, con el cdigo de programa
proporcionado, compilarlo y programar el dsPIC.
2. Realizar la conexin proporcionada en la figura 6.
3. Verificar los resultados
El programa consiste en leer el bit 0 del puerto A, cuando est a 0 lgico, estarn
activados los bits 11 y 12 del puerto B, de lo contrario, los bits 11 y 12 tendrn un 0
lgico.
// * * * * BITS DE CONFIGURACION * * * * * * *
_FGS ( GSS_OFF & GWRP_OFF );
_FOSCSEL ( IESO_OFF & FNOSC_PRIPLL );
_FOSC ( FCKSM_CSDCMD & IOL1WAY_OFF & OSCIOFNC_OFF & POSCMD_XT );
_FPOR ( ALTI2C_OFF & FPWRT_PWR128 );
_FICD ( JTAGEN_OFF & ICS_PGD1 );
// * * * * * * * P R O G R A M A * * * * * * * * *
int main(void){
TRISA=0XFFFF; // Configuracin de los puertos
TRISB=0X0000; // Puerto A como entradas y B como salidas
AD1PCFGL=0XFFFF; // Configuracin de las entradas digitales
while(1) {
if(PORTAbits.RA0==0){ // Si bit 0 del puerto A=0
LATBbits.LATB11=1; // Pone a '1' bits 11 y 12
LATBbits.LATB12=1; // del puerto B
}
else {LATBbits.LATB11=0; // Si bit 0 de puerto A=1
12
Prcticas
de
Laboratorio
Procesamiento
Digital
de
Seales
Facultad
de
Ciencias,
UASLP
LATBbits.LATB12=0; // Pone a '0' bits 11 y 12 del puerto B
} }
}
Al sistema mnimo de conexin del dsPIC, se deben agregar los componentes mostrados
en la figura 6.
RESULTADOS
Las figura 7 nos muestra la conexin completa para la realizacin de esta prctica.
13
Prcticas
de
Laboratorio
Procesamiento
Digital
de
Seales
Facultad
de
Ciencias,
UASLP
BIBLIOGRAFA
1. http://www.microchip.com/TechDoc.aspx?type=CodeExamples
2. http://ww1.microchip.com/downloads/en/DeviceDoc/70193c.pdf
3. http://isa.uniovi.es/~fernando/Programa_II_EUITI_archivos/Practica%20tablero%20P
uertos%20ES.pdf
4. http://www.ate.uniovi.es/8693/documentos/LECC7ce.pdf
5. http://ww1.microchip.com/downloads/en/DeviceDoc/70190C.pdf
6. http://www.mikroe.com/chapters/view/4/
14
Prcticas
de
Laboratorio
Procesamiento
Digital
de
Seales
Facultad
de
Ciencias,
UASLP
INTRODUCCIN
!"#
!" =
2
donde FOSC representa la frecuencia de oscilacin, la cual est determinada por el
oscilador externo del dsPIC, y que estara dada por !"# = 20. Por lo que
utilizando un reloj externo de 20 MHz, el dsPIC puede realizar 10 millones de
instrucciones por segundo.
Para generar el retardo, se utilizar el Timer 0, el cual es de 16 bits, esto significa que
puede realizar una cuenta desde 0 hasta 65,535 (2!" 1). En el registro T1CON, se
puede utilizar un divisor de frecuencia (Prescaler), el cual se configura con un valor de
prescaler de 256.
!"# = 20
!" !"#
!" = !
= 10
Prescaler: 256
!" = 39,062.5
Por lo que podemos calcular el valor deseado del temporizador de la siguiente manera:
20 .
El valor de 781.25, se cargar en el temporizador, para qu una vez que haya llegado a
este valor se emitir una alarma.
15
Prcticas
de
Laboratorio
Procesamiento
Digital
de
Seales
Facultad
de
Ciencias,
UASLP
MATERIAL
1 dsPIC33FJ128GP802.
1 Resistencia de 10 k.
1 Cristal de 20MHz.
2 Capacitores de 30F (cermicos).
1 Capacitor de 4.7 F (tantalio de preferencia).
1 Protoboard.
1 Osciloscopio
1 Fuente de CD de 3.3Volts
ACTIVIDADES
1. Armar el sistema mnimo del dsPIC.
2. Cargar al dsPIC el programa proporcionado en la prctica.
3. Visualizar en osciloscopio la salida (RB13).
4. Realizar el clculo para generar una onda cuadrada con frecuencia de 25
Hz (periodo de 40 ms 20 ms en estado alto y 20 ms en estado bajo).
// * * * * BITS DE CONFIGURACION * * * * * * *
_FBS ( RBS_NO_RAM & BSS_NO_FLASH & BWRP_WRPROTECT_OFF );
_FSS ( RSS_NO_RAM & SSS_NO_FLASH & SWRP_WRPROTECT_OFF );
_FGS ( GSS_OFF & GWRP_OFF );
_FOSCSEL ( IESO_OFF & FNOSC_PRI );
_FOSC ( FCKSM_CSDCMD & IOL1WAY_OFF & OSCIOFNC_OFF & POSCMD_XT );
_FPOR ( ALTI2C_OFF & FPWRT_PWR128 );
_FICD ( JTAGEN_OFF & ICS_PGD1 );
// * * * P R O G R A M A * * *
int main(void) {
TRISB=0B1101111111111111; // Configura bit13 del puerto B como salida
while(1){
LATB=0B0010000000000000; // Pone a '1' bit13
retardo_ms(); // Llama funcin de retardo
LATB=0X0000; // Pone a '0' bit13
retardo_ms(); // Llama funcin de retardo
}
}
//**** Funcin Retardo ****************
void retardo_ms( void ){ // Funcin de retardo
T1CON = 0; // Resetear el timer
TMR1 = 0;
16
Prcticas
de
Laboratorio
Procesamiento
Digital
de
Seales
Facultad
de
Ciencias,
UASLP
IPC0bits.T1IP = 1; // Interrupcin con prioridad 1
PR1 = 781.25; // Valor en el registro (retardo de 20ms)
IFS0bits.T1IF = 0; // Interrupcin cuando llega a 0
IEC0bits.T1IE = 0;
T1CON = 0X8030; // Prescaler 1:256
while(IFS0bits.T1IF==0);
}
RESULTADOS
En la figura 9, se puede visualizar la salida del dsPIC (RB13) y la generacin del tiempo
muerto en el osciloscopio, el cual se defini de 20 ms para la parte alta de la onda
cuadrada (3.3 V), y otros 20 ms para la parte baja (0 V).
BIBLIOGRAFA
1. http://galeon.com/leo-tronics/TutorialTimer0.pdf
2. ftp://193.170.235.123/Lernbehelfe/PIC%20Handb%FCcher/dsPIC33F_Reference_Man
ual/9_Watch_Dog_Timer.pdf
3. http://www.mikroe.com/chapters/view/52/chapter-4-timers/#ch4.1.1
4. http://www.todopic.com.ar/foros/index.php?topic=15200.0
17
Prcticas
de
Laboratorio
Procesamiento
Digital
de
Seales
Facultad
de
Ciencias,
UASLP
INTRODUCCIN
Una interrupcin es una seal interna o externa recibida por el dsPIC, la cual indica que
se debe "interrumpir" el curso de ejecucin actual (suspensin temporal) y pasar a
ejecutar una subrutina. Una vez finalizada la subrutina de interrupcin, se contina con
la ejecucin del programa principal.
Cuando existen varias peticiones de interrupcin a la vez, se establece un nivel de
prioridad para cada una de ellas. El dsPIC de acuerdo al nivel de interrupcin, ejecutar
cada una de ellas, atendiendo primero a la de mayor nivel de prioridad hasta atender
cada una de las peticiones de interrupcin. Una vez completadas las interrupciones,
regresar a la lnea del programa donde se encontraba antes del llamado de la
interrupcin.
MATERIAL
1 dsPIC33FJ128GP802.
1 Resistencia de 10 k.
1 Resistencia de 1 k.
1 Cristal de 20MHz.
2 Capacitores de 30F (cermicos).
1 Capacitor de 4.7 F (tantalio de preferencia).
1 Diodo LED de 5mm.
1 Diodo LED de 10 mm.
1 Push-button.
1 Protoboard.
1 Fuente de CD de 3.3Volts
ACTIVIDADES
1. Al sistema mnimo, agregar las conexiones mostradas en la figura 10.
2. Cargar al dsPIC el programa proporcionado en la prctica.
3. Visualizar la salida del programa sin ejecutar la interrupcin.
4. Visualizar la salida del programa al ejecutar INT0.
DIAGRAMA ESQUEMTICO
18
Prcticas
de
Laboratorio
Procesamiento
Digital
de
Seales
Facultad
de
Ciencias,
UASLP
led 10 mm
led 5mm
El siguiente programa realiza dos procesos. El proceso principal consiste en generar una
secuencia alterno de estados lgicos (encendido/apagado del led de 5 mm) cada 1.2
segundos (1,200 ms); una vez que se habilita la interrupcin (accionamiento del Push-
Button), se proceder a ejecutar otro proceso que consiste en el encendido del led de 10
mm durante 6 segundos (6,000 ms). Una vez concluida la rutina de interrupcin, se
regresar al proceso principal.
#include <p33fj128gp802.h>
#define fcy 16000000
// * * * * BITS DE CONFIGURACION * * * * * * *
_FBS ( RBS_NO_RAM & BSS_NO_FLASH & BWRP_WRPROTECT_OFF );
_FSS ( RSS_NO_RAM & SSS_NO_FLASH & SWRP_WRPROTECT_OFF );
_FGS ( GSS_OFF & GWRP_OFF );
_FOSCSEL ( IESO_OFF & FNOSC_PRIPLL );
_FOSC ( FCKSM_CSDCMD & IOL1WAY_OFF & OSCIOFNC_OFF & POSCMD_XT );
_FPOR ( ALTI2C_OFF & FPWRT_PWR128 );
_FICD ( JTAGEN_OFF & ICS_PGD1 );
// / / / / / / PROGRAMA PRINCIPAL / / / / / / / / / / /
int main(void){
while(1){ // Ciclo del programa
TRISB=0x5FFF; // bit 13 y 15 como salida
LATBbits.LATB13=1; // '1' bit 13
retardo_ms(1200);
LATBbits.LATB13=0; // '0' bit 13
retardo_ms(1200);
interrupcion();
}
}
void __attribute__((__interrupt__)) _INT0Interrupt(void){ //Proceso de interrupcin
19
Prcticas
de
Laboratorio
Procesamiento
Digital
de
Seales
Facultad
de
Ciencias,
UASLP
LATBbits.LATB15=0; // '0' en RD3
IFS0bits.INT0IF = 0; // Salida de la funcin
}
void interrupcion( void ) { // Configuracin de la interrupcin
INTCON2bits.INT0EP = 1;
IPC0bits.INT0IP = 4;
IEC0bits.INT0IE = 1; // Habilita Interrupcin
}
void retardo_ms( unsigned int ms ){
unsigned int periodo=0;
T1CON =0;
TMR1 = 0; // Timer comienza en 0
IPC0bits.T1IP =1;
periodo= (( fcy/256)*ms)/1000;
PR1= periodo; // Tiempo en el registro del timer
IFS0bits.T1IF=0; // Limpia bandera del timer
IEC0bits.T1IE=0; // Deshabilita timer
T1CON=0x8030; // configura TICON
while(IFS0bits.T1IF==0);
}
RESULTADOS
20
Prcticas
de
Laboratorio
Procesamiento
Digital
de
Seales
Facultad
de
Ciencias,
UASLP
BIBLIOGRAFA
1. http://ww1.microchip.com/downloads/en/DeviceDoc/70189c.pdf
2. http://ww1.microchip.com/downloads/en/DeviceDoc/70214C.pdf
3. http://www.microchip.com/stellent/idcplg?IdcService=SS_GET_PAGE&nodeId=2573
4. http://batchloaf.wordpress.com/2012/04/12/simple-timer-1-interrupt-example-for-the-
dspic30f4011/
21
Prcticas
de
Laboratorio
Procesamiento
Digital
de
Seales
Facultad
de
Ciencias,
UASLP
INTRODUCCIN
Un ADC de n bits puede representar hasta 2n valores digitales, de modo que a la entrada
analgica igual a VREF- se le asignar el valor 0 digital, y la entrada igual a VREF+ le
asignar el valor 2n 1 digital. Entre VREF- y VREF+ se pueden presentar un nmero
infinitos de valores analgicos, pero con n bits, solo se pueden formar 2n valores
discretos diferentes. Por lo tanto habr valores analgicos que no podrn ser
representados con exactitud (error de cuantizacin).
!"#! !"#!
=
2! 1
MATERIAL
1 dsPIC33FJ128GP802.
1 Resistencia de 10 k.
1 Cristal de 20MHz.
2 Capacitores de 30F (cermicos).
1 Capacitor de 4.7 F (tantalio de preferencia).
12 Diodos LED.
1 Protoboard.
2 Fuente variable de CD de 3.3Volts
ACTIVIDADES
1. Al sistema mnimo, agregar las conexiones mostradas en la figura 14.
22
Prcticas
de
Laboratorio
Procesamiento
Digital
de
Seales
Facultad
de
Ciencias,
UASLP
2. Cargar al dsPIC el programa proporcionado en la prctica.
3. Variar el nivel de CD desde 0 Volts en la entrada (RA0), pero sin
sobrepasar los 3.3 Volts.
4. Comprobar nivel de CD en la fuente con la salida digital.
DIAGRAMA ESQUEMTICO
// * * * * BITS DE CONFIGURACION * * * * * * *
_FBS ( RBS_NO_RAM & BSS_NO_FLASH & BWRP_WRPROTECT_OFF );
_FSS ( RSS_NO_RAM & SSS_NO_FLASH & SWRP_WRPROTECT_OFF );
_FGS ( GSS_OFF & GWRP_OFF );
_FOSCSEL ( IESO_OFF & FNOSC_PRIPLL );
_FOSC ( FCKSM_CSDCMD & IOL1WAY_OFF & OSCIOFNC_OFF & POSCMD_XT );
_FPOR ( ALTI2C_OFF & FPWRT_PWR128 );
_FICD ( JTAGEN_OFF & ICS_PGD1 );
23
Prcticas
de
Laboratorio
Procesamiento
Digital
de
Seales
Facultad
de
Ciencias,
UASLP
int main(void); // Declaracin de funciones
void retardo_ms( unsigned int ms );
void adc (void);
// / / / / / / PROGRAMA PRINCIPAL / / / / / / / / / / /
int main(void){
TRISB=0X0000; // Puerto B como salida
adc(); // Llama funcin adc
AD1CON1bits.ADON = 1; // Habilita ADC
while(1){
AD1CON1bits.SAMP = 1; // Bit para habilitar muestreo
retardo_ms(3); // Tiempo para realizar el muestreo
AD1CON1bits.SAMP = 0; // Retiene dato
24
Prcticas
de
Laboratorio
Procesamiento
Digital
de
Seales
Facultad
de
Ciencias,
UASLP
RESULTADOS
En la figura 14, se muestra el esquema completo de conexin con una entrada analgica
de 0 volts.
La figura 15 muestra el valor digitalizado cuando se tiene una entrada analgica de 0.5
Volts, cabe mencionar que el bit menos significativo est en el lado izquierda de la
figura.
25
Prcticas
de
Laboratorio
Procesamiento
Digital
de
Seales
Facultad
de
Ciencias,
UASLP
Finalmente, la figura 16 muestra una entrada analgica de 1.6 Volts en RA0, y la figura
17 cuando se tienen la mxima entrada aceptada en RA0 (3.3 Volts).
26
Prcticas
de
Laboratorio
Procesamiento
Digital
de
Seales
Facultad
de
Ciencias,
UASLP
BIBLIOGRAFA
1. http://redwood.berkeley.edu/bruno/npb261/aliasing.pdf
2. http://www.princeton.edu/~achaney/tmve/wiki100k/docs/Nyquist%E2%80%93Shannon
_sampling_theorem.html
3. http://www.cursomicros.com/avr/conversor-adc/conversor-adc-del-
avr.html#resolucion-voltajes-referencia
4. http://isa.uniovi.es/~fernando/Programa_II_EUITI_archivos/Practica%20tablero%20C
onversorAD.pdf
5. http://www.ucontrol.com.ar/forosmf/programacion-en-c/conversor-ad-dspic30f/?wap2
6. http://www.microchip.com/TechDoc.aspx?type=CodeExamples
27
Prcticas
de
Laboratorio
Procesamiento
Digital
de
Seales
Facultad
de
Ciencias,
UASLP
INTRODUCCION
x(t)
x(T)=x[1]
x[0] x(2T)=x[2]
x[-1] x[3]
x[-2] x[4]
T=Tiempo de muestreo
TEOREMA DE NYQUIST
El teorema de Nyquist establece que la reconstruccin de una seal x(t) a partir de sus
muestras x[k], es posible si la seal es muestreada al doble de su ancho de banda (al
menos). Por ejemplo, Si la frecuencia ms alta contenida en la seal analgica () es
!"# , entonces para recuperar la seal () debemos de muestrear a una tasa Fs que
cumpla ! 2!"# .
28
Prcticas
de
Laboratorio
Procesamiento
Digital
de
Seales
Facultad
de
Ciencias,
UASLP
1
x1(t) x2(t)
0.8
0.6
0.4
0.2
0.2
x[k]
0.4
0.8
1
0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1
tiempo (seg)
Figura 19. Seales muestredas que describen el fenmeno de traslape: x1(t) 3 Hz, x2(t) 13 Hz, y
Fs=10 Hz.
MATERIAL
1 dsPIC33FJ128GP802.
1 Resistencia de 10 k.
1 Cristal de 20MHz.
2 Capacitores de 30F (cermicos).
1 Capacitor de 4.7 F (tantalio de preferencia).
1 Protoboard.
1 Generador de funciones.
1 Osciloscopio.
1 Fuente variable de CD de 3.3Volts.
ACTIVIDADES
1. Al sistema mnimo, agregar las conexiones mostradas en la figura 20.
2. Cargar al dsPIC el programa proporcionado en la prctica.
3. Configurar la seal de entrada por medio del generador de funciones,
para establecer una seal senoidal positiva con amplitud de 3Vpp (0.15
Volts a 3.15 Volts) y f = 1KHz. Esta seal se introduce en la entrada
analgica del dsPIC (AN4).
4. En el osciloscopio visualizar la seal de entrada, as como la salida
(DAC1RP).
5. Visualizar la salida cuando se realiza un barrido de frecuencia en la seal
de entrada desde 100 Hz hasta 1MHz.
6. Conclusiones.
DIAGRAMA ESQUEMTICO
30
Prcticas
de
Laboratorio
Procesamiento
Digital
de
Seales
Facultad
de
Ciencias,
UASLP
while (1) {
if(flag) {
for(i = 0; i < NUMSAMP; i++){
while(DAC1STATbits.REMPTY != 1); // Espera la conversion D/A.
if(DmaBuffer == 0)
DAC1RDAT = BufferA[i]; // Carga dato al registro
else
DAC1RDAT = BufferB[i]; // Carga dato al registro }
flag = 0;
}
}
return 0;
}
fractional BufferA[NUMSAMP] __attribute__((space(dma))); // Modo de salida al buffer A
fractional BufferB[NUMSAMP] __attribute__((space(dma))); // Modo de salida al buffer
31
Prcticas
de
Laboratorio
Procesamiento
Digital
de
Seales
Facultad
de
Ciencias,
UASLP
IEC0bits.T3IE = 0;
T3CONbits.TON = 1; // Habilita Timer 3
}
void initDma0(void){
DMA0CONbits.AMODE = 0; // Configuracin DMA
DMA0CONbits.MODE = 2;
DMA0PAD = (int)&ADC1BUF0;
DMA0CNT = (NUMSAMP-1);
DMA0REQ = 13;
DMA0STA = __builtin_dmaoffset(BufferA);
DMA0STB = __builtin_dmaoffset(BufferB);
IFS0bits.DMA0IF = 0;
IEC0bits.DMA0IE = 1;
DMA0CONbits.CHEN = 1; // Habilita canal DMA
}
unsigned int DmaBuffer = 0;
int flag = 0;
void __attribute__((interrupt, no_auto_psv)) _DMA0Interrupt(void){
DmaBuffer ^= 1;
flag = 1;
IFS0bits.DMA0IF = 0;
}
void __attribute__((interrupt, no_auto_psv)) _DAC1RInterrupt(void)
{
IFS4bits.DAC1RIF = 0;
}
RESULTADOS
Salida
Entrada
32
Prcticas
de
Laboratorio
Procesamiento
Digital
de
Seales
Facultad
de
Ciencias,
UASLP
Salida
Entrada
Salida
Entrada
BIBLIOGRAFA
1. http://tintoretto.ucsd.edu/jorge/teaching/mae143a/lectures/8sampling.pdf
33
Prcticas
de
Laboratorio
Procesamiento
Digital
de
Seales
Facultad
de
Ciencias,
UASLP
2. http://embeddedcodesource.com/developer/microchip_technology/ce154__adc_to_dac_
loopback
3. http://www.dspguide.com/ch3/2.htm
4. http://es.wikipedia.org/wiki/Teorema_de_muestreo_de_Nyquist-Shannon
5. http://www.microchip.com/stellent/idcplg?IdcService=SS_GET_PAGE&nodeId=1824
&appnote=en539328
6. http://www.microchip.com/TechDoc.aspx?type=CodeExamples
7. http://ww1.microchip.com/downloads/en/DeviceDoc/70183D.pdf
8. http://www.element14.com/community/solutions/2622
34