poniedziałek, 1 sierpnia 2016

Nadajnik Pulson TA105E

Adaptacja TA105E Pulson


Krótki programik protezy na ATTINY2313 do sterowania nadajnikiem.

' Nadajnik Pulson TA105E PCB v.0510
' Sterowanie LMX1501A
' Mikrokontroler ATTINY2313 jako proteza zamiast układu OTP ST62T65C6
'
$regfile = "ATtiny2313.dat"
$crystal = 8000000                                          ' Zegar 8 MHz

Dim A1 As Word
Dim A3 As Word
Dim N2 As Word
Dim N3 As Word
Dim Mb_ref As Word                                         
    Mb_sw_ref Alias Mb_ref.15                              
    Mb_c_ref Alias Mb_ref.0                                
Dim Mb_swallow As Byte                                     
    Mb_c_prog Alias Mb_swallow.0                           
Dim Mb_prog As Word                                        
Dim Mb_n As Word                                           
Dim Mb_n_h As Byte
Dim Mb_n_l As Byte
Dim Tmp As Bit                                              ' zmienna odcinania nadawania po jednej rundzie

Declare Sub Lmx_tx
Declare Sub Le_pulse

Config Porta.0 = Output                                     ' Zalaczanie drivera i PA
Config Porta.1 = Output                                     ' CLK LMX1501A
Config Pinb.3 = Input                                       ' SW-PTT
Config Pinb.4 = Input                                       ' Lock Detect PLL 0=lock , 1=unlock
Config Portd.0 = Output                                     ' LE   LMX1501A
Config Portd.1 = Output                                     ' DATA LMX1501A
Config Portd.2 = Output                                     ' Zasilanie VCO i PLL 0=ON , 1=OFF


Tx_drv Alias Porta.0                                        ' Zalaczanie drivera i PA (5  pin ST62T65)
Lmx_clk Alias Porta.1                                       ' CLK LMX1501A            (4  pin ST62T65)
Ptt Alias Pinb.3                                            ' SW-PTT                  (24 pin ST62T65)
Lmx_lock Alias Pinb.4                                       ' Lock Detect PLL         (25 pin ST62T65)
Lmx_le Alias Portd.0                                        ' LE LMX1501A             (1  pin ST62T65)
Lmx_data Alias Portd.1                                      ' DATA LMX1501A           (2  pin ST62T65)
Tx_vco Alias Portd.2                                        ' Zasilanie VCO i PLL     (6  pin ST62T65)

Lmx_le = 0
Lmx_clk = 0
Lmx_data = 0
Tx_drv = 1
Tx_vco = 1
Lmx_lock = 1

Mb_ref = 128000 / 125
Mb_ref = Mb_ref * 2                                         ' podzial dzielnika R LMX1501A (12.8 MHz , krok 12.5kHz)

Mb_prog = 1448000 / 125                                     ' podzial calkowity dzielnikow N/A/SW LMX1501A (144.800 MHz , 12.5)

Mb_c_ref = 1                                                ' bit kontrolny rejestru R
Mb_c_prog = 0                                               ' bit kontrolny rejestru N/A



'-------------------------------------------------------------  glowna petla

Do

If Tmp = 0 Then
 If Ptt = 0 Then                                            ' jesli PTT wlaczone idz dalej
  Tx_vco = 0                                                ' wlacz zasilanie VCO
  Gosub Lmx_tx
  Waitms 20                                                 ' odczekaj 20ms na synchronizacje PLL
   If Lmx_lock = 0 Then                                     ' jeœli PLL "lock" zalacz driver i PA
    Tx_drv = 0                                              ' wlacz zasilanie drivera TX
    Tmp = 1
   Else
     Tx_vco = 1
     Tmp = 1
    End If
 End If
End If

If Tmp = 1 Then
 If Ptt = 1 Then
  Tx_drv = 1                                                ' wylacz zasilanie VCO i PLL
  Tx_vco = 1                                                ' wylacz zasilanie wzmaniaczy w.cz
  Tmp = 0
 End If
End If


Loop
End

'-------------------------------------------------------------  koniec glownej petli programu


Lmx_tx:
'
N2 = Mb_prog / 64
A1 = Mb_prog Mod 64
N3 = Mb_prog / 128
A3 = Mb_prog Mod 128
  If A3 < N3 Then
 Mb_n = N3
 Mb_swallow = A3 * 2
 Mb_sw_ref = 0
  Else
 Mb_n = N2
 Mb_swallow = A1 * 2
 Mb_sw_ref = 1
  End If

Shiftout Lmx_data , Lmx_clk , Mb_ref , 0                    ' wyslanie danych do rejestru R (16 bitow)

Gosub Le_pulse

Mb_n_h = High(mb_n)
Mb_n_l = Low(mb_n)
Shiftout Lmx_data , Lmx_clk , Mb_n_h , 0 , 3                ' wyslanie danych do rejestru N/A (3 bity)
Shiftout Lmx_data , Lmx_clk , Mb_n_l , 0                    ' wyslanie danych do rejestru N/A (8 bitow)
Shiftout Lmx_data , Lmx_clk , Mb_swallow , 0                ' wyslanie danych do rejestru N/A (8 bitow - ctrl + A)

