Hallo zusammen Ich würde mir gerne einen eigenen kleinen Funktionengenerator basteln, mit dem AD9833 von Analog devices und einem RN Control. Da ich noch nicht so erfahren bin, hätte ich aber noch die eine oder andere wichtige Frage. Ich hab mir mal das Datasheet hier durchgeschaut: http://www.analog.com/en/rfif-components/direct-digital-synthesis-dds/ad9833/products/product.html von der theorie hab ich schonmal verstanden wie das gehen soll, nun zur praxis. 1. Der IC hat einen Pin MCLK, welcher als Digitaler Clock input beschrieben wird. Heisst das nun, das ich hier einen externen quarz anschliessen muss? Oder hat der IC sowas wie nen internen Taktgeber? Wenn ein externer gebraucht wird: Welche frequenz brauche ich? Mein AVR hat einen 16MHz quarz. Ich gehe davon aus, dass die Frequenz des DSS mindestens genausohoch sein muss wie jene des AVRs? Da der DSS sonst mit dem empfang der daten nicht zurechtkommt... Stimmt das? 2. Zur signalübertragung zwischen AVR und DSS: Im pdf hats das diagramm welches ich oben angehängt habe. Ich würde jetzt einfach 3 Digitale Pins meines AVRs mit SCLK, FSYNC und SDATA des DSS verbinden. Um daten zu übertragen würde ich nun: FSYNC auf low, dann SDATA setzen und schliesslich SCLK auf low pulsen, wodurch ein datenbit übertragen würde. Dann das nächste bit. Kann man das so machen? Oder gibt es da andere/bessere wege wie man sowas normalerweise macht. Hab schon von SLI gelesen, aber blick da nicht ganz durch. wäre auf jeden fall dankbar für tipps aller art :) beste grüsse Fabian
> 1. Der IC hat einen Pin MCLK, welcher als Digitaler Clock input > beschrieben wird. Heisst das nun, das ich hier einen externen quarz > anschliessen muss? Nein, weil a) ein (reiner) Quarz nicht digital ist und b) für einen Quarz zwei Anschlüsse oder eine (externe) Oszillatorschaltung gebraucht wird. Was du hier brauchst ist entweder ein separater (Quarz-)Oszillator oder eben einfach ein Takt aus deinem Controller. fMax steht im Datenblatt, und es steht auch drin, wie die MClk-Frequenz deine minimale Ausgabefrequenz beeinflusst (kleiner Tipp: steht bereits auf der ersten DB-Seite). > Oder hat der IC sowas wie nen internen Taktgeber? Siehst du einen im Blockschaltbild? :) Er braucht den MCLK. > Wenn ein externer gebraucht wird: Welche frequenz brauche ich? Eine, die weder fMax überschreitet und gleichzeitig erlaubt, die minimal gewünschte (und von dir nicht näher genannte) Ausgangsfrequenz zu bedienen. > Mein AVR hat einen 16MHz quarz. Ich gehe davon aus, dass die Frequenz > des DSS mindestens genausohoch sein muss wie jene des AVRs? Da der DSS > sonst mit dem empfang der daten nicht zurechtkommt... Stimmt das? Nö. Kann höher oder niedriger sein. Auch die maximale Frequenz des SCLK-Signals ist angegeben. Mehr darfste nicht, weniger schon. Hat nur Auswirkungen darauf, wie schnell du mit dem IC kommunizieren kannst, und das ist soweit ich sehen kann nicht mal abhängig vom MCLK. > Zur signalübertragung zwischen AVR und DSS: Im pdf hats das diagramm > welches ich oben angehängt habe. Ich würde jetzt einfach 3 Digitale Pins > meines AVRs mit SCLK, FSYNC und SDATA des DSS verbinden. Um daten zu > übertragen würde ich nun: FSYNC auf low, dann SDATA setzen und > schliesslich SCLK auf low pulsen, wodurch ein datenbit übertragen würde. > Dann das nächste bit. Kann man das so machen? Oder gibt es da > andere/bessere wege wie man sowas normalerweise macht. Hab schon von SLI > gelesen, aber blick da nicht ganz durch. Das wäre BitBanging. Sehr schlecht, weil langsam. Beschäftige dich mit dem SPI-Kapitel des Datenblatts deines Controllers. Das Hardware-SPI-Interface macht das meiste von dem was du da brauchst fast automatisch und du musst dich nicht um die einzelnen Bits kümmern. Ralf
>Das wäre BitBanging. Sehr schlecht, weil langsam. Beschäftige dich mit
dem SPI-Kapitel des Datenblatts deines Controllers.
Das SPI Hardware interface ist nicht wirklich der Hammer, da alle 8 bit
ein Interupt kommt. Nicht wirklich sehr effizient. Waehrend dieser Zeit
kann die CP auch fast nichts Sinnvolles machen.
> Das SPI Hardware interface ist nicht wirklich der Hammer, da alle 8 bit > ein Interupt kommt. Nicht wirklich sehr effizient. Waehrend dieser Zeit > kann die CP auch fast nichts Sinnvolles machen. Ich behaupte aber mal, dass es die 8-Bit trotzdem schneller rauspustet als eine BitBang-Software-Lösung :) Ralf
Hi >Das SPI Hardware interface ist nicht wirklich der Hammer, da alle 8 bit >ein Interupt kommt. Nicht wirklich sehr effizient. Waehrend dieser Zeit >kann die CP auch fast nichts Sinnvolles machen. Bei neueren AVRs kann die USART im SPI-Mode betrieben werden. Dann können es alle 16 Bit sein. MfG Spess
Hallo Danke erstmal fuer die antworten, bin schon etwas schlauer geworden Ralf schrieb: > Was du hier brauchst ist entweder ein separater (Quarz-)Oszillator oder > eben einfach ein Takt aus deinem Controller. fMax steht im Datenblatt, > und es steht auch drin, wie die MClk-Frequenz deine minimale > Ausgabefrequenz beeinflusst (kleiner Tipp: steht bereits auf der ersten > DB-Seite). Ok, sagen wir ich nehme den takt aus dem controller. Gibt es da eine Spezielle funktion hierfuer, oder wie bekomme ich eine konstante frequenz aus meinem uC heraus? Und noch was: Wenn ich statt eines mega32 ein mega 16 verwende, kann ich dann trotzdem das SPI verwenden wie es hier vorgeschlagen wurde? gruesse fabian
guggsu da: http://www.fritzler-avr.de/HP/Librarys/AD9833_his.php und danach hier: http://www.fritzler-avr.de/HP/sig1.php
Den clock kann man ab dem Quarz abzapfen. Ein 74SZ04 an den XTAL2. Und die ClockOption auf hohe Amplitude stellen. Das ist moeglicherweise schon gemacht bei 16MHz.
Martin Wende schrieb: > guggsu da: > http://www.fritzler-avr.de/HP/Librarys/AD9833_his.php > und danach hier: > http://www.fritzler-avr.de/HP/sig1.php super, besten dank für diese links, helfen mir insbesondere für den schaltplan sehr weiter. Da es mir beim projekt mehr ums verständnis geht, würde ich auch gerne selber programmieren. Gibt es irgend eine gute seite, wo man hardware sowie auch softwaretechnisch an SPI herangeführt wird? >Den clock kann man ab dem Quarz abzapfen. Ein 74SZ04 an den XTAL2. Und >die ClockOption auf hohe Amplitude stellen. Das ist moeglicherweise >schon gemacht bei 16MHz. ok subba. 1 Frage, da ich den 74SZ04 grad nirgends so recht finde: Kann ich auch den 74HC1G14 nehmen? liebe grüsse Fabian
Also, soweit ich mich erinnere, verträgt der AD9833 bis zu 30 oder 33 MHz Mastertakt. Merke: je höher, desto besser. Also guck, ob du irgendwo einen Quarzoszillator mit ca. 30..32 MHz bekommst. Ideal wäre ein kleiner SMD-Generator in 3.4 x 2.5 mm Größe. Der paßt rein größenmäßig gut zum DDS-IC. Aber es geht im Prinzip natürlich auch ein uralter Blechtopf im DIL-Gehäuse. Aber merke: Die Ausgangsfrequenz hängt vom Mastertakt ab. Für Rechteck und Dreieck kannst du kaum was filten, aber beim Sinus bringt ausgangsseitiges Filtern mit ner Grenzfrequenz von Mastertakt/2 durchaus was: die Kurve wird glatter und schöner, insbesondere bei höheren Frequenzen. W.S.
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.