dsPIC33EV256GM002 настройки ШИМ

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

Нашли похожую проблему?

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

С Уважением

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

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

person Ferrari    schedule 16.07.2015    source источник


Ответы (2)


Я столкнулся с той же проблемой с dspic33ev32GP002 и изменил биты конфигурации следующим образом:

// FDEVOPT
#pragma config PWMLOCK = OFF 

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

person user5711291    schedule 23.12.2015

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

_FDEVOPT( PWMLOCK_OFF );

и это решило проблему.

person Ferrari    schedule 18.07.2015