37
!"#$%&$'( *+ ,'-."'%."&. !".$+('/&+0%. 1&2&%'3 *+ 4+5'3+( 6'$73%'* *+ 8&+0$&'(9 :;4,! PROCESAMIENTO DIGITAL DE SEÑALES PRÁCTICAS DE LABORATORIO CON dsPIC33F Ver 1.0 M.C. GILBERTO SANTILLÁN TOVAR DR. DANIEL U. CAMPOS DELGADO FACULTAD DE CIENCIAS UASLP Abril/2013

DsPIC Practicas Abril2013 VF

Embed Size (px)

Citation preview

8/13/2019 DsPIC Practicas Abril2013 VF

http://slidepdf.com/reader/full/dspic-practicas-abril2013-vf 1/36

8/13/2019 DsPIC Practicas Abril2013 VF

http://slidepdf.com/reader/full/dspic-practicas-abril2013-vf 2/36

!"#$%&$'( *+ ,'-."'%."&.

!".$+('/&+0%. 1&2&%'3 *+ 4+5'3+(

6'$73%'* *+ 8&+0$&'(9 :;4,!

!"#$%#&'"

INTRODUCCIÓN ............................................................................................................ 1 

CARACTERÍSTICAS GENERALES DEL dsPIC33FJ128GP802 <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< = 

;>?:@AB8A:>; 1B, *(!@8CC6DE=FG!FH= <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< C 

CREAR NUEVO PROYECTO EN MPLAB IDE <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< I 

SISTEMA MÍNIMO DE CONEXIÓN <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< F 

PROGRAMACIÓN DE dsPIC <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< F 

Programador MINIPROG+ <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< F PICkit 2 v2.61 <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< <<<<<<<<<<<<<<<< J 

RESULTADOS <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< EH 

BIBLIOGRAFÍA <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< EE 

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 

8/13/2019 DsPIC Practicas Abril2013 VF

http://slidepdf.com/reader/full/dspic-practicas-abril2013-vf 3/36

!"#$%&$'( *+ ,'-."'%."&.

!".$+('/&+0%. 1&2&%'3 *+ 4+5'3+(

6'$73%'* *+ 8&+0$&'(9 :;4,!

E

INTRODUCCIÓN

Los DSC (Controladores Digitales de Señales) son dispositivos dotados de recursos

físicos y lógicos necesarios para el tratamiento digital de señales. La empresa Microchip

ha unido las características esenciales de un microcontrolador y un procesador digital de

señales (DSP, por sus siglas en inglés) en un dispositivo llamado dsPIC, el cual combina

las funciones típicas de los microcontroladores con las del procesamiento digital de

señales. Los DSC se utilizan en una amplia gama de aplicaciones, en las cuales

 podemos encontrar: telecomunicaciones, procesamiento de señales, control de motores,

convertidores de energía, instrumentación biomédica, etc.

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.

Dada la similitud entre los microcontroladores PIC y los Controladores digitales de

señales dsPIC, en cuanto a arquitectura y conjunto de instrucciones, los estudiantes que

hayan tenido algún acercamiento con los PIC, se les facilitará la programación de estos

nuevos dispositivos.

8/13/2019 DsPIC Practicas Abril2013 VF

http://slidepdf.com/reader/full/dspic-practicas-abril2013-vf 4/36

!"#$%&$'( *+ ,'-."'%."&.

!".$+('/&+0%. 1&2&%'3 *+ 4+5'3+(

6'$73%'* *+ 8&+0$&'(9 :;4,!

=

CARACTERÍSTICAS GENERALES DEL dsPIC33FJ128GP802

A continuación se listan las principales características del dsPIC33FJ128GP802:

!  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 deMicrochip (ver bibliografía).

8/13/2019 DsPIC Practicas Abril2013 VF

http://slidepdf.com/reader/full/dspic-practicas-abril2013-vf 5/36

!"#$%&$'( *+ ,'-."'%."&.

!".$+('/&+0%. 1&2&%'3 *+ 4+5'3+(

6'$73%'* *+ 8&+0$&'(9 :;4,!

C

16

OSC1/CLKIOSC2/CLKO

VDD, VSS

TimingGeneration

MCLR

Power-upTimer 

Oscillator Start-up Timer 

Power-onReset

WatchdogTimer 

Brown-out

Reset

Precision

ReferenceBand Gap

FRC/LPRCOscillators

Regulator Voltage

VCAP/VDDCORE

IC1, 2, 7, 8 I2C1

PORTA

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.

InstructionDecode and

Control

PCH PCL

16

Program Counter 

16-bit ALU

23

23

24

23

Instruction Reg

PCU

16 x 16W Register Array

ROM Latch

16

EA MUX

 16

 16

8

Interrupt

Controller 

PSV and TableData Access

Control Block

StackControl

Logic

LoopControlLogic

Data Latch

 AddressLatch

 Address Latch

Program Memory

Data Latch

 

   L   i   t  e  r  a   l   D  a   t  a

 16  16

16

 

16

Data Latch

 AddressLatch

16

X RAM Y RAM

16

Y Data Bus

X Data Bus

DSP Engine

Divide Support

16

Control Signalsto Various Blocks

 ADC1Timers

PORTB

 Address Generator Units

1-5

CNx

UART1, 2OC/

PWM1-4

DCI

Remappable

Pins

DMARAM

DMA

Controller PORTC

SPI1, 2

ECAN1

DAC1

Comparator 2 Ch.

RTCC

PMP/EPSP

 

 )*+,&$%!$,*) '%- ./0&!112345670685

