Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.

IC16F877 za TSA5511 PLL i SSA5055

[es] :: Elektronika :: Mikrokontroleri :: IC16F877 za TSA5511 PLL i SSA5055

[ Pregleda: 5970 | Odgovora: 7 ] > FB > Twit

Postavi temu Odgovori

Autor

Pretraga teme: Traži
Markiranje Štampanje RSS

marinbnm

Član broj: 19868
Poruke: 256
*.adsl.net.t-com.hr.

Sajt: www.fmdream.net


+2 Profil

icon IC16F877 za TSA5511 PLL i SSA505506.09.2007. u 19:09 - pre 201 meseci
Ok, ovako....imam kod koji dotjerivam ali ima i problemčić Wink)

Sve radi i vrti od 87-108MHz na LCD-u....ali problem je u tome što ide ovako....sve se vrti samo mi je korak 0,125MHz 125KHz.....i nikako nemogu napraviti da bude 100KHz....ne znam zašto...evo koda pa ako tko zna da nabaci koji komentar bilo bi super....inače kod je rađen u picbasic pro...


Code:

   
   
DEFINE LCD_DREG PORTD
DEFINE LCD_DBIT 4
DEFINE LCD_RSREG PORTD
DEFINE LCD_RSBIT 1
DEFINE LCD_EREG PORTD
DEFINE LCD_EBIT 0
DEFINE LCD_BITS 4
DEFINE LCD_LINES 2
DEFINE LCD_COMMANDUS 2000
DEFINE LCD_DATAUS 50



DEFINE I2C_SCLOUT 1    'Set serial clock to bipolar instead of open-collector 

    


' definition I2C communication
    SCL       var         PORTB.1             ' SCL on RB1  
    SDA        var         PORTB.0               ' SDA on RB0 

'press:
    MEMO    var    PORTB.3        ' 
    UP       var    PORTB.4        ' press for FREQ UP RB.4
    DOWN    var    PORTB.5        ' press for FREQ DOWN RB.5


    
    INPUT    UP            'Up et Down sont des entrées
    INPUT    DOWN
    INPUT    MEMO



   
   
    'Fmin =88 MHz, F max= 108 MHz 
' ** DECLARATION OF THE VARIABLES

b1 var BYTE
b2 var BYTE
b3 var BYTE
b5 var BYTE

F1 var WORD
F2 var WORD
F3 var WORD


ADDR1        VAR BYTE
TMP          VAR WORD
TMP_LO       VAR TMP.LOWBYTE
TMP_HI       VAR TMP.HIGHBYTE
PLLBASE      VAR WORD
PLL          VAR WORD
LO           VAR PLL.LOWBYTE
HI           VAR PLL.HIGHBYTE
PAS          VAR BYTE '1=125kHz, 2=250kHz, 4=500kHz, 8=1MHz 

'*** INITIAL DATA *** 

ADDR1=$C2 'adress I2C of SDA5055 (ADDR1=$C0 , adress I2C of TSA5511)
PLLBASE=696  'beginning with 87 MHz : 87 / 0,125 = 696
PAS = 1 'step of 0.125 MHZ by default    ?????
PAUSE 100
LCDOUT $FE, 1 ' Clear LCD screen
LCDOUT " PLL FM 88-108" ' post text during 1 second
LCDOUT $FE,$C0 
LCDOUT " BT-20" 
PAUSE 1000 

EEPROM 0,[$90,$01] 'initial data TMP = PLLBASE  corresponds to F = 88 MHz


'The starting point is 88 MHz given by PLLBASE. One adds a shift of 125kHz * TMP
'TMP is on 16 bits, therefore 65535 possible frequencies.

'*** READING OF THE DECALAGE TMP ***

READ 0,TMP_LO 'reads the 8 bits of weak weight
READ 1,TMP_HI 'reads the 8 bits of strong weight


' *** BEGINNING OF THE PROGRAM***

MAIN: 
PLL = PLLBASE + TMP

I2CWRITE SDA,SCL,ADDR1,[HI,LO,$8E] 'Sending of the data to the module 

