Doppelton Erzeugung

Gast #113019
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
Gast #113020
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
Gast #113022
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
Gast #113023
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
Gast #113024
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
Gast #113025
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.
Gast #113026
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

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren