Documentos de Académico
Documentos de Profesional
Documentos de Cultura
dsPIC33F Practicas PDF
dsPIC33F Practicas PDF
Procesamiento)Digital)de)Señales)
Facultad)de)Ciencias,)UASLP)
)
)
FACULTAD DE CIENCIAS
UASLP
Abril/2013
)
Prácticas)de)Laboratorio)
Procesamiento)Digital)de)Señales)
Facultad)de)Ciencias,)UASLP)
)
CONTENIDO(
)
INTRODUCCIÓN ............................................................................................................ 1)
CARACTERÍSTICAS GENERALES DEL dsPIC33FJ128GP802).......................................)2)
ARQUITECTURA)DEL)dsPIC33FJ128GP802).............................................................................)3)
CREAR NUEVO PROYECTO EN MPLAB IDE)................................................................)4)
SISTEMA MÍNIMO DE CONEXIÓN).................................................................................)8)
PROGRAMACIÓN DE dsPIC)..............................................................................................)8)
Programador MINIPROG+)............................................................................................)8)
PICkit 2 v2.61)................................................................................................................)9)
RESULTADOS)...................................................................................................................)10)
BIBLIOGRAFÍA).................................................................................................................)11)
PRÁCTICA 1.- Puertos de Entrada/Salida. .................................................................... 12)
PRÁCTICA 2.- El Temporizador ................................................................................... 15)
PRÁCTICA 3.- Interrupciones ....................................................................................... 18)
PRÁCTICA 4.- El ADC ................................................................................................. 22)
PRÁCTICA 5.- CONVERSION EN SERIE ADC – DAC ............................................ 28)
)
)
Prácticas)de)Laboratorio)
Procesamiento)Digital)de)Señales)
Facultad)de)Ciencias,)UASLP)
)
INTRODUCCIÓN
Existen dos familias de DSC por parte de Microchip, las series dsPIC30F y dsPIC33F.
El diseño de cada una de las prácticas 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 serán vitales para las tareas de procesamiento digital. En
las secciones subsecuentes se listarán sus características generales, y el esquema
mínimo de conexión.
Las prácticas siguientes se componen de dos partes: (i) la construcción del hardware, y
(ii) la implementación del software. Para el hardware, se describe el material a utilizar y
los esquemas de conexión en cada práctica, y para el desarrollo del software, se
implementan los programas que están 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 programación del dsPIC33F. Todos estos
programas los facilita libremente el fabricante, las cuales aparecen en la bibliografía
para ser descargados desde la página de Microchip. En la siguiente sección se describe
la creación, compilación y programación del dsPIC.
1)
)
Prácticas)de)Laboratorio)
Procesamiento)Digital)de)Señales)
Facultad)de)Ciencias,)UASLP)
)
! Arquitectura Harvard.
! Núcleo de 16 bits.
! Circuito integrado de 28 pines
! Operación de 3.0 – 3.6 Volts.
! Operación 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).
! Comunicación USART.)
! Comunicación I2C.
! Interrupciones externas.
! Rango de temperatura de -40°C a 85°C.
! Optimizado para programar en lenguaje C.
Para conocer todas las especificaciones técnicas se recomienda ver la hoja de datos
proporcionada por el fabricante, la cual se puede ser descargada desde el sitio oficial de
Microchip (ver bibliografía).
2)
)
Prácticas)de)Laboratorio)
Procesamiento)Digital)de)Señales)
Facultad)de)Ciencias,)UASLP)
)
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
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)
)
Prácticas)de)Laboratorio)
Procesamiento)Digital)de)Señales)
Facultad)de)Ciencias,)UASLP)
)
4)
)
Prácticas)de)Laboratorio)
Procesamiento)Digital)de)Señales)
Facultad)de)Ciencias,)UASLP)
)
" Se elige el nombre del proyecto y la ruta donde se guardaran los archivos. En
este ejemplo se llamará “P1”.
" Se muestran las carpetas y los archivos del nuevo proyecto, y seleccionar
“Siguiente >”.
5)
)
Prácticas)de)Laboratorio)
Procesamiento)Digital)de)Señales)
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 creación del nuevo proyecto, se crea un nuevo archivo.
(File → New).
" En esta nueva ventana se escribirá el código de nuestro programa, el cual coloca
en un valor alto los bits 0 y 1 del puerto A. El código se describe a continuación:
#include <p33FJ128GP802.h> // Define el modelo del dsPIC
// CONFIGURACION DE BITS
// PROGRAMA PRINCIPAL
int main(void){
6)
)
Prácticas)de)Laboratorio)
Procesamiento)Digital)de)Señales)
Facultad)de)Ciencias,)UASLP)
)
LATAbits.LATA1=1;
}
" Enseguida seleccionar el icono “Build All”, lo cual permite compilar el programa
y si no existen errores en el mismo, se despliega el aviso “BUILD
SUCCEEDED”
7)
)
Prácticas)de)Laboratorio)
Procesamiento)Digital)de)Señales)
Facultad)de)Ciencias,)UASLP)
)
PROGRAMACIÓN DE dsPIC
Programador MINIPROG+
El programador MINIPROG+ (Figura 2), soporta diversas series de dispositivos PIC y
dsPIC para su programación. Para la serie dsPIC33F la programación se realiza a través
del puerto ICSP+.
8)
)
Prácticas)de)Laboratorio)
Procesamiento)Digital)de)Señales)
Facultad)de)Ciencias,)UASLP)
)
Un esquema general de la conexión del programador a través 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 través del puerto
USB el programador MINIPROG+. En las siguientes imágenes se muestra el
procedimiento para cargar el programa al dsPIC.
9)
)
Prácticas)de)Laboratorio)
Procesamiento)Digital)de)Señales)
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 conexión entre programador y
dsPIC, nos mostrará la siguiente imagen.
Además de mostrar las características del dispositivo, aparecen las opciones de leer,
borrar y programar el dispositivo, cabe mencionar que el software automáticamente
asigna el valor de voltaje de programación, 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
opción “write” para que sea cargado el programa al dsPIC.
RESULTADOS
Para verificar los resultados de este ejemplo, se conectarán 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)
)
Prácticas)de)Laboratorio)
Procesamiento)Digital)de)Señales)
Facultad)de)Ciencias,)UASLP)
)
BIBLIOGRAFÍA
• 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)
)
Prácticas)de)Laboratorio)
Procesamiento)Digital)de)Señales)
Facultad)de)Ciencias,)UASLP)
)
)
PRÁCTICA 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 30ρF (cerámicos).
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 código de programa
proporcionado, compilarlo y programar el dsPIC.
2. Realizar la conexión proporcionada en la figura 6.
3. Verificar los resultados
El programa consiste en leer el bit 0 del puerto A, cuando esté a ‘0’ lógico, estarán
activados los bits 11 y 12 del puerto B, de lo contrario, los bits 11 y 12 tendrán un ‘0’
lógico.
// * * * * 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; // Configuración de los puertos
TRISB=0X0000; // Puerto A como entradas y B como salidas
AD1PCFGL=0XFFFF; // Configuración 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)
)
Prácticas)de)Laboratorio)
Procesamiento)Digital)de)Señales)
Facultad)de)Ciencias,)UASLP)
)
LATBbits.LATB12=0; // Pone a '0' bits 11 y 12 del puerto B
} }
}
Al sistema mínimo de conexión del dsPIC, se deben agregar los componentes mostrados
en la figura 6.
RESULTADOS
Las figura 7 nos muestra la conexión completa para la realización de esta práctica.
13)
)
Prácticas)de)Laboratorio)
Procesamiento)Digital)de)Señales)
Facultad)de)Ciencias,)UASLP)
)
BIBLIOGRAFÍA
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)
)
Prácticas)de)Laboratorio)
Procesamiento)Digital)de)Señales)
Facultad)de)Ciencias,)UASLP)
)
INTRODUCCIÓN
!!"#
!!" =
2
donde FOSC representa la frecuencia de oscilación, la cual está determinada por el
oscilador externo del dsPIC, y que estaría 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:
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)
)
Prácticas)de)Laboratorio)
Procesamiento)Digital)de)Señales)
Facultad)de)Ciencias,)UASLP)
)
MATERIAL
1 dsPIC33FJ128GP802.
1 Resistencia de 10 kΩ.
1 Cristal de 20MHz.
2 Capacitores de 30ρF (cerámicos).
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 mínimo del dsPIC.
2. Cargar al dsPIC el programa proporcionado en la práctica.
3. Visualizar en osciloscopio la salida (RB13).
4. Realizar el cálculo 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 función de retardo
LATB=0X0000; // Pone a '0' bit13
retardo_ms(); // Llama función de retardo
}
}
//**** Función Retardo ****************
void retardo_ms( void ){ // Función de retardo
T1CON = 0; // Resetear el timer
TMR1 = 0;
16)
)
Prácticas)de)Laboratorio)
Procesamiento)Digital)de)Señales)
Facultad)de)Ciencias,)UASLP)
)
IPC0bits.T1IP = 1; // Interrupción con prioridad 1
PR1 = 781.25; // Valor en el registro (retardo de 20ms)
IFS0bits.T1IF = 0; // Interrupción 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 generación 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).
BIBLIOGRAFÍA
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)
)
Prácticas)de)Laboratorio)
Procesamiento)Digital)de)Señales)
Facultad)de)Ciencias,)UASLP)
)
INTRODUCCIÓN
Una interrupción es una señal interna o externa recibida por el dsPIC, la cual indica que
se debe "interrumpir" el curso de ejecución actual (suspensión temporal) y pasar a
ejecutar una subrutina. Una vez finalizada la subrutina de interrupción, se continúa con
la ejecución del programa principal.
Cuando existen varias peticiones de interrupción a la vez, se establece un nivel de
prioridad para cada una de ellas. El dsPIC de acuerdo al nivel de interrupción, ejecutará
cada una de ellas, atendiendo primero a la de mayor nivel de prioridad hasta atender
cada una de las peticiones de interrupción. Una vez completadas las interrupciones,
regresará a la línea del programa donde se encontraba antes del llamado de la
interrupción.
MATERIAL
1 dsPIC33FJ128GP802.
1 Resistencia de 10 kΩ.
1 Resistencia de 1 kΩ.
1 Cristal de 20MHz.
2 Capacitores de 30ρF (cerámicos).
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 mínimo, agregar las conexiones mostradas en la figura 10.
2. Cargar al dsPIC el programa proporcionado en la práctica.
3. Visualizar la salida del programa sin ejecutar la interrupción.
4. Visualizar la salida del programa al ejecutar INT0.
DIAGRAMA ESQUEMÁTICO
18)
)
Prácticas)de)Laboratorio)
Procesamiento)Digital)de)Señales)
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 lógicos (encendido/apagado del led de 5 mm) cada 1.2
segundos (1,200 ms); una vez que se habilita la interrupción (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 interrupción, 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 interrupción
19)
)
Prácticas)de)Laboratorio)
Procesamiento)Digital)de)Señales)
Facultad)de)Ciencias,)UASLP)
)
LATBbits.LATB15=0; // '0' en RD3
IFS0bits.INT0IF = 0; // Salida de la función
}
void interrupcion( void ) { // Configuración de la interrupción
INTCON2bits.INT0EP = 1;
IPC0bits.INT0IP = 4;
IEC0bits.INT0IE = 1; // Habilita Interrupción
}
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)
)
Prácticas)de)Laboratorio)
Procesamiento)Digital)de)Señales)
Facultad)de)Ciencias,)UASLP)
)
BIBLIOGRAFÍA
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)
)
Prácticas)de)Laboratorio)
Procesamiento)Digital)de)Señales)
Facultad)de)Ciencias,)UASLP)
)
)
INTRODUCCIÓN
Un ADC de n bits puede representar hasta 2n valores digitales, de modo que a la entrada
analógica 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 número
infinitos de valores analógicos, pero con n bits, solo se pueden formar 2n valores
discretos diferentes. Por lo tanto habrá valores analógicos que no podrán ser
representados con exactitud (error de cuantización).
!!"#!! − !!"#!
!"#$%&'($)!!"#!!"# =
2! − 1
MATERIAL
1 dsPIC33FJ128GP802.
1 Resistencia de 10 kΩ.
1 Cristal de 20MHz.
2 Capacitores de 30ρF (cerámicos).
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 mínimo, agregar las conexiones mostradas en la figura 14.
22)
)
Prácticas)de)Laboratorio)
Procesamiento)Digital)de)Señales)
Facultad)de)Ciencias,)UASLP)
)
2. Cargar al dsPIC el programa proporcionado en la práctica.
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 ESQUEMÁTICO
// * * * * 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)
)
Prácticas)de)Laboratorio)
Procesamiento)Digital)de)Señales)
Facultad)de)Ciencias,)UASLP)
)
int main(void); // Declaración de funciones
void retardo_ms( unsigned int ms );
void adc (void);
// / / / / / / PROGRAMA PRINCIPAL / / / / / / / / / / /
int main(void){
TRISB=0X0000; // Puerto B como salida
adc(); // Llama función 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)
)
Prácticas)de)Laboratorio)
Procesamiento)Digital)de)Señales)
Facultad)de)Ciencias,)UASLP)
)
RESULTADOS
En la figura 14, se muestra el esquema completo de conexión con una entrada analógica
de 0 volts.
La figura 15 muestra el valor digitalizado cuando se tiene una entrada analógica de 0.5
Volts, cabe mencionar que el bit menos significativo está en el lado izquierda de la
figura.
25)
)
Prácticas)de)Laboratorio)
Procesamiento)Digital)de)Señales)
Facultad)de)Ciencias,)UASLP)
)
Finalmente, la figura 16 muestra una entrada analógica de 1.6 Volts en RA0, y la figura
17 cuando se tienen la máxima entrada aceptada en RA0 (3.3 Volts).
26)
)
Prácticas)de)Laboratorio)
Procesamiento)Digital)de)Señales)
Facultad)de)Ciencias,)UASLP)
)
BIBLIOGRAFÍA
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)
)
Prácticas)de)Laboratorio)
Procesamiento)Digital)de)Señales)
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 reconstrucción de una señal x(t) a partir de sus
muestras x[k], es posible si la señal es muestreada al doble de su ancho de banda (al
menos). Por ejemplo, Si la frecuencia más alta contenida en la señal analógica !(!) es
!!"# , entonces para recuperar la señal !(!) debemos de muestrear a una tasa Fs que
cumpla !! ≥ 2!!"# .
28)
)
Prácticas)de)Laboratorio)
Procesamiento)Digital)de)Señales)
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. Señales muestredas que describen el fenómeno 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 30ρF (cerámicos).
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 mínimo, agregar las conexiones mostradas en la figura 20.
2. Cargar al dsPIC el programa proporcionado en la práctica.
3. Configurar la señal de entrada por medio del generador de funciones,
para establecer una señal senoidal positiva con amplitud de 3Vpp (0.15
Volts a 3.15 Volts) y f = 1KHz. Esta señal se introduce en la entrada
analógica del dsPIC (AN4).
4. En el osciloscopio visualizar la señal de entrada, así como la salida
(DAC1RP).
5. Visualizar la salida cuando se realiza un barrido de frecuencia en la señal
de entrada desde 100 Hz hasta 1MHz.
6. Conclusiones.
DIAGRAMA ESQUEMÁTICO
30)
)
Prácticas)de)Laboratorio)
Procesamiento)Digital)de)Señales)
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)
)
Prácticas)de)Laboratorio)
Procesamiento)Digital)de)Señales)
Facultad)de)Ciencias,)UASLP)
)
IEC0bits.T3IE = 0;
T3CONbits.TON = 1; // Habilita Timer 3
}
void initDma0(void){
DMA0CONbits.AMODE = 0; // Configuración 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)
)
Prácticas)de)Laboratorio)
Procesamiento)Digital)de)Señales)
Facultad)de)Ciencias,)UASLP)
)
Salida)
Entrada)
Salida)
Entrada)
BIBLIOGRAFÍA
1. http://tintoretto.ucsd.edu/jorge/teaching/mae143a/lectures/8sampling.pdf
33)
)
Prácticas)de)Laboratorio)
Procesamiento)Digital)de)Señales)
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)
)