Está en la página 1de 26

INFORME No 1

Procesadores digitales de seales


Implementacin en el DSP

NDICE
1. NDICE ....................................................................................................... 1 2. EXPERIENCIAS A REALIZAR. 2.1. ENTRADAS Y SALIDAS DIGITALES.................................................. 2 2.2. MUESTREO ....................................................................................... 9 2.3. ADC_ MUESTREO ........................................................................... 11 2.4. PWM SIMPLE Y DOBLE .................................................................. 16 2.5. ADC_ MUESTREO _PWM SIMPLE Y DOBLE ............................... 22

UNIVERSIDAD NACIONAL DE INGENIERA | FACULTAD DE INGENIERA MECNICA

INFORME No 1
Procesadores digitales de seales
Implementacin en el DSP

EXPERIENCIAS A REALIZAR
1. PROBLEMA 1: ENTRADAS Y SALIDAS DIGITALES
1.1. BASE TERICA DESCRIPCIN DE LAS SEALES

UNIVERSIDAD NACIONAL DE INGENIERA | FACULTAD DE INGENIERA MECNICA

INFORME No 1
Procesadores digitales de seales
Implementacin en el DSP

UNIVERSIDAD NACIONAL DE INGENIERA | FACULTAD DE INGENIERA MECNICA

INFORME No 1
Procesadores digitales de seales
Implementacin en el DSP

GPIO MUX REGISTER

UNIVERSIDAD NACIONAL DE INGENIERA | FACULTAD DE INGENIERA MECNICA

INFORME No 1
Procesadores digitales de seales
Implementacin en el DSP

GPIO DATA REGISTER

1.2. CIRCUITO DE CONEXIN TERMINALES

UNIVERSIDAD NACIONAL DE INGENIERA | FACULTAD DE INGENIERA MECNICA

INFORME No 1
Procesadores digitales de seales
Implementacin en el DSP

UNIVERSIDAD NACIONAL DE INGENIERA | FACULTAD DE INGENIERA MECNICA

INFORME No 1
Procesadores digitales de seales
Implementacin en el DSP

CONEXIONES

1.3. PROGRAMA COMPILADO SIN ERRORES


#include "DSP281x_Device.h" #include "DSP281x_Examples.h" float z; unsigned int i; int f; void main(void) { DINT; DRTM; InitSysCtrl(); InitPieCtrl(); IER = 0x0000; IFR = 0x0000; InitPieVectTable(); EALLOW; GpioMuxRegs.GPAMUX.bit.PWM1_GPIOA0 GpioMuxRegs.GPAMUX.bit.PWM2_GPIOA1 GpioMuxRegs.GPAMUX.bit.PWM3_GPIOA2 GpioMuxRegs.GPAMUX.bit.PWM4_GPIOA3 GpioMuxRegs.GPADIR.bit.GPIOA0 GpioMuxRegs.GPADIR.bit.GPIOA1 GpioMuxRegs.GPADIR.bit.GPIOA2 GpioMuxRegs.GPADIR.bit.GPIOA3 GpioMuxRegs.GPADIR.bit.GPIOA4 EDIS; GpioDataRegs.GPADAT.bit.GPIOA0 = 1; = = = = = 1; 1; 1; 1; 0; = = = = 0; 0; 0; 0; Salida salida salida Salida Entrada

// // // // //

UNIVERSIDAD NACIONAL DE INGENIERA | FACULTAD DE INGENIERA MECNICA

INFORME No 1
Procesadores digitales de seales
Implementacin en el DSP

GpioDataRegs.GPADAT.bit.GPIOA1 = 1; GpioDataRegs.GPADAT.bit.GPIOA2 = 1; GpioDataRegs.GPADAT.bit.GPIOA3 = 1; EINT; ERTM; f=0; do{ if (GpioDataRegs.GPADAT.bit.GPIOA4 == 1 ){ GpioDataRegs.GPADAT.bit.GPIOA0 = 1; GpioDataRegs.GPADAT.bit.GPIOA1 = 0; GpioDataRegs.GPADAT.bit.GPIOA2 = 0; GpioDataRegs.GPADAT.bit.GPIOA3 = 0; for (i=1;i<50000;i++); GpioDataRegs.GPADAT.bit.GPIOA0 = 0; GpioDataRegs.GPADAT.bit.GPIOA1 = 1; GpioDataRegs.GPADAT.bit.GPIOA2 = 0; GpioDataRegs.GPADAT.bit.GPIOA3 = 0; for (i=1;i<50000;i++); GpioDataRegs.GPADAT.bit.GPIOA0 = 0; GpioDataRegs.GPADAT.bit.GPIOA1 = 0; GpioDataRegs.GPADAT.bit.GPIOA2 = 1; GpioDataRegs.GPADAT.bit.GPIOA3 = 0; for (i=1;i<50000;i++); GpioDataRegs.GPADAT.bit.GPIOA0 = 0; GpioDataRegs.GPADAT.bit.GPIOA1 = 0; GpioDataRegs.GPADAT.bit.GPIOA2 = 0; GpioDataRegs.GPADAT.bit.GPIOA3 = 1; for (i=1;i<50000;i++);} else{ GpioDataRegs.GPADAT.bit.GPIOA0 = 0; GpioDataRegs.GPADAT.bit.GPIOA1 = 0; GpioDataRegs.GPADAT.bit.GPIOA2 = 0; GpioDataRegs.GPADAT.bit.GPIOA3 = 0; } }while (1==1);

1.4. PLAN DE EJECUCIN 1. 2. 3. 4. Alistar el modulo de DSP de Varitek y el modulo de leds. Encender el DSP y conectarlo (mediante su puerto serial RS-232) a la PC u LAPTOP. Cargar el programa mediante el programa ColcaCode al DSP. Los pines a utilizar son:
PWM1_GPIOA0 PWM2_GPIOA1 PWM3_GPIOA2 PWM4_GPIOA3 PWM5_GPIOA4