Gosub Le_pulse

Return

Le_pulse:
 nop
 Set Lmx_le
 nop
 Reset Lmx_le
Return



Poniżej schemat poglądowy Nadajnika Pulson TA105E 

niedziela, 10 lipca 2016

EUROSAT PNC160-MULTI

Kolejny krajowy produkt nadający się do pracy APRS.



Ponieważ coraz częściej koledzy dopytują się o możliwość wykorzystania tych nadajników, postanowiłem raz kolejny ułatwić im życie :)


Kod programu napisany jest w Bascom-ie


' Ostatnia data modyfikacji: 08.09.2013
' Program do sterowania PLL LMX2316 w nadajniku Eurosat PNC160 , z uC 89C52.
' Czestotliwosc pracy: 144.800 MHz , PLL caly czas wlaczona , parkowanie PLL na 146.9875 MHz
'

$regfile = "REG51.DAT"
$crystal = 18432000                                           ' zegar 18.432 MHz

Dim Tmp As Bit                                                ' zmienna odcinania nadawania po jednej rundzie
Dim C As Byte
Dim A As Byte

Config Sda = P1.3                                           ' pin 4  , magistrala I2C , SDA (24LC04)
Config Scl = P1.4                                           ' pin 5  , magistrala I2C , SCL (24LC04)

Data Alias P3.4                                              ' pin 14 , LMX2316 pin 12 (DATA)
Clk Alias P3.5                                                ' pin 15 , LMX2316 pin 11 (CLOCK)
Le Alias P3.3                                                 ' pin 13 , LMX2316 pin 13 (LE)

Ptt Alias P2.0                                                ' pin 21  Wejscie IN1  , DB25 pin 1 (jako PTT)
In2 Alias P2.1                                                ' pin 22  Wejscie IN2  , DB25 pin 2
In3 Alias P2.2                                                ' pin 23  Wejscie IN3  , DB25 pin 3
In4 Alias P2.3                                                ' pin 24  Wejscie IN4  , DB25 pin 4
In5 Alias P2.4                                                ' pin 25  Wejscie IN5  , DB25 pin 5
In6 Alias P2.5                                                ' pin 26  Wejscie IN6  , DB25 pin 6
In7 Alias P2.6                                                ' pin 27  Wejscie IN7  , DB25 pin 7
In8 Alias P2.7                                                ' pin 28  Wejscie IN8  , DB25 pin 8
In9 Alias P3.1                                                ' pin 11  Wejscie IN9  , DB25 pin 15
In10 Alias P3.0                                               ' pin 10  Wejscie IN10 , DB25 pin 14

'                                                             ' Przy stanach niskich na liniach Pwr1 , Pwr2 , Pwr3 uzyskujemy pelna moc
Pwr1 Alias P1.0                                               ' pin 1 regulacja mocy
Pwr2 Alias P1.1                                               ' pin 2 regulacja mocy
Pwr3 Alias P1.2                                               ' pin 3 regulacja mocy

Azw Alias P1.6                                                ' pin 7  , antyzwiecha
Vbat Alias P0.5                                               ' pin 34 , VBAT H=niskie napiecie zasilania , L=napiecie OK
Pa Alias P0.3                                                 ' pin 36 , zasilanie PA H=ON L=OFF
Drv Alias P1.5                                                ' pin 6  , wzmacniacz w.cz. H=OFF , L=ON
Led_1 Alias P0.2                                              ' pin 37 , LED-1 H=OFF L=ON , zielona LED - "retransmisja"
Led_2 Alias P0.1                                              ' pin 38 , LED-2 podwojna H=OFF L=ON , zielona , "siec"
Led_3 Alias P0.0                                              ' pin 39 , LED-2 podwojna H=OFF L=ON , czerwona , "nadawanie"
Ld Alias P0.7                                                 ' pin 32 , LD  H=synchronizacja , L=brak synchronizacji
Aux1 Alias P3.6                                               ' pin 16 , AUX , DB25 pin 16  H=OFF L=ON

P2 = &B11111111
Set In9
Set In10
Reset Pwr1
Reset Pwr2
Reset Pwr3
Set Tmp
Reset Pa
Set Azw
Set Drv
Set Vbat
Set Led_1
Set Led_2
Set Led_3
Set Ld
Set Aux1

Reset Clk
Reset Le
Reset Data


Declare Sub Zegarek1
Declare Sub Zegarek2
Declare Sub Le_pulse
Declare Sub Lmx_r
Declare Sub Lmx_n1
Declare Sub Lmx_n2
Declare Sub Lmx_f


'------------------------------------------------------------   glowna petla

