Rev Author Line No. Line
1744 kakl 1 #include "main.h"
2012 kaklik 2 #include <math.h>
1744 kakl 3  
2012 kaklik 4 #use fast_io (D)
5  
1886 kakl 6 #define VERSION 0.2
1757 kakl 7  
1759 kakl 8 #define START PIN_D4
9 #define STOP1 PIN_D5
2012 kaklik 10 #define STOP2 PIN_D7
1886 kakl 11  
1774 kaklik 12 #include "GP2.h"
1759 kakl 13  
1774 kaklik 14 #define ONE_WIRE_PIN PIN_E2
15 #include "ds1820.c"
16  
1744 kakl 17 void main()
18 {
2159 kaklik 19  
20 /* setup_adc_ports(NO_ANALOGS|VSS_VDD); // for PIC18F4550
1744 kakl 21 setup_adc(ADC_CLOCK_DIV_2);
22 setup_psp(PSP_DISABLED);
23 setup_spi(SPI_SS_DISABLED);
24 setup_wdt(WDT_OFF);
25 setup_timer_0(RTCC_INTERNAL);
26 setup_timer_1(T1_DISABLED);
27 setup_timer_2(T2_DISABLED,0,1);
28 setup_ccp1(CCP_OFF);
29 setup_comparator(NC_NC_NC_NC);
30 setup_vref(FALSE);
2012 kaklik 31 */
32 setup_adc_ports(NO_ANALOGS|VSS_VDD);
33 setup_adc(ADC_CLOCK_DIV_2);
34 setup_spi(SPI_SS_DISABLED);
35 setup_timer_0(RTCC_INTERNAL|RTCC_DIV_1);
36 setup_timer_1(T1_DISABLED);
37 setup_timer_2(T2_DISABLED,0,1);
38 setup_ccp1(CCP_OFF);
39 setup_comparator(NC_NC_NC_NC);// This device COMP currently not supported by the PICWizard
1744 kakl 40  
2012 kaklik 41 set_tris_d(0x00);
42  
1745 kakl 43 TDC_reset();
1886 kakl 44  
1759 kakl 45 output_low(START);
46 output_low(STOP1);
47 output_low(STOP2);
1815 kaklik 48  
49 delay_ms(50);
50  
1886 kakl 51 int16 ret16;
52 int8 ret8;
1815 kaklik 53  
1967 kaklik 54 TDC_reset();
55 delay_ms(100);
1886 kakl 56  
1980 kaklik 57 while(TRUE)
58 {
2015 kaklik 59  
1886 kakl 60 //----------------------------------------------- Nastaveni registru
1980 kaklik 61  
62 MRange=TDC_MRANGE2; // sets measurement mode
1965 kaklik 63 hit1=TDC_MRANGE2_HIT1_START;
1980 kaklik 64 hitin1=TDC_HITIN1_4; // set nomber of hits on channel 1
65 hitin2=TDC_HITIN2_0; // disable channel 2 (normal state for this mode)
66 en_int= TDC_INT_ALU | TDC_INT_ENDHIT | TDC_INT_TIMEOUT; // eneble all possible interrupt flags
67 en_err_val=TDC_ERRVAL_EN; // enable of error value output
68 clkhsdiv=TDC_CLKHSDIV_4; // divide clkHS by 4
69  
70 delval1=0x0; // windowing disabled
1965 kaklik 71 delval2=0x0;
72 delval3=0x0;
73  
74 TDC_update_registers();
1931 kaklik 75  
1967 kaklik 76 delay_ms(100);
1980 kaklik 77  
78 //----------------------------------------------- Mereni 2
1886 kakl 79  
80 TDC_init();
81  
1759 kakl 82 delay_ms(50);
1886 kakl 83  
84 TDC_start_cycle();
85  
86 delay_ms(200);
87  
2014 kaklik 88 output_high(STOP2); // Merime jenom jednim kanalem (druhy zrejme byt v H)
1886 kakl 89  
1759 kakl 90 output_high(START);
1886 kakl 91 output_low(START);
1967 kaklik 92 delay_us(150);
1798 kaklik 93  
1886 kakl 94 output_high(STOP1);
95 output_low(STOP1);
96 delay_us(1);
1759 kakl 97  
1815 kaklik 98 output_high(STOP1);
1886 kakl 99 output_low(STOP1);
1966 kaklik 100 delay_us(10);
1886 kakl 101  
102 output_high(STOP1);
103 output_low(STOP1);
1967 kaklik 104 delay_us(1);
1886 kakl 105  
106 //----------------------------------------------- Pocitani
1964 kaklik 107  
2013 kaklik 108 // printf("Time2: %LX %LX %LX %LX ", TDC_get_measurement(1), TDC_get_measurement(2), TDC_get_measurement(3), TDC_get_measurement(4));
2012 kaklik 109  
1886 kakl 110  
1964 kaklik 111 output_low(TDC_ENABLE); //status register
1886 kakl 112 ret8=0;
113 ret8=(0b1011<<4)|4;
114 spi_xfer(TDC_stream,ret8,8);
115 ret16=spi_xfer(TDC_stream,0,16);
116 output_high(TDC_ENABLE);
1967 kaklik 117 printf("[%Lu %Lu %Lu %Lu %Lu %Lu %Lu]\r\n", (1&(ret16)>>12), (1&(ret16)>>11), (1&(ret16)>>10), 1&(ret16)>>9, 7&(ret16)>>6, 7&(ret16)>>3, 7&TDC_get_status());
118  
2012 kaklik 119 printf("Time2: %3.7f %3.7f %3.7f \r\n", TDC_mrange2_get_time(1), TDC_mrange2_get_time(2), TDC_mrange2_get_time(3));
120  
121  
1980 kaklik 122 //----------------------------------------------- Nastaveni registru
123  
124 MRange=TDC_MRANGE1;
125 hit1=TDC_MRANGE1_HIT1_NOAC;
126 hit2=TDC_MRANGE1_HIT2_NOAC;
127 hitin1=TDC_HITIN1_1;
128 hitin2=TDC_HITIN2_1;
129 en_int= TDC_INT_ALU | TDC_INT_ENDHIT | TDC_INT_TIMEOUT;
130 en_err_val=TDC_ERRVAL_EN;
131 clkhsdiv=TDC_CLKHSDIV_4;
132 delval1=0x0;
133 delval2=0x0;
134 delval3=0x0;
135  
136 TDC_update_registers();
137  
138 delay_ms(100);
139  
140  
141 //----------------------------------------------- Mereni 1
142  
143 TDC_init();
144  
145 delay_ms(50);
146 output_low(START);
147 output_low(STOP1);
148 output_low(STOP2);
149  
150 output_high(START); // start of time measurement
151  
152 output_high(STOP2);
2013 kaklik 153 output_high(STOP1);
2012 kaklik 154  
155 output_low(STOP1);
156 output_low(STOP2);
157 output_low(START);
1980 kaklik 158  
2012 kaklik 159  
160  
1980 kaklik 161 //----------------------------------------------- Pocitani
162  
2013 kaklik 163 // printf("Time1: %LX %LX %LX %LX ", TDC_get_measurement(1), TDC_get_measurement(2), TDC_get_measurement(3), TDC_get_measurement(4));
2012 kaklik 164  
1980 kaklik 165 output_low(TDC_ENABLE); //status register
166 ret8=0;
167 ret8=(0b1011<<4)|4;
168 spi_xfer(TDC_stream,ret8,8);
169 ret16=spi_xfer(TDC_stream,0,16);
170 output_high(TDC_ENABLE);
2012 kaklik 171  
1980 kaklik 172 printf("[%Lu %Lu %Lu %Lu %Lu %Lu %Lu]\r\n", (1&(ret16)>>12), (1&(ret16)>>11), (1&(ret16)>>10), 1&(ret16)>>9, 7&(ret16)>>6, 7&(ret16)>>3, 7&TDC_get_status());
173  
2012 kaklik 174 printf("Time1: %3.7f %3.7f %3.7f \r\n", TDC_mrange1_get_time(1,0,1,1), TDC_mrange1_get_time(2,0,2,1), TDC_mrange1_get_time(1,1,2,1));
1980 kaklik 175  
176 /// ----------------------------------------------- Temperature masurement
177  
2013 kaklik 178  
179 TDC_reset();
180 portnum=TDC_TPORTNUM_4;
181 Tcycle=TDC_TCYCLE_SHORT;
182 fakenum=TDC_TFAKENUM_2;
183 selclkT=TDC_TSELCLK_128HS;
184  
185 TDC_update_registers();
186  
187 TDC_init();
1967 kaklik 188 TDC_start_temp();
2013 kaklik 189  
190  
1967 kaklik 191 output_low(TDC_ENABLE); //status register
192 ret8=0;
193 ret8=(0b1011<<4)|4;
194 spi_xfer(TDC_stream,ret8,8);
195 ret16=spi_xfer(TDC_stream,0,16);
196 output_high(TDC_ENABLE);
2011 kaklik 197 printf("Temp: %LX %LX %LX %LX ", TDC_get_measurement(1), TDC_get_measurement(2), TDC_get_measurement(3), TDC_get_measurement(4));
198 printf(" [%Lu %Lu %Lu %Lu %Lu %Lu %Lu] \r\n", (1&(ret16)>>12), (1&(ret16)>>11), (1&(ret16)>>10), 1&(ret16)>>9, 7&(ret16)>>6, 7&(ret16)>>3, 7&TDC_get_status());
1886 kakl 199 }
1744 kakl 200 }