Sonsivri
 
*
Welcome, Guest. Please login or register.
Did you miss your activation email?
December 07, 2016, 01:25:19 13:25


Login with username, password and session length


Pages: [1]
Print
Author Topic: dsPIC33 Output Compare help  (Read 4296 times)
0 Members and 1 Guest are viewing this topic.
tAhm1D
Senior Member
****
Offline Offline

Posts: 336

Thank You
-Given: 103
-Receive: 180



« on: September 24, 2009, 08:50:27 08:50 »

Hi all,
I was programming the dsPIC33 Output compare module when I came across this problem. I am running the output compare module in continuous output pulse mode using timer2 at something above 30khz. The problem is when I use the internal FRC (7.37MHz) there is no problem and the waveforms are all fine, but when I use PLL and post/predivider to set FRCPLL at 80MHz(for 40MIPS), the waveform becomes all distorted. I attached the screenshot of the waveform. What can be the cause for this? Is it problem in programming or simulation problem in Proteus?
Here is the code:

Code:
_FOSCSEL(FNOSC_PRI);
_FOSC(FCKSM_CSECMD & OSCIOFNC_ON  & POSCMD_NONE);
_FWDT(FWDTEN_OFF);

int main (void)
{
//Configure Oscillator
PLLFBD = 41; //43 * 7.37 = x
CLKDIVbits.PLLPOST = 0; // x = x/2
CLKDIVbits.PLLPRE = 0; // x = x/2 ... x comes as 80MHz thus 40MIPS
__builtin_write_OSCCONH(0x01);
__builtin_write_OSCCONL(0x01);
while (OSCCONbits.COSC != 1);
while (OSCCONbits.LOCK != 1);
//Configure I/O
TRISA = 0x1F; //all inputs
TRISB = 0x0003; //AN2(RB0), AN3(RB1) inputs, rest output
RPOR7bits.RP14R = 18; //RP14(RB14) connected to OC1
RPOR7bits.RP15R = 19; //RP15(RB15) connected to OC2
AD1PCFGL = 0xFFF0; //AN0, AN1, AN2, AN3 analog
//Configure Timer
T2CON = 0; //no prescale
PR2 = 1200; //>30 kHz per output
//Configure OC
OC1R = 1;
OC1RS = 480;
OC1CON = 0x05; //Continuous Pulse Generation, Timer2
T2CONbits.TON = 1; //Start timer and output compare

while (1);
}//end.
Logged
jestanoff
Junior Member
**
Offline Offline

Posts: 46

Thank You
-Given: 23
-Receive: 18



WWW
« Reply #1 on: September 27, 2009, 06:53:12 18:53 »

Hi tAhm1D,
From listed code is seemed that no visible error, except this:
Code:
OSCCON = 0x46;              //
OSCCON = 0x57;              // unlock writes to the RPINRx and RPORx registers
OSCCONbits.IOLOCK = 0;   //
   
RPOR7bits.RP14R = 18; //RP14(RB14) connected to OC1
RPOR7bits.RP15R = 19; //RP15(RB15) connected to OC2

OSCCON = 0x46;              //
OSCCON = 0x57;              // lock writes to the RPINRx and RPORx registers
OSCCONbits.IOLOCK = 1;   //

The problem maybe is in a Proteus, but if you want try to replace the initialization code from one my project with dsPIC33:
Code:
// Select Internal FRC at POR
//_FOSCSEL(FNOSC_FRC);
_FOSCSEL(FNOSC_PRI);
// Enable Clock Switching and Configure POSC in XT mode
_FOSC(FCKSM_CSECMD & OSCIOFNC_OFF & POSCMD_XT);

//WD_init
//TLPRC=31.125uS
//TWTO = (N1=128) * (N2=2048) * (TLPRC)=8.159s
_FWDT(FWDTEN_ON & WDTPRE_PR128 & WDTPOST_PS512);

int main(void) {
// Configure Oscillator to operate the device at 36.864Mhz
// Fosc= Fin*M/(N1*N2), Fcy=Fosc/2
// Fosc= 7.3728M*40(2*2)=73.728Mhz for 7.3728MHz input clock
// Configure PLL prescaler, PLL postscaler, PLL divisor
PLLFBD=38; // M = 40 for 7.3728MHz
CLKDIVbits.PLLPRE=0; // N1 = 2
CLKDIVbits.PLLPOST=0; //0 - N2=2; 1 - N2=4  ; 3 - N2=8
// Initiate Clock Switch to Primary Oscillator with PLL (NOSC = 0b011)
__builtin_write_OSCCONH(0x03);
__builtin_write_OSCCONL(0x01);
// Wait for Clock switch to occur
while (OSCCONbits.COSC != 0b011);
RCONbits.SWDTEN=1; //Enable Watch Dog Timer
// Wait for PLL to lock
while(OSCCONbits.LOCK!=1) {};
ClrWdt();
Ports_init();
        while(1) {
}
return 0;
}
Logged
tAhm1D
Senior Member
****
Offline Offline

Posts: 336

Thank You
-Given: 103
-Receive: 180



« Reply #2 on: October 09, 2009, 11:51:53 11:51 »

Hi,
I kept no stone unturned to solve the problem. Same type of questions are there in different other forums,  but could not get satisfactory answer. One member in the Labcenter Forum asked the question and from the reply of Labcenter people,it could be clearly guessed that it is the problem of Proteus. Hope for the next versions. Thanks.
Logged
Pages: [1]
Print
Jump to:  


DISCLAIMER
WE DONT HOST ANY ILLEGAL FILES ON THE SERVER
USE CONTACT US TO REPORT ILLEGAL FILES
ADMINISTRATORS CANNOT BE HELD RESPONSIBLE FOR USERS POSTS AND LINKS

... Copyright 2003-2999 Sonsivri.to ...
Powered by SMF 1.1.18 | SMF © 2006-2009, Simple Machines LLC | HarzeM Dilber MC