Do
Reset Azw
  If Tmp = 0 Then
   If Ptt = 0 Then
    Gosub Lmx_r
    Gosub Lmx_n1
    Gosub Lmx_f
    Waitms 10
    Reset Led_3
    Set Tmp
    Reset Drv
    Set Pa
   End If
  End If

 If Ptt = 1 Then
  If Tmp = 1 Then
   Gosub Lmx_r
   Gosub Lmx_n2
   Gosub Lmx_f
   Waitms 10
   Set Led_3
   Reset Tmp
   Reset Azw
   Set Drv
   Reset Pa
  End If
 End If

Set Azw
Loop
End

'-------------------------------------------------------------  koniec glownej petli programu

Lmx_r:
 Restore Dat0
 For A = 1 To 21
 Read C
  If C = 1 Then
   Gosub Zegarek1
  Else
   Gosub Zegarek2
  End If
 Next A
 Gosub Le_pulse
Return

Lmx_n1:
 Restore Dat1
 For A = 1 To 21
 Read C
  If C = 1 Then
   Gosub Zegarek1
  Else
   Gosub Zegarek2
  End If
 Next A
 Gosub Le_pulse
Return

Lmx_n2:
 Restore Dat2
 For A = 1 To 21
 Read C
  If C = 1 Then
   Gosub Zegarek1
  Else
   Gosub Zegarek2
  End If
 Next A
 Gosub Le_pulse
Return

Lmx_f:
 Restore Dat3
 For A = 1 To 21
 Read C
  If C = 1 Then
   Gosub Zegarek1
  Else
   Gosub Zegarek2
  End If
 Next A
 Gosub Le_pulse
Return

Zegarek1:
 Set Data
 nop
 Set Clk
 nop
 Reset Clk
 nop
 Reset Data
Return

Zegarek2:
 Set Clk
 nop
 Reset Clk
 nop
Return

Le_pulse:
 nop
 Set Le
 nop
 Reset Le
 nop
 Reset Data
Return


Dat0:
'   21 bitowy rejestr R
'
'   REF: 12.8MHz , krok PLL: 12.5kHz , R=1024
'   1 bit LD prec. , 14 bitowy dzielnik R = 1024 , 2 bity control C1=0 C2=0
'
'   |LD| |-test mode-|   |------------------------R--------------------------|   |ctrl|
Data 1 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 1 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0     
'
'
Dat1:
'   21 bitowy rejestr N    (czestotliwosc nadawcza)
'
'   TX: 144.800 MHz , krok PLL: 12.5kHz , N/A=11584
'   11584 : 32 = 362 (N) , 11584 mod 32 = 0 (A)
'
'   1 bit GO , 13 bitowy dzielnik B = 400 , 5 bitowy dzielnik A = 8 , 2 bity control C1=1 C2=0
'
'   |GO| |-----------------------B-----------------------|   |-------A-------|   |ctrl|
Data 1 , 0 , 0 , 0 , 0 , 1 , 0 , 1 , 1 , 0 , 1 , 0 , 1 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 1     
'
Dat2:
'   21 bitowy rejestr N    (czestotliwosc parkowania PLL)
'
'   TX: 146.9875 MHz , krok PLL: 12.5kHz , N/A=11759
'   11759 : 32 = 367 (N) , 11759 mod 32 = 15 (A)
'
'   1 bit GO , 13 bitowy dzielnik B = 400 , 5 bitowy dzielnik A = 8 , 2 bity control C1=1 C2=0
'
'   |GO| |-----------------------B-----------------------|   |-------A-------|   |ctrl|
Data 1 , 0 , 0 , 0 , 0 , 1 , 0 , 1 , 1 , 0 , 1 , 1 , 1 , 1 , 0 , 1 , 1 , 1 , 1 , 0 , 1     
'
'
Dat3:
'   21 bitowy rejestr F
'
'   Rejestr innych funkcji PLL , 2 bity control C1=0 C2=1
'    |--------------------F----------------------------------------------|       |ctrl|
Data 0 , 1 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 1 , 0 , 0 , 1 , 0 , 0 , 1 , 0       




Kilka takich nadajników z powodzeniem dało się zaadoptować na pasmo amatorskie, tym razem daruję sobie szczegółowy opis.
Potencjalni testerzy zapewne będą mieli ubaw jak zobaczą  EUROSAT PNC160-MULTI w środku, tak czy inaczej większej MANUFAKTURY w życiu nie widziałem :) 

 

środa, 16 marca 2016

Poczta Polska

Długo się zastanawiałem czemu Poczta Polska postanowiła podnieść ceny przesyłek typu paczka.
Biorąc pod uwagę fakt nadal rozwijającej się konkurencji na tym rynku posunięcie to na pierwszy rzut oka wydaje się karkołomne.
Jednak mając w pamięci czasy tzw. minione, oraz tak popularną Barejowską Polskę raczej wielu nie podejrzewało, że ma to jakiś sens.
Osobiście chętnie korzystam z usług Poczty Polskiej, śledząc jedną z paczek wysłaną tzw. po NOWEMU
stwierdzam, że jeszcze dużo wody w Wiśle upłynie za nim Barejowska Polska się zmieni.