Witam,
proszę o pomoc w rozwiązaniu problemu z programem na Atmegę8 do sterowania syntezą TSA6057. Zbudowałem tuner radiowy na CXA1238 i teraz prubuję dorobić syntezę. Przejrzałem już tematy związane z TSA 6057 i staram się wykorzystać jeden z zamieszczonych na elektrodzie softów do w/w sterownia. Niestety nie udaje mi się zaprogramować poprawnie TSA6057, na wyjściu napięcia varicapowego dla zakresu 30 - 150 MHz mam cały czas 11,5 V ( 13 noga TSA). Ponizej kod w Bascomie. Z góry bardzo dziękuję za zainteresowanie i wszelką pomoc w rozwiązaniu problemu.
$regfile = "m8adef.dat"
$lib "I2C_TWI.LBX"
$crystal = 4000000
Config Pind.7 = Input
Portd.7 = 1
X_gora Alias Pind.7
Config Pind.6 = Input
Portd.6 = 1
X_dol Alias Pind.6
Config Sda = Portc.4
Config Scl = Portc.5
I2cinit
Config Twi = 100000
Dim Temp As Long
Dim Freq As Long
Dim Freq_temp As Long
Dim Temp2 As Word
Dim Pokazanafstr As String * 10
Dim Pokazanaff As String * 10
Dim Pokazanaf As Long
Dim Ustaw_pomoc1 As Byte
Dim Ustaw_pomoc2 As Byte
Config Lcd = 16 * 2
Config Lcdpin = Pin , Db4 = Portd.5 , Db5 = Portd.4 , Db6 = Portd.3 , Db7 = Portd.2 , E = Portd.1 , Rs = Portd.0
Declare Sub I2c
'######################################################################################################
Const Freq_pcz = 10700 'pcz
Const Krok = 10 'krok
Const Scan_up = 108000 'gorna
Const Scan_dn = 88000 'dolna
Freq = 96000 'po wlaczeniu
'######################################################################################################
Cls
Lcd " FM "
Cursor Off
Wait 1
Do
Gosub Licz
Loop
End
Licz:
If Freq > Scan_up Then Freq = Scan_dn 'Dol Przestrajania
If Freq < Scan_dn Then Freq = Scan_up 'gora Przestrajania
If X_dol = 0 Then Gosub W_dol : Gosub I2c
If X_gora = 0 Then Gosub W_gore : Gosub I2c
Freq_temp = Freq + Freq_pcz
Pokazanaf = Freq
Pokazanaff = Str(pokazanaf)
Pokazanafstr = Format(pokazanaff , "000.000")
Pokazanaff = Pokazanafstr
If Pokazanaf < 10000 Then
Locate 2 , 2
Lcd " "
Locate 2 , 3
Else
Locate 2 , 2
End If
Lcd Pokazanaff : Lcd " MHz"
Return
W_gore:
Freq = Freq + Krok
Gosub I2c
Waitms 100
Return
W_dol:
Freq = Freq - Krok
Gosub I2c
Waitms 100
Return
I2c:
Temp = Freq_temp / Krok
Temp2 = Temp
Rotate Temp2 , Left , 1
Ustaw_pomoc1 = Low(temp2)
Ustaw_pomoc1.0 = 1
Ustaw_pomoc2 = High(temp2)
I2cstart : I2cwbyte 196 : I2cwbyte 0
I2cwbyte Ustaw_pomoc1
I2cwbyte Ustaw_pomoc2
I2cwbyte &B01100100 '
I2cwbyte 0 : I2cstop
Waitms 100
Return
proszę o pomoc w rozwiązaniu problemu z programem na Atmegę8 do sterowania syntezą TSA6057. Zbudowałem tuner radiowy na CXA1238 i teraz prubuję dorobić syntezę. Przejrzałem już tematy związane z TSA 6057 i staram się wykorzystać jeden z zamieszczonych na elektrodzie softów do w/w sterownia. Niestety nie udaje mi się zaprogramować poprawnie TSA6057, na wyjściu napięcia varicapowego dla zakresu 30 - 150 MHz mam cały czas 11,5 V ( 13 noga TSA). Ponizej kod w Bascomie. Z góry bardzo dziękuję za zainteresowanie i wszelką pomoc w rozwiązaniu problemu.
$regfile = "m8adef.dat"
$lib "I2C_TWI.LBX"
$crystal = 4000000
Config Pind.7 = Input
Portd.7 = 1
X_gora Alias Pind.7
Config Pind.6 = Input
Portd.6 = 1
X_dol Alias Pind.6
Config Sda = Portc.4
Config Scl = Portc.5
I2cinit
Config Twi = 100000
Dim Temp As Long
Dim Freq As Long
Dim Freq_temp As Long
Dim Temp2 As Word
Dim Pokazanafstr As String * 10
Dim Pokazanaff As String * 10
Dim Pokazanaf As Long
Dim Ustaw_pomoc1 As Byte
Dim Ustaw_pomoc2 As Byte
Config Lcd = 16 * 2
Config Lcdpin = Pin , Db4 = Portd.5 , Db5 = Portd.4 , Db6 = Portd.3 , Db7 = Portd.2 , E = Portd.1 , Rs = Portd.0
Declare Sub I2c
'######################################################################################################
Const Freq_pcz = 10700 'pcz
Const Krok = 10 'krok
Const Scan_up = 108000 'gorna
Const Scan_dn = 88000 'dolna
Freq = 96000 'po wlaczeniu
'######################################################################################################
Cls
Lcd " FM "
Cursor Off
Wait 1
Do
Gosub Licz
Loop
End
Licz:
If Freq > Scan_up Then Freq = Scan_dn 'Dol Przestrajania
If Freq < Scan_dn Then Freq = Scan_up 'gora Przestrajania
If X_dol = 0 Then Gosub W_dol : Gosub I2c
If X_gora = 0 Then Gosub W_gore : Gosub I2c
Freq_temp = Freq + Freq_pcz
Pokazanaf = Freq
Pokazanaff = Str(pokazanaf)
Pokazanafstr = Format(pokazanaff , "000.000")
Pokazanaff = Pokazanafstr
If Pokazanaf < 10000 Then
Locate 2 , 2
Lcd " "
Locate 2 , 3
Else
Locate 2 , 2
End If
Lcd Pokazanaff : Lcd " MHz"
Return
W_gore:
Freq = Freq + Krok
Gosub I2c
Waitms 100
Return
W_dol:
Freq = Freq - Krok
Gosub I2c
Waitms 100
Return
I2c:
Temp = Freq_temp / Krok
Temp2 = Temp
Rotate Temp2 , Left , 1
Ustaw_pomoc1 = Low(temp2)
Ustaw_pomoc1.0 = 1
Ustaw_pomoc2 = High(temp2)
I2cstart : I2cwbyte 196 : I2cwbyte 0
I2cwbyte Ustaw_pomoc1
I2cwbyte Ustaw_pomoc2
I2cwbyte &B01100100 '
I2cwbyte 0 : I2cstop
Waitms 100
Return