|
10黑幣
我用的單片機(jī)是PIC33EP64GS502,然后我PWM1 和PWM2 也就是我的RA3、RA4、RB13、RB14都復(fù)用成PWM功能了,但是我PWM3的端口,也就是RB12、11我接的是按鍵,不開啟PWM的時候,按鍵可以正常,開啟PWM以后,按鍵就失效了,一直被拉低,請問這是PIC單片機(jī)的通性嗎,還是說我配置的不對?附上我的代碼
[code]//互補(bǔ)PWM初始化,
void PWM_driver_init( void )
{
//PWM1 INIT
//解鎖FCLCON 和 IOCON寄存器
asm volatile ("mov #0xabcd,w10");
asm volatile ("mov #0x4321,w11");
asm volatile ("mov #0x0003,w0");//禁止故障輸入
asm volatile ("mov w10, PWMKEY");
asm volatile ("mov w11, PWMKEY");
asm volatile ("mov w0,FCLCON1");
asm volatile ("mov #0xabcd,w10");
asm volatile ("mov #0x4321,w11");
asm volatile ("mov #0xC000,w0");//互補(bǔ)模式,pwm模塊控制pwm
asm volatile ("mov w10, PWMKEY");
asm volatile ("mov w11, PWMKEY");
asm volatile ("mov w0,IOCON1");
ACLKCONbits.FRCSEL = 1; /* FRC is input to Auxiliary PLL */
ACLKCONbits.SELACLK = 1; /* Auxiliary Oscillator provides the clock source*/
ACLKCONbits.APSTSCLR = 7; /* Divide Auxiliary clock by 1 */
ACLKCONbits.ENAPLL = 1; /* Enable Auxiliary PLL */
while(ACLKCONbits.APLLCK != 1); /* Wait for Auxiliary PLL to Lock */
PTPER = 3205; //周期
DTR1 = 50; //死區(qū)
ALTDTR1 = 50; //死區(qū)
TRGCON1bits.TRGDIV = 2; // Trigger interrupt generated every 2 PWM cycles
TRGCON1bits.TRGSTRT = 0; // Trigger generated after waiting 0 PWM cycles
LEBCON1bits.PHR = 1;
PDC1 = 1500; //占空比
TRIG1 = 1300; // Set Initial Trigger location
//PWM2 INIT
//解鎖FCLCON 和 IOCON寄存器
asm volatile ("mov #0xabcd,w10");
asm volatile ("mov #0x4321,w11");
asm volatile ("mov #0x0003,w0");//禁止故障輸入
asm volatile ("mov w10, PWMKEY");
asm volatile ("mov w11, PWMKEY");
asm volatile ("mov w0,FCLCON2");
asm volatile ("mov #0xabcd,w10");
asm volatile ("mov #0x4321,w11");
asm volatile ("mov #0xC000,w0");//互補(bǔ)模式,pwm模塊控制pwm
asm volatile ("mov w10, PWMKEY");
asm volatile ("mov w11, PWMKEY");
asm volatile ("mov w0,IOCON2");
DTR2 = 70; //死區(qū)
ALTDTR2 = 40; //死區(qū)
TRGCON2bits.TRGDIV = 2;
TRGCON2bits.TRGSTRT = 0;
LEBCON2bits.PHR = 1;
PDC2 = 410; //占空比
TRIG2 = 0; // Set Initial Trigger location
PTCONbits.PTEN = 1; |
|