Witam,
Jestem początkujacy w programowaniu. Mam do napisanie program, który steruje dds-em zrobionym na fpga. Zasada działania to wysłanie 32 bitowej (częstotliwości) liczby przez np. sprzętowy spi. Częstotliwość ma być wybierana z klawiatury PS2. Napisałem już pare haotycznych linijek kodu ale wątpie że jest on prawidłowy. Proszę o pomoc lub pomocne komentarze. pozdrawiam.
Oto co udało mi się napisać:
$regfile = "m16def.dat"
$crystal = 16000000
'konfiguracja SPI
Config Spi = Hard , Data Order = Msb , Master = Yes , Polarity = High , Phase = 0 , Clockrate = 16 , Noss = 0
'konfiguracja lcd
Config Lcd = 16 * 2
Config Lcdpin = Pin , Db4 = Portb.3 , Db5 = Portb.2 , Db6 = Portb.1 , Db7 = Portb.0 , E = Portb.4 , Rs = Portb.6
'konfiguracja klawiatury
Config Keyboard = Pinc.6 , Data = Pinc.5 , Keydata = Keydata
Dim I As Long 'zmienna do przesuwania lcd
Dim Klaw As Long 'zmienna do zapisywania klawisza
Dim Ddsword As Long
Dim Fgenout As Long
'Config Pind.5 = Input
'Config Pind.4 = Output
'Config Pind.3 = Output
'Config Pind.2 = Output
'Config Pinb.4 = Output
Declare Sub Policz
Declare Sub Klawiat
Declare Sub Wyslij
Declare Sub Pocz
'powitanie
Cls
Locate 1 , 5
Lcd "WITAJ"
Wait 2
Home Upper
Call Pocz
Pocz:
'przesuwający się tekst
Lcd "Wprowadz czestotliwosc"
Wait 1
For I = 1 To 10
Shiftlcd Left
Waitms 500
Next I
Home Upper
Cls
Call Klawiat
Lcd " Generator sygnalowy"
'Call Wyswietl
Locate 2 , Klaw
Wait 8
Call Policz
Cls
Call Wyslij
Call Pocz
' KLWAIATURA
Klawiat:
Do
Klaw = Getatkbd()
Lcd Chr(klaw)
Loop
End
Return
Policz:
'2^32/120000000=35791394
Do
Ddsword = Klaw / 35791394
Loop
End
Return
'kod SPI
Spiinit
Wyslij:
Do
Spiout Ddsword , 4
Loop
End
Return
End
Keydata:
Data 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 ,
Data &H5E , 0 , 0 , 0 , 0 , 0 , 0 , 113 , 49 , 0 , 0 , 0 , 122 ,
Data 115 , 97 , 119 , 50 , 0 , 0 , 99 , 120 , 100 , 101 , 52 ,
Data 51 , 0 , 0 , 32 , 118 , 102 , 116 , 114 , 53 , 0 , 0 , 110 ,
Data 98 , 104 , 103 , 121 , 54 , 7 , 8 , 44 , 109 , 106 , 117 , 55 ,
Data 56 , 0 , 0 , 44 , 107 , 105 , 111 , 48 , 57 , 0 , 0 , 46 , 45 ,
Data 108 , 48 , 112 , 43 , 0 , 0 , 0 , 0 , 0 , 0 , 92 , 0 , 0 , 0 ,
Data 0 , 13 , 0 , 0 , 92 , 0 , 0 , 0 , 60 , 0 , 0 , 0 , 0 , 8 , 0 ,
Data 0 , 49 , 0 , 52 , 55 , 0 , 0 , 0 , 48 , 44 , 50 , 53 , 54 , 56 ,
Data 0 , 0 , 0 , 43 , 51 , 45 , 42 , 57 , 0 , 0 ,
Data 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 ,
Data 0 , 0 , 0 , 0 , 0 , 0 , 81 , 33 , 0 , 0 , 0 , 90 , 83 , 65 ,
Data 87 , 34 , 0 , 0 , 67 , 88 , 68 , 69 , 0 , 35 , 0 , 0 , 32 , 86 ,
Data 70 , 84 , 82 , 37 , 0 , 0 , 78 , 66 , 72 , 71 , 89 , 38 , 0 ,
Data 0 , 76 , 77 , 74 , 85 , 47 , 40 , 0 , 0 , 59 , 75 , 73 , 79 ,
Data 61 , 41 , 0 , 0 , 58 , 95 , 76 , 48 , 80 , 63 , 0 , 0 , 0 , 0 ,
Data 0 , 0 , 96 , 0 , 0 , 0 , 0 , 13 , 94 , 0 , 42 , 0 , 0 , 0 , 62 ,
Data 0 , 0 , 0 , 8 , 0 , 0 , 49 , 0 , 52 , 55 , 0 , 0 , 0 , 0 , 48 ,
Data 44 , 50 , 53 , 54 , 56 , 0 , 0 , 0 , 43 , 51 , 45 , 42 , 57 , 0 , 0
Jestem początkujacy w programowaniu. Mam do napisanie program, który steruje dds-em zrobionym na fpga. Zasada działania to wysłanie 32 bitowej (częstotliwości) liczby przez np. sprzętowy spi. Częstotliwość ma być wybierana z klawiatury PS2. Napisałem już pare haotycznych linijek kodu ale wątpie że jest on prawidłowy. Proszę o pomoc lub pomocne komentarze. pozdrawiam.
Oto co udało mi się napisać:
$regfile = "m16def.dat"
$crystal = 16000000
'konfiguracja SPI
Config Spi = Hard , Data Order = Msb , Master = Yes , Polarity = High , Phase = 0 , Clockrate = 16 , Noss = 0
'konfiguracja lcd
Config Lcd = 16 * 2
Config Lcdpin = Pin , Db4 = Portb.3 , Db5 = Portb.2 , Db6 = Portb.1 , Db7 = Portb.0 , E = Portb.4 , Rs = Portb.6
'konfiguracja klawiatury
Config Keyboard = Pinc.6 , Data = Pinc.5 , Keydata = Keydata
Dim I As Long 'zmienna do przesuwania lcd
Dim Klaw As Long 'zmienna do zapisywania klawisza
Dim Ddsword As Long
Dim Fgenout As Long
'Config Pind.5 = Input
'Config Pind.4 = Output
'Config Pind.3 = Output
'Config Pind.2 = Output
'Config Pinb.4 = Output
Declare Sub Policz
Declare Sub Klawiat
Declare Sub Wyslij
Declare Sub Pocz
'powitanie
Cls
Locate 1 , 5
Lcd "WITAJ"
Wait 2
Home Upper
Call Pocz
Pocz:
'przesuwający się tekst
Lcd "Wprowadz czestotliwosc"
Wait 1
For I = 1 To 10
Shiftlcd Left
Waitms 500
Next I
Home Upper
Cls
Call Klawiat
Lcd " Generator sygnalowy"
'Call Wyswietl
Locate 2 , Klaw
Wait 8
Call Policz
Cls
Call Wyslij
Call Pocz
' KLWAIATURA
Klawiat:
Do
Klaw = Getatkbd()
Lcd Chr(klaw)
Loop
End
Return
Policz:
'2^32/120000000=35791394
Do
Ddsword = Klaw / 35791394
Loop
End
Return
'kod SPI
Spiinit
Wyslij:
Do
Spiout Ddsword , 4
Loop
End
Return
End
Keydata:
Data 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 ,
Data &H5E , 0 , 0 , 0 , 0 , 0 , 0 , 113 , 49 , 0 , 0 , 0 , 122 ,
Data 115 , 97 , 119 , 50 , 0 , 0 , 99 , 120 , 100 , 101 , 52 ,
Data 51 , 0 , 0 , 32 , 118 , 102 , 116 , 114 , 53 , 0 , 0 , 110 ,
Data 98 , 104 , 103 , 121 , 54 , 7 , 8 , 44 , 109 , 106 , 117 , 55 ,
Data 56 , 0 , 0 , 44 , 107 , 105 , 111 , 48 , 57 , 0 , 0 , 46 , 45 ,
Data 108 , 48 , 112 , 43 , 0 , 0 , 0 , 0 , 0 , 0 , 92 , 0 , 0 , 0 ,
Data 0 , 13 , 0 , 0 , 92 , 0 , 0 , 0 , 60 , 0 , 0 , 0 , 0 , 8 , 0 ,
Data 0 , 49 , 0 , 52 , 55 , 0 , 0 , 0 , 48 , 44 , 50 , 53 , 54 , 56 ,
Data 0 , 0 , 0 , 43 , 51 , 45 , 42 , 57 , 0 , 0 ,
Data 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 ,
Data 0 , 0 , 0 , 0 , 0 , 0 , 81 , 33 , 0 , 0 , 0 , 90 , 83 , 65 ,
Data 87 , 34 , 0 , 0 , 67 , 88 , 68 , 69 , 0 , 35 , 0 , 0 , 32 , 86 ,
Data 70 , 84 , 82 , 37 , 0 , 0 , 78 , 66 , 72 , 71 , 89 , 38 , 0 ,
Data 0 , 76 , 77 , 74 , 85 , 47 , 40 , 0 , 0 , 59 , 75 , 73 , 79 ,
Data 61 , 41 , 0 , 0 , 58 , 95 , 76 , 48 , 80 , 63 , 0 , 0 , 0 , 0 ,
Data 0 , 0 , 96 , 0 , 0 , 0 , 0 , 13 , 94 , 0 , 42 , 0 , 0 , 0 , 62 ,
Data 0 , 0 , 0 , 8 , 0 , 0 , 49 , 0 , 52 , 55 , 0 , 0 , 0 , 0 , 48 ,
Data 44 , 50 , 53 , 54 , 56 , 0 , 0 , 0 , 43 , 51 , 45 , 42 , 57 , 0 , 0
