Проблемы с частотой в DIY Arduino и резонаторе

Я создал простую музыкальную программу, используя Arduino Uno и функцию tone(). Это работает нормально.

Я решил построить свою собственную схему, используя простой AVR, и загрузить эту программу. Я не знал точно, какая частота используется ардуино, поэтому я использовал резонатор Мурата с частотой 8 МГц.

Когда я протестировал свою схему, сгенерированная мной музыка воспроизводилась на октаву ниже, а ее продолжительность увеличивалась вдвое (на завершение воспроизведения ноты ушло в два раза больше времени).

Я понял, что использовал неправильную частоту резонатора. Действительно, я узнал, что в Arduino Uno используется резонатор на 16 МГц. Поскольку в моих часах была половина этой частоты, тон будет более низкой частоты, и на окончание ноты уйдет вдвое больше времени. Это имело смысл.

Поэтому я пошел дальше и перестроил схему с частотой резонатора 16 МГц. Однако теперь у меня обратный эффект!

Все ноты на одну октаву выше по сравнению с исходным дизайном Arduino Uno, а продолжительность ноты в два раза короче, чем в исходном дизайне Arduino Uno... Это говорит о том, что теперь я удвоил частоту по сравнению с исходной конструкцией (и в четыре раза больше частоты по сравнению с моей первой попыткой создания нестандартной схемы).

Кажется, я не могу понять, почему это происходит, потому что сейчас у меня есть частота, которую использует оригинальный Arduino....

, 👍0


1 ответ


Лучший ответ:

2

Если код выполняется в два раза быстрее ожидаемой скорости при тактовой частоте 16 МГц, это может быть только потому, что:

  • вы исправили корректную работу программы при тактовой частоте 8 МГц.
  • вы сообщили IDE, что используете тактовую частоту 8 МГц.

IDE поставляется с несколькими конфигурациями, подходящими для Часы 8 МГц. Если вы выберете в качестве платы «Arduino Pro или Pro Mini», у вас есть что-то эквивалентное Arduino Uno, за исключением того, что вы можете выбрать между тактовой частотой 8 МГц и тактовой частотой 16 МГц (а также между ATmega168 и 328P).

,

Спасибо! Вот и все!, @user1584421