Доброго времени суток, не могу решить простую проблему - передать несколько переменных одновременно через UART на мк. Данные на контроллер приходят в виде [aaa]<bbb>(ccc), где aaa bbb ccc - значения переменных, а различные скобки - их идентификаторы.
обработчик этих переменных следующий (контроллер -мега16)
Однако контроллер стабильно принимает только 1 переменную, остальные он игнорирует. В чём может быть проблема?
Раздел: AVR
обработчик этих переменных следующий (контроллер -мега16)
struct us
{
int freaqready; ..флаги готовности приёма переменных
int duratready;
int delayready;
int chcounter; //счётчик символов
}
us us1;
volatile char sym[2];
volatile text1[20], text2[20], text3[20];
while(1)
{
sym[0]=USART_GetChar(); //принимаем символ
sym[1]=0;
if (sym[0])
{
switch (sym[0])
{
case '[': us1.freaqready=1; break;
case '(': us1.duratready=1; break;
case '<': us1.delayready=1; break;
case ']': //по окончанию приёма 1 переменной
timerValue=atoi(text);
us1.freaqready=0;
us1.chcounter=0;
USART_FlushRxBuf();
break;
case ')': //по окончанию приёма 2 переменной
widthValue=atoi(text2);
us1.duratready=0;
us1.chcounter=0;
USART_FlushRxBuf();
break;
case '>': //по окончанию приёма 3 переменной
tempdelay=atoi(text3);
us1.delayready=0;
us1.chcounter=0;
USART_FlushRxBuf();
break;
default:
if (us1.freaqready)
text1[us1.chcounter++]=sym[0];
else if (us1.duratready)
text2[us1.chcounter++]=sym[0];
else if (us1.delayready)
text3[us1.chcounter++]=sym[0];
break;
}
Однако контроллер стабильно принимает только 1 переменную, остальные он игнорирует. В чём может быть проблема?
Раздел: AVR