www.mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik Frequenz für Atmega mit DDS erzeugen


Autor: franzi (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo Forum,
ich möchte einen Atmega1280 mit unterschiedlichen Frequenzen betreiben 
und hab mir überlegt, dazu einen DDS zu verwenden, nun meine Frage geht 
das überhaupt?, da ich dem DDS ja erst mal Daten senden muss, damit er 
überhaupt eine Frequenz ausspuckt und das Daten senden geht ja ohne 
Frequenz am Atmega schlecht. Ich habe leider keinen DDS gefunden der 
eine Frequenz erzeugt sobald man Spannung anlegt und nicht erst wenn man 
ihm was sendet. Gibt es sowas, wenns geht auch mit SPI?

Vielen Dank schon mal

Autor: Olaf (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Mal abgesehen davon da sich jetzt die gesamte Fachwelt frag was der 
Unsinn soll, es gibt noch ein weiteres Problem. Du musst sicherstellen 
das
die Frequenzaenderung immer im Nulldurchgang erfolgt weil es sonst sein
kann das du zu z.B eine halbwelle eine sehr hohen Frequenz erzeugst und
das wird der Controller dir uebel nehmen.

Olaf

Autor: Falk Brunner (falk)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
@ franzi (Gast)

>und hab mir überlegt, dazu einen DDS zu verwenden, nun meine Frage geht
>das überhaupt?, da ich dem DDS ja erst mal Daten senden muss, damit er
>überhaupt eine Frequenz ausspuckt und das Daten senden geht ja ohne
>Frequenz am Atmega schlecht. Ich habe leider keinen DDS gefunden der

Ja. Dann brauchst du halt einen zweiten kleinen AVR. Allerdings frage 
ich mich, wozu der Luxus gut sein soll? Die meisten aVRs haben ein 
interenen RC-Oszillator, der mit 1/4/9 MHz betrieben werden kann. Und 
exteren kann man verschiedene Quarze nutzen. Das reicht allemal.

>eine Frequenz erzeugt sobald man Spannung anlegt und nicht erst wenn man
>ihm was sendet. Gibt es sowas, wenns geht auch mit SPI?

Einen stand alone DDS-IC kenne ich nicht. SPI haben viele.

http://www.analog.com

MfG
Falk

Autor: Falk Brunner (falk)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
@ Olaf (Gast)

>Unsinn soll, es gibt noch ein weiteres Problem. Du musst sicherstellen
>das
>die Frequenzaenderung immer im Nulldurchgang erfolgt weil es sonst sein

Keine Bange, DDS ist phasenkontinuierlich.

MFG
Falk

Autor: franzi (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Könnt ihr mir dann sagen was es sonst noch für Möglichkeiten gibt, die 
Frequenz des Atmegas während des Betriebs zu ändern, das ganze soll über 
USB vom PC aus gesteuert werden. Wenn der Atmega das im laufenden 
Betrieb nicht verkraftet würde ein Reset auch nicht stören...

Autor: Falk Brunner (falk)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
@ franzi (Gast)

>Könnt ihr mir dann sagen was es sonst noch für Möglichkeiten gibt, die
>Frequenz des Atmegas während des Betriebs zu ändern, das ganze soll über

Wozu soll das gut sein?

MFG
Falk

Autor: franzi (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ich möchte mit 2 Timern jeweils ne PWM erzeugen. Diese soll variabel 
sein und sich von außen(vom PC) durch Frequenzänderung des Atmegas 
verändern lassen. Wichtig ist dabei das sich beide PWMs gleichzeitg 
ändern, wenn diese Änderung über die Register mache habe ich keine 
gleichzeitge Änderung beider Kanäle.

Autor: Karl (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Dir ist schon klar, dass du damit nur die Frequenz der PWM änderst? Das 
Verhältnis bleibt davon unberührt. Wenn sogar ein reset akzeptabel wäre, 
halt doch die PWM an, ändere deine Daten und dann starte sie wieder. 
Wenn man es geschickt macht, geht es auch während dem Betrieb.

Autor: Falk Brunner (falk)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
@ franzi (Gast)

>Ich möchte mit 2 Timern jeweils ne PWM erzeugen. Diese soll variabel
>sein und sich von außen(vom PC) durch Frequenzänderung des Atmegas

PWM hat per Definition eine feste Frequenz und ein variables 
Tastverhältnis.

>verändern lassen. Wichtig ist dabei das sich beide PWMs gleichzeitg
>ändern, wenn diese Änderung über die Register mache habe ich keine
>gleichzeitge Änderung beider Kanäle.

Na dann ändere doch einfach beide Register. Ist ja nicht wirklich 
schwer.

MFG
Falk

Autor: franzi (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Nein das ist ja auch nicht schwer, mein Problem ist, das ich zwischen 
den beiden PWMs keine Phasenverschiebung haben darf,
ich mal das mal auf wie ich das brauche, mom...

Autor: franzi (Gast)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
So, hier jetzt mit Bild,
es ist wichtig das ich immer ein konstantes Verhältnis zwischen den 
beiden PWMs habe und die steigenden Flanken bzw. fallenden Flanken 
zeitlich genau übereinstimmen... Und dann muß die Frequenz während des 
Betriebs verstellt werden...

Autor: Falk Brunner (falk)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
@ franzi (Gast)

Na dann nimm einen FTDI 232 RL, einen kleinen AVR und deinen kleinen DDS 
IC. Über USB bekommt der keline AVR die Steuerinformation für den DDS. 
Dieser taktet dann den "richtigen" AVR.

MFG
Falk

Autor: franzi (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Danke für den Tip,
wird mir ja nix anderes übrig bleiben als noch einen AVR extra mit zu 
nehmen...

Autor: AVRFan (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hilfreich wäre auch, den gewünschten Frequenzbereich zu kennen. Willst 
Du 10 Hz oder 10 kHz oder 10 MHz erzeugen?

Autor: franzi (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Also die eine PWM wird zwischen 1kHz und 5kHz liegen, die zweite so 
zwischen 1 kHz und 60 kHz...

Autor: Branko Golubovic (branko)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Du kannst DDS  direkt als Timer Clock verwenden.
Meines Wiesens ATmega1280  hat die Möglichkeit Timer mit externer 
Taktquelle zu treiben, i deinem fall DDS.

Branko

Autor: Karl (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Das (immer noch etwas dürftig beschriebene) Problem lässt sich auch ohne 
DDS-Firlefanz mit nur einem Controller erledigen. Es gibt Controller, 
die haben synchrone PWMs. Falls es der AVR nicht kann, kann man es bei 
diesen Frequenzen auch in Software machen. Eine komplizierte Lösung ist 
nicht immer eine gute Lösung. Naja.

Autor: Norgan (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
PLL inkl. eines Teilers aufbauen. Zweite Frequenz aus erster mittels PLL 
erzeugen.

Autor: franzi (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
@Karl
>> Das (immer noch etwas dürftig beschriebene) Problem
was wollt ihr noch Wissen, fragt ruhig...

Autor: franzi (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
@Branko
Habe gerade nachgesehen, die Timer des Atmega1280 können mit einem 
externen Takt betrieben werden... das ist schon mal nicht schlecht...

Kannst du mir bitte einen Tip geben wie ich es in Software löse das die 
PWMs synchron sind?

Autor: Falk Brunner (falk)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
@  Norgan (Gast)

>PLL inkl. eines Teilers aufbauen. Zweite Frequenz aus erster mittels PLL
>erzeugen.

Warum nicht gleich ein Rhode&Scharz Signalgenerator verwenden?

@ franzi (Gast)

>was wollt ihr noch Wissen, fragt ruhig...

Wozu brauchst du das Ganze? Was soll das werden, dass du glaubst, die 
PWM dermassen synchon erzeugen zu müssen.

MFG
Falk

Autor: Karl (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Guckst du ins Wiki (Alle Artikel) und schmökerst mal die 
uuuuuunzäähligen Artikel durch. Vorzugsweise welche, die mit AVR, PWM 
oder IO zu tun haben. Der Rest ist Eigeninitiative.

Autor: franzi (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
ich will einen 2D-Mikroscannerspiegel damit ansteuern und 
Lissajou-Figuren damit erzeugen...

Autor: Falk Brunner (falk)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
@ franzi (Gast)

>ich will einen 2D-Mikroscannerspiegel damit ansteuern und
>Lissajou-Figuren damit erzeugen...

Und über die PWM wird dann über einen RC-Filter eine Gleichspannung 
erzeugt, welche die X-Y Auslenkeung ansteuert? Da spielt es keine grosse 
Rolle, ob die beiden PWMs super synchron sind, die Grenzfrequenz der 
RC-Filter liegt WEIT unter der PWM-Frequenz.

http://www.mikrocontroller.net/articles/Pulsweiten...

MfG
Falk

Autor: Falk Brunner (falk)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ander wäre es, wenn du zwei Servos steuerst. Aber dann hast du ja die 
GLEICHE Frequenz für beide Kanäle. Das kriegt man problemlos in Software 
mit festem Takt hin.

MfG
Falk

Autor: jack (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert

Autor: franzi (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Nein, ein RC-Filter ist nicht vorgesehen, die Rechteckspannung wird 
verstärkt und dann an den Spiegel gegeben...
es gibt da auch keine Gleichspannung...
ja, ich will damit die x und x-Auslenkung steuern...

Autor: jack (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Schau Dir mal an wie es richtig gemacht wird (s.o.).

Ein Atmega genügt.

Autor: franzi (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
ja, werd ich mir in einer ruhigen minute mal zu gemüte führen...
danke für den link...

Autor: franzi (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo nochmal...
Ich hätte da noch mal ne Frage zu meinem Problem...
Ich hab mir überlegt das die Idee, den DDS als Clocksource für den Timer 
zu verwenden für meine Zwecke gut ist. Ich habe aber bedenken wegen der 
Genauigkeit, da das Timersignal ja mit der Atmegafrequenz abgetastet 
wird, bekomm ich da nicht einen Jitter, wenn das mit der Frequenz nicht 
genau aufgeht?

Gruß Franzi

Autor: Falk Brunner (falk)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
@ franzi (Gast)

>zu verwenden für meine Zwecke gut ist. Ich habe aber bedenken wegen der
>Genauigkeit, da das Timersignal ja mit der Atmegafrequenz abgetastet
>wird, bekomm ich da nicht einen Jitter, wenn das mit der Frequenz nicht
>genau aufgeht?

Den Jitter bekommst du ja sowieso, eben weil das externe Taktsignal mit 
dem Takt des AVRs abgetastet wird. Wenn du das vermeiden willst, dann 
takte doch gleich den AVR mit dem Takt der DDS und lass den Timer mit 
dem internen Takt laufen.

MfG
Falk

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.