Yes, this is what i wanted to do, but there is still a problem.
That's the point: the channel 3 which controls pin 3 is allready used, in collaboration with channel0, to generate a pwm signal on pin 0(the same signal i want to generate on pin 3 btw). so i cant generate my signal on pin 3.
Maybe im wrong but i think i cant use pin3 because ch3 is used kinda like a "master" channel.
here is the actual code that i want to modify:
.
.
.
StartPWM( 3, 24000, 40 );
.
.
.
VOID StartPWM( uint8 bNumPWM, FLOAT fFreq, uint8 bAlpha )
{
FLOAT fTmpFreq, fTmpAlpha;
fTmpFreq = ( (FLOAT)SYSTEM_FREQ /(FLOAT)2.0) / fFreq;
fTmpAlpha = (FLOAT)bAlpha / (FLOAT)100.0 * fTmpFreq;
if ( bNumPWM >= 0 & bNumPWM <= 2 )
{
MCF5282_GPTA_GPTIOS = (BYTE)(MCF5282_GPTA_GPTIOS | (1<<bNumPWM) | 0x08);
MCF5282_GPTA_GPTOC3M = (BYTE)(MCF5282_GPTA_GPTOC3M | (1<<bNumPWM));
MCF5282_GPTA_GPTOC3D = (BYTE)(MCF5282_GPTA_GPTOC3D | (1<<bNumPWM));
MCF5282_GPTA_GPTSCR1 = MCF5282_GPT_GPTSCR1_GPTEN; // GPT enable
MCF5282_GPTA_GPTTOV = (BYTE)(MCF5282_GPTA_GPTTOV | (1<<bNumPWM) | 0x08); // toggle on OverFlow
MCF5282_GPTA_GPTCTL1 = (BYTE)(MCF5282_GPTA_GPTCTL1 | (1<<2*bNumPWM));
MCF5282_GPTA_GPTSCR2 = MCF5282_GPT_GPTSCR2_TCRE; // toggle on PWM3 overflow
if ( bNumPWM == 0 )
MCF5282_GPTA_GPTC0 = (uint16) (fTmpAlpha);
else if ( bNumPWM == 1 )
MCF5282_GPTA_GPTC1 = (uint16) (fTmpAlpha);
else if ( bNumPWM == 2 )
MCF5282_GPTA_GPTC2 = (uint16) (fTmpAlpha);
MCF5282_GPTA_GPTC3 = (uint16) (fTmpFreq);
}
else if ( bNumPWM >= 4 & bNumPWM <= 6 )
{
bNumPWM -= 4;
MCF5282_GPTB_GPTIOS = (BYTE)(MCF5282_GPTB_GPTIOS | (1<<bNumPWM) | 0x08);
MCF5282_GPTB_GPTOC3M = (BYTE)(MCF5282_GPTB_GPTOC3M | (1<<bNumPWM));
MCF5282_GPTB_GPTOC3D = (BYTE)(MCF5282_GPTB_GPTOC3D | (1<<bNumPWM));
MCF5282_GPTB_GPTSCR1 = MCF5282_GPT_GPTSCR1_GPTEN; // GPT enable
MCF5282_GPTB_GPTTOV = (BYTE)(MCF5282_GPTB_GPTTOV | (1<<bNumPWM) | 0x08); // toggle on OverFlow
MCF5282_GPTB_GPTCTL1 = (BYTE)(MCF5282_GPTB_GPTCTL1 | (1<<2*bNumPWM));
MCF5282_GPTB_GPTSCR2 = MCF5282_GPT_GPTSCR2_TCRE; // toggle on PWM3 overflow
if ( bNumPWM == 0 )
MCF5282_GPTB_GPTC0 = (uint16) (fTmpAlpha);
else if ( bNumPWM == 1 )
MCF5282_GPTB_GPTC1 = (uint16) (fTmpAlpha);
else if ( bNumPWM == 2 )
MCF5282_GPTB_GPTC2 = (uint16) (fTmpAlpha);
MCF5282_GPTB_GPTC3 = (uint16) (fTmpFreq);
}
}