Rev 1287 Rev 1288
Line 1... Line 1...
1 /**** IR Mrakomer 4 ****/ 1 /**** IR Mrakomer 4 ****/
2 #define VERSION "4.0" 2 #define VERSION "4.0"
3 #define ID "$Id: irmrak4.c 1287 2009-01-08 12:54:40Z kakl $" 3 #define ID "$Id: irmrak4.c 1288 2009-01-08 19:01:53Z kakl $"
4 #include "irmrak4.h" 4 #include "irmrak4.h"
5   5  
6 #define MAXHEAT 20 // Number of cycles for heating 6 #define MAXHEAT 20 // Number of cycles for heating
7 #define MAXOPEN 20 // Number of cycles for dome open 7 #define MAXOPEN 20 // Number of cycles for dome open
8 #define MEASURE_DELAY 6000 // Delay to a next measurement 8 #define MEASURE_DELAY 6000 // Delay to a next measurement
Line 86... Line 86...
86 void main() 86 void main()
87 { 87 {
88 unsigned int16 seq, temp, tempa; 88 unsigned int16 seq, temp, tempa;
89 signed int16 ta, to; 89 signed int16 ta, to;
90 int8 safety_counter; 90 int8 safety_counter;
-   91 int1 repeat;
91   92  
92 output_high(DOME); // Close Dome 93 output_high(DOME); // Close Dome
93 output_low(HEATING); // Heating off 94 output_low(HEATING); // Heating off
94 setup_wdt(WDT_2304MS); // Setup Watch Dog 95 setup_wdt(WDT_2304MS); // Setup Watch Dog
95 setup_adc_ports(NO_ANALOGS); 96 setup_adc_ports(NO_ANALOGS);
Line 106... Line 107...
106 restart_wdt(); 107 restart_wdt();
107   108  
108 seq=0; // Variables initiation 109 seq=0; // Variables initiation
109 heat=0; 110 heat=0;
110 open=0; 111 open=0;
-   112 repeat=FALSE;
111   113
112 welcome(); 114 welcome();
113   115  
114 tempa=ReadTemp(SA, RAM_Tamb); // Dummy read 116 tempa=ReadTemp(SA, RAM_Tamb); // Dummy read
115 temp=ReadTemp(SA, RAM_Tobj1); 117 temp=ReadTemp(SA, RAM_Tobj1);
116   118  
Line 118... Line 120...
118 //---WDT 120 //---WDT
119 restart_wdt(); 121 restart_wdt();
120   122  
121 while(TRUE) // Main Loop 123 while(TRUE) // Main Loop
122 { 124 {
123 while(kbhit()) getc(); // Flush USART buffer -  
124 CREN=0; CREN=1; // Reinitialise USART -  
125   -  
126 safety_counter=SAFETY_COUNT; // Heating and Dome Count Down 125 safety_counter=SAFETY_COUNT; // Heating and Dome Count Down
127 do 126 do
128 { 127 {
129 if (safety_counter<SAFETY_COUNT) safety_counter++; 128 if (safety_counter<SAFETY_COUNT) safety_counter++;
130   129  
131 delay(RESPONSE_DELAY); 130 delay(RESPONSE_DELAY);
132   131  
133 if (safety_counter>=SAFETY_COUNT) 132 if (safety_counter>=SAFETY_COUNT)
134 { 133 {
135 if (heat>0) 134 if (heat>0) heat--;
136 { -  
137 output_high(HEATING); -  
138 heat--; -  
139 } -  
140 else -  
141 { -  
142 output_low(HEATING); -  
143 } -  
144   -  
145 if (open>0) open--; 135 if (open>0) open--;
146   136  
147 safety_counter=0; 137 safety_counter=0;
148 //---WDT 138 //---WDT
149 restart_wdt(); 139 restart_wdt();
150 } 140 }
151 } while (!kbhit()); 141 } while (!kbhit()&&!repeat);
152   142  
153 //---WDT 143 //---WDT
154 restart_wdt(); 144 restart_wdt();
155 { // Retrieve command 145 { // Retrieve command
156 char ch; 146 char ch='k';
157   147  
158 ch=getc(); 148 if(kbhit()) ch=getc();
159   149  
160 switch (ch) 150 switch (ch)
161 { 151 {
162 case 'h': 152 case 'h':
163 heat=MAXHEAT; // Need heating 153 heat=MAXHEAT; // Need heating
Line 181... Line 171...
181 break; 171 break;
182   172  
183 case 'i': 173 case 'i':
184 if (open==0) welcome(); // Information about version, etc... 174 if (open==0) welcome(); // Information about version, etc...
185 break; // Only when dome is closed 175 break; // Only when dome is closed
-   176  
-   177 case 'r':
-   178 repeat=TRUE; // Repeate measure mode
-   179 break;
-   180  
-   181 case 's':
-   182 repeat=FALSE; // Single measure mode
-   183 break;
186 } 184 }
187 } 185 }
-   186 // while(kbhit()) getc(); // Flush USART buffer
-   187 CREN=0; CREN=1; // Reinitialise USART
188   188  
189 seq++; // Increment the number of measurement 189 seq++; // Increment the number of measurement
190   190  
191 tempa=ReadTemp(SA, RAM_Tamb); // Read temperatures from sensor 191 tempa=ReadTemp(SA, RAM_Tamb); // Read temperatures from sensor
192 temp=ReadTemp(SA, RAM_Tobj1); 192 temp=ReadTemp(SA, RAM_Tobj1);
Line 208... Line 208...
208 sprintf(output,"%u ", heat); 208 sprintf(output,"%u ", heat);
209 j=0; while(output[j]!=0) { delay(SEND_DELAY); putc(output[j++]); } 209 j=0; while(output[j]!=0) { delay(SEND_DELAY); putc(output[j++]); }
210 sprintf(output,"%u\n\r\0", open); 210 sprintf(output,"%u\n\r\0", open);
211 j=0; while(output[j]!=0) { delay(SEND_DELAY); putc(output[j++]); } 211 j=0; while(output[j]!=0) { delay(SEND_DELAY); putc(output[j++]); }
212 } 212 }
-   213
-   214 if(heating>0) { output_high(HEATING); } else { output_low(HEATING); }
213   215  
214 delay(MEASURE_DELAY); // Delay to a next measurement 216 delay(MEASURE_DELAY); // Delay to a next measurement
215 //---WDT 217 //---WDT
216 restart_wdt(); 218 restart_wdt();
217 } 219 }