Synteza na AD9851 a Bascom AVR - Wersja do druku +- HomeMade (http://sp-hm.pl) +-- Dział: Urządzenia nadawczo odbiorcze KF (/forum-62.html) +--- Dział: Syntezy częstotliwości i moduły DSP (/forum-74.html) +--- Wątek: Synteza na AD9851 a Bascom AVR (/thread-1609.html) |
RE: Synteza na AD9851 a Bascom AVR - SQ9GAC - 01-12-2013 11:30 Myślę , że dam radę na razie piszę na A128 z tymi samymi funkcjami co na prototypie A644p dodałem szybki wybór pamięci z klawiatury 10 RE: Synteza na AD9851 a Bascom AVR - SP5IOU - 05-12-2013 20:43 Hej. Ja właśnie władowałem twój program w płytkę arduino mega 2560. Tam jest wszystko co potrzeba, może oprócz RTC, ale jest port usm przez który można w przyszłości dorobić cat-a. Program zajął 8% flasha, więc miejsca chyba nigdy nie zabraknie. Tylko muszę zmienić porty przycisków, bo konstruktor tej płytki postanowił nie wyprowadzać portów d4, d5 i d6 a podlutować się do tego pająka nie jest łatwo. płytkę sprowadziłem z Chin za 16$ łącznie z przesyłką, przy okazji zamawiania modułów DDS po 8$. http://www.ebay.com/itm/New-Nice-1PCS-ATmega2560-16AU-Board-with-USB-Cable-For-ARDUINOs-IDE-MEGA-2560-/181190707898?ssPageName=ADME:L:OC:US:3160 http://www.ebay.com/itm/AD9850-DDS-Signal-Generator-Module-0-40MHz-2-Sine-Wave-2-Square-Wave-Output-AA-/271270411301?pt=LH_DefaultDomain_0&hash=item3f28f9fc25 To chyba najprostsza i najtańsza metoda wykonania sterownika z dużym zapasem na nowe pomysły, na 8 bitowym AVR. Fajne i tanie (3$ przesyłka wliczona w cenę) są moduły arduino z procem atmega328, tyle że do pełnego sterownika mają trochę za mało portów. http://www.ebay.com/itm/1PCS-PRO-Mini-ATMEGA328P-5V-16M-16MHZ-Replace-ATmega128-Arduino-Compatible-Nano-/271304310492?pt=LH_DefaultDomain_0&hash=item3f2aff3edc RE: Synteza na AD9851 a Bascom AVR - SQ9GAC - 05-12-2013 21:08 A jaki używasz wyświetlacz do tej płytki ? przyszłościowo myślę o wyświetlaczu graficznym ... a jak na razie uruchamiam płytkę sterownika z mojego projektu RE: Synteza na AD9851 a Bascom AVR - SQ3PJV - 18-02-2014 1:13 Cyt:" Na stole " aktualnie jest dalej rozwijany ten wsad ale ma jeszcze dużo nie dociągnięć. Andrzeju jak prace nad kodem dopracowałeś? Mocno kibicuję twojej wersji . Swoją wykonałem na płytce Ryśka a program bez pośrednich z s-metrem -coś kuleje sterowanie bandami inne, do płytki z DW_Radio. pisałeś o powielaczu x4 czy zastosowałeś dokładnie wykonanie wg. schematu Rafała SQ4AVS z dodatkowym tranzystorem i czy potrzebne jest to dodatkowe wzmocnienie? Rysiu a jak twoje prace. Darek RE: Synteza na AD9851 a Bascom AVR - SQ9GAC - 05-08-2014 20:26 Dodałem RIT-a można wyświetlać +- 10 Khz lub freq Rita, poprawiłem działanie encodera z baragrafem , jest to wersja beta bez wodotrysków z poprzedniej wersji RE: Synteza na AD9851 a Bascom AVR - SP9MRN - 05-08-2014 22:38 Może ktoś podpowiedzieć jakie jest sterowanie pasm do DW radio? MAc mrn RE: Synteza na AD9851 a Bascom AVR - SQ3PJV - 22-08-2014 0:15 Zapewne filtry BFP u mnie tak zadziałało, ale nie ważne. Tylko te trzy wyprowadzenia. RE: Synteza na AD9851 a Bascom AVR - SQ9GAC - 30-11-2014 10:36 Witam, Ostatnio zdobyłem scalaki AD9834 i znalazłem program do jego obsługi lecz z ograniczeniem do pasma 40M , nie wiem jak obliczyć dzielnik przy generatorze 75Mhz,80Mhz oraz dodać pełny zakres 1 do 40 Mhz , program poniżej '******************************************************** 'AD9834 DDS VFO program ' ' 7.000Mhz to 7.200Mhz Limitted! ' (VFO frequency = IF frequency + Frequency) ' 2014/01/07 ' JA2GQP ' BASCOM AVR 2.0.7.5(DEMO version) Compiled '-------------------------------------------------------- ' Function ' ' 1.Upper heterodyne ' 2.RIT operation(-10khz to +10khz) ' 3.STEP(10000,1000,100,10) ' 4.Memory operation is push RIT ' (Frequency and Step) ' 5. Protection operation at the time of transmission '******************************************************** $regfile = "m88adef.dat" $crystal = 800000 '0.8Mhz clock '--- config port --- Config Portb = &B00000000 '0=TX,1-6=none Config Portd = &B00001111 '0=FSYNC,1=SCLK,2=SDATA,3=none '4=ENC B,5=ENC A,6=STEP,7=RIT '--- port pullup --- Portb = &B11111111 'All Portd = &B11110000 'RIT,STEP,ENC A,ENC B '--- debounce set --- Config Debounce = 1 '---LCD port assign --- Config Lcdpin = Pin , Db7 = Portc.0 , Db6 = Portc.1 Config Lcdpin = Pin , Db5 = Portc.2 , Db4 = Portc.3 Config Lcdpin = Pin , E = Portc.4 , Rs = Portc.5 Config Lcd = 16 * 2 '--- constant data --- Const If_frq = 8468500 'IF frequency(LSB carrier point) Const Lw_frq = 7000000 'Lower limit operation frequency Const Hi_frq = 7200000 'Upper limit operation frequency Const Def_frq = 7050000 'Operation frequency(initial) Const Lw_vfo = If_frq + Lw_frq 'VFO lower limit Const Hi_vfo = If_frq + Hi_frq 'VFO upper limit Const Def_vfo = If_frq + Def_frq 'VFO operation frequency(initial) Const Lw_rit = -10000 'RIT lower limit Const Hi_rit = 10000 'RIT upper limit 'Const Scal = 4.00000 '2^28/2^26 2^26(X'tal 67.108864Mhz) Const Scal = 5.36870912 '2^28/50000000 (X'tal 50.000Mhz) '--- define subrutine --- Declare Sub Enc_sub 'Encorder Declare Sub Dds_sub 'DDS Declare Sub Lcd_sub 'LCD Declare Sub Stp_sub 'STEP Declare Sub Rit_sub 'RIT Declare Sub Rx_sub 'RX Declare Sub Tx_sub 'TX '--- define memory --- Dim Vfo_dat As Long 'VFO freqency data Dim Dds_dat As Long 'DDS frequency data Dim Str_frq As String * 10 'String frequency Dim Dsp_frq As String * 10 'Display frequency Dim Sng_wrk As Single 'main channel Dim Lng_wk1 As Long 'Long work1 Dim Lng_wk2 As Long 'Long work2 Dim Wrd_wk1 As Word 'Word work1 Dim Wrd_wk2 As Word 'Word work2 Dim Wrd_wk3 As Word 'Word work3 Dim Enc_stp As Integer 'Encorder step Dim Rit_dat As Integer 'RIT data Dim Int_wrk As Integer 'Integer work Dim Flg_rit As Byte 'RIT flag Dim Flg_tx As Byte 'TX flag Dim Frq_eep As Eram Long 'power off frequency A Dim Stp_eep As Eram Integer 'EEP STEP data '-------------- 'Main roution '-------------- Main: Flg_tx = 0 Flg_rit = 0 'RIT flag If Frq_eep =< 0 Then 'EEP VFO data check Vfo_dat = Def_vfo 'Initialize VFO data Frq_eep = Vfo_dat Else Vfo_dat = Frq_eep 'Restore VFO data End If If Stp_eep =< 0 Then 'EEP STEP data check Enc_stp = 1000 Stp_eep = Enc_stp 'Initialize STEP data Else Enc_stp = Stp_eep End If 'Restore STEP data Cursor Off Cls Call Lcd_sub 'LCD Do If Flg_tx = 0 Then Debounce Pind.5 , 0 , Enc_sub , Sub 'Encorder Debounce Pind.6 , 0 , Stp_sub , Sub 'Step Debounce Pind.7 , 0 , Rit_sub , Sub 'RIT End If Debounce Pinb.0 , 1 , Rx_sub , Sub 'RX Debounce Pinb.0 , 0 , Tx_sub , Sub 'TX If Flg_rit = 1 Then Dds_dat = Vfo_dat + Rit_dat Else Dds_dat = Vfo_dat End If If Flg_tx = 1 Then Dds_dat = Vfo_dat End If Call Dds_sub Loop End '----------------------------- 'Encoder check,Create DDS data '----------------------------- Sub Enc_sub Int_wrk = Enc_stp If Pind.4 = 1 Then 'Up Lng_wk1 = Vfo_dat + Int_wrk Lng_wk2 = Rit_dat + Enc_stp Else Lng_wk1 = Vfo_dat - Int_wrk 'down Lng_wk2 = Rit_dat - Enc_stp End If If Flg_rit = 1 Then Rit_dat = Lng_wk2 Else Vfo_dat = Lng_wk1 Rit_dat = 0 End If If Vfo_dat < Lw_vfo Then 'VFO lower limit check Vfo_dat = Lw_vfo End If If Vfo_dat > Hi_vfo Then 'VFO upper limit check Vfo_dat = Hi_vfo End If If Rit_dat < Lw_rit Then 'RIT lower limit check Rit_dat = Lw_rit End If If Rit_dat > Hi_rit Then 'RIT upper limit check Rit_dat = Hi_rit End If Call Lcd_sub End Sub '----------------------------- 'AD9834(DDS) Data write '----------------------------- Sub Dds_sub Sng_wrk = Dds_dat * Scal Lng_wk1 = Sng_wrk Wrd_wk1 = Lng_wk1 And &H3FFF Wrd_wk2 = Wrd_wk1 Or &H4000 Shift Lng_wk1 , Right , 14 Wrd_wk3 = Lng_wk1 Or &H4000 Wrd_wk1 = &H2000 Reset Portd.2 Shiftout Portd.0 , Portd.1 , Wrd_wk1 , 0 Shiftout Portd.0 , Portd.1 , Wrd_wk2 , 0 Shiftout Portd.0 , Portd.1 , Wrd_wk3 , 0 Set Portd.2 End Sub '----------------------------- 'LCD Data write '----------------------------- Sub Lcd_sub Cls Locate 1 , 1 Lng_wk1 = If_frq Lng_wk1 = Vfo_dat - If_frq Str_frq = Str(lng_wk1) Str_frq = Format(str_frq , "00.000000") Dsp_frq = Left(str_frq , 3) + Mid(str_frq , 4 , 3) + "." + Mid(str_frq , 7 , 3) Lcd "F:" ; Dsp_frq ; "MHz" Locate 2 , 1 Lcd "S: " Locate 2 , 3 If Enc_stp < 1000 Then Lcd Enc_stp Elseif Enc_stp = 10000 Then Lcd "10k " Else Lcd "1k " End If If Flg_rit = 1 Then Locate 2 , 8 Lcd "R:" Str_frq = Str(rit_dat) Str_frq = Format(str_frq , "00.000") Locate 2 , 10 Lcd Str_frq Else Locate 2 , 8 Lcd " JA2GQP" End If End Sub '----------------------------- 'Step '----------------------------- Sub Stp_sub Select Case Enc_stp Case 10000: Enc_stp = 1000 '1000 Case 1000: Enc_stp = 100 '100 Case 100: Enc_stp = 10 '10 Case 10: Enc_stp = 10000 '10000 Case Else: Enc_stp = 1000 '1000(initial) End Select Call Lcd_sub End Sub '----------------------------- 'RIT '----------------------------- Sub Rit_sub If Flg_rit = 0 Then Rit_dat = 0 Flg_rit = 1 Frq_eep = Vfo_dat 'Save VFO data Stp_eep = Enc_stp 'Save STEP data Else Flg_rit = 0 End If Call Lcd_sub End Sub '----------------------------- 'RX '----------------------------- Sub Rx_sub If Flg_tx = 1 Then Flg_tx = 0 'TX flag rest Locate 1 , 1 Lcd "F" End If End Sub '----------------------------- 'TX '----------------------------- Sub Tx_sub If Flg_tx = 0 Then Flg_tx = 1 'TX flag set Locate 1 , 1 Lcd "T" End If End Sub RE: Synteza na AD9851 a Bascom AVR - SQ3PJV - 30-11-2014 17:59 Witaj, w kodzie; '--- constant data --- Const If_frq = 8468500 'IF frequency(LSB carrier point) Const Lw_frq = 7000000 'Lower limit operation frequency Const Hi_frq = 7200000 'Upper limit operation frequency Const Def_frq = 7050000 'Operation frequency(initial) W 1 częstotliwość pośrednia - mowa o wstędze lsb ale to chyba zrobisz na osobnym bfo lsb/usb w 2 początek zakresu w 3 koniec zakresu w 4 startowa częstotliwość tam wpisujesz swoje wartości. |