mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik AD9851 & Schattenspiele am Oszi


Autor: Max Meier (gbl1)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,

mittlerweile verzweifelt, versuche ich einen AD9851 vernünftig 
anzusteuern.
Ich habe hier das Phänomen, dass bei gewissen Frequenzen das Signal am 
Oszi einen "Schatten" hat.
Aktuell bei 3950kHz+9000kHz=12950MHz. Das Sinus ist gut sichtbar und der 
Schatten scheint um 180° Phasenverschoben zu sein.

Mein Tuningword berechne ich aktuell so (mikroPASCAL):
function AD9851_Calculate_Frequency_V2(inFrequency, inReferenceOszillator: dword): dword;
const Two30   = 1073741824;
var  phase: dword;
     r: real;
Begin
  r:=Two30/inReferenceOszillator;
  Phase:=round(inFrequency*4*R);
  result:=phase;
end;

Übertragen werden zuerst die Frequenz-TuningBits und danach das 
ControllByte.
Das ControlByte ist %00000001

ist der Sinus am Oszi "sauber", zeigt auch der Spektrumanalyzer einen 
sauberen Peak an.

Zu meiner Frage:
Wie kann ich die "Schattenspiele" verhindern?


LG
Günter

Autor: ich (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
13 Gigaherz?:D

Autor: Max Meier (gbl1)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Nein.
Hab den Punkt vergessen.

Aktuell bei 3950kHz+9000kHz=12.950MHz. Das Sinus ist gut sichtbar und 
der
Schatten scheint um 180° Phasenverschoben zu sein.

LG
Günter

Autor: Max Meier (gbl1)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
Hmm - kann mir denn keiner helfen?

Update:

Ich habe mit http://designtools.analog.com/dtDDSWeb/dtDDSMain.aspx das 
Tuningwort berechnet und übertragen.

Mein RefClock ist 30MHz
  AD9851_Send_FTW(%01110011001100110011001100110011);                           
  AD9851_Send_CtrlW(%00000000);

am Oszi kommt das (Anhang) raus.


Manche Frequenzen sind jedoch "astrein".

Daher gehe ich von einer korrekten Übertragung aus.

LG
Günter

Autor: Achim (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
In dem Codenschnipsel in deinem letzten Post versuchst du ein 13.5 MHz 
Signal mit einer DDS Clock von 30 MHz zu erzeugen. Wenn du dir das 
ungefilterte Signal mal mit dem Design Tool auf der Analog Devices 
Website anschaust wirst du sehen dass das schwer zu filtern ist, um noch 
einen halbwegs vernünftigen Sinus zu bekommen. Mit dem 6x Clock 
Multiplier würde schon das ungefilterte Signal viel besser sein und ist 
daher auch leichter weiter zu verarbeiten.

Wie sieht dein Ausgangsfilter den aus?

Autor: Max Meier (gbl1)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,

ich verwende als DDS-60 Modul genau dieses hier:

http://midnightdesignsolutions.com/dds60/index.htm...

LG
Günter

Autor: Alex H. (hoal) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Wie Achim schon schrieb:
Wähle bei http://designtools.analog.com/dtDDSWeb/dtDDSMain.aspx den 
AD9851 aus, wähle
Reference Clock:      30 MHz
Output Frequency:     13500 KHz
Ref Clock Multiplier: Bypass (no multiplier),
stelle unten den Filter auf Lowpass mit 60 MHz Grenzfrequenz und sieh 
dir das Ergebnis an.

Mit aktiviertem 6x Multiplier
AD9851_Send_CtrlW(%10000000);
sollte es besser aussehen.

Autor: Achim (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Alex H. schrieb:
> Mit aktiviertem 6x Multiplier
> AD9851_Send_CtrlW(%10000000);
> sollte es besser aussehen.

Ich glaube es müsste AD9851_Send_CtrlW(%00000001) heißen. Außerdem muss 
dann natürlich auch das frequency tunig word entsprechen geändert 
werden.

Autor: Alex H. (hoal) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Achim schrieb:
> Ich glaube es müsste AD9851_Send_CtrlW(%00000001) heißen. Außerdem muss
> dann natürlich auch das frequency tunig word entsprechen geändert
> werden.

Stimmt natürlich beides.

Autor: Max Meier (gbl1)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Danke euch allen.

Wie ich im Eröffnungspost geschrieben habe,


   Aktuell bei 3950kHz+9000kHz=12950MHz.
   Das Sinus ist gut sichtbar und der Schatten
   scheint um 180° Phasenverschoben zu sein.
   [...]
   Übertragen werden zuerst die Frequenz-TuningBits und danach das
   ControllByte. Das ControlByte ist %00000001

   Ist der Sinus am Oszi "sauber", zeigt auch der
   Spektrumanalyzer einen sauberen Peak an.

Habe ich zuerst auch mit x6 versucht.

Ich verstehe jedoch nicht, wieso das beschriebene Problem nicht bei 
jeder Frequenz auftritt. Und ich bin ratlos wie ich nun weiter vorgehen 
könnte.

PS: Die AD9851er Funktionen übertragen die Bits von rechts nach links.


Noch eine Frage: das x6 Bit? Schaltet dieses intern im AD9851 einen 
Frequenzvervielfacher hinzu?

LG
Günter

Autor: Alex H. (hoal) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Günter W. schrieb:
> Danke euch allen.
>
> Wie ich im Eröffnungspost geschrieben habe,
>
>
>    Aktuell bei 3950kHz+9000kHz=12950MHz.
>    Das Sinus ist gut sichtbar und der Schatten
>    scheint um 180° Phasenverschoben zu sein.
>    [...]
>    Übertragen werden zuerst die Frequenz-TuningBits und danach das
>    ControllByte. Das ControlByte ist %00000001
>
>    Ist der Sinus am Oszi "sauber", zeigt auch der
>    Spektrumanalyzer einen sauberen Peak an.
>
> Habe ich zuerst auch mit x6 versucht.
>
> Ich verstehe jedoch nicht, wieso das beschriebene Problem nicht bei
> jeder Frequenz auftritt. Und ich bin ratlos wie ich nun weiter vorgehen
> könnte.

Ich bin auch ratlos, wie dein Signal aussieht. Hat der Schatten die 
selbe Frequenz ist aber um 180° verschoben? Dann würde er sich mit dem 
eigentlichen Signal auslöschen.

Wie sieht dein Aufbau aus? Triggert dein Oszi vielleicht auf beide 
Flanken?

> Noch eine Frage: das x6 Bit? Schaltet dieses intern im AD9851 einen
> Frequenzvervielfacher hinzu?

Ja, dadurch wird die Referenzfrequenz versechsfacht. Damit sollte 
zumindest das Signal aus deinem Beitrag 
Beitrag "Re: AD9851 & Schattenspiele am Oszi" 
besser aussehen.

Hast du eigentlich schon das Datenblatt durchgelesen?

Autor: Max Meier (gbl1)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
Hallo Alex,

ich danke dir für deine Mühe, mein teilweise unzulängliches Posting zu 
verstehen. Ich war leider erst heute in der Lage zwei Fotos von meinem 
Oszi zu machen.

Alex H. schrieb:

> Ich bin auch ratlos, wie dein Signal aussieht. Hat der Schatten die
> selbe Frequenz ist aber um 180° verschoben? Dann würde er sich mit dem
> eigentlichen Signal auslöschen.

Ich habe zwei Screenshots angehängt. Das kaputte Signal entsteht bei 
19.450 MHz.


> Wie sieht dein Aufbau aus? Triggert dein Oszi vielleicht auf beide
> Flanken?

Ich habe hier ein TRIO 60 MHz Oszi. Ich glaube nicht dass es auf beiden 
Flanken triggert. Wissen jedoch tue ich es nicht.

Mein Aufbau:

  DDS: DDS-60 vom AMQRP Club 
(http://www.midnightdesignsolutions.com/dds60/index...), Der 
Oszillator läuft mit 30MHz
  CPU: ATMEGA 16 auf easyAVR6 Board.
  Sprache: mikroPASCAL. Habe keinen Programmer für dieses Board und 
BASCOM. C kann ich nicht so gut.

  Das DDS Modul ist am PORT B angeschlossen. Stromversorgung (5V) via 
easyAVR Board.

Software:
  Ich habe die Frequenzen sowohl mit x6 als auch mit x1 berechnet.
  Bei x6 verwende ich als Referenzfrequenz dann 180MHz anstatt von 
30MHz.


Dieses FTW beispielsweise wurde mit dem Onlinetool berechnet. Als 
RefClock habe ich 30MHz eingegeben.
  AD9851_Send_FTW(%0001010010001101000101011001111); 
// 6x  14.450MHz Phasenüberlagert
  AD9851_Send_CtrlW(%00000001);


Letztlich ist das Ergebnis gleich. Es spielt auch keine Rolle ob die 
Frequenzen selbst in der CPU berechnet werden oder via Designtool als 
Festfrequenz übertragen werden. Bei manchen Frequenzen ist der Output 
sauber (Oszi und Spectrumanalyzer), bei manchen eben nicht.


LG
Günter

Autor: Bernhard Spitzer (b_spitzer)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Günter W. schrieb:
>> Wie sieht dein Aufbau aus? Triggert dein Oszi vielleicht auf beide
>> Flanken?
>
> Ich habe hier ein TRIO 60 MHz Oszi. Ich glaube nicht dass es auf beiden
> Flanken triggert. Wissen jedoch tue ich es nicht.

Das Bild 07122010.jpg sieht nach schlechtem Trigger aus. Versuche mal 
HF-Trigger statt AC (oder umgekehrt), Triggerlevel nicht Auto, sondern 
Manuell, evtl. Holdoff-Regler drehen.

tschuessle
Bernhard

Autor: Max Meier (gbl1)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
Danke Bernhard für deinen Input.
Leider hat das auch nicht zum Erfolg geführt.

In den Dateien befindet sich der Output bei 10.4 MHz.
Ich meine, wenn das OSZI nicht richtig Triggern kann, dann müsste beim 
Spektrumanalyzer ein deutlicher PEAK zu sehen sein.


IDEE: Ist hier jemand des C's oder ASM mächtig? Ein Refernzprogramm wäre 
echt toll.


Board: easyAVR6
CPU: ATMEGA16, extern CLK mit 8MHz Quarz

var
    b9851_fqud: sbit at PORTB.1;       // LOAD
    b9851_clk:  sbit at PORTB.2;        // CLOCK
    b9851_data: sbit at PORTB.3;       // DATA

für 10.4 MHz + 9MHz = 19.4 MHz

Ich habe leider kein TTL Speicheroszi. Somit kann ich nur hoffen, die 
Bits korrekt zu übertragen.

LG
Günter

Autor: Achim (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Also dein letztes Oszilloskop Bild sieht immer noch so aus als ob der 6x 
clock multiplier nicht an sein. Ändert sich an der Ausgabefrequenz denn 
etwas wenn du nur das control word änderst? Also den clock multiplier 
an- und ausschaltest bei gleichem frequency tuing word?

Du sagst das es keinen Unterschied macht ob du den 6x multiplier an hast 
oder nicht. Kannst du dann noch mal ein Oszilloskop und Spektrumanalyzer 
Bild von der gleichen Frequenz mit und ohne clock multiplier machen? 
(Mit entsprechend veränderten frequency tunig word). Bei dem Oszilloskop 
Bild wäre zudem die Time/DIV und Volt/DIV Werte interessant.

Autor: Max Meier (gbl1)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
Hallo Achim,

danke für deine Anregung. Deiner Aufforderung nach habe ich drei PDF's 
mit allen Parametern erstellt. Ich hoffe diese sind zur 
Fehlereingrenzung hilfreich genug.

LG
Günter

Autor: Max Meier (gbl1)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ich möchte hier noch einen BASCOM Code beisteuern, welcher bei 19400kHz 
das exakt gleiche Phänomen erzeugt.

Ich bin jetzt mit meinem Latein komplett am Ende.
Ich hatte die Hoffnung mit meinen PASCAL Code etwas vermurkst zu haben - 
dies scheint jedoch nicht der Fall zu sein.

LG und ein frustrierter
Günter

'Bascom-AVR code for Atmega16 and AD9851 with an 30.000 Mhz Xtal
'http://www.zendamateur.com/viewtopic.php?f=14&t=3801

$regfile = "m16def.dat"
$crystal = 8000000
$baud = 9600

$hwstack = 256
$swstack = 256
$framesize = 256

Waitms 100                                                  'Time to startup uC


Dim Frequ_gen As Long
Dim Frequ_gen_d As Double

Dim W As Long


Config Portb = Output

9851_data Alias Portb.3
9851_clk Alias Portb.2
9851_fqud Alias Portb.1


Declare Sub Reset_ad9851()
Declare Sub To_ad9851()


Reset_ad9851


Frequ_gen = 19400000
Call To_ad9851()

Do
Loop


End


'Generator-routine---------------------

Sub Reset_ad9851()

   9851_clk = 0
   9851_fqud = 0
   Waitus 1

   9851_clk = 1
   Waitus 1
   9851_clk = 0
   Waitus 1

   9851_fqud = 1                                            'shift to serial-mode
   Waitus 1
   9851_fqud = 0
   Waitus 1
End Sub



Sub To_ad9851()
   Local Walk As Byte

   Frequ_gen_d = Frequ_gen

   '   6 x REFCLCK
   Frequ_gen_d = Frequ_gen_d * 23.860929                    '= 2 ^ 32 / 30.00000 = delta phi pro Hz
   Frequ_gen_d = Round(frequ_gen_d)


   W = Frequ_gen_d
   For Walk = 1 To 32
      9851_data = W.0
      Waitus 1

      9851_clk = 1                                          'Clock
      Waitus 1
      9851_clk = 0
      Waitus 1

      Shift W , Right , 1                                   'from LSB to MSB (W0 to W31)
   Next Walk


   W = &B00000001                                           '0000001                                             'W32 to W39; here setting of 6x REFCLOCK
   For Walk = 1 To 8
      9851_data = W.0
      Waitus 1

      9851_clk = 1                                          'Clock
      Waitus 1
      9851_clk = 0
      Waitus 1

      Shift W , Right , 1
   Next Walk

   9851_fqud = 1                                            'FQ_UD takes the 40 Bit
   Waitus 1
   9851_fqud = 0

End Sub

Autor: Max Meier (gbl1)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Habe den Fehler gefunden.

der AD9851 braucht mindestens 5.0V + ein Paar zerquetschte.
Bei mir ist die Spannung auf 4.9V irgendwas runtergegangen. Das reicht 
für mache Frequenzen nicht.

Kleine Ursache, Große Wirkung


LG
Günter

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.