Forum: Mikrocontroller und Digitale Elektronik Tonerzeugung mit AVR


von Klaus (Gast)


Lesenswert?

Hallo Forum
Habe in einem Programm das gefunden:
1
// Diese Werte berechnen sich aus "8MHz / Frequenz des Tones / 2" Sollte ein anderer CPU-// Takt verwendet werden muessen die Werte neu berechnet werden.
2
3
#define TON_C    15152l
4
#define TON_CIS  14545l
5
#define TON_D    13468l
6
#define TON_ES  12618l
7
#define TON_E    12121l
habe versucht das ganze nachzurechnen. Leider komme ich nicht auf das 
Ergebnis. Falsche Anleitung oder wie kann ich die Frequenz berechnen um 
einen Ton auszugeben?
Wie kann ich die Tonhöhe berechnen, z.B. 440Hz mit delay?
Kennt jemand eine gute Beschreibung dazu?
LG Klaus

von Dominik (Gast)


Lesenswert?

Sieht nach Werten für nen 16bit Timer aus. 8.000.000/264(c)/2 = 15151,5, 
passt. bei 440hz (a’) wäre es ein Timerwert von 9091.

Gruß Dominik

von Manfred F. (dermanfred)


Lesenswert?

Hallo Klaus


Klaus schrieb:
> Wie kann ich die Tonhöhe berechnen, z.B. 440Hz mit delay?
> Kennt jemand eine gute Beschreibung dazu?

Einen einzelnen Ton kann man wie folgt berechnen bzw. erzeugen:

440Hz entspricht einer Periodendauer von ca. 2,273ms (1/440).
Du musst also einen Ausgangspin in einer schleife für die halbe Zeit, 
also  1,1365 ms einschalten und 1,1365 ms ausschalten.

Grüße
Manfred

: Bearbeitet durch User
von Georg M. (g_m)


Lesenswert?

Klaus schrieb:
> habe versucht das ganze nachzurechnen. Leider komme ich nicht auf das
> Ergebnis. Falsche Anleitung oder wie kann ich die Frequenz berechnen um
> einen Ton auszugeben?

Wahrscheinlich wurden Frequenzen der sog. "reinen Stimmung" verwendet.

von Tilo (Gast)


Lesenswert?

Es könnte auch Werckmeister III sein.

von Klaus (Gast)


Lesenswert?

Habe den Prescaler vergessen. Bei 16 Bit passt es
danke

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.