Rev 1720 Rev 1862
Line 1... Line 1...
1 /**** IR Mrakomer 4 ****/ 1 /**** IR Mrakomer 4 ****/
2 #define VERSION "4.1" 2 #define VERSION "4.1"
3 #define ID "$Id: irmrak4.c 1720 2010-12-10 20:47:52Z kakl $" 3 #define ID "$Id: irmrak4.c 1862 2011-02-20 17:22:55Z kakl $"
4   4  
5 #include "irmrak4.h" 5 #include "irmrak4.h"
6   6  
7 #bit CREN = 0x18.4 // USART registers 7 #bit CREN = 0x18.4 // USART registers
8 #bit SPEN = 0x18.7 8 #bit SPEN = 0x18.7
Line 17... Line 17...
17 #define MAXOPEN 20 // Number of cycles for dome open 17 #define MAXOPEN 20 // Number of cycles for dome open
18 #define MEASURE_DELAY 6000 // Delay to a next measurement 18 #define MEASURE_DELAY 6000 // Delay to a next measurement
19 #define RESPONSE_DELAY 100 // Reaction time after receiving a command 19 #define RESPONSE_DELAY 100 // Reaction time after receiving a command
20 #define SAFETY_COUNT 90 // Time of one emergency cycle 20 #define SAFETY_COUNT 90 // Time of one emergency cycle
21 #define SEND_DELAY 50 // Time between two characters on RS232 21 #define SEND_DELAY 50 // Time between two characters on RS232
-   22 #define TEMPERATURE_INSIDE 1800 // Keep this temperature inside MM's box
22   23  
23 #define DOME PIN_B4 // Dome controll port 24 #define DOME PIN_B4 // Dome controll port
24 #define HEATING PIN_B3 // Heating for defrosting 25 #define HEATING PIN_B3 // Heating for defrosting
25   26  
26   27  
Line 54... Line 55...
54 // printf("#\r\n"); 55 // printf("#\r\n");
55 printf("# commands: h, c, o, l, x, i, r, a, s, u\r\n"); 56 printf("# commands: h, c, o, l, x, i, r, a, s, u\r\n");
56 // printf("# h_eat, c_old, o_pen, l_ock, x_open, "); 57 // printf("# h_eat, c_old, o_pen, l_ock, x_open, ");
57 // printf("i_nfo, r_epeat, a_uto, s_single, u_pdate\r\n"); 58 // printf("i_nfo, r_epeat, a_uto, s_single, u_pdate\r\n");
58 // printf("#\r\n"); 59 // printf("#\r\n");
59 printf("# ver seq in[1/100 C] sky[1/100 C] sky[1/100 C] "); 60 // printf("# ver seq in[1/100 C] sky[1/100 C] sky[1/100 C] ");
60 printf("out[1/100 C] heat[s] dome[s] check\r\n\r\n"); 61 // printf("out[1/100 C] heat[s] dome[s] check\r\n\r\n");
61   62  
62 //---WDT 63 //---WDT
63 restart_wdt(); 64 restart_wdt();
64 } 65 }
65   66  
Line 134... Line 135...
134   135  
135 /*-------------------------------- MAIN --------------------------------------*/ 136 /*-------------------------------- MAIN --------------------------------------*/
136 void main() 137 void main()
137 { 138 {
138 unsigned int16 seq, temp, tempa; 139 unsigned int16 seq, temp, tempa;
139 signed int16 ta, to1, to2, tTouch; 140 signed int16 ta, to1, to2, tTouch, told;
140 int8 tLSB,tMSB; // Temperatures from TouchMemory 141 int8 tLSB,tMSB; // Temperatures from TouchMemory
141 int8 safety_counter; 142 int8 safety_counter;
142 int1 repeat; // Status flags 143 int1 repeat; // Status flags
143 int1 automatic; 144 int1 automatic;
144   145  
Line 163... Line 164...
163 touch_write_byte(0x44); 164 touch_write_byte(0x44);
164   165  
165 delay_ms(1000); 166 delay_ms(1000);
166 //---WDT 167 //---WDT
167 restart_wdt(); 168 restart_wdt();
168   169
169 while(TRUE) // Main Loop 170 while(TRUE) // Main Loop
170 { 171 {
171 safety_counter=SAFETY_COUNT; // Heating and Dome Count Down 172 safety_counter=SAFETY_COUNT; // Heating and Dome Count Down
172 do 173 do
173 { 174 {
Line 175... Line 176...
175   176  
176 delay(RESPONSE_DELAY); 177 delay(RESPONSE_DELAY);
177   178  
178 if (safety_counter>=SAFETY_COUNT) 179 if (safety_counter>=SAFETY_COUNT)
179 { 180 {
-   181 if (heat>0) { output_high(HEATING); } else { output_low(HEATING); }
-   182  
180 if (heat>0) heat--; 183 if (heat>0) heat--;
181 if (open>0) open--; 184 if (open>0) open--;
182   185  
183 if (heat>0) { output_high(HEATING); } else { output_low(HEATING); } -  
184   -  
185 safety_counter=0; 186 safety_counter=0;
186 //---WDT 187 //---WDT
187 restart_wdt(); 188 restart_wdt();
188 } 189 }
189 } while (!kbhit()&&!repeat); 190 } while (!kbhit()&&!repeat);
Line 287... Line 288...
287 } 288 }
288 } 289 }
289 290
290 if(automatic) // Solve automatic mode 291 if(automatic) // Solve automatic mode
291 { 292 {
292 if(ta<1800) heat=MAXHEAT; // Need heating 293 if(((ta<400)||(ta<(tTouch+400)))&&(ta<2000)&&(ta<told)) heat=1; // Need heating
-   294 told=ta;
293 if((abs(to1-to2)<80)&&(tTouch>to1)&&(abs(tTouch-to1)>1500)) 295 if((abs(to1-to2)<100)&&(tTouch>to1)&&(abs(tTouch-to1)>800))
294 open=MAXOPEN; // Open the dome 296 open=1; // Open the dome
295 } 297 }
296   298  
297 { // printf 299 { // printf
298 char output[8]; // Output buffer 300 char output[8]; // Output buffer
299 int8 j; // String pointer 301 int8 j; // String pointer