Rev Author Line No. Line
1744 kakl 1 #include "main.h"
2  
1886 kakl 3 #define VERSION 0.2
1757 kakl 4  
1759 kakl 5 #define START PIN_D4
6 #define STOP1 PIN_D5
7 #define STOP2 PIN_D6
1886 kakl 8  
1774 kaklik 9 #include "GP2.h"
1759 kakl 10  
1774 kaklik 11 #define ONE_WIRE_PIN PIN_E2
12 #include "ds1820.c"
13  
1744 kakl 14 void main()
15 {
16 setup_adc_ports(NO_ANALOGS|VSS_VDD);
17 setup_adc(ADC_CLOCK_DIV_2);
18 setup_psp(PSP_DISABLED);
19 setup_spi(SPI_SS_DISABLED);
20 setup_wdt(WDT_OFF);
21 setup_timer_0(RTCC_INTERNAL);
22 setup_timer_1(T1_DISABLED);
23 setup_timer_2(T2_DISABLED,0,1);
24 setup_ccp1(CCP_OFF);
25 setup_comparator(NC_NC_NC_NC);
26 setup_vref(FALSE);
27  
1745 kakl 28 TDC_reset();
1886 kakl 29  
1759 kakl 30 output_low(START);
31 output_low(STOP1);
32 output_low(STOP2);
1815 kaklik 33  
34 delay_ms(50);
35  
1886 kakl 36 /*
37 1 0 0 0 0 ADR2 ADR1 ADR0 Write into address ADR
38 1 0 1 1 0 ADR2 ADR1 ADR0 Read from address ADR
39  
40  
41  
42  
43  
44  
45 */
1815 kaklik 46  
1886 kakl 47 int32 ble,ret32;
48 int16 ret16;
49 int8 ret8;
1815 kaklik 50  
1931 kaklik 51  
1886 kakl 52 while(TRUE)
1744 kakl 53 {
1931 kaklik 54 delay_ms(100);
55  
56  
1886 kakl 57 TDC_reset();
58 delay_ms(100);
59  
60 //----------------------------------------------- Nastaveni registru
61 output_low(TDC_ENABLE);
62 ble=0;
63 ble=(8<<28)|(0<<24);
64 ble|=(0<<20)|(0<<16)|(0<<14)|(3<<12)|(1<<10)|(0<<9)|(0<<8)|(0<<7)|(1<<6)|(1<<5)|(0<<4)|(1<<3)|(0<<2)|(0<<1)|0;
65 spi_xfer(TDC_stream,ble,32);
66 output_high(TDC_ENABLE);
67  
68 output_low(TDC_ENABLE);
69 ble=0;
70 ble=(8<<28)|(1<<24);
71 ble|=(2<<20)|(1<<16)|(0<<15)|(1<<14)|(0<<11)|(4<<8)|0;
72 spi_xfer(TDC_stream,ble,32);
73 output_high(TDC_ENABLE);
1815 kaklik 74  
1886 kakl 75 output_low(TDC_ENABLE);
76 ble=0;
77 ble=(8<<28)|(2<<24);
78 ble|=(1<<21)|(1<<20)|(1<<19)|0;
79 spi_xfer(TDC_stream,ble,32);
80 output_high(TDC_ENABLE);
81  
82 output_low(TDC_ENABLE);
83 ble=0;
84 ble=(8<<28)|(3<<24);
85 ble|=(0<<22)|(1<<21)|(1<<20)|(1<<19)|0;
86 spi_xfer(TDC_stream,ble,32);
87 output_high(TDC_ENABLE);
88  
89 output_low(TDC_ENABLE);
90 ble=0;
91 ble=(8<<28)|(4<<24);
92 ble|=(4<<19)|0;
93 spi_xfer(TDC_stream,ble,32);
94 output_high(TDC_ENABLE);
95  
96 output_low(TDC_ENABLE);
97 ble=0;
98 ble=(8<<28)|(5<<24);
99 ble|=(0<<21)|(0<<20)|(0<<19)|(0<<16)|0;
100 spi_xfer(TDC_stream,ble,32);
101 output_high(TDC_ENABLE);
1931 kaklik 102  
103  
1886 kakl 104 //----------------------------------------------- Vypis registru
105 output_low(TDC_ENABLE);
106 ret8=0;
107 ret8=(0b1011<<4)|0;
108 spi_xfer(TDC_stream,ret8,8);
109 ret32=spi_xfer(TDC_stream,0,32);
110 output_high(TDC_ENABLE);
111 printf("- %LX ", ret32);
112  
113 output_low(TDC_ENABLE);
114 ret8=0;
115 ret8=(0b1011<<4)|1;
116 spi_xfer(TDC_stream,ret8,8);
117 ret32=spi_xfer(TDC_stream,0,32);
118 output_high(TDC_ENABLE);
119 printf("%LX ", ret32);
120  
121 output_low(TDC_ENABLE);
122 ret8=0;
123 ret8=(0b1011<<4)|2;
124 spi_xfer(TDC_stream,ret8,8);
125 ret32=spi_xfer(TDC_stream,0,32);
126 output_high(TDC_ENABLE);
127 printf("%LX ", ret32);
128  
129 output_low(TDC_ENABLE);
130 ret8=0;
131 ret8=(0b1011<<4)|3;
132 spi_xfer(TDC_stream,ret8,8);
133 ret32=spi_xfer(TDC_stream,0,32);
134 output_high(TDC_ENABLE);
135 printf("%LX ", ret32);
136  
137 output_low(TDC_ENABLE);
138 ret8=0;
139 ret8=(0b1011<<4)|4;
140 spi_xfer(TDC_stream,ret8,8);
141 ret16=spi_xfer(TDC_stream,0,16);
142 output_high(TDC_ENABLE);
143 printf("[%Lu %Lu %Lu %Lu %Lu %Lu %Lu] ", (1&(ret16)>>12), (1&(ret16)>>11), (1&(ret16)>>10), 1&(ret16)>>9, 7&(ret16)>>6, 7&(ret16)>>3, 7&ret16);
144  
145 output_low(TDC_ENABLE);
146 ret8=0;
147 ret8=(0b1011<<4)|5;
148 spi_xfer(TDC_stream,ret8,8);
149 ret8=spi_xfer(TDC_stream,0,8);
150 output_high(TDC_ENABLE);
151 printf("%X\r\n", ret8);
152  
153 //----------------------------------------------- Mereni
154  
155 TDC_init();
156  
1759 kakl 157 delay_ms(50);
1886 kakl 158  
159 TDC_start_cycle();
160  
161 delay_ms(200);
162  
163 output_high(STOP2); // Merime jenom jednim kanalem (druhy zrejme musi byt v H)
164  
1759 kakl 165 output_high(START);
1886 kakl 166 output_low(START);
167 delay_us(1);
1798 kaklik 168  
1886 kakl 169 output_high(STOP1);
170 output_low(STOP1);
171 delay_us(1);
1759 kakl 172  
1886 kakl 173  
1815 kaklik 174 output_high(STOP1);
1886 kakl 175 output_low(STOP1);
176 delay_us(1);
177  
178 output_high(STOP1);
179 output_low(STOP1);
180 delay_us(1);
181  
182  
183  
184 //----------------------------------------------- Pocitani
185 int32 nn;
186 for(nn=3;nn<=5;nn++)
187 {
188 delay_ms(500);
189  
190 output_low(TDC_ENABLE);
191 ret8=0;
192 ret8=(0b1011<<4)|0;
193 spi_xfer(TDC_stream,ret8,8);
194 ret32=spi_xfer(TDC_stream,0,32);
195 output_high(TDC_ENABLE);
196 printf("* %LX ", ret32);
197  
198 output_low(TDC_ENABLE);
199 ret8=0;
200 ret8=(0b1011<<4)|1;
201 spi_xfer(TDC_stream,ret8,8);
202 ret32=spi_xfer(TDC_stream,0,32);
203 output_high(TDC_ENABLE);
204 printf("%LX ", ret32);
205  
206 output_low(TDC_ENABLE);
207 ret8=0;
208 ret8=(0b1011<<4)|2;
209 spi_xfer(TDC_stream,ret8,8);
210 ret32=spi_xfer(TDC_stream,0,32);
211 output_high(TDC_ENABLE);
212 printf("%LX ", ret32);
213  
214 output_low(TDC_ENABLE);
215 ret8=0;
216 ret8=(0b1011<<4)|3;
217 spi_xfer(TDC_stream,ret8,8);
218 ret32=spi_xfer(TDC_stream,0,32);
219 output_high(TDC_ENABLE);
220 printf("%LX ", ret32);
221  
222 output_low(TDC_ENABLE);
223 ret8=0;
224 ret8=(0b1011<<4)|4;
225 spi_xfer(TDC_stream,ret8,8);
226 ret16=spi_xfer(TDC_stream,0,16);
227 output_high(TDC_ENABLE);
228 printf("[%Lu %Lu %Lu %Lu %Lu %Lu %Lu] ", (1&(ret16)>>12), (1&(ret16)>>11), (1&(ret16)>>10), 1&(ret16)>>9, 7&(ret16)>>6, 7&(ret16)>>3, 7&ret16);
229  
230 output_low(TDC_ENABLE);
231 ret8=0;
232 ret8=(0b1011<<4)|5;
233 spi_xfer(TDC_stream,ret8,8);
234 ret8=spi_xfer(TDC_stream,0,8);
235 output_high(TDC_ENABLE);
236 printf("%X\r\n", ret8);
237  
238 // Next calculation
239 output_low(TDC_ENABLE);
240 ble=0;
241 ble=(8<<28)|(1<<24);
242 ble|=(nn<<20)|(1<<16)|(0<<15)|(1<<14)|(0<<11)|(4<<8)|0x00;
243 spi_xfer(TDC_stream,ble,32);
244 output_high(TDC_ENABLE);
245  
246 }
247  
248 }
1759 kakl 249  
1744 kakl 250 }