8/13/2019 DsPIC Practicas Abril2013 VF

http://slidepdf.com/reader/full/dspic-practicas-abril2013-vf 6/36

!"#$%&$'( *+ ,'-."'%."&.

!".$+('/&+0%. 1&2&%'3 *+ 4+5'3+(

6'$73%'* *+ 8&+0$&'(9 :;4,!

I

CREAR NUEVO PROYECTO EN MPLAB IDE

MPLAB IDE es un software propio de Microchip, el cual permite seleccionar losdistintos DSC soportados para su programación. Una vez instalados el softwareMPLAB IDE, Compilador C30 y PICkit 2, se listan a continuación los pasos para lacreación de un nuevo proyecto, compilación del proyecto (creación del archivo .HEX) y

 programación del dsPIC.

"  En el menú principal del programa MPLAB IDE, ir a al submenú  Project ! 

 Project Wizard .

"  Seleccionar el modelo del dispositivo que se va a emplear y dar clic en“Siguiente >”.

"  Seleccionar el compilador y la ruta del “toolsuite” (generalmente localizada enC:\Archivos de programa\Microchip\MPLAB C30\bin\pic30-gcc.exe)

8/13/2019 DsPIC Practicas Abril2013 VF

http://slidepdf.com/reader/full/dspic-practicas-abril2013-vf 7/36

!"#$%&$'( *+ ,'-."'%."&.

!".$+('/&+0%. 1&2&%'3 *+ 4+5'3+(

6'$73%'* *+ 8&+0$&'(9 :;4,!

K

"  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 >”. 

8/13/2019 DsPIC Practicas Abril2013 VF

http://slidepdf.com/reader/full/dspic-practicas-abril2013-vf 8/36

!"#$%&$'( *+ ,'-."'%."&.

!".$+('/&+0%. 1&2&%'3 *+ 4+5'3+(

6'$73%'* *+ 8&+0$&'(9 :;4,!

L

"  La última ventana nos muestra el modelo de dsPIC que se utilizará, compiladory 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 colocaen 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

 _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){

TRISA=0X0000; // Configura el puerto A como salida. // 0-Salidas; 1-Entradas

 LATAbits.LATA0=1; //Encendemos los bits 0 y 1 del puerto A

8/13/2019 DsPIC Practicas Abril2013 VF

http://slidepdf.com/reader/full/dspic-practicas-abril2013-vf 9/36

!"#$%&$'( *+ ,'-."'%."&.

!".$+('/&+0%. 1&2&%'3 *+ 4+5'3+(

6'$73%'* *+ 8&+0$&'(9 :;4,!

M

 LATAbits.LATA1=1; }

"  Guardamos el nuevo archivo con la extensión .c

"  En el menú “ Project ”, se escoge “ Add files to Project…” y selecciona el archivo previamente guardado con la extensión .c.

"  Enseguida seleccionar el icono “ Build All ”, lo cual permite compilar el programay si no existen errores en el mismo, se despliega el aviso “ BUILD

SUCCEEDED”

"  Después de compilar, se habrá creado el archivo .HEX, el cual se descarga aldsPIC a través de la comunicación PICkit 2/MINIPROG+.

8/13/2019 DsPIC Practicas Abril2013 VF

http://slidepdf.com/reader/full/dspic-practicas-abril2013-vf 10/36

!"#$%&$'( *+ ,'-."'%."&.

!".$+('/&+0%. 1&2&%'3 *+ 4+5'3+(

6'$73%'* *+ 8&+0$&'(9 :;4,!

F

SISTEMA MÍNIMO DE CONEXIÓN

Para trabajar con el dsPIC33FJ128GP802, se requiere una conexión mínima antes deiniciar cualquier proyecto. En la figura 1, se muestra el esquema de conexión de cadauno de los pines necesarios para la programación del dispositivo. La mayoría de los

 pines son multiplexados, por lo que durante la programación los pines conectados aICSP+ se emplean para la descarga del programa. Una vez que se realizó la

 programación, éstos pines tendrán la función que se les asignó en el programa.

Figura 1. Esquema mínimo de conexión.

PROGRAMACIÓN DE dsPIC

Una vez realizado el esquema mínimo de conexión, se procederá a grabar el dispositivo,lo cual se realiza a través de la conexión entre el software PICkit 2 y el programadoruniversal MINIPROG+, ya que a través de estas herramientas se grabará en el dsPIC el

 programa realizado (archivo .HEX).

Programador MINIPROG+El programador MINIPROG+ (Figura 2), soporta diversas series de dispositivos PIC ydsPIC para su programación. Para la serie dsPIC33F la programación se realiza a travésdel puerto ICSP+.

Figura 2. Programador MINIPROG+.

8/13/2019 DsPIC Practicas Abril2013 VF

http://slidepdf.com/reader/full/dspic-practicas-abril2013-vf 11/36

!"#$%&$'( *+ ,'-."'%."&.

!".$+('/&+0%. 1&2&%'3 *+ 4+5'3+(

6'$73%'* *+ 8&+0$&'(9 :;4,!

J

Un esquema general de la conexión del programador a través de ICSP+ ( In Circuit

Serial Programming ) se muestra en las figura 3.

Figura 3. Esquema de Conexión ICSP+

