Geschätztes Forum, ein kleines Assembler Beispiel, wie per SPI ein AD9835 DDS angesteuert werden kann. Die erzeugte Frequenz und die Registerinhalte werden auf dem Display angezeigt. Die Berechnung der Registerinhalte war etwas aufwändig (>32 Bit). = f(out) x 2^32 : 50.000.000 Formel angepasst (mit vereinfachter Division): = f(out) x 2.882.303.762 : 2^25 Bernhard
> Wie stellt man den Ausgangsfrequenz ein ?
In diesem Beispiel wurde es ohne Tastatureingaben o.ä. realisiert:
; Frequenz definieren
ldi temp1,BYTE1(1000)
ldi temp2,BYTE2(1000)
ldi temp3,BYTE3(1000)
ldi temp4,BYTE4(1000)
; Frequenz im SRAM ablegen
STS(adr_FREQUENZ_BYTE0),temp1
STS(adr_FREQUENZ_BYTE1),temp2
STS(adr_FREQUENZ_BYTE2),temp3
STS(adr_FREQUENZ_BYTE3),temp4
; Frequenz einstellen
rcall DDS_FREQUENZ
könntest Du erklären was hier wie vereinfacht wurde? = f(out) x 2^32 : 50.000.000 Formel angepasst (mit vereinfachter Division): = f(out) x 2.882.303.762 : 2^25
> könntest Du erklären was hier wie vereinfacht wurde?
= f(out) x (2^32) : (50.000.000)
= f(out) x (4.294.967.296) : (50.000.000)
= f(out) x (4.294.967.296 x 0,67108864) : (50.000.000 x 0,67108864)
= f(out) x (2.882.303.762) : (33.554.432)
= f(out) x (2.882.303.762) : (2^25)
Die Division durch 2^25 ist in Assembler relativ einfach zu realisieren,
z.B. alle Bitts 25 mal nach rechts verschieben.
Bernhard
Die Frequenz des DDS AD9835 lässt sich auch auf in 0,1Hz Schritten einstellen: f(out) = 1000,0 Hz = 10.000 = f(out) x (2^32) : (50.000.000 x 10) = f(out) x (2^32 x 1,073741824 ) : (50.000.000 x 10 x 1,073741824) = f(out) x (4.611.686.018) : (536.870.912) = f(out) x (4.611.686.018) : (2^29) Bernhard
Hallo Bernhard, mathematisch betrachtet ist deine Aufstellung nicht korrekt, es ist ein formaler Fehler. Links vom Gleichheitszeichen steht nichts, also was soll GLEICH sein ?
@alle Eine konkrete Anwendung des DDS: Beitrag "Spektrumanalysator Frequenzspektrumanalysator Frequenzspektrometer Speki Wobbelgenerator TFT Atmega8" @Uwe >Links vom Gleichheitszeichen steht nichts, also was soll GLEICH sein ? Bezieht sich auf den ersten Beitrag: "Die Berechnung der Registerinhalte..."
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.