Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: ATmega8515 + SRAM
Форум разработчиков электроники ELECTRONIX.ru > Сайт и форум > В помощь начинающему > MCS51, AVR, PIC, STM8, 8bit
Страницы: 1, 2
manul78
Доброго всем время суток !

Ковыряю/ремонтирую древний промышленный девайс. Суть: Есть Атмега8515 с внешним кварцем на 7.3728 MHz, к которой подключена SRAM HM62256LP-12 аж 1988-го года выпуска. Судя по схеме из 32Кбайт используется только 8К. Регистр защёлка сдох. Был 74HCT573... Так как в магазинах оригинала не нашел - поставил то-же, но только HC. Схема завелась. Написал быстро программку чтения/записи для проверки.
Читает всё чётко без ошибок. А вот пишет с ошибками. Причём не только данные, иногда путает адреса.
Заливал все 8К "нулями" - где-то 5% ошибок. Заливал "FF" ошибок практически нет. Писал рандомно - иногда путает адреса, но данные пишет.
Удержание на один такт программно увеличивал - ошибок меньше но они есть.

Вопрос: Я думаю что дело в защёлке, но оригинал взять негде. Есть в наличии 74LS373, 74ALS373 (выпаянные со старой компьютерной платы), можно попробовать ? Или другую серию искать ? Ещё раз повторюсь, в оригинале стояла защёлка HCT, то есть КМОП с ТТЛ уровнями, SRAM тоже с КМОП с ТТЛ. Из 573 нашел только HC. В чём загвоздка ? В медленной памяти (120 нс и возможно полудохлой от старости, всё-же 30 лет почти проработала) или в защёлке не родной ?

Заранее благодарен за любую помощь !
Jury093
Цитата(manul78 @ Apr 13 2017, 18:31) *
Заранее благодарен за любую помощь !

проверьте для начала питание.. за столько лет оно могло уплыть.. защелки просто так не дохнут..
Baser
Когда-то давно применял подобную комбинацию, еще с AT90S8515.
Там нужно проверять все задержки на шине, чтобы все было в допусках.
Смотреть настройки wait-стейтов.
И может понадобиться защелка типа 74AHC

И память HM62256LP-12 вроде имеет ТТЛ выходные уровни, работать с КМОП входами Меги должно внатяг.
За годы работы уровни могли поплыть - тогда это уже не чиниться.
zombi
Ищите HCT
manul78
Цитата(Baser @ Apr 13 2017, 19:52) *
Там нужно проверять все задержки на шине, чтобы все было в допусках.
Смотреть настройки wait-стейтов.


Привезли две UT6264LP-70... Завтра буду пробовать в купе с ALS373.

ИМХО схема изначально была собрана внатяг, на грани фолла то бишь... У 8515 тайминги на чтенеие/запись внешней SRAM 55-70 нс. А у HM62256 120-150 нс. Но на честном слове всё это "как-то" работало.

Поставив НС я их окончательно растянул и поэтому такая чушь пишется. Но читается всё чётко sm.gif

Буду пробовать...

Цитата(zombi @ Apr 13 2017, 20:24) *
Ищите HCT


Да в том-то и дело что нет ни у кого в городе... Забыли все уже эту древность. Все на 3-х волльтах уже давно.

manul78
Цитата(zombi @ Apr 13 2017, 20:24) *
Ищите HCT


Поставил 74LS373 - вообще перестала читать...
Вернул назад 74HC573 и поставил UT6264LP-70 - всё как-бы заработало. Написал тест заливающий все 8К сначала "0", проверяет... Затем "FF", проверяет, Затем "AA" т.е "10101010" и проверяет...
По нулям на все 8К - 1-2 ошибки, либо их вообще нет. По FF - 12-20 ошибок, по "AA" - нет ошибок... sad.gif
Исходя из этого, сообразил, что пишет всё как надо, а вот читает с глюками...
Поставил 74ALS573 - ошибки уменьшились на 1/3. Убрал дополнительный цикл - ошибки уменьшились на половину.
Вернул защелку HC обратно, и установил дополнительный цикл для чтения/записи. 10-20 ошибок по всем тестам.
Тест чтения выдаёт каждый раз ошибки в разных адресах.
Читает криво... Пишет хорошо... sad.gif

Похоже Вы правы. Нужно искать HCT...


zombi
Цитата(manul78 @ Apr 14 2017, 16:02) *
Читает криво... Пишет хорошо... sad.gif

Не могу понять как такое возможно.
Регистр просто защёлкивает младший байт адреса и делает это одинаково и при чтении и при записи.
Может Ваши тесты не дают верного результата?

В DS на ATmega8515 в разделе "Address Latch Requirements" всё довольно доходчиво описано.
И там как раз пишут что при 4V и 8MHz должна HC работать. Ничего не понимаю wacko.gif
Лично я всегда ставил HCT защёлку и проблем не было.
Правда последнее изделие с защёлкой было эдак лет 15 назад.
manul78
Цитата(zombi @ Apr 14 2017, 16:44) *
Может Ваши тесты не дают верного результата ?


Я уже накатал 4 теста. Все 8К я заполняю нулями, FF, AA, и в цикле последовательно числами от 0 до FF.
После каждого заполнения несколько раз читаю и сверяю, и ошибки вылазят почти всегда в разных адресах. Это говорит о том, что запись прошла успешно. Проблема с чтением. Между памятью и МК только защёлка. НС это чистый КМОП с уровнями в 3 В, НСТ это кмоп с ТТЛ выходами. Думаю, что собака здесь зарыта.
Работала-же вся эта схема с атмегой на 8 МГц и медленной 120-150нс памятью без проблем много лет.

P.s.
На "буржуйских" сайтах советуют снизить тактовую частоту или пробовать более быструю SRAM, минимум 50-55нс. sm.gif


zombi
Цитата(manul78 @ Apr 14 2017, 20:16) *
Работала-же вся эта схема с атмегой на 8 МГц и медленной 120-150нс памятью без проблем много лет.

А чего же ей не работать, если судя по вр. диаграмме адрес на ногах sram будет в течении практически двух тактов процессора - Tpd регистра.

Цитата(manul78 @ Apr 14 2017, 20:16) *
На "буржуйских" сайтах советуют снизить тактовую частоту или пробовать более быструю SRAM, минимум 50-55нс. sm.gif

Не думаю что дело в скорости sram.

Sram и регистр меняли, а мегу -?


Цитата(manul78 @ Apr 13 2017, 23:51) *
У 8515 тайминги на чтенеие/запись внешней SRAM 55-70 нс

С чего это при тактовой 8MHz будет 55-70нс????
Опять же судя по вр. диаг. будет 250нс-Tpd ~ 220нс или около того

На шине данных кроме МК, регистра и SRAM есть что-то ? не может ли мешать чтению?
manul78
Цитата(zombi @ Apr 14 2017, 16:44) *
В DS на ATmega8515 в разделе "Address Latch Requirements" всё довольно доходчиво описано.
И там как раз пишут что при 4V и 8MHz должна HC работать. Ничего не понимаю wacko.gif
Лично я всегда ставил HCT защёлку и проблем не было.
Правда последнее изделие с защёлкой было эдак лет 15 назад.


Даташит на атмегу8515 стр 26:

Due to the high-speed operation of the XRAM interface, the address latch must be
selected with care for system frequencies above 8 MHz @ 4V and 4 MHz @ 2.7V.
When operating at conditions above these frequencies, the typical old style 74HC series
latch becomes inadequate. The external memory interface is designed in compliance to
the 74AHC series latch. However, most latches can be used as long they comply with
the main timing parameters.

Из-за высокой скорости работы интерфейса XRAM, адресная защелка должна быть
Выбранный с осторожностью для системных частот выше 8 МГц при 4 В и 4 МГц при 2,7 В.
При работе в условиях выше этих частот типичная серия 74HC старого стиля
Защелка становится неадекватной. Интерфейс внешней памяти разработан в соответствии с
Защелка серии 74AHC. Однако большинство защелок можно использовать, если они соответствуют


Такие дела... sad.gif HC серия ведёт себя неадекватно на 8 МГц...

К тому-же, во всех примерах найденных мною в сети почему-то забыли про бит дополнительного контрольного регистра EMCUCR SRW11, который даёт возможность помимо дополнительного цикла в MCUCR SWR10 добавить ещё 2 цикла ожидания для чтения/записи, и 1 цикл для выставления адреса.

Table 3. Wait States(1)
SRW11 SRW10 Wait States
0 0 No wait states.
0 1 Wait one cycle during read/write strobe.
1 0 Wait two cycles during read/write strobe.
1 1 Wait two cycles during read/write and wait one cycle before driving out new address.

Просто биты управления находяться в разных регистрах, и все трындят про только один дополнительно возможный цикл. Это не так... sm.gif

Буду пробовать.

А вообще, думаю дизассемблировать родную заводскую прошивку. Надо было сразу так сделать. Слава Богу она была не залочена и я её спокойно вынул из МК.
Как-то же работала схема с тупой и древней 120-150 нс-кундной памятью.
Baser
Цитата(manul78 @ Apr 15 2017, 09:18) *
the typical old style 74HC series latch becomes inadequate.

Такие дела... sad.gif HC серия ведёт себя неадекватно на 8 МГц...

Немного некорректно перевели, там смысл другой.
Защелка 74HC будет вести себя совершенно адекватно sm.gif

Просто для данной схемы включения на такой частоте кварца её задержки распространения сигнала становятся "неадекватно большими" и предлагается применить защелку из более быстрой серии AHC

Я вам уже предлагал разрисовать диаграммы чтения и записи и проверить все важные задержки на мин/макс
Иначе ничего не получиться. Я так всегда делал, когда внешние параллельные шины применял.

И выходные уровни памяти тоже проверьте, они ТТЛ (тоже писал), уровень единицы может быть низковат для Меги.
Если очень низкий, можно подтянуть разряды шины к +5В через резисторы.
zombi
Цитата(Baser @ Apr 15 2017, 15:54) *
(тоже писал)

Похоже надо несколько раз писать одно и тоже, поскольку ТС до сих под удивляется почему оно работало со 120-150 нс-кундной памятью без дополнительных wait states.

Цитата(manul78 @ Apr 15 2017, 09:18) *
Как-то же работала схема с тупой и древней 120-150 нс-кундной памятью.
k155la3
Попробуйте запитать весь девайс от проверенного источника питания требуемым напряжением и без импульсных помех.
На микросхемах контроллера, регистра, памяти добавьте блок. конденсаторы по питанию.
Пропишите всю память словами (по 2 байта) с содержимым == адресу слова.
Проверьте на чтение - что куда попадает.
Нет ли на плате рядом (или рядом с платой) источника помех.
etc

PS
Памяти сдохшего регистра ....
Проверьте монтаж (под микроскопом), непропаи, контакты.
Проверьте работу платы на цикл. тесте, на предмет реакции на вибрацию, легкий изгиб итп.
manul78
Цитата(zombi @ Apr 15 2017, 20:04) *
Похоже надо несколько раз писать одно и тоже, поскольку ТС до сих под удивляется почему оно работало со 120-150 нс-кундной памятью без дополнительных wait states.


Ребята, просто винигрет у меня в голове, да и не так силён я в работе с внешней памятью. Как-то не приходилось сталкиваться настолько близко.

Сейчас взял даташиты на все используемые в цепочке микросхемы, распечатал временные диаграммы и сижу курю их. С налёта "крепость" взять не получилось... sad.gif Буду брать по медленно, основательно подготовившись. Честно говоря уже спортивная злость появилась. В любом случае я её "схему" добью, даже если придётся лезть в глаза и брать напрокат крутой четырёхканальный пишущий осциллограф.


Цитата(k155la3 @ Apr 15 2017, 20:34) *
Пропишите всю память словами (по 2 байта) с содержимым == адресу слова.
Проверьте на чтение - что куда попадает.


За алгоритм теста - отдельное спасибо.
manul78



Написал новый ТЕСТ, который забивает память байтами от 0 до FF...
Читаем. Видим, что случайно, каждый раз по разным адресам считывается младший адресный байт, а не байт данных...
Причём это не всегда, а где-то 5-10 случаев на страницу в 8К.

Народ ! У меня уже что-то голова не варит совсем. Это что ? Как такое может быть ?

МК выставляет младший и старший адрес на шину. Защёлкивает. Даёт сигнал чтения RD и читает сам себя что-ли ? "Остатки" младшего адреса заместо выставленных памятью данных ?

Чушь какая-то... sad.gif
rx3apf
А точно это именно тест ЧИТАЕТ неверное значение ? А не уже неверное значение было ЗАПИСАНО, против ожидаемого ? Такое-то поведение было бы проще объяснить...

Кстати, такое можно было бы отловить и без быстрого скопа, даже с saleae. По отрицательному результату сравнения выставить где-то строб и посмотреть предисторию, что было на шине данных незадолго перед событием.
Baser
Цитата(manul78 @ Apr 17 2017, 11:05) *
случайно, каждый раз по разным адресам считывается младший адресный байт, а не байт данных...

МК выставляет младший и старший адрес на шину. Защёлкивает. Даёт сигнал чтения RD и читает сам себя что-ли ? "Остатки" младшего адреса заместо выставленных памятью данных ?

Вам нужно еще раз внимательно прочитать, как работает мультиплексная Интеловская внешняя шина.
То, что вы видите, типичное нарушение "времянки" работы шины. Причем сбои могут быть как при записи, так и при чтении, по этому тесту непонятно где.

МК выставляет младший и старший адрес на шину. Защёлкивает младший байт адреса. Потом выдает на те же линии данные для записи или выдает строб чтения и ждет на этой линии данные из памяти.
Если защелка медленная, она держит данные на DA7:0 слишком долго и возникает коллизия из-за того, что или МК или память выводят значения данных на DA7:0. Кто-то из двух будет пересиливать, данные будут неправильные. На осциллографе коллизии хорошо видны в виде третьих уровней на диаграммах, около половины питания.

Еще Bus keeper (XMBK) будет влиять на работу, с ним разберитесь.
manul78
Цитата(Baser @ Apr 17 2017, 14:31) *
МК выставляет младший и старший адрес на шину. Защёлкивает младший байт адреса. Потом выдает на те же линии данные для записи или выдает строб чтения и ждет на этой линии данные из памяти.
Еще Bus keeper (XMBK) будет влиять на работу, с ним разберитесь.



Похоже я где-то рядом... Те кто разрабатывал схему тупо посадили ногу (Enable and read register (transparent
mode)) OE защёлки на землю... Защелка не переходит после фиксации в Z состояние. На шине получается висит младший адрес...

