Forum: Mikrocontroller und Digitale Elektronik Tonerzeugung mit AVR


Announcement: there is an English version of this forum on EmbDev.net. Posts you create there will be displayed on Mikrocontroller.net and EmbDev.net.
von Klaus (Gast)


Bewertung
0 lesenswert
nicht lesenswert
Hallo Forum
Habe in einem Programm das gefunden:
// Diese Werte berechnen sich aus "8MHz / Frequenz des Tones / 2" Sollte ein anderer CPU-// Takt verwendet werden muessen die Werte neu berechnet werden.

#define TON_C    15152l
#define TON_CIS  14545l
#define TON_D    13468l
#define TON_ES  12618l
#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)


Bewertung
0 lesenswert
nicht 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)


Bewertung
0 lesenswert
nicht 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)


Bewertung
0 lesenswert
nicht 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)


Bewertung
0 lesenswert
nicht lesenswert
Es könnte auch Werckmeister III sein.

von Klaus (Gast)


Bewertung
0 lesenswert
nicht lesenswert
Habe den Prescaler vergessen. Bei 16 Bit passt es
danke

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.