TCCR1A и TCCR2A на Леонардо

Я пытаюсь использовать библиотеку TTS для Arduino на плате Arduino Micro, основанной на Leonardo. Когда я пытаюсь скомпилировать свой эскиз, я получаю некоторые ошибки;

/libraries/TTS/TTS.cpp: In function 'void soundOff()':
/libraries/TTS/TTS.cpp:355: error: 'TCCR2A' was not declared in this scope
/libraries/TTS/TTS.cpp:355: error: 'COM2B1' was not declared in this scope
/libraries/TTS/TTS.cpp: In function 'void soundOn()':
/libraries/TTS/TTS.cpp:382: error: 'TCCR2A' was not declared in this scope
/libraries/TTS/TTS.cpp:382: error: 'COM2B1' was not declared in this scope
/libraries/TTS/TTS.cpp:382: error: 'WGM20' was not declared in this scope
/libraries/TTS/TTS.cpp:383: error: 'TCCR2B' was not declared in this scope
/libraries/TTS/TTS.cpp:383: error: 'CS20' was not declared in this scope
/libraries/TTS/TTS.cpp:383: error: 'WGM22' was not declared in this scope
/libraries/TTS/TTS.cpp:384: error: 'OCR2B' was not declared in this scope
/libraries/TTS/TTS.cpp:385: error: 'TCNT2' was not declared in this scope
/libraries/TTS/TTS.cpp: In function 'void sound(byte)':
/libraries/TTS/TTS.cpp:424: error: 'OCR2B' was not declared in this scope
/libraries/TTS/TTS.cpp:425: error: 'TCNT2' was not declared in this scope

Погуглив выяснилось, что Леонардо использует разные таймеры. И другие вещи, которые я не понимаю! Но кроме этого я не смог найти ответа.

Какие константы правильно использовать для плат Leonardo и можно ли обновить библиотеку, чтобы она работала с обеими платами?

, 👍3

Обсуждение

Самое забавное, что библиотеки Arduino предоставляют независимые от микроконтроллера способы сделать все это, а этот код полностью игнорирует их все., @Ignacio Vazquez-Abrams

@IgnacioVazquez-Abrams Отличные новости! Есть ли у вас ссылка на то, как использовать эту функцию библиотеки, или пример, пожалуйста?, @NoChecksum

Эта "библиотека" написана специально для ATMega328 (не ATmega32u4 внутри Leonardo). Вы должны быть в состоянии портировать ее. Несложно, но и не задача для новичка., @Gerben

Эх. Я только что заметил, что он использует параметры, не контролируемые базовыми библиотеками. Вам нужно будет найти более полнофункциональную библиотеку PWM для него. Но если исключить эту условную компиляцию, то это будет выходом., @Ignacio Vazquez-Abrams

Вам _обязательно_ использовать Micro? Ваш код, вероятно, будет работать на Uno (или какой-либо другой плате на базе ATmega328). Чтобы проверить, выберите Uno в меню Tools->Board и попробуйте скомпилировать его., @Greenonline


1 ответ


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

0

Очевидно, библиотека в ссылке ОП была обновлена для поддержки Леонардо, поэтому теперь эта проблема должна быть решена.

р>
,

Это патч Leonardo, если он кому-то пригодится https://github.com/jscrane/TTS/pull/6/commits/d84cbd2eb39e513e62b4f33a55ccfad412f5aec8, @NoChecksum