Módulo PWM de alta velocidad en dsPIC33 sin conmutación

1

Estoy intentando que el módulo PWM de alta velocidad de un dsPIC33EP64GS502 funcione. Anteriormente trabajé en el mismo módulo para dsPIC33FJ16GS402 pero no puedo hacer que este funcione. El PIC se ejecuta a 70 MIPS con un oscilador interno, la frecuencia PWM es de 300 KHz con un 50% de servicio, este es mi código:

// ACLK setup
ACLKCONbits.FRCSEL = 1;
ACLKCONbits.SELACLK = 1;
ACLKCONbits.APSTSCLR = 7;
ACLKCONbits.ENAPLL = 1;
while(ACLKCONbits.APLLCK != 1);

// PWM setup
PTCONbits.PTEN = 0;
PTCONbits.PTSIDL = 0;
PTCONbits.SEIEN = 0;
PTCONbits.EIPU = 0;
PTCONbits.SYNCPOL = 0;
PTCONbits.SYNCOEN = 0;
PTCONbits.SYNCEN = 0;
PTCON2bits.PCLKDIV = 0;

PWMH_TRIS = PWML_TRIS = 1;

PWMCON1bits.FLTIEN = 0;
PWMCON1bits.CLIEN = 1;
PWMCON1bits.TRGIEN = 0;
PWMCON1bits.ITB = 1;
PWMCON1bits.MDCS = 0;
PWMCON1bits.DTC = 0;
PWMCON1bits.CAM = 0;
PWMCON1bits.XPRES = 0;
PWMCON1bits.IUE = 0;

TRIG1 = 1568; 
TRGCON1bits.DTM = 0;
TRGCON1bits.TRGSTRT = 0;
TRGCON1bits.TRGDIV = 5;

IOCON1bits.PENH = 0;
IOCON1bits.PENL = 0;
IOCON1bits.POLH = 0;
IOCON1bits.POLL = 0;
IOCON1bits.PMOD = 0;
IOCON1bits.SWAP = 0;
IOCON1bits.OSYNC = 0;

PHASE1 = 3136; // 300KHz
PDC1 = SDC1 = 1568; // 50%
DTR1 = 157;
ALTDTR1 = 157;

// Override
IOCON1bits.OVRDAT = 0;
IOCON2bits.OVRDAT = 0;
IOCON1bits.OVRENH = 1; IOCON1bits.OVRENL = 1;

PTCONbits.PTEN = 1;
IOCON1bits.OVRENH = 0; IOCON1bits.OVRENL = 0;

__delay_us(100);

IOCON1bits.PENH = 1;
IOCON1bits.PENL = 1;

No obtengo absolutamente nada en los pines PWM1H y PWM1L. Simplemente no sé qué más cambiar para que funcione. El objetivo es que funcione en un convertidor buck síncrono, por lo que las señales son complementarias.

    
pregunta Andres

2 respuestas

1

Bien, con la ayuda de esta publicación, ¡finalmente lo resolví! Solo tuve que deshabilitar las entradas de falla y límite de corriente:

FCLCON1 = 0;
FCLCON1bits.FLTMOD = 3;
    
respondido por el Andres
1

la configuración de E / S se establece como entrada:

PWMH_TRIS = PWML_TRIS = 1;

Los microcontroladores PIC usan 1 para la entrada 0 para la salida.

    
respondido por el ElectronS

Lea otras preguntas en las etiquetas