homer, в принципе можно, но тогда пропадает "законченность", как говорил Женя :) Хотя никто не мешает.
Вид для печати
homer, в принципе можно, но тогда пропадает "законченность", как говорил Женя :) Хотя никто не мешает.
Добавил 555ИЕ10 (74161) и 555ЛП8 (74125), немного "допричесал" исходники - убрал дублирующие определения.
Ewgeny7, и таки фантомное определение КП11 как ЛЛ1 имеет под собой почву. Старшие разряды (неиспользуемые) необходимо поднимать в "1", иначе проявляются глюки. Так и ИД7 (у нее этот пин является GND) иногда определяется как ЛЛ1.
UPD: Притянул за уши PC7 к "1" в тестах 7432 и 74125 - теперь ложные срабатывания прекратились.
Ага, вижу. И в начало флеши пойдут процедурки тестирования, а не управления. Таки на полёт это не влияет, а писанины меньше, хоть и непривычно.
Т.е., ты хочешь сказать, что при DDRx=1, записывая в порт "0", ты читаешь с него "1"? ИМХО "дело не в бобине". Скорее "фантом" возникнет, если сделав запись в порт, мы тут же будем пытаться его прочитать. Для правильного результата необходима задержка, в асме ставят nop, у нас - небольшой delay. Я их не зря там понавтыкал, думал тормозов Си будет достаточно, оказалось - с портами он работает сверхбыстро, без задержки не обойтись.
Не, не так... ЛЛ1 в корпусе DIP14, ИД7 в DIP16, для 14ногой микрухи ты PC6 ставишь в "0" (GND), и неиспользуемый пин PC7 так же в "0", в таком случае заводится микруха в корпусе DIP16, т.к. разряд PC7 для нее является GND и он притянут к земле, и эта микруха начинает отрабатывать по своему алгоритму, а так как у нас тесты расчитаны на частные случаи, а не на 100% проверку (ты же не каждый элемент ЛЛ1 отдельно проверяешь, а сразу параллельно загружаешь), то могут быть совпадения в поведении. Чтоб таких срабатываний не было, надо при тестировании DIP14, разряд PC7 устанавливать в "1", тогда сразу отбрасываются все микрухи DIP16. Посмотри в тесты 74125 и 7432, я там как раз так и сделал - ложных срабатываний после исправления уже не было.
Джентльмены, я тут взял на себя смелость немножко оптимизировать код тестера. Забитость флеши опустилась до 65.6%, ну и на код ИМХО приятней стало смотреть.
Вот только протестировать мне не на чем :v2_conf2:
Собственно поправлен только tester.c:
Хорошо, я же не против твоих изменений, мне "истина дороже" :) Почему на моем тестере микросхемы определяются как надо? А вероятность совпадения алгоритмов вроде как чертовски мала...
А подтянуть 1 ко всем свободным РС7 можно на вскяй случай.
---------- Post added at 18:34 ---------- Previous post was at 18:01 ----------
Господа, я взял на себя смелость собрать всё в кучу, исправить опечатки отдельных товарищей и насладиться результатом :)
Хорошо, только медленнее стало работать автоопределение. Вероятно, изза усложнения исполнения кода. Но нам вроде как торопиться пока особо некуда, поэтому выкладываю новые исходники в первый пост. Всё лучшее и лучшее. Обновляемся :)
Да, занято 71.4% флеши. Интуиция скромно подсказывает, что меги8515 нам хватит.
Вот это:
Надо в фигурные скобки ставить:Код: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;
}
Я тут решил кардинально "соптимизировать" и перенес проект с CodeVision на WinAVR GCC. Считается, что он дает более оптимальный код. От результата переноса у меня чуть челюсть на тапочки не упала :).
В КодеВижн имеем 71.4% занятой флеши,
В ВинАвре - "Program: 7522 bytes (91.8% Full)".
В WinAVR есть ключи оптимизации. Может имеет смысл их перебрать ?
Стоит 0s.
При других изменениях - или 99.6%, или вообще в Мегу не лезет :)
---------- Post added at 18:08 ---------- Previous post was at 17:56 ----------
Тут есть упоминание об особенностях компиляции _delay_ms, когда она может занять 3 килобайта, но у нас используется только константное значение _delay_ms(1), поэтому эти грабли вроде отпадают.
собрал и себе этот девайс, работает :)
вот только 74F373 определяет как 374 :(
P.S. кстати немешало бы по какой нибудь комбинации клавишь выводить версию прошивки...
alvis, http://zx.pk.ru/showpost.php?p=410668&postcount=114
---------- Post added at 21:50 ---------- Previous post was at 21:49 ----------
можно задержку циклами сделать, вроде как так она в библиотеке от АВРа и сделано, только лишнего там вагон еще.
---------- Post added at 21:51 ---------- Previous post was at 21:50 ----------
да, спасибо, а то что-то после гостей мысли разбежались - наплужил :)
Собрал тестер. Все работает, но почему то мерцает индикатор. С чем это может быть связано?
Воробьев Роман, см. тут - http://zx.pk.ru/showpost.php?p=410562&postcount=100
Прикрутил микру 74393 (555ИЕ19) для собирающих Кай.
Кстати, Жень, глянь какой способ тестирования применен в 393, для "жирных" тестов может хорошенько оптимизировать место. А если вообще весь тестер таким образом перелопатить, сделав одну функцию тест, которой подсовывается нужная табличка - места освободится прилично.
UPD: обновил версию. Увеличил счет ИЕ19 до 8, чтоб проверить все выводные линии Q0-Q3. А так же в файле tester.c поправил перебор "<" и ">", а то при переходе из конца в начало и наоборот - выбиралась лишняя микруха, которой нет в таблице.
CodeMaster, тем лучше для фениксоидов. Вроде как все микрухи, что есть у меня в наличии уже затестены :) Если есть пожелания - присылайте бандероли :)
Ewgeny7, ну асм вроде как лишнее, разве что вспомнить молодость :) а так в принципе резервы еще есть. Сейчас вот думаю оформить устройство в корпус и крону повесить, чтоб пугать торгашей на рынке :)
А РУ5, РУ6, РУ7, 155РУ2 - не получится тестить?
AIS, теоретически можно сделать, но практически - у меня опыта работы с динамической памятью -"0". Если им вообще хватит питания на пинах МК. Да и ресурсов в конце концов схавает немерено.
Нет. Слишком много ресурсов сожрет. Это как отмазка :)
А реально - фиг знает как с ними работать из под AVR. Это если только Камиль сделает.
---------- Post added at 12:20 ---------- Previous post was at 12:16 ----------
Я тут начал V-USB ковырять... Вчера передавал/читал данные в МК с ПЦ через USB.
Думаю, куда бы эту возможность привинтить. Привинчивать тестер к ПЦ и тестить из под винды - интересно, но нафиг нужно, "карманный" вариант тестера удобней.
вот как раз тестить РУшки, чтоб много ресурсов не сожрали :) если, конечно скорости хватит на все про все.
---------- Post added at 11:41 ---------- Previous post was at 11:30 ----------
Так подозреваю, что нагрузочной способности пинов АВРки не хватит, чтоб запитать хотя бы 155РУ2, у нее потребление в максимуме 75-105мА. Обычная логика - до 26мА, что и без того многовато, но кратковременно на свой страх и риск можно :)
50мА в импульсе уже полгода фигачит без остановки. Не сдохнет :)
Тут да, напруга скорее всего просядет, и будет "фонить" на весь порт с сопутствующими глюками при его опросе.
---------- Post added at 13:23 ---------- Previous post was at 13:22 ----------
На быстрое "ножкодрыганье" для регенерации ОЗУ скорости скорее всего не хватит.
Весчь дельная. А у меня вот такой бзик, через полчаса счётчики начинают немеряно греться и кадры бегут. Ну собрал я этот тестер, проверил микруху. Впаял и через какое-то время в ней случился гимор с прогревом. Если впаяно в плату , выкусил и впаял другую, а если на макетке то как быть.
Мысля такое собрать , не преуменьшая творение автора сего девайса.
http://narod.ru/disk/23271668001/Dig...ester.rar.html
Автора из Англии я так-же разыскал но никаких вопросов ему пока не задавал.
stakh, спасибо за исходники, а то платку вырисовал, но без исходников вещь почти мертвая. Да и с платкой надо что-то делать, а то слишком большая она.
Классика жанра - http://www.pjrc.com/mp3/simm/simm.html
Работать с DRAM из AVR очень просто. Нужны 3 линии WE, CAS и RAS, 8 линий адреса и N линий данных в зависимости от организации DRAM.
Цикл чтения:
- Опустить WE
- Выдать первую часть адреса
- Опустить RAS
- Выдать вторую часть адреса
- Опустить CAS. Это приведет к выдаче на линии данных собственно данных из памяти
- Выждать некоторое время, наносекунд 60-100
- Принять данные
- Поднять CAS и RAS
- Снова выждать некоторое время (см. даташит)
Запись чуть отличается:
1. Выставить первую часть адреса
2. Опустить RAS
3. Выставить вторую часть адреса
4. Опустить WE
5. Выставить данные для записи
6. Опустить CAS
7. Немного подождать (опять-таки, 50-100 наносекунд в зависимости от)
8. Поднять CAS и RAS
9. И еще немного подождать перед следующим обращением к памяти.
Для рефреша используется схема CAS-before-RAS (CBR):
- Убедиться, что WE поднят (неактивен)
- Опустить CAS
- Опустить RAS
- Поднять CAS и RAS
- Выждать какое-то время перед обращением к памяти
Это цикл рефреша сразу целой страницы. Их можно пускать или пачками, или вставить в свободное место какого-нибудь цикла, не реже 4 миллисекунд (детальнее см. даташит на конкретную микросхему DRAM).
блин - а для РУшек сделать отдельную панельку без автовыбора чипа и с питанием от стаба +5 что не позволяет? Вернее 2 панельки - одну под ру2 а вторую под ру5-ру9,41ХХХ серии. И все хватит остального- и ног проца вот только рефреш возможно придется делать аппаратный иначе проверку придется писать на чистом асме. Но даже с таким раскладом - девайс будет очень маленький.
Жень я не тебе - там просто кто-то плакался что некоторые чипы много жрут и контроллер не тянет :) мне тоже не впилось как говорится - у меня проверкой и детектом чипов занимается усб программатор. :)
Это я Дмитрию втирал про панельку :)
Собрал тестер на 8515-16ji.
Загрузил файл tester.rom, поставил галочки как http://zx.pk.ru/attachment.php?attac...1&d=1314197359
Прошил -на индикаторе горит "02"
Посвятите ламера на счет файла tester.hex - его тоже надо заливать?