Получается мне надо привязать эту ногу через инвертор к сигналу ALE ?
rx3apf
??? 573 фиксирует младший байт адреса с шины данных и отправляет его на соответствующие адресные линии SRAM. Каким образом управление выходом 573 может повлиять на ее вход (шину данных) ? Она же (защелка) однонаправленная.
zombi
Цитата(manul78 @ Apr 17 2017, 19:33) *
Те кто разрабатывал схему тупо посадили ногу OE защёлки на землю

Правильно сделали.
Цитата(manul78 @ Apr 17 2017, 19:33) *
... Защелка не переходит после фиксации в Z состояние.

И не должна она никуда переходить.
Цитата(manul78 @ Apr 17 2017, 19:33) *
На шине получается висит младший адрес...

И правильно делает. Именно младший адрес и должен там висеть.
Цитата(manul78 @ Apr 17 2017, 19:33) *
Получается мне надо привязать эту ногу через инвертор к сигналу ALE ?

Зачем? Ненужно его никуда привязывать.
Цитата(manul78 @ Apr 17 2017, 19:33) *
Похоже я где-то рядом...

Судя по всему вы еще огого как далеко biggrin.gif
manul78
Короче победил похоже... (Сейчас тесты гоняю)
Аппаратно добил...
У UT6264LP-70 в отличии от 62256 два сигнала стробирования СЕ и СЕ2 (инв) работающие в противофазе. Я по анлогии с 62256 повесил СЕ2 на +5 (у 62256 активный 0).
Зря я это сделал. Отсюда и глюки...

Сейчас я пустил сигнал ALE через 74ALS74 (ТМ2) то есть через D-триггер. Сигнал ALE через триггер выходит прямой на CE и инвертированный на СЕ2 соответственно. Плюс мелкая задержка на самом триггере за счет времени прохождения. Все. Ошибок нет. Пока нет... sm.gif


zombi
Цитата(manul78 @ Apr 18 2017, 11:14) *
Короче победил похоже...добил...

biggrin.gif
Цитата(manul78 @ Apr 18 2017, 11:14) *
Сейчас я пустил сигнал ALE через 74ALS74 (ТМ2) то есть через D-триггер. Сигнал ALE через триггер выходит прямой на CE и инвертированный на СЕ2 соответственно. Плюс мелкая задержка на самом триггере за счет времени прохождения. Все. Ошибок нет. Пока нет... sm.gif

