maksim писал(а):
Сегодня играли ,тестировал новую прошивку )) У меня лично пропал звук и у одного игрока )))За всю игру 1 раз ))) Свистят над головой пули и я нажал на перезарядку и звук пропал....Но это же пули ,а не  команда новая игра )))Как в домашних условиях с имитировать пока нне знаю...
Мне то легко имитировать - по блютусу послать  символ 'e'.
Баг зафиксирован - звук пропал с n-адцатой попытки!
Офигенный косяк нашёл в функции 
Код:
void playback_sound(TSOUND_ROLE sound_role)//воспроизводим звук через прерывание 
она почти в самом конце файла
тут		
		//звук "пролетающей пули"
		case flying_bullet_sound: 
simples_in_queue = eeprom_read_word(&sound_8_size);		{
			curr_sound.role = sound_role;
			curr_sound.adress = eeprom_read_word(&sound_8_adress);
			curr_sound.size = eeprom_read_word(&sound_8_size);
			curr_sound.simples_in_queue = curr_sound.size;
			curr_sound.play_now = true;
		}				
		break;
simples_in_queue = eeprom_read_word(&sound_8_size); - этого тут не должно было быть!
Как оно сюда попало?
Видимо случайный копи паст, в общем удаляем
Код:
      //звук "пролетающей пули"
      case flying_bullet_sound: 
      {
         curr_sound.role = sound_role;
         curr_sound.adress = eeprom_read_word(&sound_8_adress);
         curr_sound.size = eeprom_read_word(&sound_8_size);
         curr_sound.simples_in_queue = curr_sound.size;
         curr_sound.play_now = true;
      }
      
      
      break;
Ну и наша пилюля
Код:
case RX_ERROR:      //ошибка приема
         {
            
            
                            if((reload_state!=nothing_to_do)||(simples_in_queue!=0))
                     {
                        rx_event = NOT_EVENT;
                        break;
                     }
                  
                     if((!ir_error_ignore)&&(!eeprom_is_open))//если не надо игнорировать ошибку и звук не воспроизводиться уже
                            {
                        playback_sound(flying_bullet_sound);
                            }
                            rx_event = NOT_EVENT;
                     break;
         }
Я пускал "пролетающие пули" и долбил перезаряд, пока обоймы не кончились - не глючил.
Если  нужна вспышка светодиода при этом, то так
Код:
case RX_ERROR:      //ошибка приема
                  {
                            if((reload_state!=nothing_to_do)||(simples_in_queue!=0)) 
                     {
                        rx_event = NOT_EVENT;
                        break;                        
                     }
                     if((!ir_error_ignore)&&(!eeprom_is_open))//если не надо игнорировать ошибку и звук не воспроизводиться уже
                            {
                        BULLETS_OUT_LED_ON;
                        playback_sound(flying_bullet_sound);
                        
                        timer2=0;
                        while(timer2 < 4000);
                                    
                        BULLETS_OUT_LED_OFF;
                            }
                            rx_event = NOT_EVENT;
                  //   sei();
                     break;
                  }
Радикальный способ - полностью выключить озвучку пролёта пули
Код:
case RX_ERROR:      //ошибка приема
{
rx_event = NOT_EVENT;
break;
}