GOSUB CALCUL 'calculate the frequency for posting
GOSUB AFFICHAGE 'post the frequency
PAUSE 500


'*** press routine ***

BOUCLE: 
BUTTON UP,0,10,2,b1,1,MONTE 'supervise the button UP
BUTTON DOWN,0,10,2,b2,1,DESCEND 'supervise the button DOWN
BUTTON MEMO,0,255,0,b5,1,STORE 'supervise the button MEMO
' only step size of 125KHz is handled
' BUTTON CH_PAS,1,255,0,b3,1, CHOIX 'supervise the button PAS 
PAUSE 100 'pauses of 0.1s
GOTO BOUCLE


MONTE: '** INCREASE THE FREQUENCY OF 1 PAS (STEP)

TMP = TMP + PAS
IF TMP > 168 THEN TMP = 0 'Fmax = 108 MHz  ---> (Fmax - Fmin) / 0,125   -> (108-87)/0,125  = 168
GOTO MAIN

DESCEND: '** DECREASE THE FREQUENCY OF 1 PAS (STEP)

IF TMP = 0 THEN TOP
TMP = TMP - PAS
GOTO MAIN

TOP: TMP=168   ' max reading in Tmp
GOTO MAIN


GOSUB AFFICHAGE 'post the frequency
GOTO BOUCLE


GOTO BOUCLE

CALCUL: ' ** CALCULATION OF THE FREQUENCY

