mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik DDS Oszillator will nicht


Autor: P. Müller (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo Leute,

hoffentlich kennen sich ein paar von euch aus mit dem Thema 
DDS-Oszillatoren.
Ich habe hier einen AD9951 der von einem PIC 16f876 gesteuert werden 
soll und zwar über SPI. Leider macht der DDS an seinem Ausgang keinen 
Mucks (Gleichspannung 0V).
Im Prinzip ist alles richtig angeschlossen, Versorgungsspannungen habe 
ich nachgemessen und auch die SPI (Signale auf den Leitungen mit dem 
Oszi angeschaut) ist OK, Taktsignal liegt auch an.

Wenns jemanden gibt, der sich mit der Sache auskennt, poste ich gerne 
auch Schaltplan und etwas Code...

MFG

Autor: Zacc (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ja, mach das bitte. Vielleicht hilfts.

Autor: P. Müller (Gast)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
So hier sind Schaltplan und Code:



Initialisierung der SPI:
bcf    SSPCON, CKP     ;clock idle: low level
bsf    SSPCON, SSPM0     ;clock=fosc/16, master mode
bcf    SSPSTAT, CKE     ;transmission on rising edge

bsf            SSPCON, SSPEN     ;SPI aktivieren




Frequenzwort ändern:
movlw   b'00000100'    ;Register ansprechen
movwf  SSPBUF
call   warteSPI       ;warte bis SPI-Übertragung fertig

movlw  b'00000000'    ;Frequenzwort auf irgendeinen Wert setzen
movwf  SSPBUF
call   warteSPI

movlw  b'10001111'
movwf  SSPBUF
call   warteSPI

movlw  b'00000000'
movwf  SSPBUF
call   warteSPI

movlw  b'00000000'
movwf  SSPBUF
call   warteSPI

bsf    PORTC, 6    ;I/O Update (an Pin 6 von PortC zum DDSChip)
nop
bcf    PORTC, 6



die Routine warteSPI:
warteSPI
nochmal2
  btfss   PIR1, SSPIF
  goto  nochmal2
  bcf  PIR1, SSPIF
  return


An der Konfiguration vom DDS-Chip selbst wird nach dem Power-Up nichts 
verändert.
Zuerst wird die SPI vom PIC initialisiert, dann das Frequenzwort 
geändert.
Aber am Ausgang liegt einfach keine Schwingung an.

Gibt es da irgendwas, was man beachten muss, damit der Chip was 
ausspuckt ??

Danke
P.M.

Autor: Andreas (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Was sagt denn das Datenblatt - muss man eventuell CS/ nach jedem 
Transfer auf High ziehen?

Autor: P. Müller (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
/CS: This pin functions as an active low chip select that allows 
multiple devices to share the IO-Bus.

-> Also bei nur einem Chip auf 0 legen.

Autor: YAG (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Der DDS-Baustein selbst muß ja auch initialisiert werden. Hast du das 
gemacht?

Autor: P. Müller (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ich verwende die default-Einstellungen, dann brauche ich den Chip doch 
eigentlich auch nicht zu initialisieren, oder?

Mfg

Autor: Zacc (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ueblicherweise muss man CS nach einem Befehl wieder hoch nehmen. 
<Nachschau...> Seite 21 des Datenblattes sagt das auch so. So ein 
komplexer chip macht default gar nichts wuerde ich mal sagen.

Autor: P. Müller (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Naja auf Seite 21 ist das im Signalgraphen mal so eingezeichnet. Wenn 
man mehrere Chips benutzt ist das auch richtig!
Aber wenn man blos einen hat? ...
Hier http://www.dl5mgd.de/dds/Bilder/Ad9951.png hat das jemand fest auf 
Masse gelegt - so wie ich - und es scheint zu funktionieren.

Das mit der Initialisierung ist so eine Sache. Ich würde das ja gerne 
machen, wenn es was zu initalisieren gäbe. Die Standardeinstellungen 
sind zwar nicht der Wahrheit letzter Schluss - der Chip sollte damit 
aber trotzdem was ausgeben. Ich hab auch schon probiert das ein oder 
andere umszustellen - aber ohne Erfolg... :/

Autor: Zacc (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Stimmt. Ok, dieses CS ist eine etwas eigensinnige Implementation des 
SPI. Ueblicherweise wird das reingeclockte auf CS steigend gelatcht, dh 
uebernommen.  Diese Funktion wird nun vomteilweise vom IOSync 
uebernommen. Mit IOSync nach tief beginnt der Zyklus. Der sollte nicht 
immer tief sein, denk ich. Woher weiss der chip welches bit was bedeutet 
? Ein Glitch auf SCLK und es stimmt nie mehr was.....
Welche Clockinput mode ist denn default aktiv ?

Autor: P.Müller (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
also zum IOSYNC:
Asynchronous Active High Reset of the Serial Port Controller. When high, 
the current I/O operation is immediately terminated, enabling a new I/O 
operation to commence once IOSYNC is returned low. If unused, ground 
this pin; do not allow this pin to float.

Sprich: Willst du einen "Kommunikationprozess" mittendrin abbrechen, 
dann setzt du IOSYNC auf 1. Da ich von diesem Feature aber keinen 
Gebrauch mache, liegt es auf GND.

Die Kommunikation läuft, wie du sicher bemerkt hast über SPI. Das erste 
Byte gibt die Adresse von dem an, was im DDS-Chip geändert werden soll. 
Die Bytes danach sind die Daten. Also beim Frequenzwort erst die Adresse 
(00000100) danach die 4 Byte des Frequenzwortes (hier: 000000000, 
10001111, 000000000 und 000000000). Danach wird der IO-Update Pin kurz 
auf 1 gesetzt (strobe).
Damit ist der Kommunikationsprozess abgeschlossen.

default clockmode:
über den clockmodepin (im Schaltplan rechts unten - schwer zu lesen, 
sry). Der liegt bei mir auf GND - also interner Oszillator aus. Das 
REFCLCK-Multiplier Register steht auf 0 - also keine Multiplikation (= 
den Takt direkt übernehmen)

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.