' **********************************************************************
' ** Program name: Testboard - Version : 1.3 21.03.2004 **
' ** Compiler : BASCOM AVR, ( V1.11.7.4) **
' ** ATMEGA16 LCD-Board 2x16 **
' ** PMB2306 & 2312 Prescaler **
' ** Referenz HF = 12.8 MHz **
' ** Referenz Prozessor = 11.0592 MHz **
' ** **
' ** **
' ** **
' ** Written by: Sepp Bartl **
' **********************************************************************
$regfile = "M16def.DAT" 'use the ATMEGA16 file
$crystal = 11059200
'$sim
'-------------------------------------------------------------------------------
'-------------------------------------------------------------------------------
' define Pins
Config Pind.5 = Input 'Clock PLL
Clk Alias Portd.5 'Clock PLL
Config Pind.6 = Input 'Data PLL
_data Alias Portd.6 'Data PLL
Le Alias Portd.7 'Latch_Enable PLL
Ddrd.7 = 1 'LE = Output
Le = 0
'-------------------------------------------------------------------------------
'-------------------------------------------------------------------------------
' Temporary Variables
Dim Temp As Long 'math in send_prog_teiler
Dim Temp2 As Long 'math in send_prog_teiler
Dim Dataw As Word 'shiftoutword
'-------------------------------------------------------------------------------
'-------------------------------------------------------------------------------
' PLL1_Setup:
Dataw = &B1111110000000000 'PLL-Setup MSB
Shiftout _data , Clk , Dataw , 1 , 8 , 10 'shiftout 8 bits
Dataw = &B1111110100000000 'PLL-Setup LSB
Shiftout _data , Clk , Dataw , 1 , 8 , 10 'shiftout 8 bits
Gosub Le_pulse
Dataw = &B0000010000000000 'Referencecounter 1024 MSB
Shiftout _data , Clk , Dataw , 1 , 9 , 10 'shiftout 9 bits
Dataw = &B0000000110000000 '=12.8MHz/12.5 khz +2-Bit Adresse LSB
Shiftout _data , Clk , Dataw , 1 , 9 , 10 'shiftout 8 bits
Gosub Le_pulse
'-------------------------------------------------------------------------------
' Main
Do
'do something and send a new Frequency with Send_prog_teiler
'this is only an example not a complete programm
'for more information read the datasheet from PMB2306
Loop
'-------------------------------------------------------------------------------
' Send_prog_teiler PMB2306
Send_prog_teiler:
Temp = Temp2 'Temp2 = Counter (Example 1265.0375MHz/12.5 kHz = 101203)
Temp = Temp2 Mod 64 'Math for A-Counter
Dataw = Temp
Shift Dataw , Left , 9
Shiftout _data , Clk , Dataw , 1 , 7 , 10 'shiftout 7 bits A-Counter
Temp = Temp2
Shift Temp , Right , 6 '1 to 6 for Prescaler :64
Dataw = Temp 'Math for N-Counter
Shift Dataw , Left , 2
Shiftout _data , Clk , Dataw , 1 , 14 , 10 'shiftout 14 bits N-Counter
Dataw = &B1000000000000000
Shiftout _data , Clk , Dataw , 1 , 2 , 10 'shiftout 2 bits Adress
Gosub Le_pulse
Return
'-------------------------------------------------------------------------------
'-------------------------------------------------------------------------------
Le_pulse:
Le = 1
Le = 0
Return
'-------------------------------------------------------------------------------