36
25 INFORME N o 1 Procesadores digitales de señales Implementación 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 INGENIERÍA | FACULTAD DE INGENIERÍA MECÁNICA

Dsp Trabajo

Embed Size (px)

Citation preview

INFORME No 1

Procesadores digitales de señales

Implementación 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 INGENIERÍA | FACULTAD DE INGENIERÍA MECÁNICA

1

INFORME No 1

Procesadores digitales de señales

Implementación en el DSP

EXPERIENCIAS A REALIZAR

1. PROBLEMA 1: ENTRADAS Y SALIDAS DIGITALES

1.1. BASE TEÓRICA

DESCRIPCIÓN DE LAS SEÑALES

UNIVERSIDAD NACIONAL DE INGENIERÍA | FACULTAD DE INGENIERÍA MECÁNICA

2

INFORME No 1

Procesadores digitales de señales

Implementación en el DSP

UNIVERSIDAD NACIONAL DE INGENIERÍA | FACULTAD DE INGENIERÍA MECÁNICA

3

INFORME No 1

Procesadores digitales de señales

Implementación en el DSP

GPIO MUX REGISTER

UNIVERSIDAD NACIONAL DE INGENIERÍA | FACULTAD DE INGENIERÍA MECÁNICA

4

INFORME No 1

Procesadores digitales de señales

Implementación en el DSP

GPIO DATA REGISTER

UNIVERSIDAD NACIONAL DE INGENIERÍA | FACULTAD DE INGENIERÍA MECÁNICA

5

INFORME No 1

Procesadores digitales de señales

Implementación en el DSP

1.2. CIRCUITO DE CONEXIÓN

TERMINALES

UNIVERSIDAD NACIONAL DE INGENIERÍA | FACULTAD DE INGENIERÍA MECÁNICA

6

INFORME No 1

Procesadores digitales de señales

Implementación en el DSP

UNIVERSIDAD NACIONAL DE INGENIERÍA | FACULTAD DE INGENIERÍA MECÁNICA

7

INFORME No 1

Procesadores digitales de señales

Implementación 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 = 0; GpioMuxRegs.GPAMUX.bit.PWM2_GPIOA1 = 0; GpioMuxRegs.GPAMUX.bit.PWM3_GPIOA2 = 0; GpioMuxRegs.GPAMUX.bit.PWM4_GPIOA3 = 0;

GpioMuxRegs.GPADIR.bit.GPIOA0 = 1; // Salida GpioMuxRegs.GPADIR.bit.GPIOA1 = 1; // salida GpioMuxRegs.GPADIR.bit.GPIOA2 = 1; // salida

UNIVERSIDAD NACIONAL DE INGENIERÍA | FACULTAD DE INGENIERÍA MECÁNICA

8

INFORME No 1

Procesadores digitales de señales

Implementación en el DSP

GpioMuxRegs.GPADIR.bit.GPIOA3 = 1; // Salida GpioMuxRegs.GPADIR.bit.GPIOA4 = 0; // Entrada

EDIS;

GpioDataRegs.GPADAT.bit.GPIOA0 = 1;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 EJECUCIÓN

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

PWM1_GPIOA0PWM2_GPIOA1PWM3_GPIOA2PWM4_GPIOA3PWM5_GPIOA4

Que se encuentran en el terminal J25. Conectar el pin PWM5_GPIOA4 a una entrada tipo switch.6. Conectar los pines:

UNIVERSIDAD NACIONAL DE INGENIERÍA | FACULTAD DE INGENIERÍA MECÁNICA

9

INFORME No 1

Procesadores digitales de señales

Implementación en el DSP

PWM2_GPIOA1PWM3_GPIOA2PWM4_GPIOA3PWM5_GPIOA4

Al modulo de leds de forma ordenada7. Encender el Modulo de Leds

2. PROBLEMA 2: MUESTREO

2.1. BASE TEÓRICA

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, también se realizó la configuración de activación de interrupción (grupo y nivel) respectiva. En esta configuración 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 función de muestreo que se elaboro dentro de la función de interrupción.

2.2. CIRCUITO DE CONEXIÓN

UNIVERSIDAD NACIONAL DE INGENIERÍA | FACULTAD DE INGENIERÍA MECÁNICA

10

1234

40393837

5 366 357 348 339 3210 3111 3012 2913 2814 2715 2616 2517 2418 2319 2220 21

JP4

R1

300

R2

300

R3

300

R4

