Na rozne sposoby mozna je podlaczyc. A dokladnie wgrac 5 bytow z czego pierwszy zawiera informacja o przesunieciu fazy, rodzaj transmijsji (szeregowa lub rownolegla) oraz wlaczenie. Pozostale cztery to zapis 32 bitowy czestotliwosci generatora max 40 MHz. Sam generator moze miec max czestotliwosc taktowania 125MHz Do wgrania tych 5 bytow uzylem:
1. ATmega8515
2. Komputera.
Ad1. W m8515 uzylem PortB B0 - B7 jako szyne danych D0 - D7 a PortC C0 - C2 jako sygnaly strerujace W_Clk, FQ_Up oraz Reset.
Tu program wpisujacy czestotliwosc 125kHz.
Kod: Zaznacz cały
;--------------------------------------------------------------------------------------------
; Soft to setup frequency 125kHz in AD9850 by ACeK :)
;--------------------------------------------------------------------------------------------
.nolist ;
.include "m8515def.inc" ;
.list ;
.listmac ;
;--------------------------------------------------------------------------------------------
; Constants
;--------------------------------------------------------------------------------------------
;--------------------------------------------------------------------------------------------
; Registers
;--------------------------------------------------------------------------------------------
.Def Acc = r16 ; R16 now is Acc
.Def W0 = r20 ; R20 contorl byte
.Def W1 = r21 ; R21 data byte Ms
.Def W2 = r22 ; R22 data byte
.Def W3 = r23 ; R23 data byte
.Def W4 = r24 ; R24 data byte Ls
;--------------------------------------------------------------------------------------------
;--------------------------------------- Code Segment) --------------------------------------
.cseg ;
;--------------------------------------------------------------------------------------------
.org 0x0000 ;
;
ResetProcessor : ;
Cli ;Clear Global Interrupt Flag
Ldi Acc, Low(RamEnd) ;Init stack
Out Spl, Acc ;
Ldi Acc, High(RamEnd) ;Init stack
Out Sph, Acc ;
;
ldi Acc, 0b11111111 ;load to acc 255 (0xff)
out DDRC, Acc ;control port for AD985
;xxxxx1xx Reset
;xxxxxx1x Fq_up
;xxxxxxx1 W_Clk
Out PortC, Acc ;PortA set as output
out DDRB, Acc ;data port for AD9850
out PortB, Acc ;PortB set as output
;
sei ;Set Global Interrupt Flag
;seting 125kHz at 125Mhz
ldi W0, 0x00 ;5 bits cos, 1 On/Off and 2 reserve
ldi W1, 0x00 ;byte 1 bits 31 to 24
ldi W2, 0x41 ;byte 2 bits 23 to 16
ldi W3, 0x89 ;byte 3 bits 15 to 8
ldi W4, 0x37 ;byte 4 bits 7 to 0
;--------------------------------------------------------------------------------------------
;--------------------------------------------------------------------------------------------
Ldi Acc, 0b00000010 ;Begin Reset
Out PortC, Acc ;
Nop ;
Nop ;
;
Ldi Acc, 0b00000110 ;Reset_Up
Out PortC, Acc ;
Nop ;
Nop ;
;
Ldi Acc, 0b00000010 ;Reset_Down
Out PortC, Acc ;
Nop ;
Nop ;
;
Rcall ReLoad ;
;
Loop: ;
Nop ;
Rjmp Loop ;
;--------------------------------------------------------------------------------------------
ReLoad: ;
Ldi Acc, 0b00000000 ;Fq_Up Down
Out PortC, Acc ;
Nop ;
;
Mov Acc, W0 ;Load W0
Out PortB, Acc ;
Nop ;
;
Rcall W_Clk ;W_Clk Up nad Down
;
Mov Acc, W1 ;Load W1
Out PortB, Acc ;
Nop ;
;
Rcall W_Clk ;W_Clk Up nad Down
;
Mov Acc, W2 ;Load W2
Out PortB, Acc ;
Nop ;
;
Rcall W_Clk ;W_Clk Up nad Down
Mov Acc, W3 ;Load W3
Out PortB, Acc ;
Nop ;
;
Rcall W_Clk ;W_Clk Up nad Down
Mov Acc, W4 ;Load W4
Out PortB, Acc ;
Nop ;
;
Rcall W_Clk ;W_Clk Up nad Down
;
Ldi Acc, 0b01010101 ;
Out PortB, Acc ;
Nop ;
;
Ldi Acc, 0b00000010 ;
Out PortC, Acc ;
;
Ret ;
;--------------------------------------------------------------------------------------------
W_Clk: ;
Ldi Acc, 0b00000001 ;W_Clk Up
Out PortC, Acc ;
Nop ;
Ldi Acc, 0b00000000 ;W_Clk Down
Out PortC, Acc ;
Nop ;
Ret ;
;--------------------------------------------------------------------------------------------
.exit ; end
;--------------------------------------------------------------------------------------------
Ad2. Wgrywanie przez port Lpt pin 2 - pin 9 D0 - D7 (dane)
oraz sterowanie
pin 1 -> Reset,
pin 14 -> FQ_Up,
pin 31 -> W_Clk oraz soft od Analog Devices W pdf zalecany jest bufor pomiedzy Lpt a AD9850 ale do prob mam tylko wstawione oporniki 100R. Mozna tez zrobic zwore pomiedzy pin 1 oraz pin 32 drukarki. Wtedy jak sie sprawdza czy modul jest podpiety zostanie wykryty Sam program ma fajna opcje Sweep gdzie mozna ustawic czestotliwosc poczatkowa oraz koncowa plus skok. Ale jak sie ustawi output to czestotliwosc pojawia sie tylko na chwile
Jest tez chinska wersja programu sterujacego dane sa takie same lecz sterowanie
pin 14 -> W_Clk
pin 16 -> FQ_Up
pin 36 -> Reset,
Wszystkie pins drukarki odnosza sie do zlacza typu Centronis