www.open-tager.ru
http://www.open-tager.ru/forum/

LTAscetik
http://www.open-tager.ru/forum/viewtopic.php?f=5&t=1565
Страница 486 из 532

Автор:  maksim [ 27 май 2017, 19:56 ]
Заголовок сообщения:  Re: LTAscetik

Что мне по быстрому придумать ?)))Завтра игра,нужно успеть сделать ))))Чтобы мк не менять .......

Автор:  Pingvin [ 27 май 2017, 20:08 ]
Заголовок сообщения:  Re: LTAscetik

maksim писал(а):
Что мне по быстрому придумать ?)))Завтра игра,нужно успеть сделать ))))Чтобы мк не менять .......

В функции void hit_processing(trx_packet hit_packet)//îáðàáàòûâàåì ïîïàäàíèå

вот это
safe_counter = SAFE_DURATION*8; //âðåìÿ íåóÿçâèìîñòè
меняете на

safe_counter = 0; //âðåìÿ íåóÿçâèìîñòè

Автор:  maksim [ 27 май 2017, 20:45 ]
Заголовок сообщения:  Re: LTAscetik

спасибо)))

Автор:  maksim [ 28 май 2017, 10:59 ]
Заголовок сообщения:  Re: LTAscetik

на одном макете вот такой дефект ))))При ранении воспроизводит я ранин и сразу же окей выдвигаемся )))но дефект не сразу а появляется через некое время
https://youtu.be/xOjloGEhpEI

Автор:  maksim [ 28 май 2017, 14:32 ]
Заголовок сообщения:  Re: LTAscetik

Еще на 2 макетах выскочил глюк с неуязвимостю......

Автор:  Pingvin [ 28 май 2017, 16:13 ]
Заголовок сообщения:  Re: LTAscetik

Слишком мало информации - каким способом меняли настройки?
Программой или с экрана?
Только неуязвимость не настраивается?

Когда прошивку меняли - звуки по новой заливали?

После того, как звук "ОК выдвигаемся" проигрывает действительно новая игра стартует или просто звук?
Если просто звук - нужно смотреть, эти звуки идут друг за другом в памяти?
Информация о длине звука и адресе его начала так же храниться во внутренней eeprom контроллера.
Что то у меня подозрения - корректно ли она работает?
Будь таг у меня, я бы попробовал дамп eeprom памяти считать до настроек и после и сравнить.
Но это программатор нужен SPI.
Может по питанию контроллера керамических конденсаторов добавить 0.1 uF?
Поставить радом с корпусом.

Автор:  Pingvin [ 28 май 2017, 16:32 ]
Заголовок сообщения:  Re: LTAscetik

Цитата:
Fi5t
25 Октябрь 2008 в 23:51

Забыл написать, что у атмеловских контроллеров есть так называемая «мертвая зона» EEPROM-a. У 64й атмеги, например, это все адреса от 0x00 — 0x100. Так же была замечена тенденция (по крайней мере на атмегах), чем круче модель (ATMeag32->64->128), тем больше у нее мертвая зона EEPROM. Причем в документации, про нее нифига не написано и подбирать придется в ручную. Ах да, чем же она такая мертвая эта зона. А тем, что запись и чтение в ней происходят через раз, а то и не происходят вообще. Дрочится конечно можно, но лучше оставить эти 100 адресов на советси разработчиков и работать со стабильным ПЗУ.

http://easyelectronics.ru/avr-uchebnyj- ... eprom.html

Автор:  Pingvin [ 28 май 2017, 16:41 ]
Заголовок сообщения:  Re: LTAscetik

Кидайте прошивку, погоняю на своем девайсе.

А может и библиотека для работы с eeprom глючная, я штатную использовал из GCC (WinAVR).

Автор:  Pingvin [ 28 май 2017, 17:10 ]
Заголовок сообщения:  Re: LTAscetik

Что то про "мёртвые зоны" в eeprom только сегодня узнал.
Если они правда существуют, можно сдвинуть данные на 256 байт (или больше).
Не проблема.

Странно всё это... :?

Автор:  Pingvin [ 28 май 2017, 17:22 ]
Заголовок сообщения:  Re: LTAscetik

Глюк при чтении EEPROM у ATmega8, ATmega32, ATmega128
Добавил(а) microsin

В библиотеке avr-libc WinAVR (релиз 20080610) есть глюк, связанный с чтением EEPROM. В новых версиях WinAVR (например, релиз 20090313) этот глюк уже исправлен.

Глюк связан с неучтенным ERRATA "Reading EEPROM by using ST or STS to set EERE bit triggers unexpected interrupt request". Глюк проявляется на микроконтроллерах ATmega8, ATmega32, ATmega128 (на ATmega16 такого глюка почему-то нет). Проявляется глюк в непредсказуемом переходе в младшие адреса при вызовах подпрограмм c:\WinAVR-20080610\avr\include\avr\eeprom.h -> eeprom_read_byte, eeprom_read_word, eeprom_read_dword, eeprom_read_block. Несколько вызовов могут пройти нормально, но на каком-то определенном адресе может произойти сбой. Я с этой проблемой проковырялся долго, так как сначала думал, что ошибка у меня в программе.

Глюк таится в одной-единственной функции eeprom_read_byte (все остальные, как я понял, используют её вызовы, поэтому глюк наследуется). Код, на C, который есть в подпрограмме eeprom_read_byte (этот код устанавливает бит EERE), компилируется в ассемблерную инструкцию ST, которая и вызывает сбой. Старый глючный код eeprom.h:

__ATTR_PURE__ static __inline__ uint8_t eeprom_read_byte (const uint8_t *__p)
{
do {} while (!eeprom_is_ready ());
#if E2END <= 0xff="" br=""> EEARL = (unsigned)__p;
#else
EEAR = (unsigned)__p;
#endif
EECR |= (1 << EERE);
return EEDR;
}

Исправить проблему можно, если обновить WinAVR. Можно просто вручную поправить код, написав это место на ассемблере (для установки бита EERE надо использовать инструкцию OUT или SBI), например вот так:

__ATTR_PURE__ static __inline__ uint8_t eeprom_read_byte (const uint8_t *__p)
{
do {} while (!eeprom_is_ready ());
#if E2END <= 0xff="" br=""> EEARL = (unsigned)__p;
#else
EEAR = (unsigned)__p;
#endif
////////////////////////////////////////////////////////////
// here fixed ERRATA Bug "Reading EEPROM by using ST or STS
// to set EERE bit triggers unexpected interrupt request"
// EECR |= (1 << EERE);
__asm__ __volatile__ (
"sbi %[__eecr], %[__eere] \n\t"
:
: [__eecr] "i" (_SFR_IO_ADDR(EECR)),
[__eere] "i" (EERE)
);
return EEDR;
}



http://microsin.net/programming/avr-tro ... ouble.html



Проверьте релиз вашей WinAVR!

Страница 486 из 532 Часовой пояс: UTC + 3 часа [ Летнее время ]
Powered by phpBB® Forum Software © phpBB Group
http://www.phpbb.com/