Rev 2160 Rev 2161
1 #include "main.h" 1 #include "main.h"
2 #include <math.h> 2 #include <math.h>
-   3  
-   4 #define INTN_PIN PIN_D7
3 #include "GP2.h" 5 #include "GP2.h"
4   6  
5 #define VERSION 0.2 7 #define VERSION 0.2
6   8  
7 #define ONE_WIRE_PIN PIN_E2 9 #define ONE_WIRE_PIN PIN_E2
8 #include "ds1820.c" 10 #include "ds1820.c"
9   11  
10 void main() 12 void main()
11 { 13 {
12 setup_adc_ports(NO_ANALOGS|VSS_VDD); 14 setup_adc_ports(NO_ANALOGS|VSS_VDD);
13 setup_adc(ADC_CLOCK_DIV_2); 15 setup_adc(ADC_CLOCK_DIV_2);
14 setup_spi(SPI_SS_DISABLED); 16 setup_spi(SPI_SS_DISABLED);
15 setup_timer_0(RTCC_INTERNAL|RTCC_DIV_1); 17 setup_timer_0(RTCC_INTERNAL|RTCC_DIV_1);
16 setup_timer_1(T1_DISABLED); 18 setup_timer_1(T1_DISABLED);
17 setup_timer_2(T2_DISABLED,0,1); 19 setup_timer_2(T2_DISABLED,0,1);
18 setup_ccp1(CCP_OFF); 20 setup_ccp1(CCP_OFF);
19 setup_comparator(NC_NC_NC_NC);// This device COMP currently not supported by the PICWizard 21 setup_comparator(NC_NC_NC_NC);// This device COMP currently not supported by the PICWizard
20   22  
21 TDC_reset(); 23 TDC_reset();
22   24  
23 delay_ms(50); 25 delay_ms(50);
24   26  
25 int16 ret16; 27 int16 ret16;
26 int8 ret8; 28 int8 ret8;
27   29  
28 TDC_reset(); 30 TDC_reset();
29 delay_ms(100); 31 delay_ms(100);
30 32
31 while(TRUE) 33 while(TRUE)
32 { 34 {
33 35
34 //----------------------------------------------- Nastaveni registru 36 //----------------------------------------------- Nastaveni registru
35 37
36 MRange=TDC_MRANGE2; // sets measurement mode 38 MRange=TDC_MRANGE2; // sets measurement mode
37 hit1=TDC_MRANGE2_HIT1_START; 39 hit1=TDC_MRANGE2_HIT1_START;
38 hitin1=TDC_HITIN1_4; // set nomber of hits on channel 1 40 hitin1=TDC_HITIN1_4; // set nomber of hits on channel 1
39 hitin2=TDC_HITIN2_0; // disable channel 2 (normal state for this mode) 41 hitin2=TDC_HITIN2_0; // disable channel 2 (normal state for this mode)
40 en_int= TDC_INT_ALU | TDC_INT_ENDHIT | TDC_INT_TIMEOUT; // eneble all possible interrupt flags 42 en_int= TDC_INT_ALU | TDC_INT_ENDHIT | TDC_INT_TIMEOUT; // eneble all possible interrupt flags
41 en_err_val=TDC_ERRVAL_EN; // enable of error value output 43 en_err_val=TDC_ERRVAL_EN; // enable of error value output
42 clkhsdiv=TDC_CLKHSDIV_4; // divide clkHS by 4 44 clkhsdiv=TDC_CLKHSDIV_4; // divide clkHS by 4
43 45
44 delval1=0x0; // windowing disabled 46 delval1=0x0; // windowing disabled
45 delval2=0x0; 47 delval2=0x0;
46 delval3=0x0; 48 delval3=0x0;
47 49
48 TDC_update_registers(); 50 TDC_update_registers();
49   51  
50 delay_ms(100); 52 delay_ms(10);
51   53  
52 //----------------------------------------------- Mereni 2 54 //----------------------------------------------- Measuring mode 2
53 55
54 TDC_init(); 56 TDC_init();
55 -  
56 delay_ms(50); 57 delay_ms(50);
57 -  
58 TDC_start_cycle(); 58 TDC_start_cycle();
59 -  
60 delay_ms(200); 59 While(!input(INTN_PIN)); // waiting for interrupt flag
61 60
62 //----------------------------------------------- Pocitani 61 //----------------------------------------------- Pocitani
63   62  
64 // printf("Time2: %LX %LX %LX %LX ", TDC_get_measurement(1), TDC_get_measurement(2), TDC_get_measurement(3), TDC_get_measurement(4)); 63 // printf("Time2: %LX %LX %LX %LX ", TDC_get_measurement(1), TDC_get_measurement(2), TDC_get_measurement(3), TDC_get_measurement(4));
65   64  
66 65
67 output_low(TDC_ENABLE); //status register 66 output_low(TDC_ENABLE); //status register read
68 ret8=0; 67 ret8=0;
69 ret8=(0b1011<<4)|4; 68 ret8=(0b1011<<4)|4;
70 spi_xfer(TDC_stream,ret8,8); 69 spi_xfer(TDC_stream,ret8,8);
71 ret16=spi_xfer(TDC_stream,0,16); 70 ret16=spi_xfer(TDC_stream,0,16);
72 output_high(TDC_ENABLE); 71 output_high(TDC_ENABLE);
-   72
73 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()); 73 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()); //status register print
74   74  
75 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)); 75 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));
76   76  
77   77  
78 //----------------------------------------------- Nastaveni registru 78 //----------------------------------------------- Nastaveni registru
79 79
80 MRange=TDC_MRANGE1; 80 /* MRange=TDC_MRANGE1;
81 hit1=TDC_MRANGE1_HIT1_NOAC; 81 hit1=TDC_MRANGE1_HIT1_NOAC;
82 hit2=TDC_MRANGE1_HIT2_NOAC; 82 hit2=TDC_MRANGE1_HIT2_NOAC;
83 hitin1=TDC_HITIN1_1; 83 hitin1=TDC_HITIN1_1;
84 hitin2=TDC_HITIN2_1; 84 hitin2=TDC_HITIN2_1;
85 en_int= TDC_INT_ALU | TDC_INT_ENDHIT | TDC_INT_TIMEOUT; 85 en_int= TDC_INT_ALU | TDC_INT_ENDHIT | TDC_INT_TIMEOUT;
86 en_err_val=TDC_ERRVAL_EN; 86 en_err_val=TDC_ERRVAL_EN;
87 clkhsdiv=TDC_CLKHSDIV_4; 87 clkhsdiv=TDC_CLKHSDIV_4;
88 delval1=0x0; 88 delval1=0x0;
89 delval2=0x0; 89 delval2=0x0;
90 delval3=0x0; 90 delval3=0x0;
91 91
92 TDC_update_registers(); 92 TDC_update_registers();
93   93  
94 delay_ms(100); 94 delay_ms(100);
95   95  
96   96  
97 //----------------------------------------------- Mereni 1 97 //----------------------------------------------- Mereni 1
98 98
99 TDC_init(); 99 TDC_init();
100   100  
101 //----------------------------------------------- Pocitani 101 //----------------------------------------------- Pocitani
102   102  
103 // printf("Time1: %LX %LX %LX %LX ", TDC_get_measurement(1), TDC_get_measurement(2), TDC_get_measurement(3), TDC_get_measurement(4)); 103 // printf("Time1: %LX %LX %LX %LX ", TDC_get_measurement(1), TDC_get_measurement(2), TDC_get_measurement(3), TDC_get_measurement(4));
104   104  
105 output_low(TDC_ENABLE); //status register 105 output_low(TDC_ENABLE); //status register
106 ret8=0; 106 ret8=0;
107 ret8=(0b1011<<4)|4; 107 ret8=(0b1011<<4)|4;
108 spi_xfer(TDC_stream,ret8,8); 108 spi_xfer(TDC_stream,ret8,8);
109 ret16=spi_xfer(TDC_stream,0,16); 109 ret16=spi_xfer(TDC_stream,0,16);
110 output_high(TDC_ENABLE); 110 output_high(TDC_ENABLE);
111   111  
112 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()); 112 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());
113   113  
114 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)); 114 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));
115   115  
116 /// ----------------------------------------------- Temperature masurement 116 /// ----------------------------------------------- Temperature masurement
117   117  
118   118 */
119 TDC_reset(); 119 TDC_reset();
120 portnum=TDC_TPORTNUM_4; 120 portnum=TDC_TPORTNUM_4;
121 Tcycle=TDC_TCYCLE_SHORT; 121 Tcycle=TDC_TCYCLE_SHORT;
122 fakenum=TDC_TFAKENUM_2; 122 fakenum=TDC_TFAKENUM_2;
123 selclkT=TDC_TSELCLK_128HS; 123 selclkT=TDC_TSELCLK_128HS;
124   124  
125 TDC_update_registers(); 125 TDC_update_registers();
126   126  
127 TDC_init(); 127 TDC_init();
128 TDC_start_temp(); 128 TDC_start_temp();
129 129
130 130
131 output_low(TDC_ENABLE); //status register 131 output_low(TDC_ENABLE); //status register
132 ret8=0; 132 ret8=0;
133 ret8=(0b1011<<4)|4; 133 ret8=(0b1011<<4)|4;
134 spi_xfer(TDC_stream,ret8,8); 134 spi_xfer(TDC_stream,ret8,8);
135 ret16=spi_xfer(TDC_stream,0,16); 135 ret16=spi_xfer(TDC_stream,0,16);
136 output_high(TDC_ENABLE); 136 output_high(TDC_ENABLE);
137 printf("Temp: %LX %LX %LX %LX ", TDC_get_measurement(1), TDC_get_measurement(2), TDC_get_measurement(3), TDC_get_measurement(4)); 137 printf("Temp: %LX %LX %LX %LX ", TDC_get_measurement(1), TDC_get_measurement(2), TDC_get_measurement(3), TDC_get_measurement(4));
138 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()); 138 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());
139 } 139 }
140 } 140 }