Rev 2943 Rev 2945
Line 181... Line 181...
181 } 181 }
182   182  
183 /* 183 /*
184 * Vlakno pro ovladani odpalovaci sekvence 184 * Vlakno pro ovladani odpalovaci sekvence
185 */ 185 */
186 static WORKING_AREA(waThread_odpal, 128); 186 static WORKING_AREA(waThread_odpal, 128);
187 static msg_t Thread_odpal(void *arg) { 187 static msg_t Thread_odpal(void *arg) {
188 uint8_t stav = 0; // rika, ve ktere fazi je odpalovani 188 uint8_t stav = 0; // rika, ve ktere fazi je odpalovani
-   189 uint8_t odpal_povolen = 0;
189 (void)arg; 190 (void)arg;
190 chRegSetThreadName("Odpal_vlakno"); 191 chRegSetThreadName("Odpal_vlakno");
191 while (TRUE) 192 while (TRUE)
192 { 193 {
193 //msg_t msg; 194 msg_t msg;
194   195  
195 /* Waiting for the IRQ to happen.*/ 196 /* Waiting for the IRQ to happen.*/
196 chSysLock(); 197 chSysLock();
197 tp_odpal = chThdSelf(); 198 tp_odpal = chThdSelf();
198 chSchGoSleepS(THD_STATE_SUSPENDED); 199 chSchGoSleepS(THD_STATE_SUSPENDED);
199 //msg = chThdSelf()->p_u.rdymsg; /* Retrieving the message, optional.*/ 200 msg = chThdSelf()->p_u.rdymsg; /* Retrieving the message, optional.*/
200 chSysUnlock(); 201 chSysUnlock();
201 /* Perform processing here.*/ 202 /* Perform processing here.*/
202 switch (stav) 203 if(msg == 1)
203 { 204 {
204 case 0: sdWrite(&SD1,"0",2); -  
205 break; -  
206 case 1: sdWrite(&SD1,"1",2); -  
207 break; -  
208 case 2: sdWrite(&SD1,"2",2); -  
209 break; -  
210 case 3: sdWrite(&SD1,"3",2); -  
211 break; -  
212 case 4: sdWrite(&SD1,"4",2); -  
213 break; -  
214 default: sdWrite(&SD1,"konec",6); -  
215 stav = 0; 205 odpal_povolen = 1;
216 break; -  
217 } 206 }
-   207 if (odpal_povolen == 1)
-   208 {
-   209 switch (stav)
218 210 {
-   211 case 0:
-   212 sdWrite(&SD1,"0",2);
-   213 gptStartOneShot(&GPTD2,1000);
-   214 break;
-   215 case 1:
-   216 sdWrite(&SD1,"1",2);
-   217 gptStartOneShot(&GPTD2,1500);
-   218 break;
-   219 case 2:
-   220 sdWrite(&SD1,"2",2);
-   221 gptStartOneShot(&GPTD2,2000);
-   222 break;
-   223 case 3:
-   224 sdWrite(&SD1,"3",2);
-   225 gptStartOneShot(&GPTD2,3000);
-   226 break;
-   227 case 4:
-   228 sdWrite(&SD1,"4",2);
-   229 gptStartOneShot(&GPTD2,5000);
-   230 break;
-   231 default:
-   232 sdWrite(&SD1,"konec",6); //posledni krok
-   233 odpal_povolen = 0;
-   234 stav = 0;
-   235 break;
-   236 }
219 stav++; 237 stav++;
220 } 238 }
-   239 }
221 } 240 }
222   241  
223   242  
224 /* 243 /*
225 * Vlakno pro obsluhu GPS prijimace 244 * Vlakno pro obsluhu GPS prijimace
Line 315... Line 334...
315   334  
316 void dekodujPrikaz(char *prikaz) 335 void dekodujPrikaz(char *prikaz)
317 { 336 {
318 //int8_t porov; 337 //int8_t porov;
319 //porov = strcmp(prikaz,"ahoj"); 338 //porov = strcmp(prikaz,"ahoj");
320 if(strcmp(prikaz,"ahoj") == 0) 339 if(strcmp(prikaz,"odpal") == 0)
321 { 340 {
-   341 /* Wakes up the thread.*/
-   342 chSysLockFromIsr();
-   343 if (tp_odpal != NULL) {
-   344 tp_odpal->p_u.rdymsg = (msg_t)1; /* odpal povolen*/
-   345 chSchReadyI(tp_odpal);
-   346 tp_odpal = NULL;
-   347 }
-   348 chSysUnlockFromIsr();
322 palTogglePad(GPIOB, GPIOB_LED4); 349 palTogglePad(GPIOB, GPIOB_LED4);
323 } 350 }
324 else if (strcmp(prikaz,"zdar") == 0) 351 else if (strcmp(prikaz,"zdar") == 0)
325 { 352 {
326 palTogglePad(GPIOB, GPIOB_LED3); 353 palTogglePad(GPIOB, GPIOB_LED3);
Line 357... Line 384...
357 /* 384 /*
358 * Activates the serial driver 1 using the driver default configuration. 385 * Activates the serial driver 1 using the driver default configuration.
359 * PA9 and PA10 are routed to USART1. 386 * PA9 and PA10 are routed to USART1.
360 */ 387 */
361 sdStart(&SD1, NULL); 388 sdStart(&SD1, NULL);
362 palSetPadMode(GPIOA, 9, PAL_MODE_ALTERNATE(7)); 389 palSetPadMode(GPIOA, 9, PAL_MODE_ALTERNATE(7)); //TX
363 palSetPadMode(GPIOA, 10, PAL_MODE_ALTERNATE(7)); 390 palSetPadMode(GPIOA, 10, PAL_MODE_ALTERNATE(7)); //RX
364   391  
365 //gptObjectInit(&GPTD2); 392 //gptObjectInit(&GPTD2);
366 /* 393 /*
367 * aktivuje timer2 a prejde tak do aktivniho stavu 394 * aktivuje timer2 a prejde tak do aktivniho stavu
368 */ 395 */
Line 437... Line 464...
437 * Normal main() thread activity, in this demo it does nothing except 464 * Normal main() thread activity, in this demo it does nothing except
438 * sleeping in a loop and check the button state, when the button is 465 * sleeping in a loop and check the button state, when the button is
439 * pressed the test procedure is launched with output on the serial 466 * pressed the test procedure is launched with output on the serial
440 * driver 1. 467 * driver 1.
441 */ 468 */
442 gptStartContinuous(&GPTD2,1000); -  
443 while (TRUE) { 469 while (TRUE) {
444   470  
445 sdRead(&SD1,znaky,1); 471 sdRead(&SD1,znaky,1);
446 /*Kdyz uzivatel stiskne enter -> dekoduj a vykonej prikaz*/ 472 /*Kdyz uzivatel stiskne enter -> dekoduj a vykonej prikaz*/
447 if (znaky[0] == '\r') 473 if (znaky[0] == '\r')