Que se encuentran en el terminal J2 5. Conectar el pin PWM5_GPIOA4 a una entrada tipo switch. 6. Conectar los pines:
PWM2_GPIOA1 PWM3_GPIOA2 PWM4_GPIOA3 PWM5_GPIOA4

Al modulo de leds de forma ordenada 7. Encender el Modulo de Leds UNIVERSIDAD NACIONAL DE INGENIERA | FACULTAD DE INGENIERA MECNICA

INFORME No 1
Procesadores digitales de seales
Implementacin en el DSP

2. PROBLEMA 2: MUESTREO
2.1. BASE TERICA Para generar un tiempo de muestreo, primero debemos seleccionar el timer con el que se trabajara, en este caso hemos usado el timer cero para generar el tiempo de muestreo, tambin se realiz la configuracin de activacin de interrupcin (grupo y nivel) respectiva. En esta configuracin tenemos que asignar valores a los registros T1PR y T1CON para asignar el preescalador y obtener el tiempo de muestreo de acuerdo ala frecuencia de reloj. Y para visualizar el muestreo hacemos que parpadeen leds, y esto lo hacemos con una funcin de muestreo que se elaboro dentro de la funcin de interrupcin. 2.2. CIRCUITO DE CONEXIN

JP4
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 40 39 38 37 36 35 34 33 32 31 30 29 28 27 26 25 24 23 22 21

A0
LED-RED

R1
300

A1
LED-RED

R2
300

A2
LED-RED

R3
300

A3
LED-RED

R4
300

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20

40 39 38 37 36 35 34 33 32 31 30 29 28 27 26 25 24 23 22 21

JP3

2.3. PROGRAMA COMPILADO SIN ERROR


#include "DSP281x_Device.h" #include "DSP281x_Examples.h" long int i; void ini_eva_timer1(void); interrupt void eva_timerT1PER_isr(void); void main(void) { DINT; DRTM;

UNIVERSIDAD NACIONAL DE INGENIERA | FACULTAD DE INGENIERA MECNICA

INFORME No 1
Procesadores digitales de seales
Implementacin en el DSP

InitSysCtrl(); InitPieCtrl(); IER = 0x0000; IFR = 0x0000; InitPieVectTable(); EALLOW; PieVectTable.T1PINT = &eva_timerT1PER_isr; GpioMuxRegs.GPAMUX.bit.PWM1_GPIOA0 GpioMuxRegs.GPAMUX.bit.PWM2_GPIOA1 GpioMuxRegs.GPAMUX.bit.PWM3_GPIOA2 GpioMuxRegs.GPAMUX.bit.PWM4_GPIOA3 = = = = 0; 0; 0; 0;

GpioMuxRegs.GPADIR.bit.GPIOA0 GpioMuxRegs.GPADIR.bit.GPIOA1 GpioMuxRegs.GPADIR.bit.GPIOA2 GpioMuxRegs.GPADIR.bit.GPIOA3

= = = =

1; 1; 1; 1;