300

A0

LED-RED

A1

LED-RED

A2

LED-RED

A3

LED-RED

1234

40393837

5 366 357 348 339 3210 3111 3012 2913 2814 2715 2616 2517 2418 2319 2220 21

JP3

INFORME No 1

Procesadores digitales de señales

Implementación en el DSP

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;InitSysCtrl();InitPieCtrl();IER = 0x0000;IFR = 0x0000;InitPieVectTable();

EALLOW;

PieVectTable.T1PINT = &eva_timerT1PER_isr;

GpioMuxRegs.GPAMUX.bit.PWM1_GPIOA0 = 0; GpioMuxRegs.GPAMUX.bit.PWM2_GPIOA1 = 0; GpioMuxRegs.GPAMUX.bit.PWM3_GPIOA2 = 0; GpioMuxRegs.GPAMUX.bit.PWM4_GPIOA3 = 0;

GpioMuxRegs.GPADIR.bit.GPIOA0 = 1; GpioMuxRegs.GPADIR.bit.GPIOA1 = 1; GpioMuxRegs.GPADIR.bit.GPIOA2 = 1; GpioMuxRegs.GPADIR.bit.GPIOA3 = 1;

EDIS;PieCtrlRegs.PIEIER2.all = M_INT4 | M_INT5;IER = IER | M_INT2;i=0;ini_eva_timer1();

GpioDataRegs.GPADAT.bit.GPIOA0 = 1;GpioDataRegs.GPADAT.bit.GPIOA1 = 1;GpioDataRegs.GPADAT.bit.GPIOA2 = 1;GpioDataRegs.GPADAT.bit.GPIOA3 = 1;

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

UNIVERSIDAD NACIONAL DE INGENIERÍA | FACULTAD DE INGENIERÍA MECÁNICA

11

INFORME No 1

Procesadores digitales de señales

Implementación en el DSP

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;}

3. PROBLEMA 3: ADC MUESTREO

3.1. BASE TEÓRICA

CONTROL DE REGISTROS DEL ADC

UNIVERSIDAD NACIONAL DE INGENIERÍA | FACULTAD DE INGENIERÍA MECÁNICA

12

INFORME No 1

Procesadores digitales de señales

Implementación en el DSP

ADCMAXCONV

UNIVERSIDAD NACIONAL DE INGENIERÍA | FACULTAD DE INGENIERÍA MECÁNICA

13

INFORME No 1

Procesadores digitales de señales

Implementación en el DSP

// MUESTRA DE LA CONFIGURACION DEL ADC

void ini_adc(void); // Declaración 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; // Setup continuous run AdcRegs.ADCTRL2.bit.SOC_SEQ1 = 1; }

UNIVERSIDAD NACIONAL DE INGENIERÍA | FACULTAD DE INGENIERÍA MECÁNICA

14

INFORME No 1

Procesadores digitales de señales

Implementación en el DSP

LECTURA DEL ADC

ResultADC0=AdcRegs.ADCRESULT0>>4 // Para coger solamente los últimos 12 bits

3.2. CIRCUITO DE CONEXIÓN

3.3. PROGRAMA COMPILADO SIN ERROR

// MUESTREO _ADC

#include "DSP281x_Device.h"#include "DSP281x_Examples.h"#include "lab5.h"long int 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;

UNIVERSIDAD NACIONAL DE INGENIERÍA | FACULTAD DE INGENIERÍA MECÁNICA

15

INFORME No 1

Procesadores digitales de señales

Implementación en el DSP

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;

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

UNIVERSIDAD NACIONAL DE INGENIERÍA | FACULTAD DE INGENIERÍA MECÁNICA

16

INFORME No 1

Procesadores digitales de señales

Implementación en el DSP

//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;}

3.4. PLAN DE EJECUCIÓN

1. Sin ningún tipo de alimentación en los circuitos, realizar las conexiones de las placas según lo mostrado en los diagramas de conexión.

2. Alimentar el DSP y conectar a la computadora.3. Verificar la instalación del cable USB-Serial y el número de puerto COM a utilizar.4. Abrir el ColcaCode y seleccionar el número 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 Potenció-

metros.7. Verificar el correcto funcionamiento del programa mediante el parpadeo de leds.

4. PROBLEMA 4: PWM SIMPLE Y DOBLE

