Email: Password: Remember Me | Create Account (Free)

Back to Subject List

Old thread has been locked -- no new posts accepted in this thread
???
02/09/09 17:15
Read: times


 
#162224 - PCA Interrupt problem
Hi,

I'm working on P89V51RD2 at 11.0592Mhz from NXP with Keil uVision3, and I have got a problem on the PCA interrupts.
The code I'm going to show you, is the simplified version of my code.

In fact, I use two module (0 & 1) of the PCA to (in this example) toggle an output.
I explain, I have to set up the interrupt of the module 0, in my main.......

EA=0; /* INT desable */
TMOD=0x21; /*TIMER0 : 16 bit, TIMER1 : 8bit */
TL0+=0x66; /*Enable to have 1 milisecond as base time on PCA*/
TH0+=0xFC;
CMOD=0x04; /* PCA Input = Timer 0 */
CCON=0x40; /* TCA timer on */
TCON=0x50; /*TIMER0 run, TIMER1 run*/

IP=0x00; /* 8-34 priorit‚ des IT : */
IE=0x42; /*IT TIMER0 and PCA */
EA=1; /* INT desable */

/*activate the module 0*/
CR=0;
CCAP0L=CL+(T&0xFF);
CCAP0H=CH+(T>>8);
CCAPM0=0x49;
CR=1;

//T=1000 --> 1 second

....When the module 0 interrupt occurs, I set up the interrupt of the module 1....
When the one of module 1 occurs, I set up again the module 0..etc...

void pca(void) interrupt 6
{
if(CCF0)
{
pin_test=~pin_test;
CCF0=0;
CCAPM0=0;
CR=0;
CCAP1L=CL+(T&0xFF);
CCAP1H=CH+(T>>8);
CCAPM1=0x49;
CR=1;
}

if(CCF1)
{
pin_test=~pin_test;
CCF1=0;
CCAPM1=0;
CR=0;
CCAP0L=CL+(T&0xFF);
CCAP0H=CH+(T>>8);
CCAPM0=0x49;
CR=1;
}
}


But that don't work correctly. I noticed different problems on my application, sometimes the output toggles but not at the right frequency, and sometimes it didn't toggle anymore.
So, I have questions bout that,

1 - Is my set-up wrong, or Am I forgot somethings?
2 - Is it possible to di that? (set-up the PCA interrupt module 1, in the module 0 interrupt).

Thank in advance for your answers?
Best regards,

Chrisophe HUCHET.


No replies in thread

Back to Subject List