分享

Arduino 中使用定时中断

 一场浩劫 2013-05-05

Arduino 中使用定时中断

分类: 嵌入式 2312人阅读 评论(0) 收藏 举报

Arduino的库中本身没有提供操作定时中断的功能,但是我们以可以avr开发库本身的特性来使用Arduino没有提供的功能.

代码如下, 设置一个1ms的中断, 每隔1s输出一个$符号:

  1. #include <avr/io.h>  
  2. #include <avr/interrupt.h>  
  3.   
  4. /* 
  5.  * 将定时器中断设为1ms 
  6.  */  
  7. void init_time()  
  8. {  
  9.     TCCR2A |= (1 <<WGM21) | (1 << WGM20);  
  10.     TCCR2B |= (1 << CS22 );  //by clk/64  
  11.     TCCR2B &= ~((1 <<CS21) | (1 <<CS20));  //by clk/64  
  12.     TCCR2B &= ~((1 << WGM21 ) | (1 << WGM20));  
  13.     ASSR |= ( 1 << AS2 );  
  14.     TIMSK2 |= ( 1 << TOIE2 ) | ( 0 << OCIE2B );  
  15.     TCNT2 = 6;  
  16.     sei();  
  17. }  
  18.   
  19.   
  20. int count = 0;  
  21. SIGNAL(SIG_OVERFLOW2)  
  22. {  
  23.     TCNT2 = 6;  
  24.       
  25.     ++count;  
  26.     if( count == 1000 )  
  27.     {  
  28.         Serial.print("$ ");  
  29.         count=0;  
  30.     }  
  31. }  
  32.   
  33. /* 
  34. */  
  35. void setup(void)  
  36. {  
  37.     Serial.begin(115200);  
  38.     init_time();  
  39. }  
  40.   
  41. void loop( void )  
  42. {  
  43.     Serial.println("start ... ...");  
  44.   
  45.     while( 1 )  
  46.     {  
  47.         delay( 100 );  
  48.     }  
  49. }  

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多