EDIS; PieCtrlRegs.PIEIER2.all = M_INT4 | M_INT5; IER = IER | M_INT2; i=0; ini_eva_timer1(); GpioDataRegs.GPADAT.bit.GPIOA0 GpioDataRegs.GPADAT.bit.GPIOA1 GpioDataRegs.GPADAT.bit.GPIOA2 GpioDataRegs.GPADAT.bit.GPIOA3 EINT; ERTM; } void ini_eva_timer1(void) { EvaRegs.T1PR = 0x0752; // 10Khz EvaRegs.EVAIMRA.bit.T1PINT = 1; EvaRegs.EVAIFRA.bit.T1PINT = 1; EvaRegs.T1CNT = 0x0000; EvaRegs.T1CON.all = 0x9202; //(75MHz/4) asm(" nop"); asm(" nop"); EvaRegs.T1CON.all = 0x9242; EvaRegs.GPTCONA.bit.T1TOADC = 2; // interrupt del T1PER EvaRegs.GPTCONA.bit.T1PIN =2; } interrupt void eva_timerT1PER_isr(void) { i++; GpioDataRegs.GPATOGGLE.bit.GPIOA0=1; GpioDataRegs.GPATOGGLE.bit.GPIOA1=1; if (i<10) { GpioDataRegs.GPADAT.bit.GPIOA2=1; GpioDataRegs.GPADAT.bit.GPIOA3=1; } else { GpioDataRegs.GPADAT.bit.GPIOA2=0; GpioDataRegs.GPADAT.bit.GPIOA3=0; } if (i>20) i=0; EvaRegs.EVAIMRA.bit.T1PINT = 1; EvaRegs.EVAIFRA.all = BIT7; PieCtrlRegs.PIEACK.all = PIEACK_GROUP2; } = = = = 1; 1; 1; 1;

10

UNIVERSIDAD NACIONAL DE INGENIERA | FACULTAD DE INGENIERA MECNICA

INFORME No 1
Procesadores digitales de seales
Implementacin en el DSP

3. PROBLEMA 3: ADC MUESTREO


3.1. BASE TERICA CONTROL DE REGISTROS DEL ADC

11

UNIVERSIDAD NACIONAL DE INGENIERA | FACULTAD DE INGENIERA MECNICA

INFORME No 1
Procesadores digitales de seales
Implementacin en el DSP

ADCMAXCONV

12

UNIVERSIDAD NACIONAL DE INGENIERA | FACULTAD DE INGENIERA MECNICA

INFORME No 1
Procesadores digitales de seales
Implementacin en el DSP

// MUESTRA DE LA CONFIGURACION DEL ADC void ini_adc(void); // Declaracin en la cabecera ini_adc(); // Inicializacion void ini_adc(void){ // Specific ADC setup for this example: AdcRegs.ADCTRL1.bit.RESET = 1; asm(" NOP "); asm(" NOP "); AdcRegs.ADCTRL1.bit.ACQ_PS = 15; AdcRegs.ADCTRL3.bit.ADCCLKPS = 1; AdcRegs.ADCTRL3.bit.ADCBGRFDN = 3; AdcRegs.ADCTRL3.bit.ADCEXTREF = 0; DSP28x_usDelay(((((long double) 5000L * 1000.0L) / (long double)CPU_RATE) - 9.0L) / 5.0L); AdcRegs.ADCTRL3.bit.ADCPWDN = 1; DSP28x_usDelay(((((long double) 5000L * 1000.0L) / (long double)CPU_RATE) - 9.0L) / 5.0L); AdcRegs.ADCTRL1.bit.RESET = 0; AdcRegs.ADCTRL1.bit.SEQ_CASC = 1; // 1 Cascaded mode DEFINICION DE LAS ENTRADAS AdcRegs.ADCCHSELSEQ1.bit.CONV00 = 0x0; //adca0 //AdcRegs.ADCCHSELSEQ1.all = 0x0128; //AdcRegs.ADCCHSELSEQ2.all = 0xABCD; //AdcRegs.ADCCHSELSEQ3.all = 0x9572; //AdcRegs.ADCCHSELSEQ4.all = 0x4444; AdcRegs.ADCMAXCONV.bit.MAX_CONV1 = 1; CONVERSION A MODO CONTINUO AdcRegs.ADCTRL1.bit.CONT_RUN = 1; AdcRegs.ADCTRL2.bit.SOC_SEQ1 = 1; LECTURA DEL ADC ResultADC0=AdcRegs.ADCRESULT0>>4 // Para coger solamente los ltimos 12 bits // Setup continuous run }

3.2. CIRCUITO DE CONEXIN

13

UNIVERSIDAD NACIONAL DE INGENIERA | FACULTAD DE INGENIERA MECNICA

INFORME No 1
Procesadores digitales de seales
Implementacin en el DSP

3.3. PROGRAMA COMPILADO SIN ERROR


// MUESTREO _ADC #include #include #include long int "DSP281x_Device.h" "DSP281x_Examples.h" "lab5.h" i,k,z;

unsigned int sc,ResultADC0,ref,e; float kp; void ini_eva_timer1(void); void ini_adc(void); interrupt void eva_timerT1PER_isr(void); void main(void) { sc=0; ref=2048; kp=100; DINT; DRTM; InitSysCtrl(); InitPieCtrl(); IER = 0x0000; IFR = 0x0000; InitPieVectTable(); EALLOW; PieVectTable.T1PINT = &eva_timerT1PER_isr; GpioMuxRegs.GPAMUX.bit.PWM2_GPIOA1 = 0; GpioMuxRegs.GPAMUX.bit.PWM3_GPIOA2 = 0; GpioMuxRegs.GPAMUX.bit.T1PWM_GPIOA6 = 1; GpioMuxRegs.GPAMUX.bit.T2PWM_GPIOA7 = 1; GpioMuxRegs.GPADIR.bit.GPIOA1 = 1; GpioMuxRegs.GPADIR.bit.GPIOA2 = 1;

14

UNIVERSIDAD NACIONAL DE INGENIERA | FACULTAD DE INGENIERA MECNICA

INFORME No 1
Procesadores digitales de seales
Implementacin en el DSP

EDIS; PieCtrlRegs.PIEIER2.all = M_INT4 | M_INT5; IER = IER | M_INT2; i=0; ini_eva_timer1(); ini_adc(); EINT; ERTM; } void ini_eva_timer1(void){ EvaRegs.T1PR = 0xFFFF; // 10Khz //EvaRegs.T1CMPR = 0x03A9; EvaRegs.EVAIMRA.bit.T1PINT = 1; EvaRegs.EVAIFRA.bit.T1PINT = 1; EvaRegs.T1CNT = 0x0000; EvaRegs.T1CON.all = 0x9702; //(75MHz/4) asm(" nop"); asm(" nop"); EvaRegs.T1CON.all = 0x9742; EvaRegs.GPTCONA.bit.T1TOADC = 2; // interrupt del T1PER EvaRegs.GPTCONA.bit.T1PIN =2; } void ini_adc(void){ // Specific ADC setup for this example: AdcRegs.ADCTRL1.bit.RESET = 1; asm(" NOP "); asm(" NOP "); AdcRegs.ADCTRL1.bit.ACQ_PS = 15; AdcRegs.ADCTRL3.bit.ADCCLKPS = 1; AdcRegs.ADCTRL3.bit.ADCBGRFDN = 3; AdcRegs.ADCTRL3.bit.ADCEXTREF = 0; DSP28x_usDelay(((((long double) 5000L * 1000.0L) / (long double)CPU_RATE) - 9.0L) / 5.0L); AdcRegs.ADCTRL3.bit.ADCPWDN = 1; DSP28x_usDelay(((((long double) 5000L * 1000.0L) / (long double)CPU_RATE) - 9.0L) / 5.0L); AdcRegs.ADCTRL1.bit.RESET = 0; AdcRegs.ADCTRL1.bit.SEQ_CASC = 1; // 1 Cascaded mode AdcRegs.ADCCHSELSEQ1.bit.CONV00 = 0x0; //AdcRegs.ADCCHSELSEQ1.all = 0x0128; //AdcRegs.ADCCHSELSEQ2.all = 0xABCD; //AdcRegs.ADCCHSELSEQ3.all = 0x9572; //AdcRegs.ADCCHSELSEQ4.all = 0x4444; AdcRegs.ADCMAXCONV.bit.MAX_CONV1 = 1; AdcRegs.ADCTRL1.bit.CONT_RUN = 1; // Setup continuous run AdcRegs.ADCTRL2.bit.SOC_SEQ1 = 1; } interrupt void eva_timerT1PER_isr(void){ //sc=sc+200; GpioDataRegs.GPATOGGLE.bit.GPIOA1 = 1; GpioDataRegs.GPATOGGLE.bit.GPIOA2 = 1; ResultADC0=AdcRegs.ADCRESULT0>>4; // led=ResultADC0; // sc=e*kp; // EvaRegs.T2CMPR = sc; EvaRegs.EVAIMRA.bit.T1PINT = 1; EvaRegs.EVAIFRA.all = BIT7; PieCtrlRegs.PIEACK.all = PIEACK_GROUP2; }

15

UNIVERSIDAD NACIONAL DE INGENIERA | FACULTAD DE INGENIERA MECNICA

INFORME No 1
Procesadores digitales de seales
Implementacin en el DSP

3.4. PLAN DE EJECUCIN 1. Sin ningn tipo de alimentacin en los circuitos, realizar las conexiones de las placas segn lo mostrado en los diagramas de conexin. 2. Alimentar el DSP y conectar a la computadora. 3. Verificar la instalacin del cable USB-Serial y el nmero de puerto COM a utilizar. 4. Abrir el ColcaCode y seleccionar el nmero de puerto COM del cable USB-Serial y luego conectar con el DSP. 5. Buscar y ejecutar el programa respectivo a grabar en el DSP. 6. Alimentar los circuitos adicionales al DSP como la tarjeta de Leds y la tarjeta de Potencimetros. 7. Verificar el correcto funcionamiento del programa mediante el parpadeo de leds.

4. PROBLEMA 4: PWM SIMPLE Y DOBLE


4.1. BASE TERICA PWM SIMPLE Para generar una salida PWM con un temporizador GP, de un modo continuo hasta-o contaje reversible puede ser seleccionado. Activado por flancos o asimtrica formas de onda PWM se generan cuando un modo de recuento continuo en marcha est seleccionado. Centrado o formas de onda PWM simtrica se generan cuando un modo de continuous-up/-down se selecciona. Para configurar el temporizador GP para la operacin PWM, haga lo siguiente: Configure TxPR segn el deseado PWM (carrier) perodo Configure TxCON para especificar el modo de conteo y la fuente de reloj, e iniciar la operacin Cargar TxCMPR con los valores correspondientes a las anchuras de lnea calculados (ciclos de trabajo) de pulsos PWM El valor del periodo se obtiene dividiendo el perodo deseado PWM por el perodo del reloj de entrada GP temporizador, y restando uno el nmero resultante cuando el continuo de conteo se selecciona el modo de generar formas de onda PWM asimtrica Cuando el modo de contaje reversible continua se selecciona para generar formas de onda PWM simtrica, este valor se obtiene dividiendo el perodo PWM deseado por dos veces el perodo de la entrada de reloj temporizador GP. El temporizador de GP se puede inicializar la misma manera que en el ejemplo anterior. Durante el tiempo de ejecucin, el temporizador GP comparar registro se actualiza constantemente con nuevos determinada comparar los valores correspondientes a los ciclos de trabajo recin determinados. GP Temporizador de reinicio: Cuando cualquier evento de reinicio se produce, ocurre lo siguiente: Todos los bits de registro de temporizador GP, a excepcin de los bits de indicacin de diUNIVERSIDAD NACIONAL DE INGENIERA | FACULTAD DE INGENIERA MECNICA 16

INFORME No 1
Procesadores digitales de seales
Implementacin en el DSP

reccin de contaje en GPTCONA / B, se ponen a 0, por lo que la operacin de todos los temporizadores GP est desactivado. Los bits de direccin de conteo indicacin se ajustan a 1. Todas las banderas de interrupcin del temporizador se pone a 0 Generacin de salidas PWM utilizando el GP temporizadores 1-33 SPRU065C general Todos los bits de interrupcin de temporizador de mscara se ponen a 0, a excepcin de PDPINTx; por lo tanto, todas las interrupciones del temporizador GP estn enmascarados excepto para PDPINTx Todas las salidas del temporizador GP comparacin se pone en el estado de alta impedancia PWM DOBLES Las llaves de PWMs sirven para el disparo de puentes de IGBTs, Mosfets o BJTs. Son un grupo de 6 pines PWMs desde el PWM1 hasta el PWM6 para el Event Manager A. Trabajan en parejas, es decir que el PWM1 y el PWM2 estn asociados y dependen de un slo valor de comparacin, en este caso de un registro llamado CMPR1. Por ejemplo el PWM3 y PWM4 trabajan con su fase dependiente del registro CMPR2, en la siguiente figura hay tres bloques llamados "Full Compare 1,2 y 3", estos sera los tres comparadores y donde el periodo es el mismo que se program en el Timer 1, es decir, el periodo de las 6 llaves de PWM dependen del registro de periodo T1PR y del modo de conteo.

EL ACTRA As como el GPTCON para el caso del pin T1PWM, en el caso de los 6 PWMs se cuenta con el registro ACTRA, en este registro se programa la direccin del flanco, s por la lgica se requiera que el PWM dispare en flanco positivo o negativo. Por ejemplo cuando el comparador CMPR1 coincide con el valor del contador T1CNT, entonces los pines PWM1 y PWM2 pueden disparar de 0v a 3.3v, llamado activo arriba, pueden disparar flanco abajo de 3.3v a 0v, llamado activo abajo. Tambin puede servir para bloquear las seales de salida, para casos de emergencia, forzando a los IGBTs en un estado continuo de 0v 3.3v. Los DSPs no son capaces de manejar las puertas de los chips de potencia, los IGBTs por ejemplo trabajan con tensiones de +-5v hasta +-15v, por lo que estos dispositivos deben contar con un predriver. Algunos predrivers son disparados por flancos positivos para las llaves altas Q1, Q3 y Q5, y flancos negativos para las llaves bajas, otros son iguales etc, esto depende del predriver y hay que prestar atencin al manual datasheet del chip. EL COMCONA UNIVERSIDAD NACIONAL DE INGENIERA | FACULTAD DE INGENIERA MECNICA

17

INFORME No 1
Procesadores digitales de seales
Implementacin en el DSP

El Registro COMCONA maneja la habilitacin de las comparaciones, el momento de recarga de los CMPRs y ACTRA, el tripeo en caso de fallas y el poner los pines en alta impedancia. Hay que poner atencin de si se est trabajando con el sistema moderno donde el INDCOE EXTCONA[0]=1, si este bit es uno, entonces se trabaja en el sistema moderno, donde cada pareja de llaves PWM son tripeadas o puestas en alta impedancia, y no como en el sistema antiguo donde el bit 9 FCMPOE pona a todas las 6 llaves en alta impedancia. Por ejemplo si EXTCONA[0]=1 (sistema moderno), si ocurre un percance y la lnea de emergencia conectada al pin GPIOA13/C1TRIP cae a 0v, y adems se habilit el tripeo con el bit 0 de COMCONA que es el habilitador de C1TRIPE, entonces esta accin forzara a los PWMs 1 y 2 que se pongan en alta impedancia y que el bit 5 de COMCONA que es el maneja la alta impedancia de los pines FCMP1OE se caiga a 0 indicando que estn en alta impedancia. NOTA IMPORTANTE.- Los CxTRIPE son pines muy sensibles, que incluso con el ruido de los chips se dispara casi solo, por lo que si no se va a conectar un driver que obligue al pin a estar a 3.3v, se recomienda entonces para el caso de laboratorios o desarrollos que permanezcan deshabilitados hasta que se hagan pruebas con los drivers conectados a los sistemas de emergencia. Recordar que para que el programa funcione bien, primero hay que habilitar el sistema moderno con el INDCOE y luego deshabilitar el CxTRIP.

4.2. CIRCUITO DE CONEXIN PWM SIMPLE

PWM DOBLE

18

UNIVERSIDAD NACIONAL DE INGENIERA | FACULTAD DE INGENIERA MECNICA

INFORME No 1
Procesadores digitales de seales
Implementacin en el DSP

4.3. PROGRAMA COMPILADO SIN ERRORES


// PWM SIMPLE: #include #include #include long int "DSP281x_Device.h" "DSP281x_Examples.h" "lab5.h" i,k,z;

unsigned int sc; void ini_eva_timer1(void); void ini_pwm_timer2(void); interrupt void eva_timerT1PER_isr(void); void main(void) { sc=0; DINT; DRTM; InitSysCtrl(); InitPieCtrl(); IER = 0x0000; IFR = 0x0000; InitPieVectTable(); EALLOW; PieVectTable.T1PINT = &eva_timerT1PER_isr; GpioMuxRegs.GPAMUX.bit.PWM2_GPIOA1 = 0; GpioMuxRegs.GPAMUX.bit.PWM3_GPIOA2 = 0; GpioMuxRegs.GPAMUX.bit.T1PWM_GPIOA6 = 1; GpioMuxRegs.GPAMUX.bit.T2PWM_GPIOA7 = 1; GpioMuxRegs.GPADIR.bit.GPIOA1 = 1; GpioMuxRegs.GPADIR.bit.GPIOA2 = 1;

19
EDIS; PieCtrlRegs.PIEIER2.all = M_INT4 | M_INT5; IER = IER | M_INT2; i=0;

UNIVERSIDAD NACIONAL DE INGENIERA | FACULTAD DE INGENIERA MECNICA

INFORME No 1
Procesadores digitales de seales
Implementacin en el DSP

ini_eva_timer1(); ini_pwm_timer2(); EINT; ERTM; } void ini_eva_timer1(void){ EvaRegs.T1PR = 0xFFFF; // 10Khz //EvaRegs.T1CMPR = 0x03A9; EvaRegs.EVAIMRA.bit.T1PINT = 1; EvaRegs.EVAIFRA.bit.T1PINT = 1; EvaRegs.T1CNT = 0x0000; EvaRegs.T1CON.all = 0x9702; //(75MHz/4) asm(" nop"); asm(" nop"); EvaRegs.T1CON.all = 0x9742; EvaRegs.GPTCONA.bit.T1TOADC = 2; // interrupt del T1PER EvaRegs.GPTCONA.bit.T1PIN =2; } void ini_pwm_timer2(void){ EvaRegs.T2PR = 0xEFFF; // 10Khz EvaRegs.T2CMPR = 0xAFFF; //EvaRegs.EVAIMRA.bit.T1PINT = 1; //EvaRegs.EVAIFRA.bit.T1PINT = 1; EvaRegs.T2CNT = 0x0000; EvaRegs.T2CON.all = 0x9702; //(75MHz/4) asm(" nop"); asm(" nop"); EvaRegs.T2CON.all = 0x9742; EvaRegs.EXTCONA.all = 0x0001; EvaRegs.GPTCONA.all = 0x007A; //EvaRegs.GPTCONA.bit.T1TOADC = 2; // interrupt del T1PER //EvaRegs.GPTCONA.bit.T2PIN = 2; //EvaRegs.GPTCONA.bit.T1PIN =2; } interrupt void eva_timerT1PER_isr(void){ /*i++; if (i<100) { GpioDataRegs.GPADAT.bit.GPIOA1=1; GpioDataRegs.GPADAT.bit.GPIOA2=1; } else{ GpioDataRegs.GPADAT.bit.GPIOA1=0; GpioDataRegs.GPADAT.bit.GPIOA2=0; } if (i>200) i=0; */ sc=sc+200; GpioDataRegs.GPATOGGLE.bit.GPIOA1 = 1; GpioDataRegs.GPATOGGLE.bit.GPIOA2 = 1; EvaRegs.T2CMPR = sc; EvaRegs.EVAIMRA.bit.T1PINT = 1; EvaRegs.EVAIFRA.all = BIT7; PieCtrlRegs.PIEACK.all = PIEACK_GROUP2; }

// PWM DOBLE: #include "DSP281x_Device.h" #include "DSP281x_Examples.h"

20

UNIVERSIDAD NACIONAL DE INGENIERA | FACULTAD DE INGENIERA MECNICA

INFORME No 1
Procesadores digitales de seales
Implementacin en el DSP

#include "lab5.h" long int i,k,z; unsigned int sc,ResultADC0,ref,e; float kp; void ini_eva_timer1(void); void ini_pwm_timer2(void); void ini_adc(void); interrupt void eva_timerT2PER_isr(void); void main(void) { ResultADC0=0; sc=0; ref=2048; kp=100; DINT; DRTM; InitSysCtrl(); InitPieCtrl(); IER = 0x0000; IFR = 0x0000; InitPieVectTable(); EALLOW; PieVectTable.T2PINT = &eva_timerT2PER_isr; GpioMuxRegs.GPAMUX.bit.PWM1_GPIOA0 GpioMuxRegs.GPAMUX.bit.PWM2_GPIOA1 GpioMuxRegs.GPAMUX.bit.PWM3_GPIOA2 GpioMuxRegs.GPAMUX.bit.PWM4_GPIOA3 GpioMuxRegs.GPAMUX.bit.PWM5_GPIOA4 GpioMuxRegs.GPAMUX.bit.PWM6_GPIOA5 = = = = = = 1; 1; 1; 1; 1; 1;

GpioMuxRegs.GPAMUX.bit.T1PWM_GPIOA6 = 0; GpioMuxRegs.GPAMUX.bit.T2PWM_GPIOA7 = 0; GpioMuxRegs.GPADIR.bit.GPIOA6 = 1; GpioMuxRegs.GPADIR.bit.GPIOA7 = 1; EDIS; //PieCtrlRegs.PIEIER2.all = M_INT4 | M_INT5; PieCtrlRegs.PIEIER3.all = M_INT1; IER = IER | M_INT3; i=0; ini_eva_timer1(); ini_pwm_timer2(); //ini_adc(); EINT; ERTM; } void ini_eva_timer1(void){ EvaRegs.T1PR = 0xFFFF; // 10Khz //EvaRegs.T1CMPR = 0x03A9; EvaRegs.CMPR1 = 0x8080; EvaRegs.CMPR2 = 0x0880; EvaRegs.CMPR3 = 0x0080; //EvaRegs.EVAIMRA.bit.T1PINT = 1; //EvaRegs.EVAIFRA.bit.T1PINT = 1; EvaRegs.T1CNT = 0x0000; EvaRegs.T1CON.all = 0x9702; //(75MHz/4) asm(" nop"); asm(" nop"); EvaRegs.T1CON.all = 0x9742; EvaRegs.EXTCONA.all = 0x0000; EvaRegs.COMCONA.bit.CENABLE = 1;

21

UNIVERSIDAD NACIONAL DE INGENIERA | FACULTAD DE INGENIERA MECNICA

INFORME No 1
Procesadores digitales de seales
Implementacin en el DSP

EvaRegs.COMCONA.bit.CLD = 2; EvaRegs.COMCONA.bit.SVENABLE = 0; EvaRegs.COMCONA.bit.ACTRLD = 2; EvaRegs.COMCONA.bit.FCOMPOE = 1; EvaRegs.COMCONA.bit.FCMP1OE = 1; EvaRegs.COMCONA.bit.FCMP2OE = 1; EvaRegs.COMCONA.bit.FCMP3OE = 1; EvaRegs.ACTRA.bit.CMP1ACT EvaRegs.ACTRA.bit.CMP2ACT EvaRegs.ACTRA.bit.CMP3ACT EvaRegs.ACTRA.bit.CMP4ACT EvaRegs.ACTRA.bit.CMP5ACT EvaRegs.ACTRA.bit.CMP6ACT EvaRegs.DBTCONA.bit.DBT = EvaRegs.DBTCONA.bit.EDBT1 EvaRegs.DBTCONA.bit.EDBT2 EvaRegs.DBTCONA.bit.EDBT3 EvaRegs.DBTCONA.bit.DBTPS = = = = = = 1; 2; 1; 1; 1; 1;

0xF; = 1; = 1; = 1; = 5;

//EvaRegs.GPTCONA.bit.T1TOADC = 2; // interrupt del T1PER //EvaRegs.GPTCONA.bit.T1PIN =2; } void ini_pwm_timer2(void){ EvaRegs.T2PR = 0xFFFF; // 10Khz EvaRegs.EVAIMRB.bit.T2PINT = 1; EvaRegs.EVAIFRB.bit.T2PINT = 1; EvaRegs.T2CNT = 0x0000; EvaRegs.T2CON.all = 0x9702; //(75MHz/4) asm(" nop"); asm(" nop"); EvaRegs.T2CON.all = 0x9742; } void ini_adc(void){ // Specific ADC setup for this example: AdcRegs.ADCTRL1.bit.RESET = 1; asm(" NOP "); asm(" NOP "); AdcRegs.ADCTRL1.bit.ACQ_PS = 15; AdcRegs.ADCTRL3.bit.ADCCLKPS = 1; AdcRegs.ADCTRL3.bit.ADCBGRFDN = 3; AdcRegs.ADCTRL3.bit.ADCEXTREF = 0; DSP28x_usDelay(((((long double) 5000L * 1000.0L) / (long double)CPU_RATE) - 9.0L) / 5.0L); AdcRegs.ADCTRL3.bit.ADCPWDN = 1; DSP28x_usDelay(((((long double) 5000L * 1000.0L) / (long double)CPU_RATE) - 9.0L) / 5.0L); AdcRegs.ADCTRL1.bit.RESET = 0; AdcRegs.ADCTRL1.bit.SEQ_CASC = 1; // 1 Cascaded mode AdcRegs.ADCCHSELSEQ1.bit.CONV00 = 0x0; //AdcRegs.ADCCHSELSEQ1.all = 0x0128; //AdcRegs.ADCCHSELSEQ2.all = 0xABCD; //AdcRegs.ADCCHSELSEQ3.all = 0x9572; //AdcRegs.ADCCHSELSEQ4.all = 0x4444; AdcRegs.ADCMAXCONV.bit.MAX_CONV1 = 1; AdcRegs.ADCTRL1.bit.CONT_RUN = 1; // Setup continuous run AdcRegs.ADCTRL2.bit.SOC_SEQ1 = 1; } interrupt void eva_timerT2PER_isr(void){ GpioDataRegs.GPATOGGLE.bit.GPIOA6 = 1; GpioDataRegs.GPATOGGLE.bit.GPIOA7 = 1; ResultADC0=ResultADC0+10; if (ResultADC0>2000) { ResultADC0=0; }

22

UNIVERSIDAD NACIONAL DE INGENIERA | FACULTAD DE INGENIERA MECNICA

INFORME No 1
Procesadores digitales de seales
Implementacin en el DSP

e=ref-ResultADC0; sc=e*kp; EvaRegs.CMPR1 = sc; EvaRegs.CMPR2 = sc; EvaRegs.CMPR3 = sc; EvaRegs.EVAIMRB.bit.T2PINT = 1; EvaRegs.EVAIFRB.all = BIT0; PieCtrlRegs.PIEACK.all = PIEACK_GROUP3; }

4.4. PLAN DE EJECUCIN 1. Sin ningn tipo de alimentacin en los circuitos, realizar las conexiones para cada caso (PWM simple y doble) segn lo mostrado en los diagramas de conexin. 2. Alimentar el DSP y conectar a la computadora. 3. Verificar la instalacin del cable USB-Serial y el nmero de puerto COM a utilizar. 4. Abrir el ColcaCode y seleccionar el nmero de puerto COM del cable USB-Serial y luego conectar con el DSP. 5. Buscar y ejecutar el programa respectivo a grabar en el DSP. 6. Alimentar los circuitos adicionales al DSP como la tarjeta de Leds y la tarjeta de Potencimetros. 7. Verificar el correcto funcionamiento del programa que se mostraran mediante el parpadeo de los leds.

5. PROBLEMA 5: ADC_ MUESTREO _PWM SIMPLE Y DOBLE


5.1. BASE TERICA Utilizaremos la teora de los problemas anteriores (1, 2, 3, 4) porque este problema abarca los temas que ya se trataron en dichos problemas. 5.2. CIRCUITO DE CONEXIN

5.3. PROGRAMAS COMPILADO SIN ERRORES


#include "DSP281x_Device.h" #include "DSP281x_Examples.h" long int i,k,z; unsigned int sc,ResultADC0,ref,e; float kp; void ini_eva_timer1(void); void ini_pwm_timer2(void); void ini_adc(void); interrupt void eva_timerT2PER_isr(void); void main(void) { ResultADC0=0; sc=0;

23

UNIVERSIDAD NACIONAL DE INGENIERA | FACULTAD DE INGENIERA MECNICA

INFORME No 1
Procesadores digitales de seales
Implementacin en el DSP

ref=2048; kp=100; DINT; DRTM; InitSysCtrl(); InitPieCtrl(); IER = 0x0000; IFR = 0x0000; InitPieVectTable(); EALLOW; PieVectTable.T2PINT = &eva_timerT2PER_isr; GpioMuxRegs.GPAMUX.bit.PWM1_GPIOA0 GpioMuxRegs.GPAMUX.bit.PWM2_GPIOA1 GpioMuxRegs.GPAMUX.bit.PWM3_GPIOA2 GpioMuxRegs.GPAMUX.bit.PWM4_GPIOA3 GpioMuxRegs.GPAMUX.bit.PWM5_GPIOA4 GpioMuxRegs.GPAMUX.bit.PWM6_GPIOA5 = = = = = = 1; 1; 1; 1; 1; 1;

GpioMuxRegs.GPAMUX.bit.T1PWM_GPIOA6 = 1;//PWM DE GPTIMER1 GpioMuxRegs.GPAMUX.bit.T2PWM_GPIOA7 = 0; GpioMuxRegs.GPBMUX.all=0x0000;//todas las patas puerto B son digitales GpioMuxRegs.GPBDIR.all=0xFFFF;//PORTB pines son salidas GpioMuxRegs.GPADIR.bit.GPIOA7 = 1; EDIS; PieCtrlRegs.PIEIER3.all = M_INT1; IER = IER | M_INT3; i=0; ini_eva_timer1(); ini_pwm_timer2(); ini_adc(); EINT; ERTM; while(1){}; } void ini_eva_timer1(void){ EvaRegs.T1PR = 0xFFFF; // EvaRegs.T1CMPR = 0x4852; EvaRegs.CMPR1 = 0x8080; EvaRegs.CMPR2 = 0x0880; EvaRegs.CMPR3 = 0x0080; EvaRegs.T1CNT = 0x0000; EvaRegs.T1CON.all = 0x9702; //(75MHz/4) asm(" nop"); asm(" nop"); EvaRegs.T1CON.all = 0x9742; EvaRegs.EXTCONA.all = 0x0000;//MODO DE SALIDAS DE COMPARACION INDEPENDIENTES EvaRegs.COMCONA.bit.CENABLE = 1; EvaRegs.COMCONA.bit.CLD = 2; EvaRegs.COMCONA.bit.SVENABLE = 0; EvaRegs.COMCONA.bit.ACTRLD = 2; EvaRegs.COMCONA.bit.FCOMPOE = 1; EvaRegs.COMCONA.bit.FCMP1OE = 1; EvaRegs.COMCONA.bit.FCMP2OE = 1; EvaRegs.COMCONA.bit.FCMP3OE = 1; EvaRegs.ACTRA.bit.CMP1ACT EvaRegs.ACTRA.bit.CMP2ACT EvaRegs.ACTRA.bit.CMP3ACT EvaRegs.ACTRA.bit.CMP4ACT EvaRegs.ACTRA.bit.CMP5ACT EvaRegs.ACTRA.bit.CMP6ACT = = = = = = 1; 2; 1; 1; 1; 1;

24

EvaRegs.DBTCONA.bit.DBT = 0xF; EvaRegs.DBTCONA.bit.EDBT1 = 1; EvaRegs.DBTCONA.bit.EDBT2 = 1;

UNIVERSIDAD NACIONAL DE INGENIERA | FACULTAD DE INGENIERA MECNICA

INFORME No 1
Procesadores digitales de seales
Implementacin en el DSP

EvaRegs.DBTCONA.bit.EDBT3 = 1; EvaRegs.DBTCONA.bit.DBTPS = 5; EvaRegs.GPTCONA.bit.T1TOADC = 0; EvaRegs.GPTCONA.bit.T1PIN =2; EvaRegs.GPTCONA.bit.T1CMPOE =1; EvaRegs.GPTCONA.bit.TCMPOE =1; } void ini_pwm_timer2(void){ EvaRegs.T2PR = 0xFFFF; EvaRegs.EVAIMRB.bit.T2PINT = 1; EvaRegs.EVAIFRB.bit.T2PINT = 1; EvaRegs.T2CNT = 0x0000; EvaRegs.T2CON.all = 0x9702; //(75MHz/4) asm(" nop"); asm(" nop"); EvaRegs.T2CON.all = 0x9742; EvaRegs.GPTCONA.bit.T2TOADC = 0; } void ini_adc(void){ AdcRegs.ADCTRL1.bit.RESET = 1; asm(" NOP "); asm(" NOP "); AdcRegs.ADCTRL1.bit.ACQ_PS = 15; AdcRegs.ADCTRL3.bit.ADCCLKPS = 1; AdcRegs.ADCTRL3.bit.ADCBGRFDN = 3; AdcRegs.ADCTRL3.bit.ADCEXTREF = 0; DSP28x_usDelay(((((long double) 5000L * 1000.0L) / (long double)CPU_RATE) - 9.0L) / 5.0L); AdcRegs.ADCTRL3.bit.ADCPWDN = 1; DSP28x_usDelay(((((long double) 5000L * 1000.0L) / (long double)CPU_RATE) - 9.0L) / 5.0L); AdcRegs.ADCTRL1.bit.RESET = 0; AdcRegs.ADCTRL1.bit.SEQ_CASC = 1; // 1 Cascaded mode AdcRegs.ADCCHSELSEQ1.bit.CONV00 = 0x0; AdcRegs.ADCMAXCONV.bit.MAX_CONV1 = 0; AdcRegs.ADCTRL1.bit.CONT_RUN = 1; // MODO CONTINUO AdcRegs.ADCTRL2.bit.SOC_SEQ1 = 1; //trigger por software } interrupt void eva_timerT2PER_isr(void){ GpioDataRegs.GPATOGGLE.bit.GPIOA7 = 1; GpioDataRegs.GPBDAT.all=AdcRegs.ADCRESULT0>>4; ResultADC0=ResultADC0+10; if (ResultADC0>2000) { ResultADC0=0;} e=ref-ResultADC0; sc=e*kp; EvaRegs.CMPR1 = sc; EvaRegs.CMPR2 = sc; EvaRegs.CMPR3 = sc; EvaRegs.EVAIMRB.bit.T2PINT = 1; EvaRegs.EVAIFRB.bit.T2PINT = 1; PieCtrlRegs.PIEACK.all = PIEACK_GROUP3; }

25 5.4. PLAN DE EJECUCIN

UNIVERSIDAD NACIONAL DE INGENIERA | FACULTAD DE INGENIERA MECNICA

INFORME No 1
Procesadores digitales de seales
Implementacin en el DSP

8. Sin ningn tipo de alimentacin en los circuitos, realizar las conexiones para cada caso (PWM simple y doble) segn lo mostrado en los diagramas de conexin. 9. Alimentar el DSP y conectar a la computadora. 10. Verificar la instalacin del cable USB-Serial y el nmero de puerto COM a utilizar. 11. Abrir el ColcaCode y seleccionar el nmero de puerto COM del cable USB-Serial y luego conectar con el DSP. 12. Buscar y ejecutar el programa respectivo a grabar en el DSP. 13. Alimentar los circuitos adicionales al DSP como la tarjeta de Leds y la tarjeta de Potencimetros. 14. Verificar el correcto funcionamiento del programa mediante el parpadeo de leds.

26

UNIVERSIDAD NACIONAL DE INGENIERA | FACULTAD DE INGENIERA MECNICA

También podría gustarte