2015-07-16 14 views
1

Я разработал простую программу для создания формы волны PWM на dsPIC33EV256GM002, но я не могу ее отключить. Я использовал PWM1 и PWM2, и я бы генерировал PWM-сигнал на выводе PWM1L1 (контакт 26 на DIP-пакете), поддерживая PWM1H1 (контакт 25 в DIP-пакете) в качестве цифрового ввода-вывода. Теория установки регистра ШИМ: IOCON1bits.PENL = 1;/* PWM1L управляется модулем PWM / IOCON1bits.PENH = 0;/ PWM1H управляется модулем GPIO. */ должен это делать, но используя и осциллограф, я заметил, что PWM-сигнал на выводе PWM1H1 с противоположным значением (когда PWM1L равен 1 PWM1H равен 0 и veceversa), даже если он должен быть цифровым I/O.dsPIC33EV256GM002 Настройки PWM

Возможно, вы столкнулись с подобной проблемой?

Спасибо вам большое за вашу помощь и сотрудничество

С уважением

Я использовал следующий код:

TRISBbits.TRISB10 = 0;     /* Set as a digital output */ 
TRISBbits.TRISB11 = 0;     /* Set as a digital output */ 
TRISBbits.TRISB12 = 0;     /* Set as a digital output */ 
TRISBbits.TRISB13 = 0;     /* Set as a digital output */ 
TRISBbits.TRISB14 = 0;     /* Set as a digital output */ 
TRISBbits.TRISB15 = 0;     /* Set as a digital output */ 

LATBbits.LATB10 = 0;    /* Set as a digital output */ 
LATBbits.LATB11 = 0;    /* Set as a digital output */ 
LATBbits.LATB12 = 0;    /* Set as a digital output */ 
LATBbits.LATB13 = 0;    /* Set as a digital output */ 
LATBbits.LATB14 = 0;    /* Set as a digital output */ 
LATBbits.LATB15 = 0;    /* Set as a digital output */ 

    PORTBbits.RB10=0; 
    PORTBbits.RB11=0; 
    PORTBbits.RB12=0; 
    PORTBbits.RB13=0; 
    PORTBbits.RB14=0; 
    PORTBbits.RB15=0; 

    PTPER = 4000; 
/*~~~~~~~~~~ PWM1 Configuration ~~~~~~~~~~~~~~~~~~~~~~~~~~~~*/  
IOCON1bits.PENL  = 1; /* PWM1L is controlled by PWM module */ 
IOCON1bits.PENH  = 0; /* PWM1H is controlled by GPIO module */ 
IOCON1bits.PMOD  = 0; /* Select Independent Output PWM mode */ 
PDC1 = 500;     /* Initial Duty cycle */ 
DTR1 = 0;    /* Deadtime setting */ 
ALTDTR1 = 0;    /* Deadtime setting */ 
PHASE1 = 0;     /* No phase shift */ 

/*~~~~~~~~~~~ PWM2 Configuration ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~*/ 
IOCON2bits.PENH  = 1; /* PWM2H is controlled by PWM module */ 
IOCON2bits.PENL  = 0; /* PWM2L is controlled by GPIO module */ 
IOCON2bits.PMOD  = 0; /* Select Independent Output PWM mode */ 
PDC2 = 2000;    /* Initial Duty cycle */ 
DTR2 = 0;    /* Deadtime setting */ 
ALTDTR2 = 0;    /* Deadtime setting */ 
PHASE2 = 0;    /* */ 

PTCONbits.PTEN  = 1; /* Enable the PWM Module */ 

ответ

0

[FIXED] Дорогой все

Я исправил проблему Это был связан с защитой от записи регистра IOCONxbits. Я добавил следующую строку:

_FDEVOPT (PWMLOCK_OFF);

и исправлена ​​проблема.

1

я столкнулся с той же проблемой с dspic33ev32GP002 и сделал изменения в битах конфигурации, как:

// FDEVOPT 
#pragma config PWMLOCK = OFF 

Это работал для меня