Удивительно что еще что-то работает после всего того что Вы нагородили.
Прямой CE 6264 подключите к VCC, а инверсный (#CE) к тому #CE который был к 62256 подключен.

Неужели так сложно в гугле поискать что-то типа "подключение внешней памяти к микроконтроллеру" раз DS на AVR не доверяете.
k155la3
Цитата(manul78 @ Apr 18 2017, 11:14) *
Короче победил похоже... (Сейчас тесты гоняю)
Аппаратно добил...
. . . .

sm.gif
мудрено аднака.
посмею предположить, что пока аппаратно решали проблему, то пропаяли неконтакт, и оно аннилигилировалосььььь.
(извиняюсь за наглость)
Выложите схему, так, ничего личного, просто посмотреть sm.gif

manul78
Цитата(k155la3 @ Apr 18 2017, 16:31) *
посмею предположить, что пока аппаратно решали проблему, то пропаяли неконтакт, и оно аннилигилировалосььььь


Ничего подобного. Предыдущее сообщение ввело меня в сомнения и я вернул всё взад... Те-же грабли вылезли.

Сейчас выложу следующим комментарием фундаментально что я делал почти 2(!) недели. sm.gif

Значится так:

Повторюсь. АТмега8515, защёлка 74HCT573 (дохлая), память HM62256-120 нс, кварц 7.3728 МГц (для RS-232)

Схема подключения стандартная, коих как грязи в интернете. Единственная разница, что из 32К используются только 8К

Выпаял "покойника", впаял "кроватку" и заменил его на 74HC573. Запустил... Пошли глюки. Считал прошивку. Залил свою с тестом и начались танцы с бубнами... Я выпаял память. Впаял кроватку и нашел такую-же микросхему памяти от старого принтера. Ошибки... Ошибки... Ошибки... Дикое количество.
Менял "защёлки", ALS, LS, 573... 373... Ошибки, ошибки, ошибки... Рандомные. По разным адресам, разные данные... Менял настройки интерфейса памяти 8515, Bus keeper, дополнительные циклы и пр. НИХРЕНА.
Всё те-же ошибки в разных местах. И питание дал чистейшее. И всё обвязал по питанию конденсаторами на 100N... И чего только не делал.
Наконец принесли U6264-70 нс. Поставил. Загнал CE на землю и СЕ2 на плюс...



Было... HM62256-120




Стало... U6264-70

Остальное осталось как и было. Защёлка НС573

Прогнал тест. Количество ошибок уменьшилось в разы... на 8К где-то 20-30...

Сменил защёлку на ALS. Ошибок стало ещё меньше 5-10...

И нарисовалась чёткая тенденция. Заместо данных из памяти МК читает значение младшего адреса.

И опять я и биты MCUCR и EMCUCR менял и чего только не делал... Нихрена. 5-10 ошибок по разным совершенно непредсказуемым адресам...

Начал крепко курить даташиты:

ATmega8515




HM 64256-120













И её таблица...






Теперь UT 6264-70...














"Дьявол как известно прячется в деталях..." (с)

Внимательно читаем notes...




Что я сделал:

Взял обычный D-триггер 74AST74 (он-же ТМ2)

На ноги D и Clock подал сигнал ALE с 8515.

Выход Q на LE защёлки... Выход ~Q на ~CE2 памяти 6264..

Что это даёт. Когда положительный строб ALE заставляет защёлку запомнить младший адрес на входе ~CE2 памяти низкий уровень, который переводит её входы/выходы в Z состояние и соответственно после снятия сигнала ALE память оживает и не имеет на своих входах "мусора" как если-бы она всегда находилась в активном состоянии в ожидании чтения/записи.

Вот такие дела... sm.gif
zombi
Цитата(manul78 @ Apr 18 2017, 19:35) *
И чего только не делал.

Процессор меняли???
manul78

Можете конечно заявить, что всё через ж.пу, и противоречит гарвардской архитектуре и интеловским даташитам, но тем не менее всё работает...

На последок старый советский анекдот:
Горный аул. Житель заходит к соседу.
- Слушай, завтра сына женю, одолжи барана!
- Не могу, но вот тебе совет : сходи к тому дому, там тебе дадут барана!
Пошел к тому дому.
- Слушай, завтра сына женю, одолжи мне барана!
- Не могу, но вот тебе совет: сходи вон к тому дому, там тебе дадут барана!
Пошел к вон тому дому.
- Слушай, я завтра сына женю, одолжи мне одного барана!
- Не могу, но вот тебе совет - сходи к дальнему дому, уж там тебе точно дадут барана!
Ходил, ходил, ходил... встречает аксакала:
- Слушай, отец! Почему мне никто не дает барана, но все дают совет, где взять барана?!
- Потому, дорогой, что у нас не страна баранов. У нас - Страна Советов!!!

На просторах интернета масса теоретиков, которые паяльник-то в руках не держали ни разу. В теории всё работает. На деле, когда начинаешь возиться с железом - вылезает куча граблей и подводных камней.
Я не хочу здесь никого обидеть, просто прошу давать советы тем, кто конкретно в железе работал с определенными устройствами, а не где-то слышал или видел...

P.S. Никак не доходят руки дизассемблировать родную заводскую прошивку устройства, но почему-то уверен, что обмен с памятью реализован обычным "ногодрыганьем", не смотря на наличие у 8515 специального интерфейса. Взялись похоже за проект (поляки кстати), помыкались, помыкались с "таймингами"и написали сами со своими задержками и пр. На 4 МГц (как во всех интернет примерах) я подозреваю что всё действительно работает, а вот на 8+ уже похоже нет...
zombi
Цитата(manul78 @ Apr 18 2017, 19:35) *
Когда положительный строб ALE заставляет защёлку запомнить младший адрес

Попробуйте выяснить как работает защелка 74HC573 (Octal D-type transparent latch; 3-state)

Цитата(manul78 @ Apr 18 2017, 20:00) *
всё через ж.пу, и противоречит гарвардской архитектуре и интеловским даташитам

Это Вы точно подметили.
Если когда нибудь Вы всё таки разберётесь с гарвардской архитектурой и интеловскими даташитами, то будете сами над собой смеяться.
manul78
Цитата(zombi @ Apr 18 2017, 19:46) *
Процессор меняли???


Я не знаю, с сарказмом это вопрос или серёзно, но в моём почти милионном городе 90% жителей занимаются перевпариванием продуктов чужого труда и приличных (относительно) радиомагазинов всего три. Если уж найти вонючую HCT573 которой цена три копейки оказалось проблемой, то уж древнюю атмегу8515 в PLCC 44 и подавно...
zombi
Цитата(manul78 @ Apr 18 2017, 20:16) *
Я не знаю, с сарказмом это вопрос или серёзно... PLCC 44

Я и не думал шутить. Лично у меня еще и AT90S8515 в дипе где-то валяются.
Но PLCC это уже перебор biggrin.gif
manul78
Цитата(zombi @ Apr 18 2017, 20:09) *
Попробуйте выяснить как работает защелка 74HC573 (Octal D-type transparent latch; 3-state)


Это Вы точно подметили.
Если когда нибудь Вы всё таки разберётесь с гарвардской архитектурой и интеловскими даташитами, то будете сами над собой смеяться.


Я прекрасно понимаю как она работает. sm.gif

И смеяться я над собой не буду... Потому что через ж..пу - но работает. А по всем правилам и канонам в данном конкретном случае - НЕТ sad.gif

Замечу так-же, что шмель летает вопреки всем законам аэродинамики.

Возможно, где-то в схеме сидит глюк, или просто уже старая мега мудрит...
zombi
Цитата(manul78 @ Apr 18 2017, 20:31) *
Потому что через ж..пу - но работает.

т.е. Ваши тесты идут.
Осталось еще на оригинальной прошивке проверить
manul78
Цитата(zombi @ Apr 18 2017, 20:37) *
т.е. Ваши тесты идут.
Осталось еще на оригинальной прошивке проверить


Завтра проверю. sm.gif

Кстати, по поводу того как работает 74HC573...





Вы это имели в виду, что "мусорные" значения остаются на входах до полного перехода LE в "ноль" ?

И что мне это даст ?

Используя интерфейс внешней памяти 8515 я могу оперировать только дополнительными циклами удержания RD RW, ну Bus Keeper ещё...
zombi
Цитата(manul78 @ Apr 18 2017, 21:27) *
"мусорные" значения остаются на входах до полного перехода LE в "ноль" ?

Откуда Вы это взяли?
rx3apf
Я бы в такой ситуации, прежде чем играться с тестированием всего массива, зациклил бы одну пару операций запись-чтение и скопом ее родимую, скопом. Все времянки, как и что. И для полного счастья шину данных (один бит хотя бы) на полпитания притянул бы, чтобы отличать реальный вывод данных от Z-состояния.

Да, и о SRAM - быструю статику можно поискать на старых ненужных "четверках".
zombi
Цитата(manul78 @ Apr 18 2017, 21:27) *
И что мне это даст ?

Вы сами что-то предположили неизвестно чем руководствуясь и спрашиваете что Вам это даст... Да я понятия не имею!
manul78
Цитата(rx3apf @ Apr 18 2017, 22:13) *
Я бы в такой ситуации, прежде чем играться с тестированием всего массива, зациклил бы одну пару операций запись-чтение и скопом ее родимую, скопом. Все времянки, как и что. И для полного счастья шину данных (один бит хотя бы) на полпитания притянул бы, чтобы отличать реальный вывод данных от Z-состояния.

Да, и о SRAM - быструю статику можно поискать на старых ненужных "четверках".




Я уже приводил скрин в чём была проблема. Причём каждый раз в совершенно разных адресах.

МК читал с шины младший адрес вместо данных.

Устранил я это подключением дополнительного D-триггера, который принудительно каждую процедуру чтения/записи в момент выставления на защёлку младшего адреса переводит входы/выходы микросхемы памяти в Z состояние и туда ничего не попадает. Активируется память только тогда когда на A0-A7 и A8-A15 нходится всё что надо. Никаких переходных процессов ни на шине данных ни на адресной шине память не "чует".
rx3apf
Вовсе не факт, что читался младший байт адреса. Вполне может быть, что этот байт ЗАПИСЫВАЛСЯ в SRAM (вместо данных), а потом уже читался из SRAM совершенно корректно. И, если бы у меня была задача разобраться, как и что - я сказал, как сделал бы. Чтобы все ж понять, в чем причина, а не шаманить с бубном...
manul78

Upd: Вот за что я уважаю буржуйские форумы, так это то что там посетители максимально кратко и по делу отвечают на поставленные вопросы.

Конкретно об ATmega8515.

" If you do go with the external ram , be careful of the clock speed.

Using a 4 MHz crystal , will require a SRAM with 70 nS access time or less. Also the data latch (74HC573) will have to be from a faster family such as a 74FHC573 if you go beyond 4 MHz. "

Т.е. уже для 4 МГц уже нужна 70нс (и менее) память и быстрая "защёлка" серии FHC...

Я при помощи "говна и палок" умудрился добиться стабильной работы 70нс памяти на 8 МГц-ах, то есть в 2 раза быстрее. Биты SRW10 и SRW11 у меня на максимуме уже. Дальше некуда.

Теперь вопрос к полякам, у которых всё работало на 120нс-ой памяти и 8 МГц-ах... wacko.gif

1 машинный такт на 8 МГц-ах = 125нс... "Ногодрыганье" ?

Буржуи так прямо и ответили: что это - невозможно.

У меня уже чёт одно объяснение напрашивается, что кварц на 7.3728 подключен чисто для отладки,настройки по USART. А на самом деле МК работает от внутреннего генератора на более низких частотах 1 , 2 или 4 МГц...

Завтра фьюзы посмотрю. Вот это будет номер... wacko.gif



Цитата(rx3apf @ Apr 18 2017, 23:12) *
Вовсе не факт, что читался младший байт адреса. Вполне может быть, что этот байт ЗАПИСЫВАЛСЯ в SRAM (вместо данных), а потом уже читался из SRAM совершенно корректно. И, если бы у меня была задача разобраться, как и что - я сказал, как сделал бы. Чтобы все ж понять, в чем причина, а не шаманить с бубном...


Пишет всё чисто. Изначально. Кучу тестов прогнал...

Читал криво. Причём в совершенно разных местах каждый прогон теста. Иногда даже вообще без ошибок.

zombi
Цитата(manul78 @ Apr 18 2017, 23:41) *
Upd: Вот за что я уважаю буржуйские форумы, так это то что там посетители максимально кратко и по делу отвечают на поставленные вопросы.

Ну конечно буржуйские только правильно всегда говорят.
Это ж не наши теоретики, паяльника никогда не державшие!

Цитата(manul78 @ Apr 18 2017, 23:41) *
Т.е. уже для 4 МГц уже нужна 70нс (и менее) память и быстрая "защёлка" серии FHC...

Скорее всего Вас там просто тролят. biggrin.gif

Цитата(manul78 @ Apr 18 2017, 23:41) *
Теперь вопрос к полякам, у которых всё работало на 120нс-ой памяти и 8 МГц-ах... wacko.gif

Фантастика судя по буржуйскому форуму. biggrin.gif

Я Вам еще раз повторяю : при тактовой частоте 7.372.800Hz должна работать даже 240-нс память без всяких SRW10 и SRW11.

А что за буржуйский форум? просто интересно.
Baser
Глянул сейчас подробно с цифрами на запись адреса в защелку 74HC573 на шине ATmega8515
Все там нормально до 8МГц (смотрел именно для цифры 8МГц).
Адрес защелкивается по спаду ALE. Шина выдает адрес до спада за >57.5 нс когда ALE высокий.
У 74HC573 propagation delay Dn to Qn <30 ns
+ set-up time Dn to LE 10 ns min
и hold time Dn to LE 5 ns min

30 + 10 < 57.5 так что все в допусках.
Это если больше 8 МГц, нужна быстрая защелка.
Так что дело у вас не в регистре защелки.

з.ы. времянки памяти не смотрел...
zombi
Цитата(Baser @ Apr 19 2017, 00:23) *
так что все в допусках.

И какая максимально медленная память в принципе должна работать, без дополнительных wait states, согласно Ваших расчётов?
manul78
Цитата(Baser @ Apr 19 2017, 00:23) *
Так что дело у вас не в регистре защелки.


Это я понял уже...






Замечу, что это как у меня сейчас через триггер и в момент сигнала ALE вход ~CE2 переводит IO памяти в Z состояние. Просто CE1- тупо подтянут к земле. Ошибок нет.


Базовая схема подразумевает что CE1 тупо посажен на землю, а ~CE2 на шину питания.То есть IO памяти всё время открыты. Что там на них в процессе перехода на шине - одному Богу известно...
zombi
Цитата(manul78 @ Apr 19 2017, 00:46) *
Базовая схема подразумевает что CE1 тупо посажен на землю, а ~CE2 на шину питания.То есть IO памяти всё время открыты.

Во жесть!
Уточните, для себя, каким сигналом открываются IO памяти.
manul78
Цитата(zombi @ Apr 19 2017, 00:57) *
Во жесть!
Уточните, для себя, каким сигналом открываются IO памяти.


Под "открыты" я имел в виду что они не в высокоомном состоянии, и их входные цепи могут как-то держать заряды. За счет внутреней емкости входов например. Как я еще могу объяснить нахождение на мультиплексированной шине маладшего адреса в момент когда МК уже перевел их с выхода на вход и читает данные?

По поводу "уточните", "прочтите", "узнайте" и пр - не надо пожалуйста. Вы считаете что буржуи троллят меня? А по моему троллите меня Вы!
Я создал топик чтобы узнать конкретные соображения по поводу своей проблемы, а не хлебать чей-то снобизм и ответы типа "Где находится Пекин?" - "На Земле... Географический справочник почитайте..."
Сергей Борщ
QUOTE (manul78 @ Apr 19 2017, 08:28) *
По поводу "уточните", "прочтите", "узнайте" и пр - не надо пожалуйста. Вы считаете что буржуи троллят меня? А по моему троллите меня Вы!
Простите, но нога ~OE работает одинаково у всех микросхем - ОЗУ, ПЗУ, регистров, шинных формирователей, дешифраторов (что еще забыл?). И ее описание занимает две-три строчки. Это примерно как 2+2 = 4. Какой реакции на форуме математиков вы ожидаете на вопрос "сколько будет 2+2"?
zombi
Цитата(manul78 @ Apr 19 2017, 08:28) *
А по моему троллите меня Вы!

Вы пишете одно, предполагаете другое и предполагаете ошибочно.
Как вас понять? как отвечать?

Форум буржуйский озвучите?
Baser
Цитата(zombi @ Apr 19 2017, 00:31) *
И какая максимально медленная память в принципе должна работать, без дополнительных wait states, согласно Ваших расчётов?

Написал же, что не смотрел - уснул. Может быть сегодня вечером гляну, если снова не усну sm.gif

Цитата(manul78 @ Apr 19 2017, 00:46) *
Базовая схема подразумевает что CE1 тупо посажен на землю, а ~CE2 на шину питания.То есть IO памяти всё время открыты.

Всякие там входы типа Chip Enable, Chip Select, и т.д. и их инверсии применяются исключительно для облегчения построения адресных дешифраторов в случае, когда на шине находится несколько устройств. Типа как я когда то делал: SRAM 8K, внешние регистры 74HC на ввод и вывод, второй УАРТ 16С550. Там нужно разделять адресное пространство.
Когда на шине только одно устройство, как у вас, все эти ноги подключаются к разрешающим уровням постоянно.
При этом если сигналы RD (OE) и WR (WE) пассивны (высокие), то шина данных памяти находится в Z-состоянии.

Цитата(manul78 @ Apr 19 2017, 08:28) *
Под "открыты" я имел в виду что они не в высокоомном состоянии, и их входные цепи могут как-то держать заряды. За счет внутреней емкости входов например. Как я еще могу объяснить нахождение на мультиплексированной шине маладшего адреса в момент когда МК уже перевел их с выхода на вход и читает данные?

Терминология у вас неправильная, поэтому сложно вас понимать.
У любого сигнала есть "задержка распространения", они и описаны в даташитах, и они и определяют "времянку".
Когда вы подали сигнал чтения на вход памяти - данные на выходе появятся только через это время. И снимутся они тоже только через некоторое время.
Для записи вам нужно, чтобы на входах памяти данные были заранее перед стробом записи. И держаться после строба тоже еще определенное время.
Иначе будут сбои как у вас.

Вот вы все картинки показываете, а они то типовые, всем хорошо известны. Важны именно цифры.
manul78

Всем доброго дня !

Когда сегодня 19 апреля 2017-го года я утром выглянул в окно и увидел, что выпало 15 см снега я подумал, что теперь меня уже ничем не удивишь, тем более глюками с МК... sm.gif

Но это так... лирическое отступление.

Значится так. Первым делом сегодня я проверил сохраненные фьюзы родной заводской прошивки. И таки да. 4 МГц внутреннего генератора.
Вероятно поляки посадили кварц на 7.3728 МГц и вывели RS-232 для каких-то своих отладочных целей, или это просто базовая плата МК с памятью, универсальная для разных применений. Вот что и изначально сбило меня.

До 10 утра гонял тесты с моей доработкой в виде D-триггера. Ошибок нет от слова ВООБЩЕ.
Так как родная прошивка работает на 4 МГц и надо проверить работу памяти на этой частоте - спаял приблуду на К176ИД2 и семисегментном индикаторе дабы видеть результаты тестов без использования USART. Прогнал тесты на 4 МГц-ах - ошибок нет.
Залил заводскую прошивку и поставил на оборудование. В тестовом режиме разумеется... sm.gif Всё работает.

В 11 часов привозят новую АТмегу8515 в DIP40...

Время есть. Решил проверить ВСЁ. Подцепил новую АТмегу. Залил тесты. Всё работает. Ошибок нет.
Отцепил свой триггер и вернул всё в назад как было изначально. И... Всё работает. Ошибок нет.
Переключился на внешний кварц 7.3728 - всё работает. Ошибок нет.

Решил добить всю схему до конца и поставил старую родную память HM62256-120, защёлку оставил 74ALS573, не стал менять на НС. Прогнал тест.
На 7.3728 - более 10% ошибок, то есть более 800 на 8Кб.
На 4 МГц - менее 0.1% ошибок, то есть 1-2 на 8Кб.

Ставил дополнительные циклы - изменения незначительные. На 7.3728МГц - куча ошибок, на 4 МГц - 1-2...

Исходя из этого, вернул UT6264, залил заводскую прошивку, выставил 4 Мгц внутреннего генератора и поставил на оборудование.

Всё работает.

Считаю, что проблема была комплексная. Старая АТмега8515 с поплывшими мозгами/портами + сдохшая не известно по какой причине защёлка + тупая 120нс память 88-го года выпуска.

Прошу всех извинить меня за резкости и кривую постановку задачи и её обсуждение. Торопился, злился, писал с телефона и пр... sm.gif
Тему можно считать закрытой.
Всем огромное спасибо за помощь и сотрудничество !

P.s. Для тех кому интересно, оборудование - австрийский термопластавтомат ENGEL, доработанный поляками и проданный в Россию 15 лет назад.
Baser
Поздравляю! sm.gif
Но терминологию подтяните... rolleyes.gif
manul78
Цитата(Baser @ Apr 19 2017, 12:53) *
Для записи вам нужно, чтобы на входах памяти данные были заранее перед стробом записи. И держаться после строба тоже еще определенное время.
Иначе будут сбои как у вас.

Вот вы все картинки показываете, а они то типовые, всем хорошо известны. Важны именно цифры.


После того как я заменил 62256-10 на 6264-70 - к записи данных претензий не было.
Проблема была с чтением.

Да и как я мог оперировать временными параметрами, если использовал аппаратный интерфейс микроконтроллера 8515 для работы с внешней памятью ? sm.gif

Там всего 4 бита управления задействованы.

SRW - вкл/выкл интерфейс.
SRW10 и SRW11 - выбор числа тактов ожидания (4 варианта соответственно)
XMBK - Bus Keeper вкл/выкл.

Про биты разрядности старшего байта XMM0, XMM1, XMM2 и биты определения секторов внешней памяти SRL0, SRL1, SRL2 я молчу, они роли не играют.
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.