我使用的是PIC24FJ128GA310。我的程序逻辑有两个问题:1。我的应用程序包括2个传输:TX1和TX2在45秒的时间间隔。在无限循环中,TX1必须保持每45秒发送一次,但是一旦RTCC警报到来,TX1必须停止,TX2必须以45秒间隔连续发送4次。一旦TX2完成,那么TX1可以再次回到无限传输。我尝试遵循不工作的逻辑2.上面的RTCKI ISR工作吗?它包括嵌套中断
time1和32位时间2-3。它只传输了4次,有什么建议吗?
以上来自于百度翻译
以下为原文
I am using pic24fj128ga310. I have two problems in my program logic:
1. My application includes 2 transmission: TX1 and TX2 at 45 sec interval. In an infinit loop TX1 has to keep transmiting every 45 sec, but as soon as RTCC al
ARM comes TX1 has to stop and TX2 has to transmit 4 times continously at 45 sec interval.once TX2 completes then TX1 can again go back to infinite transmission. I tried following logic which did not work
void __attribute__((interrupt, no_auto_psv)) _RTCCInterrupt(void){
IFS3bits.RTCIF = 0;
int counter=0;
counter++;
flag_5sec = 1;
if(flag_5sec){ //counter == 5
flag_5sec = 0;
PTT_PWR = OFF;
Delay_msec(1000);
INSAT_PWR = ON;
INSAT_select();
Delay_msec(2000);
putsNUART4((unsigned int*)buff,sprintf(buff,"@#NAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA2"));
Delay_32bit_Sec(32);
putsNUART4((unsigned int*)buff,sprintf(buff,"@#NAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA2"));
Delay_32bit_Sec(32);
putsNUART4((unsigned int*)buff,sprintf(buff,"@#NAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA2"));
Delay_32bit_Sec(32);
// PTT_PWR = ON;
// PTT_select();
}
}
/**********infinite loop in main***********************/
PTT_PWR = ON;
PTT_select();
while(1){
putsNUART4((unsigned int*)buff,sprintf(buff,"FFFFFFFFFFFFFFFFFFFFF"));
Delay_32bit_Sec(32);
putsNUART4((unsigned int*)buff,sprintf(buff,"FFFFFFFFFFFFFFFFFFFFF"));
Delay_32bit_Sec(32);
}
2.will the above RTCC_ISR work? It includes nested interrupts timer1 and 32bit timer2-3. It did not transmitted 4 times only once it transmitted.
Any suggestions?