F1 = PLL 'cut off 1GHz 
F2 = F1/8 'give them MHz
F3 = 125*(F1//8)


RETURN

AFFICHAGE: 
LCDOUT $FE, 1 'Clear LCD screen 
LCDOUT #F2 'post the other digits 
LCDOUT "." 'post the comma
LCDOUT #F3 'post the Khz
LCDOUT " MHz "

STORE:                
        WRITE 0, TMP_LO        
        WRITE 1, TMP_HI        
        GOTO BOUCLE
        


frffr
 
Odgovor na temu

tomam
Tomislav Milicevic
Beograd

Član broj: 104895
Poruke: 163
*.eunet.yu.



+4 Profil

icon Re: IC16F877 za TSA5511 PLL i SSA505506.09.2007. u 19:27 - pre 201 meseci
Daj semu
 
Odgovor na temu

marinbnm

Član broj: 19868
Poruke: 256
*.adsl.net.t-com.hr.

Sajt: www.fmdream.net


+2 Profil

icon Re: IC16F877 za TSA5511 PLL i SSA505506.09.2007. u 22:10 - pre 201 meseci
Nije sad shema bitna, imaš datasheet pa vidiš. Najbitnije je je srediti programčić, pa ako znaš štogod da sredimo korak od 100KHz.

frffr
 
Odgovor na temu

obranko
severna amerika

Član broj: 36599
Poruke: 152
*.cpe.net.cable.rogers.com.



+1 Profil

icon Re: IC16F877 za TSA5511 PLL i SSA505507.09.2007. u 00:27 - pre 201 meseci
Pozdrav,

nije problem izmeniti kod da ti kada pritisnes taster menja vrednosti NA DISPLEJU za po 100KHz. Medjutim cini mi se (mrzi me da gledam data sheet PLL kola) da PLL ima korak od 125KHz. Treba pogledati da li to moze da se promeni; ako moze javi pa da mi modifikujem kod.
 
Odgovor na temu

buljko
Ljubisa Spasic
Kladovo

Član broj: 77384
Poruke: 4624
*.kladovonet.com.



+5 Profil

icon Re: IC16F877 za TSA5511 PLL i SSA505507.09.2007. u 09:01 - pre 201 meseci
TSA5511 ima PROGRAMIBILNI delitelj i verovatno se mora raditi i zamena kristala i izmena koda!
 
Odgovor na temu

marinbnm

Član broj: 19868
Poruke: 256
*.adsl.net.t-com.hr.

Sajt: www.fmdream.net


+2 Profil

icon Re: IC16F877 za TSA5511 PLL i SSA505507.09.2007. u 09:17 - pre 201 meseci
Citat:


nije problem izmeniti kod da ti kada pritisnes taster menja vrednosti NA DISPLEJU za po 100KHz. Medjutim cini mi se (mrzi me da gledam data sheet PLL kola) da PLL ima korak od 125KHz. Treba pogledati da li to moze da se promeni; ako moze javi pa da mi modifikujem kod.


Evo citiram it datasheet-a: "A 3.2MHz crystal can offer step sizes of 50KHz."

Mislim da je još i bolje da ima step od 50Khz, jer piše kad se koristi kristal od 4MHz...onda je step 62.5KHz (znaći 125KHz u mom slučaju), a sa 3.2MHz bi išao 50KHz.....ili moglo bi 100KHz!

Obranko, ako niej problem da pmogneš modificirati kod za taj step ili da kažeš što je potrebno učiniti....naravno promjeniti quartz na TSA, a zanima me dali quartz na PIC-u može ostati 4MHz ili se i on mora da mjenja??

Eto, puno hvala!


Pozdrav!


frffr
 
Odgovor na temu

obranko
severna amerika

Član broj: 36599
Poruke: 152
*.cpe.net.cable.rogers.com.



+1 Profil

icon Re: IC16F877 za TSA5511 PLL i SSA505509.09.2007. u 01:20 - pre 201 meseci
Prvo da se ogradim, ja nikada nisam koristio picbasic.

Zameniti liniju
PLLBASE=696 'beginning with 87 MHz : 87 / 0,125 = 696

sa
PLLBASE=1740 'beginning with 87 MHz : 87 / 0,05 = 1740

Zameniti liniju
IF TMP > 168 THEN TMP = 0 'Fmax = 108 MHz ---> (Fmax - Fmin) / 0,125 -> (108-87)/0,125 = 168

sa
IF TMP > 420 THEN TMP = 0 'Fmax = 108 MHz ---> (Fmax - Fmin) / 0,05 -> (108-87)/0,05 = 420

Zameniti liniju
TOP: TMP=168 ' max reading in Tmp

sa
TOP: TMP=420 ' max reading in Tmp

Zameniti linije
F2 = F1/8 'give them MHz
F3 = 125*(F1//8)


sa
F2 = F1/20
F3 = 50*(F1//20)


Nisam u mogucnosti da testiram kod (nemam picbasic preferiram c kompajlere).
 
Odgovor na temu

marinbnm

Član broj: 19868
Poruke: 256
*.adsl.net.t-com.hr.

Sajt: www.fmdream.net


+2 Profil

icon Re: IC16F877 za TSA5511 PLL i SSA505509.09.2007. u 18:12 - pre 201 meseci
Evo ga kompajlirano i programirao 16F877 sve radi, ljepo ide......sad je naravno pitanje jeli radi i sa TSA ali trenutno sad nemam IC pa ću to probat kroz koji dan...ali pošto je kod sa TSA radio na 1GHz mislim da nema problema.

E zanima me dali tko iam kakav programčič preko kojega bi mogao SCL i SDA izlaz i PIC-a spojiti na komp i gledati što šalje tako da mogu usporediti sa datasheetom ???


evo koda:

Code:


   
   
DEFINE LCD_DREG PORTD
DEFINE LCD_DBIT 4
DEFINE LCD_RSREG PORTD
DEFINE LCD_RSBIT 1
DEFINE LCD_EREG PORTD
DEFINE LCD_EBIT 0
DEFINE LCD_BITS 4
DEFINE LCD_LINES 2
DEFINE LCD_COMMANDUS 2000
DEFINE LCD_DATAUS 50



DEFINE I2C_SCLOUT 1    'Set serial clock to bipolar instead of open-collector 

    


' definition I2C communication
    SCL       var         PORTB.1             ' SCL on RB1  
    SDA        var         PORTB.0               ' SDA on RB0 

'press:
    MEMO    var    PORTB.3        ' 
    UP       var    PORTB.4        ' press for FREQ UP RB.4
    DOWN    var    PORTB.5        ' press for FREQ DOWN RB.5


    
    INPUT    UP            'Up et Down sont des entrées
    INPUT    DOWN
    INPUT    MEMO



   
   
    'Fmin =88 MHz, F max= 108 MHz 
' ** DECLARATION OF THE VARIABLES

b1 var BYTE
b2 var BYTE
b3 var BYTE
b5 var BYTE

F1 var WORD
F2 var WORD
F3 var WORD


ADDR1        VAR BYTE
TMP          VAR WORD
TMP_LO       VAR TMP.LOWBYTE
TMP_HI       VAR TMP.HIGHBYTE
PLLBASE      VAR WORD
PLL          VAR WORD
LO           VAR PLL.LOWBYTE
HI           VAR PLL.HIGHBYTE
PAS          VAR BYTE '1=125kHz, 2=250kHz, 4=500kHz, 8=1MHz 

'*** INITIAL DATA *** 

ADDR1=$C2 'adress I2C of SDA5055 (ADDR1=$C0 , adress I2C of TSA5511)
PLLBASE=1740  'beginning with 87 MHz : 87 / 0,125 = 696
PAS = 1 'step of 0.125 MHZ by default    ?????
PAUSE 100
LCDOUT $FE, 1 ' Clear LCD screen
LCDOUT " PLL FM 88-108" ' post text during 1 second
LCDOUT $FE,$C0 
LCDOUT " BT-20" 
PAUSE 1000 

EEPROM 0,[$90,$01] 'initial data TMP = PLLBASE  corresponds to F = 88 MHz


'The starting point is 88 MHz given by PLLBASE. One adds a shift of 125kHz * TMP
'TMP is on 16 bits, therefore 65535 possible frequencies.

'*** READING OF THE DECALAGE TMP ***

READ 0,TMP_LO 'reads the 8 bits of weak weight
READ 1,TMP_HI 'reads the 8 bits of strong weight


' *** BEGINNING OF THE PROGRAM***

MAIN: 
PLL = PLLBASE + TMP

I2CWRITE SDA,SCL,ADDR1,[HI,LO,$8E] 'Sending of the data to the module 

GOSUB CALCUL 'calculate the frequency for posting
GOSUB AFFICHAGE 'post the frequency
PAUSE 500


'*** press routine ***

BOUCLE: 
BUTTON UP,0,10,2,b1,1,MONTE 'supervise the button UP
BUTTON DOWN,0,10,2,b2,1,DESCEND 'supervise the button DOWN
BUTTON MEMO,0,255,0,b5,1,STORE 'supervise the button MEMO
' only step size of 125KHz is handled
' BUTTON CH_PAS,1,255,0,b3,1, CHOIX 'supervise the button PAS 
PAUSE 100 'pauses of 0.1s
GOTO BOUCLE


MONTE: '** INCREASE THE FREQUENCY OF 1 PAS (STEP)

TMP = TMP + PAS
IF TMP > 420 THEN TMP = 0 'Fmax = 108 MHz  ---> (Fmax - Fmin) / 0,125   -> (108-87)/0,125  = 168
GOTO MAIN

DESCEND: '** DECREASE THE FREQUENCY OF 1 PAS (STEP)

IF TMP = 0 THEN TOP
TMP = TMP - PAS
GOTO MAIN

TOP: TMP=420   ' max reading in Tmp
GOTO MAIN


GOSUB AFFICHAGE 'post the frequency
GOTO BOUCLE


GOTO BOUCLE

CALCUL: ' ** CALCULATION OF THE FREQUENCY

F1 = PLL 'cut off 1GHz 
F2 = F1/20 'give them MHz
F3 = 50*(F1//20)


RETURN

AFFICHAGE: 
LCDOUT $FE, 1 'Clear LCD screen 
LCDOUT #F2 'post the other digits 
LCDOUT "." 'post the comma
LCDOUT #F3 'post the Khz
LCDOUT " MHz "

STORE:                
        WRITE 0, TMP_LO        
        WRITE 1, TMP_HI        
        GOTO BOUCLE
        



frffr
 
Odgovor na temu

[es] :: Elektronika :: Mikrokontroleri :: IC16F877 za TSA5511 PLL i SSA5055

[ Pregleda: 5970 | Odgovora: 7 ] > FB > Twit

Postavi temu Odgovori

Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.