Aduinoタイミングカウンタ0、1、2のフレキシブルな使用
2547 ワード
Aduinoタイミングカウンタ0、1、2のフレキシブルな使用
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)
//Timer 0でタイミングを中断し、1 sおきに1を出力する.
int count=0
void setup()
{
void loop(void)
{
void init_time()/コンフィギュレーションレジスタ、レギュラーモード、64分周、タイマーの初期値は6です.
{
ISR/T 0オーバーフロー中断関数
{
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