El dsPIC33FJ128GP802, tiene 3 canales para ser programado, por lo que se debenidentificar los pines correspondientes para realizar la conexión adecuada con el

 programador. En la figura 4 se muestra el esquema de conexión utilizando el canal 1(PGEDx, PGECx).

Figura 4. Conexión ICSP+!dsPIC33FJ128GP802.

Nota: Retirar el voltaje de alimentación del dsPIC cuando se vaya a programar eldispositivo, ya que se puede dejar la conexión mínima al momento de programar elcircuito mediante el ICSP+.

PICkit 2 v2.61

Con el software PICkit 2, podemos programar el dsPIC, conectando a través del puertoUSB el programador MINIPROG+. En las siguientes imágenes se muestra el

 procedimiento para cargar el programa al dsPIC.

8/13/2019 DsPIC Practicas Abril2013 VF

http://slidepdf.com/reader/full/dspic-practicas-abril2013-vf 12/36

!"#$%&$'( *+ ,'-."'%."&.

!".$+('/&+0%. 1&2&%'3 *+ 4+5'3+(

6'$73%'* *+ 8&+0$&'(9 :;4,!

EH

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 ydsPIC, 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áticamenteasigna el valor de voltaje de programación, que como se ha mencionado anteriormenteserá de 3.3 Volts. En el menú File !  Import Hex File, se selecciona el archivo .HEXque se generó al compilar el programa. Una vez seleccionado el programa se ejecuta laopción “write” para que sea cargado el programa al dsPIC.

Si la programación fue realizada con éxito nos mostrará “ Programming Successful ”, yenseguida se procederá a desconectar la interfaz ICSP+ del 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 puedevisualizar en la figura 5.

8/13/2019 DsPIC Practicas Abril2013 VF

http://slidepdf.com/reader/full/dspic-practicas-abril2013-vf 13/36

!"#$%&$'( *+ ,'-."'%."&.

!".$+('/&+0%. 1&2&%'3 *+ 4+5'3+(

6'$73%'* *+ 8&+0$&'(9 :;4,!

EE

Figura 5. Bits 0 y 1 del Puerto A en “1” lógico.

BIBLIOGRAFÍA

A continuación se listan los “enlaces” de donde se pueden descargar de manera gratuitalos diversos programas y manuales necesarios para la programación deldsPIC33FJ128GP802.

•   MPLAB IDE v8.89http://www.microchip.com/stellent/idcplg?IdcService=SS_GET_PAGE&nodeId=1406&dDocNa

me=en023073 

•  Compilador C30 versión estudiantehttp://www.microchip.com/stellent/idcplg?IdcService=SS_GET_PAGE&nodeId=1406&dDocNa

me=en536656  

•   Pickit2 v2.61http://www.microchip.com/stellent/idcplg?IdcService=SS_GET_PAGE&nodeId=1406&dDocNa

me=en023805 

•   Datasheet dsPIC33FJ128GP802http://ww1.microchip.com/downloads/en/devicedoc/70292d.pdf  

•   Manual De Compilador C30http://ww1.microchip.com/downloads/en/devicedoc/c30_users_guide_51284f.pdf  

•   Manual de PICkit 2

http://ww1.microchip.com/downloads/en/DeviceDoc/51553B.pdf  

8/13/2019 DsPIC Practicas Abril2013 VF

http://slidepdf.com/reader/full/dspic-practicas-abril2013-vf 14/36

!"#$%&$'( *+ ,'-."'%."&.

!".$+('/&+0%. 1&2&%'3 *+ 4+5'3+(

6'$73%'* *+ 8&+0$&'(9 :;4,!

E=

PRÁCTICA 1.- Puertos de Entrada/Salida.

OBJETIVO: configurar los puertos como entradas o salidas, y de acuerdo a un pin de

entrada, decidir el estado lógico de un pin de 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

DESCRIPCIÓN DEL PROGRAMA

El programa consiste en leer el bit 0 del puerto A, cuando esté a ‘0’ lógico, estaránactivados los bits 11 y 12 del puerto B, de lo contrario, los bits 11 y 12 tendrán un ‘0’lógico.

#include <p33FJ128GP802.h> // Incluir librería del dsPIC a utilizar

 // * * * * 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

8/13/2019 DsPIC Practicas Abril2013 VF

http://slidepdf.com/reader/full/dspic-practicas-abril2013-vf 15/36

!"#$%&$'( *+ ,'-."'%."&.

!".$+('/&+0%. 1&2&%'3 *+ 4+5'3+(

6'$73%'* *+ 8&+0$&'(9 :;4,!

EC

 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 mostradosen la figura 6.

Figura 6. Esquema de conexión para la práctica 1.

RESULTADOS

Las figura 7 nos muestra la conexión completa para la realización de esta práctica.

Figura 7. Conexión de componentes para la práctica 1.

En la figura 8 se muestran activos los led’s, debido a que en la entrada se presenta un‘0’ lógico. En esta práctica se utilizaron los pines RA0, RB11 y RB12, pero podemosconfigurar cualquiera de las 21 entradas/salidas que posee el dsPIC.

Figura 8. Estados habilitados RB11 y RB12 al estar RA0 en ‘0’.

8/13/2019 DsPIC Practicas Abril2013 VF

http://slidepdf.com/reader/full/dspic-practicas-abril2013-vf 16/36

!"#$%&$'( *+ ,'-."'%."&.

!".$+('/&+0%. 1&2&%'3 *+ 4+5'3+(

6'$73%'* *+ 8&+0$&'(9 :;4,!

