www.mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik Doppelton Erzeugung


Autor: avrler (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,
hätte für mich da mal jemand nen Denkansatz:
Ich will über einen Port einen Doppelton (Überlagerung von zwei
Frequenzen) ausgeben.
In Bascom gibts ja den Befehl DTMF out, was mir nun ja sagt dass es
prinzipiell funktioniert. Die Frage ist nur wie.
Danke

Michi

Autor: harry (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
hi,

wenn's kein sinus sein muss aber echteck sein darf ist's ganz
einfach.
z.b. timer0 setzt einen port alle 1/200 sec auf low, 1/200 sec später
wieder auf high.
damit haste mal 'ne grundfrequenz von 100Hz.
timer1 toggelt denselben port 1000x je sekunde, jetzt haste 'ne
übergelagerte freq von 1 KHz.
fertig ist der doppelton.

gruss und fröhliches probieren, harry

Autor: Hagen (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
>In Bascom gibts ja den Befehl DTMF out, was mir nun ja sagt dass es
>prinzipiell funktioniert. Die Frage ist nur wie.

www.atmel.com hat noch komplett fertige AN dazu.
Ansonsten bei eBay gibts zZ. den CM8888 samt Quarz im Zweierpack,
identisch zum MT8888, falls du eine HW Lösung vorziehst.

Gruß Hagen

Autor: avrler (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Jo danke mal soweit.
werd mal etwas probieren.
Das Prob istr ja dass es keine Standart DTMF Töne sein sollen, sondern
eben andere Frequenzen.

Autor: avrler (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
also habs jetzt mal so probiert, aber so richtig funktionierts net.
Weiß da jmd. eine Lsg oder sieht meinen garantiert dummen Fehler?

Blick grad überaupt net mehr durch.
Vielen vielen Dank.

Michi

$regfile = "2313def.dat"
$crystal = 8000000

Config Timer0 = Timer , Prescale = 64
Config Timer1 = Timer , Prescale = 1
Config Pind.6 = Output
Config Pind.5 = Output
On Ovf0 Erster                                              '
On Ovf1 Test

Enable Timer0
Enable Timer1
Enable Interrupts

Do

Loop



  Erster:

     Portd.6 = Not Portd.6

     Timer0 = 10426
  Return

 Test:
 Portd.6 = Not Portd.6

     Timer1 = 30426
 Return

Autor: Günni (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo Michi,

ich habe so etwas vor langer Zeit mal auf einem Zilog µC gemacht.
Das Prinzip was so:
- konstante Sinustabelle erzeugen (beim Amiga Assembler gab's dazu
eine Funktion, beim AVR weiß ich's nicht.)
- der Offset beim lesen aus der Tabelle bestimmt die Frequenz
- bei gewünschter Überlagerung von zwei Frequenzen führst Du einfach
zwei Offsets für die jeweiligen Frequenzen und addierst Die Werte aus
der Tabelle und erzeugst damit den gewünschten Ton.

Das hat bei der Realisierung einer speziellen Fernabfrage/Steuer-Box
tadellos funktioniert.
Außerdem hat diese Methode den Vorteil, dass aufwendige Berechnungen in
Realtime vermieden werden.

Vielleicht ist's ja ein Ansatz wert!

Grüße
Günni

Autor: harry (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
hi,

funktioniert prinzipiell so schon, nur dass du die freq. aus timer0 so
gur wie nicht mitkriegst, weil sie die gleiche amplitude erzeugt wie
die von timer1.
nehm doch mal for timer1 portd.5.
das signal von d.6 über R1 widerstand 10K auf einen R2 widerstand gegen
masse 10K, das signal von d.5 über R3 widerstand 47K auf den knoten
R1/R2. jetzt solltest du ein 20% moduliertes signal am knoten R1/R2
abnehmen können. haste oszi? -> gut, wenn nicht, soundcartenoszi geht
bei nf allemal.
gruss, harry

Autor: Profi (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Günni:
Hierzu gibt es von Motorola die sehr schöne Application Note AN1771:
Precision Sine-Wave Tone Synthesis Using 8-Bit MCUs

google mal nach +motorola +an1771   gibt 140 Treffer

Die Frequenz-Auflösung ist theoretisch beliebig genau, sie hängt nur
von der Sample-Frequenz und der Länge der Tabelle ab.

Ausgegeben wird ein Sinus, kein Rechteck!
Ich implementiere sie gerade auf einem 68hc908.

Autor: Profi (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Günni:
Hierzu gibt es von Motorola die sehr schöne Application Note AN1771:
Precision Sine-Wave Tone Synthesis Using 8-Bit MCUs

google mal nach +motorola +an1771   gibt 140 Treffer, bestimmt sich
auch welche mit eigenen Kommentaren / Berichten dabei

Die Frequenz-Auflösung ist theoretisch beliebig genau, sie hängt nur
von der Sample-Frequenz und der Länge der Tabelle ab.

Ausgegeben wird ein Sinus, kein Rechteck!
Ich implementiere sie gerade auf einem 68hc908.

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.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

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