Плата: фридуино на 168й меге.
Пишу программку общения с ком-портом.
Суть - в порт передаются команды типа ATS12345
Программка их парсит побайтно и в зависимости от команды выполняет те или иные действия.

Уперся я о непонятный камень:
код работает нестабильно.

в монитор порта вбиваю ATS
в 50% случаев (примерно)
код доходит до выполнения Serial.println("SET COMMAND /PIN ");
НО(!!!!)
Стабильно в цикле забивания массива выводит именно те байты, что передавались. Но if и switch работают по-китайски.

И еще нюанс такой: Serial.print как-то больше способствует корректной работе кода с массивом.

В чем может быть трабл? Уже идей никаких нет.

PHP код:
void setup() 

    
Serial.begin(115200); 
//  Serial.println("ECU READY"); 



int cmd[64];
int i;
int pin;
int maxdata;

void loop() 

  
  
maxdata=0;
  
   for(
i=0;i<64;i++) {cmd[i]=0;}
   
   
i=0;

   while (
Serial.available()>0
      {  
       
cmd[i]=Serial.read();
       
Serial.print(cmd[i],BYTE);   
       
i++;
       
maxdata++;
       } 
   
 
   if ((
cmd[0]==65)and(cmd[1]==84))
   {
     
// Serial.println("AT OK"); 

       
switch (cmd[2])
       {
       case 
73: {      //'I'
               
                
};
               break;
       
       case 
71: {        //'G'
                  
pin=cmd[3];
                };
                break;     
       
       case 
83:   {      //'S'
                        
Serial.println("SET COMMAND /PIN "); 
                         
pin=cmd[3];
                        
// Serial.println(pin,BYTE); 
                        // Serial.println(cmd[4],BYTE); 

                         
                         
switch (cmd[4])
                         {
                           case 
1pinMode(pinINPUT); break;
                           case 
2pinMode(pinOUTPUT); break;
                           case 
3digitalWrite(pin,cmd[5]);break;
                           case 
4analogWrite(pin,cmd[5]);break;
                         }  

                   };
               break;
       }
    }