maksim писал(а):
Pingvin писал(а):
Попробуйте такой финт ушами
Цитата:
case Command://какая то дополнительноя команда
{
switch(ir_message.param)//выясним, какая это командв
{
case 0x05://начать новую игру немедленно
{
if (simples_in_queue>1) //если звук выстрла воспроизводится
{
simples_in_queue=1;//закроем eeprom
while (eeprom_is_open);//дождемся, пока eerom закроется
}
if (curr_sound.simples_in_queue>1) //если звук уже воспроизводится
{
curr_sound.simples_in_queue=1;//закроем eeprom
while (eeprom_is_open);//дождемся, пока eerom закроется
}
init_var(); //инициализируем переменные
joystick_event=no_pressing; //очищаем события джойстика
keyboard_event=no_key_pressing;//очищаем события триггера
reload_key_event=no_key_pressing;//очищаем события перезарядки
rx_event = NOT_EVENT; //очищаем события ИК приемника
display_status();//обновляем информацию на дисплее
display_life(life);//отобразим уровень жизни на диодах
safe_counter=30*8;//неуязвимость 3 с
WOUND_LED_ON;
playstartsound();//Воспроизводим звук "старт игры"
//код обработки дополнительной команды
WOUND_LED_OFF;
break;
}
Попробуйте и с safe_counter=30*8;//неуязвимость и без неё.
Вот так все сделал и работает)))Спасибо огромное ))))))
Это Вам спасибо, что баги ищите и находите.
Если без safe_counter=30*8; баг остается, значит дело в функции воспроизведения звука - не получается корректно остановить предыдущий звук.
Скорее всего - не получается "закрыть" eeprom по какой то причине...
Поскольку острота вопроса снята - буду ковырять, когда других дел не будет.
А в репозитории пофиксить баг надо.