2

dsPIC33EV256GM002 で PWM 波形を生成する簡単なプログラムを開発しましたが、無効にできません。PWM1 と PWM2 を使用し、PWM1L1 ピン (DIP パッケージのピン 26) で PWM 波形を生成し、PWM1H1 (DIP パッケージのピン 25) をデジタル I/O として維持します。理論的には PWM レジスタの設定: IOCON1bits.PENL = 1; /* PWM1L は PWM モジュールによって制御されます/ IOCON1bits.PENH = 0; / PWM1H は GPIO モジュールによって制御されます */ そうする必要がありますが、オシロスコープを使用して、PWM1H1 ピンの PWM 波形が反対の値 (PWM1L が 1 の場合、PWM1H が 0 で、その逆) であることに気付きました。 O.

同様の問題は見つかりましたか?

何卒ご理解とご協力を賜りますようお願い申し上げます

よろしく

次のコードを使用しました。

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

2 に答える 2

1

この問題は、IOCONxbits レジスタの書き込み保護に関連していました。次の行を追加しました。

_FDEVOPT( PWMLOCK_OFF );

これで問題は解決しました。

于 2015-07-18T18:51:01.627 に答える
1

dspic33ev32GP002 で同じ問題に直面し、構成ビットを次のように変更しました。

// FDEVOPT
#pragma config PWMLOCK = OFF 

これは私にとってはうまくいきました。

于 2015-12-23T13:08:55.163 に答える