EI

BIBLIOGRAFÍA

Enseguida se presentan “enlaces” donde el estudiante puede encontrar diversos

ejemplos de aplicaciones para entradas/salidas del dsPIC.

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/  

8/13/2019 DsPIC Practicas Abril2013 VF

http://slidepdf.com/reader/full/dspic-practicas-abril2013-vf 17/36

!"#$%&$'( *+ ,'-."'%."&.

!".$+('/&+0%. 1&2&%'3 *+ 4+5'3+(

6'$73%'* *+ 8&+0$&'(9 :;4,!

EK

PRÁCTICA 2.- El Temporizador

OBJETIVO: configurar el temporizador para generar tiempos muertos o retardos.

INTRODUCCIÓN

Un temporizador es un dispositivo configurable, que permite medir el tiempo. Una vezque ha transcurrido el lapso de tiempo deseado, se emite una alarma, la cual indica queha terminado el tiempo programado. Para la configuración del temporizador esnecesario definir FCY (Frecuencia de Instrucción), la cual está definida por:

!!"   !!!"#

donde FOSC  representa la frecuencia de oscilación, la cual está determinada por eloscilador externo del dsPIC, y que estaría dada por !!"#   ! !"!"#. Por lo queutilizando un reloj externo de 20 MHz, el dsPIC puede realizar 10 millones deinstrucciones 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 (!!" ! !!. En el registro T1CON, se puede utilizar un divisor de frecuencia (Prescaler), el cual se configura con un valor de prescaler de 256.

Para la práctica, se calculará un retardo de 20 ms:

!!"#   ! !" !"# !!"   !

!" !"#!

! !" !"# Prescaler: 256

! !!"   ! !"!!"#!!!" 

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 aeste valor se emitirá una alarma.

Para la configuración de la frecuencia de oscilación, se dividió mediante el prescaler, pero cabe hacer mención que existe dentro del dsPIC un multiplicador (PLL) quetambién permite incrementar la frecuencia de oscilación.

8/13/2019 DsPIC Practicas Abril2013 VF

http://slidepdf.com/reader/full/dspic-practicas-abril2013-vf 18/36

!"#$%&$'( *+ ,'-."'%."&.

!".$+('/&+0%. 1&2&%'3 *+ 4+5'3+(

6'$73%'* *+ 8&+0$&'(9 :;4,!

EL

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 Osciloscopio1 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 25Hz (periodo de 40 ms# 20 ms en estado alto y 20 ms en estado bajo).

DESCRIPCIÓN DEL PROGRAMA

El código de programa que a continuación se presenta, nos permite generar un cambiode estado 0 ó 1 lógico en la salida. Este cambio estará determinado por el valor que seacargado en el registro del temporizador, con lo que podemos obtener una salida que estécambiando su nivel a determinado tiempo.

#include <p33FJ128GP802.h> // Incluir libreria del pic a utilizar

// * * * * 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 );

void retardo_ms (void); // Definen las funcionesint main (void);

// * * * P R O G R A M A * * *int main(void) {

TRISB=0B1101111111111111; // Configura bit13 del puerto B como salidawhile(1){

LATB=0B0010000000000000; // Pone a '1' bit13retardo_ms(); // Llama función de retardoLATB=0X0000; // Pone a '0' bit13retardo_ms(); // Llama función de retardo}

}//**** Función Retardo ****************

void retardo_ms( void ){ // Función de retardoT1CON = 0; // Resetear el timerTMR1 = 0;

8/13/2019 DsPIC Practicas Abril2013 VF

http://slidepdf.com/reader/full/dspic-practicas-abril2013-vf 19/36

!"#$%&$'( *+ ,'-."'%."&.

!".$+('/&+0%. 1&2&%'3 *+ 4+5'3+(

6'$73%'* *+ 8&+0$&'(9 :;4,!

EM

IPC0bits.T1IP = 1; // Interrupción con prioridad 1PR1 = 781.25; // Valor en el registro (retardo de 20ms)IFS0bits.T1IF = 0; // Interrupción cuando llega a 0IEC0bits.T1IE = 0;T1CON = 0X8030; // Prescaler 1:256while(IFS0bits.T1IF==0);

}

RESULTADOS

En la figura 9, se puede visualizar la salida del dsPIC (RB13) y la generación del tiempomuerto en el osciloscopio, el cual se definió de 20 ms para la parte alta de la ondacuadrada (3.3 V), y otros 20 ms para la parte baja (0 V).

Figura 9. Retardo de 20 ms generado con dsPIC

BIBLIOGRAFÍA

En los siguientes enlaces, se presenta teoría, práctica y configuración de lostemporizadores. Cabe mencionar que el dsPIC33FJ128GP802 tiene 5 temporizadores de16 bits.

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  

8/13/2019 DsPIC Practicas Abril2013 VF

http://slidepdf.com/reader/full/dspic-practicas-abril2013-vf 20/36

!"#$%&$'( *+ ,'-."'%."&.

!".$+('/&+0%. 1&2&%'3 *+ 4+5'3+(

6'$73%'* *+ 8&+0$&'(9 :;4,!

EF

PRÁCTICA 3.- Interrupciones

OBJETIVO: Comprender el concepto de interrupciones y su nivel de prioridad.

INTRODUCCIÓN

Una interrupción es una señal interna o externa recibida por el dsPIC, la cual indica quese debe "interrumpir" el curso de ejecución actual (suspensión temporal) y pasar aejecutar una subrutina. Una vez finalizada la subrutina de interrupción, se continúa conla 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 atendercada 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 lainterrupció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

