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') |