homer, в принципе можно, но тогда пропадает "законченность", как говорил ЖеняХотя никто не мешает.
homer, в принципе можно, но тогда пропадает "законченность", как говорил ЖеняХотя никто не мешает.
Добавил 555ИЕ10 (74161) и 555ЛП8 (74125), немного "допричесал" исходники - убрал дублирующие определения.
Последний раз редактировалось Дмитрий; 27.08.2011 в 00:50.
Ewgeny7, и таки фантомное определение КП11 как ЛЛ1 имеет под собой почву. Старшие разряды (неиспользуемые) необходимо поднимать в "1", иначе проявляются глюки. Так и ИД7 (у нее этот пин является GND) иногда определяется как ЛЛ1.
UPD: Притянул за уши PC7 к "1" в тестах 7432 и 74125 - теперь ложные срабатывания прекратились.
Последний раз редактировалось Дмитрий; 27.08.2011 в 00:53.
Ага, вижу. И в начало флеши пойдут процедурки тестирования, а не управления. Таки на полёт это не влияет, а писанины меньше, хоть и непривычно.
Т.е., ты хочешь сказать, что при DDRx=1, записывая в порт "0", ты читаешь с него "1"? ИМХО "дело не в бобине". Скорее "фантом" возникнет, если сделав запись в порт, мы тут же будем пытаться его прочитать. Для правильного результата необходима задержка, в асме ставят nop, у нас - небольшой delay. Я их не зря там понавтыкал, думал тормозов Си будет достаточно, оказалось - с портами он работает сверхбыстро, без задержки не обойтись.
Последний раз редактировалось Ewgeny7; 27.08.2011 в 13:48.
ScorpEvo ZS 1024 turbo+ CF-HDD/FDD/Mouse/SMUC 3.1/ProfROMse/NeoGS/ZC
Speccy-2007 128/AY/TR-DOS
Сайт с документацией к "Scorpion ZS 256"
Не, не так... ЛЛ1 в корпусе DIP14, ИД7 в DIP16, для 14ногой микрухи ты PC6 ставишь в "0" (GND), и неиспользуемый пин PC7 так же в "0", в таком случае заводится микруха в корпусе DIP16, т.к. разряд PC7 для нее является GND и он притянут к земле, и эта микруха начинает отрабатывать по своему алгоритму, а так как у нас тесты расчитаны на частные случаи, а не на 100% проверку (ты же не каждый элемент ЛЛ1 отдельно проверяешь, а сразу параллельно загружаешь), то могут быть совпадения в поведении. Чтоб таких срабатываний не было, надо при тестировании DIP14, разряд PC7 устанавливать в "1", тогда сразу отбрасываются все микрухи DIP16. Посмотри в тесты 74125 и 7432, я там как раз так и сделал - ложных срабатываний после исправления уже не было.
Джентльмены, я тут взял на себя смелость немножко оптимизировать код тестера. Забитость флеши опустилась до 65.6%, ну и на код ИМХО приятней стало смотреть.
Вот только протестировать мне не на чем
Собственно поправлен только tester.c:
ZX Spectrum forever!
С любовью к вам, Yandex.Direct
Размещение рекламы на форуме способствует его дальнейшему развитию
Хорошо, я же не против твоих изменений, мне "истина дороже"Почему на моем тестере микросхемы определяются как надо? А вероятность совпадения алгоритмов вроде как чертовски мала...
А подтянуть 1 ко всем свободным РС7 можно на вскяй случай.
---------- Post added at 18:34 ---------- Previous post was at 18:01 ----------
Господа, я взял на себя смелость собрать всё в кучу, исправить опечатки отдельных товарищей и насладиться результатом
Хорошо, только медленнее стало работать автоопределение. Вероятно, изза усложнения исполнения кода. Но нам вроде как торопиться пока особо некуда, поэтому выкладываю новые исходники в первый пост. Всё лучшее и лучшее. Обновляемся
Да, занято 71.4% флеши. Интуиция скромно подсказывает, что меги8515 нам хватит.
Последний раз редактировалось Ewgeny7; 27.08.2011 в 18:41.
ScorpEvo ZS 1024 turbo+ CF-HDD/FDD/Mouse/SMUC 3.1/ProfROMse/NeoGS/ZC
Speccy-2007 128/AY/TR-DOS
Сайт с документацией к "Scorpion ZS 256"
Вот это:
Надо в фигурные скобки ставить:Код:if ( sel < _ICs ) // for safety sym[0] = 12; sym[1] = chips[sel].sym[0]; sym[2] = chips[sel].sym[1]; sym[3] = chips[sel].sym[2]; res = 0; chips[sel].test();
Иначе от if'а толку 0.Код:if ( sel < _ICs ) // for safety { sym[0] = 12; sym[1] = chips[sel].sym[0]; sym[2] = chips[sel].sym[1]; sym[3] = chips[sel].sym[2]; res = 0; chips[sel].test(); }
Если в sel всегда находится правильное число (от 0 до _ICs - 1), то эти if'ы можно вообще убрать.
И если в sym[3] всегда одно и тоже записывается (а сейчас там у всех мелкосхем 13), то можно еще чуть-чуть ужать:
Ну и дальше тогда в коде поправить:Код:const struct { void (*test)( void ); char sym[3]; } chips[] = { { test_7400, { 0, 0, 13 } }, { test_7402, { 2, 0, 13 } }, { test_7404, { 4, 0, 13 } }, и т.д.
И т.д. и т.п..Код:if ( sel < _ICs ) // for safety { sym[0] = chips[sel].sym[0]; sym[1] = chips[sel].sym[1]; sym[2] = chips[sel].sym[2]; sym[3] = 13; }
Последний раз редактировалось molodcov_alex; 28.08.2011 в 01:23.
ZX Spectrum forever!
Я тут решил кардинально "соптимизировать" и перенес проект с CodeVision на WinAVR GCC. Считается, что он дает более оптимальный код. От результата переноса у меня чуть челюсть на тапочки не упала.
В КодеВижн имеем 71.4% занятой флеши,
В ВинАвре - "Program: 7522 bytes (91.8% Full)".
ScorpEvo ZS 1024 turbo+ CF-HDD/FDD/Mouse/SMUC 3.1/ProfROMse/NeoGS/ZC
Speccy-2007 128/AY/TR-DOS
Сайт с документацией к "Scorpion ZS 256"
Эту тему просматривают: 1 (пользователей: 0 , гостей: 1)