4.1. BASE TEÓRICA

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 asimétrica formas de onda PWM se generan cuando un modo de recuento continuo en marcha está seleccionado. Centrado o formas de onda PWM simétrica se generan cuando un modo de continuous-up/-down se selecciona. Para configurar el temporizador GP para la operación PWM, haga lo siguiente:

Configure TxPR según el deseado PWM (carrier) período Configure TxCON para especificar el modo de conteo y la fuente de reloj, e iniciar la

operación Cargar TxCMPR con los valores correspondientes a las anchuras de línea calculados (ciclos

de trabajo) de pulsos PWM

UNIVERSIDAD NACIONAL DE INGENIERÍA | FACULTAD DE INGENIERÍA MECÁNICA

17

INFORME No 1

Procesadores digitales de señales

Implementación en el DSP

El valor del periodo se obtiene dividiendo el período deseado PWM por el período del reloj de entrada GP temporizador, y restando uno el número resultante cuando el continuo de conteo se selecciona el modo de generar formas de onda PWM asimétrica Cuando el modo de contaje reversible continua se selecciona para generar formas de onda PWM simétrica, este valor se obtiene dividiendo el período PWM deseado por dos veces el período 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 ejecución, el temporizador GP comparar registro se actualiza constantemente con nuevos determinada comparar los valores correspondientes a los ciclos de trabajo recién determinados.

GP Temporizador de reinicio:

Cuando cualquier evento de reinicio se produce, ocurre lo siguiente:Todos los bits de registro de temporizador GP, a excepción de los bits de indicación de dirección de contaje en GPTCONA / B, se ponen a 0, por lo que la operación de todos los temporizadores GP está desactivado. Los bits de dirección de conteo indicación se ajustan a 1.

Todas las banderas de interrupción del temporizador se pone a 0 Generación de salidas PWM utilizando el GP temporizadores 1-33 SPRU065C general

Todos los bits de interrupción de temporizador de máscara se ponen a 0, a excepción de PDPINTx; por lo tanto, todas las interrupciones del temporizador GP están enmascarados excepto para PDPINTx

Todas las salidas del temporizador GP comparación 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 están asociados y dependen de un sólo valor de comparación, 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 sería 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.

UNIVERSIDAD NACIONAL DE INGENIERÍA | FACULTAD DE INGENIERÍA MECÁNICA

18

INFORME No 1

Procesadores digitales de señales

Implementación en el DSP

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 dirección del flanco, sí por la lógica 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. También puede servir para bloquear las señales 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 atención al manual datasheet del chip.

EL COMCONA

El Registro COMCONA maneja la habilitación 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 atención 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 ponía a todas las 6 llaves en alta impedancia.Por ejemplo si EXTCONA[0]=1 (sistema moderno), si ocurre un percance y la línea de emergencia conectada al pin GPIOA13/C1TRIP cae a 0v, y además se habilitó el tripeo con el bit 0 de COMCONA que es el habilitador de C1TRIPE, entonces esta acción 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 están 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 CONEXIÓN

PWM SIMPLE

UNIVERSIDAD NACIONAL DE INGENIERÍA | FACULTAD DE INGENIERÍA MECÁNICA

19

INFORME No 1

Procesadores digitales de señales

Implementación en el DSP

PWM DOBLE

4.3. PROGRAMA COMPILADO SIN ERRORES

// PWM SIMPLE:

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

UNIVERSIDAD NACIONAL DE INGENIERÍA | FACULTAD DE INGENIERÍA MECÁNICA

20

INFORME No 1

Procesadores digitales de señales

Implementación en el DSP

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;

EDIS;PieCtrlRegs.PIEIER2.all = M_INT4 | M_INT5;IER = IER | M_INT2;i=0;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;

UNIVERSIDAD NACIONAL DE INGENIERÍA | FACULTAD DE INGENIERÍA MECÁNICA

21

INFORME No 1

Procesadores digitales de señales

Implementación en el DSP

//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"#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 = 1; GpioMuxRegs.GPAMUX.bit.PWM2_GPIOA1 = 1; GpioMuxRegs.GPAMUX.bit.PWM3_GPIOA2 = 1;

UNIVERSIDAD NACIONAL DE INGENIERÍA | FACULTAD DE INGENIERÍA MECÁNICA

22

INFORME No 1

Procesadores digitales de señales

Implementación en el DSP

