Перейти к содержанию
    

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

 

Кстати, такое можно было бы отловить и без быстрого скопа, даже с saleae. По отрицательному результату сравнения выставить где-то строб и посмотреть предисторию, что было на шине данных незадолго перед событием.

Изменено пользователем rx3apf

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

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

 

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

Вам нужно еще раз внимательно прочитать, как работает мультиплексная Интеловская внешняя шина.

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

 

МК выставляет младший и старший адрес на шину. Защёлкивает младший байт адреса. Потом выдает на те же линии данные для записи или выдает строб чтения и ждет на этой линии данные из памяти.

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

 

Еще Bus keeper (XMBK) будет влиять на работу, с ним разберитесь.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

МК выставляет младший и старший адрес на шину. Защёлкивает младший байт адреса. Потом выдает на те же линии данные для записи или выдает строб чтения и ждет на этой линии данные из памяти.

Еще Bus keeper (XMBK) будет влиять на работу, с ним разберитесь.

 

 

Похоже я где-то рядом... Те кто разрабатывал схему тупо посадили ногу (Enable and read register (transparent

mode)) OE защёлки на землю... Защелка не переходит после фиксации в Z состояние. На шине получается висит младший адрес...

 

Получается мне надо привязать эту ногу через инвертор к сигналу ALE ?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

??? 573 фиксирует младший байт адреса с шины данных и отправляет его на соответствующие адресные линии SRAM. Каким образом управление выходом 573 может повлиять на ее вход (шину данных) ? Она же (защелка) однонаправленная.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Те кто разрабатывал схему тупо посадили ногу OE защёлки на землю

Правильно сделали.

... Защелка не переходит после фиксации в Z состояние.

И не должна она никуда переходить.

На шине получается висит младший адрес...

И правильно делает. Именно младший адрес и должен там висеть.

Получается мне надо привязать эту ногу через инвертор к сигналу ALE ?

Зачем? Ненужно его никуда привязывать.

Похоже я где-то рядом...

Судя по всему вы еще огого как далеко :biggrin:

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Короче победил похоже... (Сейчас тесты гоняю)

Аппаратно добил...

У UT6264LP-70 в отличии от 62256 два сигнала стробирования СЕ и СЕ2 (инв) работающие в противофазе. Я по анлогии с 62256 повесил СЕ2 на +5 (у 62256 активный 0).

Зря я это сделал. Отсюда и глюки...

 

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

 

 

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Короче победил похоже...добил...

:biggrin:

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

Удивительно что еще что-то работает после всего того что Вы нагородили.

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

 

Неужели так сложно в гугле поискать что-то типа "подключение внешней памяти к микроконтроллеру" раз DS на AVR не доверяете.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Короче победил похоже... (Сейчас тесты гоняю)

Аппаратно добил...

. . . .

:)

мудрено аднака.

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

(извиняюсь за наглость)

Выложите схему, так, ничего личного, просто посмотреть :)

 

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

посмею предположить, что пока аппаратно решали проблему, то пропаяли неконтакт, и оно аннилигилировалосььььь

 

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

 

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

 

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

 

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

 

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

 

Выпаял "покойника", впаял "кроватку" и заменил его на 74HC573. Запустил... Пошли глюки. Считал прошивку. Залил свою с тестом и начались танцы с бубнами... Я выпаял память. Впаял кроватку и нашел такую-же микросхему памяти от старого принтера. Ошибки... Ошибки... Ошибки... Дикое количество.

Менял "защёлки", ALS, LS, 573... 373... Ошибки, ошибки, ошибки... Рандомные. По разным адресам, разные данные... Менял настройки интерфейса памяти 8515, Bus keeper, дополнительные циклы и пр. НИХРЕНА.

Всё те-же ошибки в разных местах. И питание дал чистейшее. И всё обвязал по питанию конденсаторами на 100N... И чего только не делал.

Наконец принесли U6264-70 нс. Поставил. Загнал CE на землю и СЕ2 на плюс...

 

HITAD041-5-13.jpg

 

Было... HM62256-120

 

 

UT6264.jpg

 

Стало... U6264-70

 

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

 

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

 

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

 

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

 

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

 

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

 

ATmega8515

 

 

atmega8515-memory_timing.jpg

 

HM 64256-120

 

 

HITAD041-5-_Read_Timing.jpg

 

 

 

HITAD041-5-_Read_Timing_2.jpg

 

 

 

 

HITAD041-5-_Read_Timing_3.jpg

 

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

 

 

 

HITAD041-_True.jpg

 

 

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

 

 

UT6264-_Timing.jpg

 

 

 

HM6264-_Timing-2.jpg

 

 

 

UT6264-_True.jpg

 

 

 

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

 

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

 

 

 

 

Что я сделал:

 

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

 

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

 

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

 

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

 

Вот такие дела... :)

 

Изменено пользователем manul78

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

 

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

 

На последок старый советский анекдот:

Горный аул. Житель заходит к соседу.

- Слушай, завтра сына женю, одолжи барана!

- Не могу, но вот тебе совет : сходи к тому дому, там тебе дадут барана!

Пошел к тому дому.

- Слушай, завтра сына женю, одолжи мне барана!

- Не могу, но вот тебе совет: сходи вон к тому дому, там тебе дадут барана!

Пошел к вон тому дому.

- Слушай, я завтра сына женю, одолжи мне одного барана!

- Не могу, но вот тебе совет - сходи к дальнему дому, уж там тебе точно дадут барана!

Ходил, ходил, ходил... встречает аксакала:

- Слушай, отец! Почему мне никто не дает барана, но все дают совет, где взять барана?!

- Потому, дорогой, что у нас не страна баранов. У нас - Страна Советов!!!

 

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

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

 

P.S. Никак не доходят руки дизассемблировать родную заводскую прошивку устройства, но почему-то уверен, что обмен с памятью реализован обычным "ногодрыганьем", не смотря на наличие у 8515 специального интерфейса. Взялись похоже за проект (поляки кстати), помыкались, помыкались с "таймингами"и написали сами со своими задержками и пр. На 4 МГц (как во всех интернет примерах) я подозреваю что всё действительно работает, а вот на 8+ уже похоже нет...

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Когда положительный строб ALE заставляет защёлку запомнить младший адрес

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

 

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

Это Вы точно подметили.

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

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

 

Я не знаю, с сарказмом это вопрос или серёзно, но в моём почти милионном городе 90% жителей занимаются перевпариванием продуктов чужого труда и приличных (относительно) радиомагазинов всего три. Если уж найти вонючую HCT573 которой цена три копейки оказалось проблемой, то уж древнюю атмегу8515 в PLCC 44 и подавно...

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Я не знаю, с сарказмом это вопрос или серёзно... PLCC 44

Я и не думал шутить. Лично у меня еще и AT90S8515 в дипе где-то валяются.

Но PLCC это уже перебор :biggrin:

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

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

 

 

Это Вы точно подметили.

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

 

Я прекрасно понимаю как она работает. :)

 

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

 

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

 

Возможно, где-то в схеме сидит глюк, или просто уже старая мега мудрит...

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

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

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...