В новых версиях IDE вроде как tone может исполнять полифонию, для чего задействуется несколько таймеров. Возможно используется и таймер 0.
Чтобы генерировать прямоугольно-волновые ноты слышимого диапазона, библиотека Tone использует аппаратные таймеры микроконтроллера Arduino.
Генерировать ноты можно на любом контакте Arduino. Количество нот, которые можно проигрывать одновременно, зависит от количества аппаратных таймеров (совместимых с CTC), имеющихся у контроллера.
ATmega8: два таймера (2 и 1)
ATmega168/328: три таймера (2, 1 и 0)
ATmega1280: 6 таймеров (2, 3, 4, 5, 1 и 0)
В скобках указан порядок распределения таймеров. Кроме того, timer0 – это очень чувствительный таймер, поскольку отвечает за функцию millis() и ШИМ.
Диапазон частот, которые может генерировать библиотека, зависит от тактовой частоты микроконтроллера и используемого таймера. Расчет этого диапазона осуществляется следующим образом (здесь первая запись – это частота микроконтроллера, вторая – нижняя граница диапазона для 8-битного таймера, третья – нижняя граница для 16-битного таймера, а четвертая – верхняя граница частотного диапазона):
|8 MHz |16 Hz |1 Hz (1/16 Hz) |4 MHz |
|16 MHz |31 Hz |1 Hz (1/8 Hz) |8 MHz |
Хотя верхней границей частотного диапазона может быть и 8 МГц, верхняя граница диапазона человеческого слуха, как правило, не превышает 20 КГц.
Точность ноты зависит от значения, заданного для предварительного делителя частоты. Благодаря этому делению происходит квантование частоты.
Если вы используете 16-битный таймер (например, timer1 или timer3, timer4, timer5 на 1280), то можете генерировать «ноты» до 1/8 Гц (один цикл каждые 8 секунд), но библиотека Tone, задавая частоты, принимает только целочисленные значения.
Поскольку функция play() принимает только беззнаковые целочисленные значения, максимальной частотой, которую можно сгенерировать, будет 65535 Гц. Кроме того, после округления эта цифра превращается в «ноту» с частотой 65573,77 Гц (на платах с тактовой частотой в 16 МГц). Следовательно, если в функции play() указать для частоты более высокие значения, вы все равно не сможете достичь результата лучше 80 rГц, потому что переключение контактов осуществляется на программном уровне. Причем каждое такое переключение требует КАК МИНИМУМ 50 с лишним циклов.
Отсюда:
http://wikihandbk.com/wiki/Arduino:Библиотеки/Tone
Более точно можно сказать увидев проект и зная версию IDE.