qushengnian 发表于 2016-4-9 17:42:35

大家看这个程序可以实现吗?

//主程序
void setup(){      
Serial.begin(115200);         
interruptSetup1();       //定时器中断1         
}

void loop(){
    interruptSetup2();   //在 loop( ) 中可以再嵌套另一个定时器中断吗????
   Serial.println(.....);
                        
}
/////////////////////////////////////////////////////////////////

void interruptSetup1(){      
TCCR2A = 0x02;
TCCR2B = 0x06;    //频分256
OCR2A = 0X7C;      //124
TIMSK2 = 0x02;   
sei();            
}

ISR(TIMER2_COMPA_vect){                        
cli();                                          
................
sei();
}
/////////////////////////////////////////////////////////////////
void interruptSetup2(){      
TCCR2A = 0x02;
TCCR2B = (1<<CS22);   
OCR2A = 0x31;      
TIMSK2 = 0x02;   
sei();            
}

ISR(TIMER2_COMPA_vect){                        
cli();                                    
    ...............   
   
sei();
}

zjz5717 发表于 2016-4-10 09:01:54

首先不知道你要干什么就无法判断这个代码能不能实现
其次,这个代码编译不通过,原因是第八行Serial.println(.....)处原样输出应为Serial.println(".....")
还有,代码中出现了两处.............这都是无法编译的,请问你是没有复制所有的代码吗

qushengnian 发表于 2016-4-10 09:44:43

zjz5717 发表于 2016-4-10 09:01 static/image/common/back.gif
首先不知道你要干什么就无法判断这个代码能不能实现
其次,这个代码编译不通过,原因是第八行Serial.print ...

谢谢你。我输出这块我知道,我主要是想问下,最开始有个定时器中断interruptSetup1(),在loop( )中又加一个定时器中断2,这种语法能不能实现,这两个timer2定时器会不会彼此干扰。

zjz5717 发表于 2016-4-10 13:37:45

qushengnian 发表于 2016-4-10 09:44 static/image/common/back.gif
谢谢你。我输出这块我知道,我主要是想问下,最开始有个定时器中断interruptSetup1(),在loop( )中又加一 ...

UNO主板的话同时装载了三个内部中断计时器,也就是说最多可以三个同时使用,你这个文件中只是用了其中的两个,理论来讲没有问题,只要你写的代码没错的话都是可以运行的
但是这三个计时器0、1、2控制了一些引脚,需要你注意
T/C0: Pin6(OC0A)和Pin5(OC0B)
T/C1: Pin9(OC1A)和Pin10(OC1B)
T/C3: Pin11(OC2A)和Pin3(OC2B)
而且0号计时器是默认和delay,mills这一类的函数绑定在一起的,这是写在avr那个库里的,如果你有本事修改老外写的那个库的话可以试试

具体信息参考Arduino中文社区
页: [1]
查看完整版本: 大家看这个程序可以实现吗?