Para la realización de la práctica, al sistema mínimo de conexiones del dsPIC agregarlos siguientes componentes:

8/13/2019 DsPIC Practicas Abril2013 VF

http://slidepdf.com/reader/full/dspic-practicas-abril2013-vf 21/36

!"#$%&$'( *+ ,'-."'%."&.

!".$+('/&+0%. 1&2&%'3 *+ 4+5'3+(

6'$73%'* *+ 8&+0$&'(9 :;4,!

EJ

Figura 10. Conexión para la práctica 3

DESCRIPCIÓN DEL PROGRAMA

El siguiente programa realiza dos procesos. El proceso principal consiste en generar unasecuencia alterno de estados lógicos (encendido/apagado del led de 5 mm) cada 1.2segundos (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 10mm durante 6 segundos (6,000 ms). Una vez concluida la rutina de interrupción, seregresará 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 );

int main(void); // Declaración de funcionesvoid retardo_ms( unsigned int ms );void interrupcion(void);

// / / / / / / PROGRAMA PRINCIPAL / / / / / / / / / / /

int main(void){

while(1){ // Ciclo del programaTRISB=0x5FFF; // bit 13 y 15 como salidaLATBbits.LATB13=1; // '1' bit 13retardo_ms(1200);LATBbits.LATB13=0; // '0' bit 13retardo_ms(1200);interrupcion();}

}void __attribute__((__interrupt__)) _INT0Interrupt(void){ //Proceso de interrupción

LATBbits.LATB15=1; // '1' en RB15

retardo_ms(2000);retardo_ms(2000); // Retardoretardo_ms(2000);

3+* EH //

3+* K//

8/13/2019 DsPIC Practicas Abril2013 VF

http://slidepdf.com/reader/full/dspic-practicas-abril2013-vf 22/36

!"#$%&$'( *+ ,'-."'%."&.

!".$+('/&+0%. 1&2&%'3 *+ 4+5'3+(

6'$73%'* *+ 8&+0$&'(9 :;4,!

=H

LATBbits.LATB15=0; // '0' en RD3IFS0bits.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 0IPC0bits.T1IP =1;

 periodo= (( fcy/256)*ms)/1000;PR1= periodo; // Tiempo en el registro del timerIFS0bits.T1IF=0; // Limpia bandera del timerIEC0bits.T1IE=0; // Deshabilita timer

T1CON=0x8030; // configura TICONwhile(IFS0bits.T1IF==0);

}

RESULTADOS

En la figura 11, se puede observar las conexiones necesarias para la realización de la práctica. Los led´s nos permitirán visualizar la ejecución del programa principal (led de5mm, RB13) y cuando se ejecute la interrupción se visualizará mediante el led de10mm, conectado a RB15.

Figura 11. Conexión en protoboard para la práctica 3.

La figura 12 nos muestra la ejecución del programa principal, el cual consiste en unencendido/apagado del led de 5mm cada 1.2 seg.

Figura 12. Muestra de la ejecución del programa principal.

8/13/2019 DsPIC Practicas Abril2013 VF

http://slidepdf.com/reader/full/dspic-practicas-abril2013-vf 23/36

!"#$%&$'( *+ ,'-."'%."&.

!".$+('/&+0%. 1&2&%'3 *+ 4+5'3+(

6'$73%'* *+ 8&+0$&'(9 :;4,!

=E

Mientras tanto, la figura 13 muestra la ejecución de la subrutina de interrupción(encendido del led de 10mm, RB15). Una vez que se concluye la subrutina, se regresa a

la ejecución del programa principal.

Figura 13. Activación de la interrupción mediante un push-button.

BIBLIOGRAFÍA

Para más aplicaciones, niveles de interrupción y ejemplos de programación, se proporciona la siguiente lista de páginas electrónicas donde el estudiante podráconsultar los ejemplos.

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/  

8/13/2019 DsPIC Practicas Abril2013 VF

http://slidepdf.com/reader/full/dspic-practicas-abril2013-vf 24/36

!"#$%&$'( *+ ,'-."'%."&.

!".$+('/&+0%. 1&2&%'3 *+ 4+5'3+(

6'$73%'* *+ 8&+0$&'(9 :;4,!

==

PRÁCTICA 4.- El ADC

OBJETIVO: realizar la conversión de señales analógicas en señales digitales,

utilizando el ADC interno del dsPIC, con resolución de 10 y 12 bits.

INTRODUCCIÓN

El convertidor Analógico/Digital (ADC), es un circuito que toma valores analógicos detensión y los convierte en una palabra binaria. Los valores que definen los límites de lastensiones a medir se denominan voltajes de referencia, y se representan por VREF- (elmínimo) y VREF+ (el máximo). La resolución del convertidor queda determinada por lacantidad de bits que representan el resultado de la conversión. El dsPIC33FJ128GP802tiene dos convertidores analógico/digital, uno con resolución de 10 bits y el otro de 12

 bits.Un ADC de n bits puede representar hasta 2n valores digitales, de modo que a la entradaanalógica igual a VREF-  se le asignará el valor 0 digital, y la entrada igual a VREF+ leasignará el valor  2n  – 1 digital. Entre VREF- y VREF+  se pueden presentar un númeroinfinitos de valores analógicos, pero con n bits, solo se pueden formar 2n valoresdiscretos diferentes. Por lo tanto habrá valores analógicos que no podrán serrepresentados con exactitud (error de cuantización).

La diferencia entre dos valores analógicos correspondientes a dos valores digitalesconsecutivos se define como la resolución de voltaje del ADC.

!"#$%&'($) !"#  !"#   !

!!"#!  ! !!"#!!! ! !

 

Para la realización de esta práctica se considera el ADC con resolución de 12 bits,donde !!"#!   ! ! !"#$% y !!"#!   ! !!! !"#$%, por lo que la resolución del ADC será de0.805 mV. Si se considera el ADC de 10 bits, se tendría una resolución de 3.22 mV.

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.

8/13/2019 DsPIC Practicas Abril2013 VF

http://slidepdf.com/reader/full/dspic-practicas-abril2013-vf 25/36

!"#$%&$'( *+ ,'-."'%."&.

!".$+('/&+0%. 1&2&%'3 *+ 4+5'3+(

6'$73%'* *+ 8&+0$&'(9 :;4,!

=C

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

Para la realización de la práctica, al sistema mínimo de conexiones del dsPIC agregarlos siguientes componentes:

Figura 14. Esquema de conexión para la práctica 4.

DESCRIPCIÓN DEL PROGRAMA

El programa lee una entrada analógica de 0 – 3.3 Volts en CD (VREF+), la cual esconvertida en señal digital con resolución de 12 bits mediante el ADC interno del

dsPIC. Una vez realizada la conversión, el dato es enviado al puerto B donde se puedevisualizar de manera digital a través de los leds.

#include <p33FJ128GP802.h>

// * * * * 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 );

#define fcy 16000000

8/13/2019 DsPIC Practicas Abril2013 VF

http://slidepdf.com/reader/full/dspic-practicas-abril2013-vf 26/36

!"#$%&$'( *+ ,'-."'%."&.

!".$+('/&+0%. 1&2&%'3 *+ 4+5'3+(

6'$73%'* *+ 8&+0$&'(9 :;4,!

=I

int main(void); // Declaración de funcionesvoid retardo_ms( unsigned int ms );void adc (void);

// / / / / / / PROGRAMA PRINCIPAL / / / / / / / / / / /

int main(void){TRISB=0X0000; // Puerto B como salidaadc(); // Llama función adcAD1CON1bits.ADON = 1; // Habilita ADC

while(1){AD1CON1bits.SAMP = 1; // Bit para habilitar muestreoretardo_ms(3); // Tiempo para realizar el muestreoAD1CON1bits.SAMP = 0; // Retiene dato

while(!AD1CON1bits.DONE); //Se ha realizado la conversión?PORTB=ADC1BUF0; // Datos se guardan en ADC1BUF0 y se envía al puerto B

}}// / / / / / / CONFIGURACION DEL ADC / / / / / / / / /void adc (void){

TRISA = 0x0001; // Entrada analógica RA0AD1PCFGL = 0x0000; // Todas entradas analógicasAD1CON1bits.AD12B=1; // 1=12 bits resolución y muestreo secuencial

// de los canales; 0= 10 bits ADCAD1CON1bits.ASAM=0; // El muestreo inicia cuando bit SAMP=1AD1CON1bits.SSRC=0; // Termina el muestreo e inicia la conversión

AD1CHS0bits.CH0NA =0; // La entrada negativa será VssAD1CHS0bits.CH0SA =0; // Entrada positiva será AN0

AD1CON2bits.CSCNA =0; // Muestreo secuencial (scan) deshabilitadoAD1CON2bits.VCFG =0; // Referencia para la conversión: Referencia

//positiva=AVdd, Negativa=AVss

AD1CON2bits.BUFM =0; // Configurado como buffer de 16 palabrasAD1CON2bits.SMPI =0; // Después de la conversión se genera la interrupciónAD1CON2bits.ALTS =0; // Solo muestra un Canal

AD1CON3bits.ADRC =0; // Reloj del ADC es derivado del sistemaAD1CON3bits.ADCS =21; // Tiempo de conversión.

}void retardo_ms( unsigned int ms ){

unsigned int periodo=0;T1CON =0;TMR1 = 0; // Reset TimerIPC0bits.T1IP =1;

 periodo=((fcy/256)*ms)/1000;PR1= periodo; // Tiempo en el registro del timerIFS0bits.T1IF=0; // Limpia bandera del timerIEC0bits.T1IE=0; // Deshabilita timerT1CON=0x8030; // configura TICON = 0100000000110000while(IFS0bits.T1IF==0);

}

