by macegr in this forum post http://www.arduino.cc/cgi-bin/yabb2/YaBB.pl?num=1235060559/12
Setting Divisor Frequency 0x01 1 62500 0x02 8 7812.5 0x03 64 976.5625 0x04 256 244.140625 0x05 1024 61.03515625 TCCR0B = TCCR0B & 0b11111000 | <setting>;
Setting Divisor Frequency 0x01 1 31250 0x02 8 3906.25 0x03 64 488.28125 0x04 256 122.0703125 0x05 1024 30.517578125 TCCR1B = TCCR1B & 0b11111000 | <setting>;
Setting Divisor Frequency 0x01 1 31250 0x02 8 3906.25 0x03 32 976.5625 0x04 64 488.28125 0x05 128 244.140625 0x06 256 122.0703125 0x07 1024 30.517578125 TCCR2B = TCCR2B & 0b11111000 | <setting>; All frequencies are in Hz and assume a 16000000 Hz system clock.
from koyaanisqatsi in this forum post http://www.arduino.cc/cgi-bin/yabb2/YaBB.pl?num=1235060559/12
If you change TCCR0B, it affects millis() and delay(). They will count time faster or slower than normal if you change the TCCR0B settings. Below is the adjustment factor to maintain consistent behavior of these functions:
Default: delay(1000) or 1000 millis() ~ 1 second
0x01: delay(64000) or 64000 millis() ~ 1 second
0x02: delay(8000) or 8000 millis() ~ 1 second
0x03: is the default
0x04: delay(250) or 250 millis() ~ 1 second
0x05: delay(62) or 62 millis() ~ 1 second
(Or 63 if you need to round up. The number is actually 62.5)
Also, the default settings for the other timers are:
TCCR1B: 0x03
TCCR2B: 0x04
There may be other side effects from changing TCCR0B. For example my project would not properly run with TCCR0B set to 0x02 or 0x01. But it worked fine at 0x03 and higher. YMMV
Any thought on the Arduino Mega?