DDS AD9835 SPI TWI I2C Beispiele ATmega8 Assembler

OP #3134680
Lesenswert?

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
Angehängte Dateien:
OP #3138203
Lesenswert?

> 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
OP #3140519
Lesenswert?

> 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

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren