Aduinoタイミングカウンタ0、1、2のフレキシブルな使用

2547 ワード

Aduinoタイミングカウンタ0、1、2のフレキシブルな使用
          Arduino  ,  ArduinoIDE    ,        Arduino               ,     0   。      AVR GCC       Arduino             。

          UNO   ,       atmega328,  0、1、2       ,      ,         pwm  ,                            。
T/C 0:Pin 6(OC 0 A)とPin 5(OC 0 B)
T/C 1:Pin 9(OC 1 A)とPin 10(OC 1 B)
T/C 3:Pin 11(OC 2 A)とPin 3(OC 2 B)
          Arduino   T/C0         delay()、delayMicroseconds、millis()、micros() ,        Arduino    wiring.c   ,   :http://wiki.geek-workshop.com/doku.php?id=arduino:cores:wiring.c,     arduino-1.0.5-r2\hardware\arduino\cores\arduino        C  。

                :         UNO  4         ,             ,                ,        4 PWM ,            。     ,T/C0      delay()                ,  wiring.c      T/C0       ISR(TIMER0_OVF_vect),                  ISR(TIMER0_OVF_vect)                ,     ?

                         ,  ,    wiring.c。              wiring.c    ,     ,     T0       ,   delay()、millis()     ,        T0     ,    init()  ,     Arduino          , setup()          ,        timer0、1、2  3、4、5       ,  AVR GCC           ,               ,    PWM ,    PWM ,(                 ,   Arduino  )。

       ,        T0        ,       !      T0     ,   ISR(TIM0_OVF_vect)       ,   millis()          ,            ,        ,           ,              。

              ,     T/C0   1     ,  AVR GCC            ,  !        1   1,      :
//timer 0_ovinterrupt.ino
//Timer 0でタイミングを中断し、1 sおきに1を出力する.
int count=0
void setup()
{
     Serial.begin(9600);

     init_time();
)
void loop(void)
{
     while(1);
)
void init_time()/コンフィギュレーションレジスタ、レギュラーモード、64分周、タイマーの初期値は6です.
{
     TCCR0A=0;

     TCCR0B=_BV(CS01)|_BV(CS00);

     TIMSK0=_BV(TOIE0);

     TCNT0=6;

     sei();
)
ISR/T 0オーバーフロー中断関数
{
     TCNT0=6;        

     ++count;

     if(count == 1000 )

     {

               Serial.write(1);

               count=0;

     }
)
                      T/C2,       1,          ,    ,  init()   #if defined(ADCSRA)(    ADC,    !)                        。       T/C2,   !T/C1        !                        ,            。

         ,         ,         ,     pwm   ,      analogwrite()           pwm  。

           delay()、delayMicroseconds         ?                        ,      T0     ,                delay()  ,           。           :http://www.arduino.cn/thread-16784-1-1.html