Moment, moment, moment...

Mit "Normalem" PWM hast Du ein Rechtecksignal mit konstanter Frequenz, dessen Impuls-Pausen-Verhältnis variiert werden kann. Das macht den Ton u.U. laut und leise - aber ändert nix am Ton.

Um verschiedene Tonhöhen zu erzeugen, muss der Timer im "CTC"-Modus betrieben werden. CTC heißt "Clear Timer on Compare". Heißt also, dass er von 0 bis zum Wert im OCR-Register hochzählt, und beim Erreichen dieses Wertes auf 0 zurückgesetzt wird. Bei jedem Rücksetzen wird der OC-Pin getoggelt. Somit wird der Ton umso höher, je niedriger der OC-Wert ist.

Die Formel kann man sich überlegen, sie heißt f = Xtal/(Prescaler * OCR * 2).

Bascom (zumindest meine Version) unterstützt den CTC-Modus nicht, das musst Du direkt auf Registerebene lösen.

Klar?