8/13/2019 DsPIC Practicas Abril2013 VF

http://slidepdf.com/reader/full/dspic-practicas-abril2013-vf 27/36

!"#$%&$'( *+ ,'-."'%."&.

!".$+('/&+0%. 1&2&%'3 *+ 4+5'3+(

6'$73%'* *+ 8&+0$&'(9 :;4,!

=K

RESULTADOS

En la figura 14, se muestra el esquema completo de conexión con una entrada analógica

de 0 volts.

Figura 14. Conexión en protoboard para la práctica 4.

La figura 15 muestra el valor digitalizado cuando se tiene una entrada analógica de 0.5Volts, cabe mencionar que el bit menos significativo está en el lado izquierda de lafigura.

Figura 15. Conversión para una entrada analógica de 0.5 Volts.

8/13/2019 DsPIC Practicas Abril2013 VF

http://slidepdf.com/reader/full/dspic-practicas-abril2013-vf 28/36

!"#$%&$'( *+ ,'-."'%."&.

!".$+('/&+0%. 1&2&%'3 *+ 4+5'3+(

6'$73%'* *+ 8&+0$&'(9 :;4,!

=L

Finalmente, la figura 16 muestra una entrada analógica de 1.6 Volts en RA0, y la figura17 cuando se tienen la máxima entrada aceptada en RA0 (3.3 Volts).

