Rev Author Line No. Line
1757 kakl 1  
2 //struct {
1758 kakl 3 unsigned int8 firenum=TDC_FIRENUM_0;
4 unsigned int8 div_fire=TDC_DIV_FIRE_2;
5 unsigned int8 calresnum=TDC_CALPERIODS_2;
6 unsigned int8 clkhsdiv=TDC_CLKHSDIV_1;
7 unsigned int8 start_clkhs=TDC_CLKHS_ON;
8 unsigned int1 portnum=TDC_TPORTNUM_4;
9 unsigned int1 Tcycle=TDC_TCYCLE_SHORT;
10 unsigned int1 fakenum=TDC_TFAKENUM_2;
11 unsigned int1 selclkT=TDC_TSELCLK_128HS;
12 unsigned int1 calibrate=TDC_CALIBRATE_EN;
13 unsigned int1 disautocal=TDC_AUTOCAL_EN;
14 unsigned int1 MRange=TDC_MRANGE2;
15 unsigned int1 neg_stop2=TDC_NEG_STOP2;
16 unsigned int1 neg_stop1=TDC_NEG_STOP1;
17 unsigned int1 neg_start=TDC_NEG_START;
1757 kakl 18 //}reg0;
19  
20 //struct {
1758 kakl 21 unsigned int hit2=TDC_MRANGE1_HIT2_NOAC;
22 unsigned int hit1=TDC_MRANGE1_HIT1_NOAC;
23 unsigned int1 fast_init=TDC_FAST_INIT_DIS;
24 unsigned int hitin2=TDC_HITIN2_0;
25 unsigned int hitin1=TDC_HITIN1_0;
1757 kakl 26 //}reg1;
27  
28 //struct {
1758 kakl 29 unsigned int en_int=TDC_INT_ALU;
30 unsigned int1 rfedge2=TDC_CH2EDGE_RIS;
31 unsigned int1 rfedge1=TDC_CH1EDGE_RIS;
32 unsigned int32 delval1=0;
1757 kakl 33 //}reg2;
34  
35 //struct {
1758 kakl 36 unsigned int1 en_err_val=TDC_ERRVAL_DIS;
37 unsigned int tim0_mr2=TDC_TIM0MR2_16384CLKHS;
38 unsigned int32 delval2=0;
1757 kakl 39 //}reg3;
40  
1758 kakl 41 //reg4
42 unsigned int32 delval3=0;
43  
44 //reg5
45 unsigned int conf_fire=0;
46 unsigned int1 en_startnoise=TDC_STARTNOISE_DIS;
47 unsigned int1 dis_phasenoise=TDC_PHASENOISE_DIS;
48 unsigned int repeat_fire=TDC_REPEAT_FIRE_0;
49 unsigned int16 phase_fire;
50  
1757 kakl 51 //}TDC_registers;
52  
53  
1744 kakl 54 void TDC_init()
55 {
1745 kakl 56 output_low(TDC_ENABLE);
1744 kakl 57 spi_xfer(TDC_stream,0x70);
1745 kakl 58 output_high(TDC_ENABLE);
1744 kakl 59 }
60  
61 void TDC_reset()
62 {
1745 kakl 63 output_low(TDC_ENABLE);
1744 kakl 64 spi_xfer(TDC_stream,0x50);
1745 kakl 65 output_high(TDC_ENABLE);
1744 kakl 66 }
67  
68 void TDC_start_cycle()
69 {
1745 kakl 70 output_low(TDC_ENABLE);
1744 kakl 71 spi_xfer(TDC_stream,0x01);
1745 kakl 72 output_high(TDC_ENABLE);
1744 kakl 73 }
74  
75 void TDC_start_temp()
76 {
1745 kakl 77 output_low(TDC_ENABLE);
1744 kakl 78 spi_xfer(TDC_stream,0x02);
1745 kakl 79 output_high(TDC_ENABLE);
1744 kakl 80 }
81  
82 void TDC_start_cal_resonator()
83 {
1745 kakl 84 output_low(TDC_ENABLE);
1744 kakl 85 spi_xfer(TDC_stream,0x03);
1745 kakl 86 output_high(TDC_ENABLE);
1744 kakl 87 }
88  
89 void TDC_start_cal()
90 {
1745 kakl 91 output_low(TDC_ENABLE);
1744 kakl 92 spi_xfer(TDC_stream,0x04);
1745 kakl 93 output_high(TDC_ENABLE);
1744 kakl 94 }
95  
96 unsigned int32 TDC_get_measurement(int num)
97 {
1745 kakl 98 unsigned int32 ret;
99  
100 output_low(TDC_ENABLE);
1744 kakl 101 spi_xfer(TDC_stream,0xB0 + num - 1);
1745 kakl 102 ret=spi_xfer(TDC_stream,0,32);
103 output_high(TDC_ENABLE);
104 return ret;
1744 kakl 105 }
106  
107 unsigned int16 TDC_get_status()
108 {
1745 kakl 109 unsigned int16 ret;
110  
111 output_low(TDC_ENABLE);
112 spi_xfer(TDC_stream,0xB4,8);
113 ret=spi_xfer(TDC_stream,0,16);
114 output_high(TDC_ENABLE);
115 return ret;
1744 kakl 116 }
117  
118 unsigned int8 TDC_get_reg1()
119 {
1745 kakl 120 unsigned int8 ret;
121  
122 output_low(TDC_ENABLE);
123 spi_xfer(TDC_stream,0xB5,8);
124 ret=spi_xfer(TDC_stream,0,8);
125 output_high(TDC_ENABLE);
126 return ret;
1744 kakl 127 }
128  
1757 kakl 129 void TDC_update_registers()
1744 kakl 130 {
1758 kakl 131 //update reg0
1745 kakl 132 output_low(TDC_ENABLE);
1758 kakl 133 spi_xfer(TDC_stream,0x80,8);
134 spi_xfer(TDC_stream,firenum,4);
135 spi_xfer(TDC_stream,div_fire,4);
136 spi_xfer(TDC_stream,calresnum,2);
137 spi_xfer(TDC_stream,clkhsdiv,2);
138 spi_xfer(TDC_stream,start_clkhs,2);
139 spi_xfer(TDC_stream,portnum,1);
140 spi_xfer(TDC_stream,Tcycle,1);
141 spi_xfer(TDC_stream,fakenum,1);
142 spi_xfer(TDC_stream,selclkT,1);
143 spi_xfer(TDC_stream,calibrate,1);
144 spi_xfer(TDC_stream,disautocal,1);
145 spi_xfer(TDC_stream,MRange,1);
146 spi_xfer(TDC_stream,neg_stop2,1);
147 spi_xfer(TDC_stream,neg_stop1,1);
148 spi_xfer(TDC_stream,neg_start,1);
149 output_high(TDC_ENABLE);
150  
151 // update reg1
152 output_low(TDC_ENABLE);
1745 kakl 153 spi_xfer(TDC_stream,0x81,8);
1758 kakl 154 spi_xfer(TDC_stream,hit2,4);
155 spi_xfer(TDC_stream,hit1,4);
156 spi_xfer(TDC_stream,fast_init,1);
157 spi_xfer(TDC_stream,1,1);
158 spi_xfer(TDC_stream,hitin2,3);
159 spi_xfer(TDC_stream,hitin1,3);
160 spi_xfer(TDC_stream,0,8);
1745 kakl 161 output_high(TDC_ENABLE);
1744 kakl 162  
1758 kakl 163 // update reg2
164 output_low(TDC_ENABLE);
165 spi_xfer(TDC_stream,0x82);
166 spi_xfer(TDC_stream,en_int,3);
167 spi_xfer(TDC_stream,rfedge2,1);
168 spi_xfer(TDC_stream,rfedge1,1);
169 spi_xfer(TDC_stream,delval1,19);
1745 kakl 170 output_high(TDC_ENABLE);
1744 kakl 171  
1758 kakl 172 // update reg3
1745 kakl 173 output_low(TDC_ENABLE);
1758 kakl 174 spi_xfer(TDC_stream,0x83);
175 spi_xfer(TDC_stream,0,2);
176 spi_xfer(TDC_stream,en_err_val,1);
177 spi_xfer(TDC_stream,tim0_mr2,2);
178 spi_xfer(TDC_stream,delval2,19);
1745 kakl 179 output_high(TDC_ENABLE);
1744 kakl 180  
1758 kakl 181 // update reg4
1745 kakl 182 output_low(TDC_ENABLE);
1758 kakl 183 spi_xfer(TDC_stream,0x84);
184 spi_xfer(TDC_stream,0b00100,5);
185 spi_xfer(TDC_stream,delval3,19);
1745 kakl 186 output_high(TDC_ENABLE);
1744 kakl 187  
1758 kakl 188 // update reg5
1745 kakl 189 output_low(TDC_ENABLE);
1758 kakl 190 spi_xfer(TDC_stream,0x85);
191 spi_xfer(TDC_stream,conf_fire,3);
192 spi_xfer(TDC_stream,en_startnoise,1);
193 spi_xfer(TDC_stream,dis_phasenoise,1);
194 spi_xfer(TDC_stream,repeat_fire,3);
195 spi_xfer(TDC_stream,phase_fire,16);
196 output_high(TDC_ENABLE);
1744 kakl 197 }
1757 kakl 198