GpioMuxRegs.GPAMUX.bit.PWM4_GPIOA3 = 1; GpioMuxRegs.GPAMUX.bit.PWM5_GPIOA4 = 1; GpioMuxRegs.GPAMUX.bit.PWM6_GPIOA5 = 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; 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 = 1; EvaRegs.ACTRA.bit.CMP2ACT = 2; EvaRegs.ACTRA.bit.CMP3ACT = 1; EvaRegs.ACTRA.bit.CMP4ACT = 1; EvaRegs.ACTRA.bit.CMP5ACT = 1; EvaRegs.ACTRA.bit.CMP6ACT = 1;

EvaRegs.DBTCONA.bit.DBT = 0xF; EvaRegs.DBTCONA.bit.EDBT1 = 1; EvaRegs.DBTCONA.bit.EDBT2 = 1; EvaRegs.DBTCONA.bit.EDBT3 = 1; EvaRegs.DBTCONA.bit.DBTPS = 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;

UNIVERSIDAD NACIONAL DE INGENIERÍA | FACULTAD DE INGENIERÍA MECÁNICA

23

INFORME No 1

Procesadores digitales de señales

Implementación en el DSP

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;}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 EJECUCIÓN

1. Sin ningún tipo de alimentación en los circuitos, realizar las conexiones para cada caso (PWM simple y doble) según lo mostrado en los diagramas de conexión.

2. Alimentar el DSP y conectar a la computadora.3. Verificar la instalación del cable USB-Serial y el número de puerto COM a utilizar.4. Abrir el ColcaCode y seleccionar el número de puerto COM del cable USB-Serial y luego

conectar con el DSP.

UNIVERSIDAD NACIONAL DE INGENIERÍA | FACULTAD DE INGENIERÍA MECÁNICA

24

INFORME No 1

Procesadores digitales de señales

Implementación en 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 Potenció-

metros.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 TEÓRICA

Utilizaremos la teoría 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 CONEXIÓN

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;ref=2048;kp=100;DINT;DRTM;InitSysCtrl();InitPieCtrl();IER = 0x0000;IFR = 0x0000;InitPieVectTable(); EALLOW; PieVectTable.T2PINT = &eva_timerT2PER_isr;

GpioMuxRegs.GPAMUX.bit.PWM1_GPIOA0 = 1; GpioMuxRegs.GPAMUX.bit.PWM2_GPIOA1 = 1; GpioMuxRegs.GPAMUX.bit.PWM3_GPIOA2 = 1; GpioMuxRegs.GPAMUX.bit.PWM4_GPIOA3 = 1; GpioMuxRegs.GPAMUX.bit.PWM5_GPIOA4 = 1; GpioMuxRegs.GPAMUX.bit.PWM6_GPIOA5 = 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

UNIVERSIDAD NACIONAL DE INGENIERÍA | FACULTAD DE INGENIERÍA MECÁNICA

25

INFORME No 1

Procesadores digitales de señales

Implementación en el DSP

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 = 1; EvaRegs.ACTRA.bit.CMP2ACT = 2; EvaRegs.ACTRA.bit.CMP3ACT = 1; EvaRegs.ACTRA.bit.CMP4ACT = 1; EvaRegs.ACTRA.bit.CMP5ACT = 1; EvaRegs.ACTRA.bit.CMP6ACT = 1;

EvaRegs.DBTCONA.bit.DBT = 0xF; EvaRegs.DBTCONA.bit.EDBT1 = 1; EvaRegs.DBTCONA.bit.EDBT2 = 1; 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;

UNIVERSIDAD NACIONAL DE INGENIERÍA | FACULTAD DE INGENIERÍA MECÁNICA

26

INFORME No 1

Procesadores digitales de señales

Implementación en el DSP

}

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;}

5.4. PLAN DE EJECUCIÓN

8. Sin ningún tipo de alimentación en los circuitos, realizar las conexiones para cada caso (PWM simple y doble) según lo mostrado en los diagramas de conexión.

9. Alimentar el DSP y conectar a la computadora.10. Verificar la instalación del cable USB-Serial y el número de puerto COM a utilizar.11. Abrir el ColcaCode y seleccionar el número 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 Potenció-

metros.14. Verificar el correcto funcionamiento del programa mediante el parpadeo de leds.

UNIVERSIDAD NACIONAL DE INGENIERÍA | FACULTAD DE INGENIERÍA MECÁNICA

27

INFORME No 1

Procesadores digitales de señales

Implementación en el DSP

UNIVERSIDAD NACIONAL DE INGENIERÍA | FACULTAD DE INGENIERÍA MECÁNICA

28