Figura 16. Conversión digital de una entrada analógica de 1.6 Volts

.

Figura 17. Conversión digital de una entrada analógica de 3.3 Volts

8/13/2019 DsPIC Practicas Abril2013 VF

http://slidepdf.com/reader/full/dspic-practicas-abril2013-vf 29/36

!"#$%&$'( *+ ,'-."'%."&.

!".$+('/&+0%. 1&2&%'3 *+ 4+5'3+(

6'$73%'* *+ 8&+0$&'(9 :;4,!

=M

BIBLIOGRAFÍA

En los siguientes enlaces se presenta la teoría y prácticas acerca de la conversión

analógica/digital. Como tema importante se describe el Criterio de Nyquist que esfundamental para la digitalización de señales.

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  

8/13/2019 DsPIC Practicas Abril2013 VF

http://slidepdf.com/reader/full/dspic-practicas-abril2013-vf 30/36

!"#$%&$'( *+ ,'-."'%."&.

!".$+('/&+0%. 1&2&%'3 *+ 4+5'3+(

6'$73%'* *+ 8&+0$&'(9 :;4,!

=F

PRÁCTICA 5.- CONVERSION EN SERIE ADC – DAC

OBJETIVO: realizar la conversión analógica/digital de una señal y enseguidadigital/analógica, al conectar en serie los procesos ADC – DAC, y de esta maneracomprobar el criterio de Nyquist.

INTRODUCCION

En el proceso de conversión Analógica/Digital – Digital/Analógica de una señal, sedeben considerar dos aspectos muy importantes: el muestreo y la cuantización de laseñal. Durante estos procesos, se toman muestras y se cuantizan de acuerdo a laresolución del convertidor, por lo que estas operaciones nos pueden restringir lainformación que se transmite de forma digital.

La consideración fundamental en el muestreo depende de que tan “rápido” o duranteque intervalo de tiempo se pueda extraer información de la señal, tal que más adelantesea posible reconstruir la señal sin tener pérdidas de su comportamiento dinámico. En lafigura 18 se muestra de manera general como se realiza el muestreo de una señal.

Figura 18. Muestreo de una señal x(t) cada T seg.

TEOREMA DE NYQUIST

El teorema de Nyquist establece que la reconstrucción de una señal  x(t) a partir de susmuestras  x[k], es posible si la señal es muestreada al doble de su ancho de banda (almenos). 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  F  s  quecumpla !

! ! !!

!"#.

Cuando la frecuencia de muestreo no cumple el criterio de Nyquist, se produce el

fenómeno conocido como “aliasing ” o traslape, a través del cual una señal de altafrecuencia es interpretada como una señal de baja frecuencia. 

 x(t)

0

T=Tiempo de muestreo

x[0]x(T)=x[1]

x(2T)=x[2]x[3]

x[4]x[-1]

x[-2]

8/13/2019 DsPIC Practicas Abril2013 VF

http://slidepdf.com/reader/full/dspic-practicas-abril2013-vf 31/36

!"#$%&$'( *+ ,'-."'%."&.

!".$+('/&+0%. 1&2&%'3 *+ 4+5'3+(

6'$73%'* *+ 8&+0$&'(9 :;4,!

=J

Figura 19. Señales muestredas que describen el fenómeno de traslape: x1(t) # 3 Hz, x2(t) # 13 Hz, y F  s=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 3V pp  (0.15

Volts a 3.15 Volts) y f = 1KHz. Esta señal se introduce en la entradaanaló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ñalde entrada desde 100 Hz hasta 1MHz.

6.  Conclusiones.

DIAGRAMA ESQUEMÁTICO

Para la realización de la práctica, al sistema mínimo de conexiones del dsPIC agregarlos siguientes componentes:

