/Designs/Measuring_instruments/ABL01A/SW/Pozemni stanice/Zkouska - STM32L152-DISCOVERY/main.c
183,42 → 183,61
/*
* Vlakno pro ovladani odpalovaci sekvence
*/
static WORKING_AREA(waThread_odpal, 128);
static msg_t Thread_odpal(void *arg) {
uint8_t stav = 0; // rika, ve ktere fazi je odpalovani
static WORKING_AREA(waThread_odpal, 128);
static msg_t Thread_odpal(void *arg) {
uint8_t stav = 0; // rika, ve ktere fazi je odpalovani
uint8_t odpal_povolen = 0;
(void)arg;
chRegSetThreadName("Odpal_vlakno");
while (TRUE)
{
//msg_t msg;
msg_t msg;
 
/* Waiting for the IRQ to happen.*/
chSysLock();
tp_odpal = chThdSelf();
chSchGoSleepS(THD_STATE_SUSPENDED);
//msg = chThdSelf()->p_u.rdymsg; /* Retrieving the message, optional.*/
msg = chThdSelf()->p_u.rdymsg; /* Retrieving the message, optional.*/
chSysUnlock();
/* Perform processing here.*/
switch (stav)
if(msg == 1)
{
case 0: sdWrite(&SD1,"0",2);
break;
case 1: sdWrite(&SD1,"1",2);
break;
case 2: sdWrite(&SD1,"2",2);
break;
case 3: sdWrite(&SD1,"3",2);
break;
case 4: sdWrite(&SD1,"4",2);
break;
default: sdWrite(&SD1,"konec",6);
stav = 0;
break;
odpal_povolen = 1;
}
stav++;
}
if (odpal_povolen == 1)
{
switch (stav)
{
case 0:
sdWrite(&SD1,"0",2);
gptStartOneShot(&GPTD2,1000);
break;
case 1:
sdWrite(&SD1,"1",2);
gptStartOneShot(&GPTD2,1500);
break;
case 2:
sdWrite(&SD1,"2",2);
gptStartOneShot(&GPTD2,2000);
break;
case 3:
sdWrite(&SD1,"3",2);
gptStartOneShot(&GPTD2,3000);
break;
case 4:
sdWrite(&SD1,"4",2);
gptStartOneShot(&GPTD2,5000);
break;
default:
sdWrite(&SD1,"konec",6); //posledni krok
odpal_povolen = 0;
stav = 0;
break;
}
stav++;
}
}
}
 
 
/*
317,8 → 336,16
{
//int8_t porov;
//porov = strcmp(prikaz,"ahoj");
if(strcmp(prikaz,"ahoj") == 0)
if(strcmp(prikaz,"odpal") == 0)
{
/* Wakes up the thread.*/
chSysLockFromIsr();
if (tp_odpal != NULL) {
tp_odpal->p_u.rdymsg = (msg_t)1; /* odpal povolen*/
chSchReadyI(tp_odpal);
tp_odpal = NULL;
}
chSysUnlockFromIsr();
palTogglePad(GPIOB, GPIOB_LED4);
}
else if (strcmp(prikaz,"zdar") == 0)
359,8 → 386,8
* PA9 and PA10 are routed to USART1.
*/
sdStart(&SD1, NULL);
palSetPadMode(GPIOA, 9, PAL_MODE_ALTERNATE(7));
palSetPadMode(GPIOA, 10, PAL_MODE_ALTERNATE(7));
palSetPadMode(GPIOA, 9, PAL_MODE_ALTERNATE(7)); //TX
palSetPadMode(GPIOA, 10, PAL_MODE_ALTERNATE(7)); //RX
 
//gptObjectInit(&GPTD2);
/*
439,7 → 466,6
* pressed the test procedure is launched with output on the serial
* driver 1.
*/
gptStartContinuous(&GPTD2,1000);
while (TRUE) {
 
sdRead(&SD1,znaky,1);