! !"# !"$ !"% !"& !"' !"( !") !"* !"+ #−#

−!"*

−!"(

−!"&

−!"$

!

!"$

!"&

!"(

!"*

#

,-./01 34.56

T=0.1 segFs=10 Hz

 x1(t)

  x2(t)

 x[k]

8/13/2019 DsPIC Practicas Abril2013 VF

http://slidepdf.com/reader/full/dspic-practicas-abril2013-vf 32/36

!"#$%&$'( *+ ,'-."'%."&.

!".$+('/&+0%. 1&2&%'3 *+ 4+5'3+(

6'$73%'* *+ 8&+0$&'(9 :;4,!

CH

Figura 20. Esquema de conexión para la práctica 4.

DESCRIPCIÓN DEL PROGRAMA

El siguiente programa realiza la conversión de una señal analógica, e inmediatamente lareconstruye mediante un proceso secuencial Analógico/Digital – Digital/Analógico, esdecir, la misma entrada se debe visualizar a la salida del dsPIC. Mediante éste procesose podrá comprobar el teorema de Nyquist, ya que si no se cumple el criterio demuestreo, se tendrá una perdida de información, la cual se verá reflejada en la salidacomo una señal de menor frecuencia, cuando la frecuencia de la entrada exceda la mitadde la tasa de muestreo.

#include "p33fj128gp802.h"#include "dsp.h"#include "..\h\adcdacDrv.h"

 _FOSCSEL(FNOSC_FRC); // Configuración de oscilador _FOSC(FCKSM_CSECMD & OSCIOFNC_ON & POSCMD_NONE); _FWDT(FWDTEN_OFF);

int main (void){

PLLFBD=41; // Configuración de dsPIC a 40MIPSCLKDIVbits.PLLPOST=0; // N1=2CLKDIVbits.PLLPRE=0; // N2=2OSCTUN=0;RCONbits.SWDTEN=0; // Deshabilita WatchDog Timer

 __builtin_write_OSCCONH(0x01); // Habilita reloj con PLL __builtin_write_OSCCONL(0x01); // Comienza reloj

while (OSCCONbits.COSC != 0b001); // Espera para cambio de relojwhile(OSCCONbits.LOCK!=1) {};

initAdc(); // Inicializa funciones

initDac();initDma0();initTmr3(); // Timer para muestreo de la señal

8/13/2019 DsPIC Practicas Abril2013 VF

http://slidepdf.com/reader/full/dspic-practicas-abril2013-vf 33/36

!"#$%&$'( *+ ,'-."'%."&.

!".$+('/&+0%. 1&2&%'3 *+ 4+5'3+(

6'$73%'* *+ 8&+0$&'(9 :;4,!

CE

extern fractional BufferA[NUMSAMP]; // Configura buffer Aextern fractional BufferB[NUMSAMP]; // Configura buffer Bextern unsigned int DmaBuffer; // Habilita DMAextern int flag; // Bandera de DMAint i; // Declara variable i

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 registroelse

DAC1RDAT = BufferB[i]; // Carga dato al registro }flag = 0;}}

return 0;}fractional BufferA[NUMSAMP] __attribute__((space(dma))); // Modo de salida al buffer Afractional BufferB[NUMSAMP] __attribute__((space(dma))); // Modo de salida al buffer

void initAdc(void) // Función ADC{ AD1CON1bits.FORM = 3; // Formato de salida.AD1CON1bits.SSRC = 2;AD1CON1bits.ASAM = 1; // ADC convierte después del muestreoAD1CON1bits.AD12B = 1; // Resolución de 12 bitsAD1CON2bits.CHPS = 0; // Canal CH0AD1CON3bits.ADRC = 0; // reloj del ADC derivado del sistema

AD1CON3bits.ADCS = 3; // Tad=Tcy*(ADCS+1)= (1/40M)*4 = 100ns// Tc=14*Tad = 1.4usAD1CON1bits.ADDMABM = 1;AD1CON2bits.SMPI = 0;AD1CHS0bits.CH0SA = 4; // Entrada positiva AN4 

AD1CHS0bits.CH0NA = 0; // Entrada negative Vref- AD1PCFGL=0xFFFF; // todas las entradas analógicas AD1PCFGLbits.PCFG4 = 0; // AN4

IFS0bits.AD1IF = 0; // Habilita ADC IEC0bits.AD1IE = 0;AD1CON1bits.ADON = 1;} void initDac(void) { // Función DAC 

ACLKCONbits.SELACLK = 0; // Configuración de relojACLKCONbits.AOSCMD = 0;ACLKCONbits.ASRCSEL = 0;ACLKCONbits.APSTSCLR = 7;DAC1STATbits.ROEN = 1; // Salida DAC1RP DAC1DFLT = 0x0000; // Valor de referencia de la conversiónDAC1CONbits.DACFDIV = 5;DAC1CONbits.FORM = 1; // Formato del dato DAC1CONbits.AMPON = 0;DAC1CONbits.DACEN = 1; // Habilita DAC 

} void initTmr3() { // Función Timer  

TMR3 = 0x0000; // Reset TMR3 PR3 = SAMPPRD; // carga valor al timer  IFS0bits.T3IF = 0;

8/13/2019 DsPIC Practicas Abril2013 VF

http://slidepdf.com/reader/full/dspic-practicas-abril2013-vf 34/36

!"#$%&$'( *+ ,'-."'%."&.

!".$+('/&+0%. 1&2&%'3 *+ 4+5'3+(

6'$73%'* *+ 8&+0$&'(9 :;4,!

C=

IEC0bits.T3IE = 0;T3CONbits.TON = 1; // Habilita Timer 3 

} void initDma0(void){ 

DMA0CONbits.AMODE = 0; // Configuración DMADMA0CONbits.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

En las siguientes figuras se observa el proceso de conversión ADC - DAC cuando setiene una entrada senoidal, triangular y cuadrada con frecuencias de 1KHz en las 3señales. ¿Cuál sería la frecuencia de muestreo que se mide experimentalmente al variarla frecuencia de entrada de 100 Hz a 1 MHz?

Figura 21. Conversión en serie ADC-DAC para una señal senoidal.

4'3&*'

B0%"'*'

8/13/2019 DsPIC Practicas Abril2013 VF

http://slidepdf.com/reader/full/dspic-practicas-abril2013-vf 35/36

8/13/2019 DsPIC Practicas Abril2013 VF

http://slidepdf.com/reader/full/dspic-practicas-abril2013-vf 36/36

!"#$%&$'( *+ ,'-."'%."&.

!".$+('/&+0%. 1&2&%'3 *+ 4+5'3+(

6'$73%'* *+ 8&+0$&'(9 :;4,!

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