Важная информация

User Tag List

Страница 1 из 4 1234 ПоследняяПоследняя
Показано с 1 по 10 из 37

Тема: Выставить биты данных на ШД Микроши в диапазоне 8000H-BFFFH

  1. #1
    Member
    Регистрация
    03.09.2020
    Адрес
    г. Санкт-Петербург
    Сообщений
    36
    Спасибо Благодарностей отдано 
    1
    Спасибо Благодарностей получено 
    1
    Поблагодарили
    1 сообщение
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию Выставить биты данных на ШД Микроши в диапазоне 8000H-BFFFH

    Привет, народ.

    Пробую я сделать "эмулятор ПЗУ" для Микроши на базе платы STM32 (STM32F103C8T6, она же BluePill). Но есть одна проблема: я в схемотехнике полный ноль.

    Пока что у меня задача - научиться выставлять один повторяющийся байт во всех ячейках адресного диапазона 8000H-BFFFH.

    Для этого я сделал схемку, которая втыкается в разъем "Внутренний интерфейс". От этого разъема к 5V-tolerance ножкам STM-ки напрямую подключены сигналы /32К, /RD и ШД. Подключал тупо напрямую, потому что так для экспериментов советовали вот в этой теме: https://zx-pk.ru/threads/34004-preob...94#post1140494

    STM-ка слушает два сигнала - /32К и /RD (они инверсные). Пока эти сигналы оба не равны физическому 0, STM-ка держит ноги, которые подключены к ШД Микроши, в режиме Input, чтобы не мешать работе компьютера. STM-ка работает на частоте 72MHz, и в ней сделан быстрый бесконечный цикл без всяких таймеров и прерываний. Как только в нем обнаруживается, что оба сигнала /32 и /RD стали равны физическому 0, STM-ка переключает ноги ШД в режим Output Push-Pull, и выставляет на них байт данных. Как только /32 и /RD оба не равны нулю, ноги возвращаются в Input-состояние.

    И это дело даже работает. Как минимум, STM-ка не влияет на работу компьютера (а пока я не отладил цикл и режимы - очень даже влияла), а в диапазоне 8000H-BFFFH появляется байт данных. Но появляется он очень своеобразно:

    Если выставить байт 00h - на шине будет 82h
    Если выставить байт 01h - на шине будет 83h
    Если выставить байт 02h - на шине будет 82h
    Если выставить байт 03h - на шине будет 83h
    Если выставить байт 04h - на шине будет 86h

    Я даже могу объяснить, почему так происходит. Если к разъему "Внутренний интерфейс" ничего не подключать, и просмотреть диапазон 8000H-BFFFH, то в нем будет всегда считываться число 82h. На просторах интернета я нашел такую информацию "Если ничего не подключено, в Микроше по этим адресам считывается значение 82h. Это слово состояние (status word) процессора, выдаваемое им на шину данных в начале каждого машинного цикла". Откуда оно берется (сам процессор изнутри себя ставит на ШД в начале машинного цикла это значение?) - не совсем понятно. Но это значение действительно присутствует на ШД в диапазоне 8000H-BFFFH.

    Когда STM-ка выставляет байт на ШД, он "подмешивается" к значению 82h. Там, где были единицы от числа 82h, они остаются. И к ним выставляются единицы, которые присутствуют в байте, генерируемым STM-кой. То есть, получается как бы логическое ИЛИ между числом 82h и байтом STM-ки.

    Другими словами, нули в байте STM-ки не скидывают в ноль присутствующий единичный потенциал на линиях ШД Микроши.

    Вот, и я не могу сообразить, как решить эту проблему. Я пробовал использовать на ножках ШД не режим Output Push-Pull, а Output OpenDrain, подавая инверсные биты на эти ножки (да и неинверсное значение тоже пробовал), но это не дало результата. Сейчас думаю попробовать соединить все ножки ШД с землей через резисторы в 10КОм, однако тоже не знаю, стоит ли действительно это делать.

    Прошу общественность подсказать, как можно решить проблему, чтобы на ШД появилось именно то число, которое задано.
    Любопытный хомячок webhamster.ru - маленький и пушистый IT-проект

  2. #1
    С любовью к вам, Yandex.Direct
    Размещение рекламы на форуме способствует его дальнейшему развитию

  3. #2
    Guru Аватар для HardWareMan
    Регистрация
    26.02.2011
    Адрес
    г. Павлодар, Казахстан
    Сообщений
    4,405
    Спасибо Благодарностей отдано 
    320
    Спасибо Благодарностей получено 
    598
    Поблагодарили
    444 сообщений
    Mentioned
    10 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от xintrea Посмотреть сообщение
    Откуда оно берется (сам процессор изнутри себя ставит на ШД в начале машинного цикла это значение?) - не совсем понятно.
    Так точно, он выставляет слово для внешнего арбитра для выделения типа памяти. А остаётся оно из-за ёмкостей шины.

    82H означает Memory Read, т.е. обычное чтение из обычной памяти.

  4. #3
    Member
    Регистрация
    03.09.2020
    Адрес
    г. Санкт-Петербург
    Сообщений
    36
    Спасибо Благодарностей отдано 
    1
    Спасибо Благодарностей получено 
    1
    Поблагодарили
    1 сообщение
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от HardWareMan Посмотреть сообщение
    Так точно, он выставляет слово для внешнего арбитра для выделения типа памяти. А остаётся оно из-за ёмкостей шины. 82H означает Memory Read, т.е. обычное чтение из обычной памяти.
    Благодарю, с 82h стало понятнее.

    А что делать с выставлением байта на ШД STM-кой?
    Любопытный хомячок webhamster.ru - маленький и пушистый IT-проект

  5. #4
    Guru Аватар для HardWareMan
    Регистрация
    26.02.2011
    Адрес
    г. Павлодар, Казахстан
    Сообщений
    4,405
    Спасибо Благодарностей отдано 
    320
    Спасибо Благодарностей получено 
    598
    Поблагодарили
    444 сообщений
    Mentioned
    10 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Ну тут просто: юзай шифтер, Люк! Активный, двунаправленный. Что-то из SN74LVC8T245 / SN74LVC16T245.

  6. #5
    Member
    Регистрация
    03.09.2020
    Адрес
    г. Санкт-Петербург
    Сообщений
    36
    Спасибо Благодарностей отдано 
    1
    Спасибо Благодарностей получено 
    1
    Поблагодарили
    1 сообщение
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от HardWareMan Посмотреть сообщение
    Ну тут просто: юзай шифтер, Люк! Активный, двунаправленный. Что-то из SN74LVC8T245 / SN74LVC16T245.
    А отечественного аналога нет? Желательно в DIP-корпусе. Можно наверно даже без преобразований уровней, тупо ТТЛ.

    UPD: Похоже, можно использовать 5572ИН1АУ, но это с ромбиком. Надыть понять, какой ОТК-шный аналог есть.
    Последний раз редактировалось xintrea; 11.05.2022 в 17:30.
    Любопытный хомячок webhamster.ru - маленький и пушистый IT-проект

  7. #6
    Member
    Регистрация
    03.09.2020
    Адрес
    г. Санкт-Петербург
    Сообщений
    36
    Спасибо Благодарностей отдано 
    1
    Спасибо Благодарностей получено 
    1
    Поблагодарили
    1 сообщение
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    И кстати, не понятно, чем нули, выставленные на ножках STM32 хуже тех нулей, которые будут выставлены на ножках микросхемы SN74LVC8T245 / SN74LVC16T245 ?

    То есть, другими словами: почему микросхемы SN74LVC8T245 / SN74LVC16T245 будут нормально выставлять все биты на ШД, а STM32 может выставить только единички на ШД?

    Я еще подумываю на STM32 выставлять для нулевых битов режим Open Drain вместо Push-Pull, может быть это поможет снять высокий потенциал на ШД, устанавливаемый Микрошей.
    Последний раз редактировалось xintrea; 12.05.2022 в 10:31.
    Любопытный хомячок webhamster.ru - маленький и пушистый IT-проект

  8. #7
    Veteran Аватар для Serg6845
    Регистрация
    30.12.2018
    Адрес
    г. Москва
    Сообщений
    1,004
    Спасибо Благодарностей отдано 
    7
    Спасибо Благодарностей получено 
    250
    Поблагодарили
    230 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от xintrea Посмотреть сообщение
    А отечественного аналога нет? Желательно в DIP-корпусе. Можно наверно даже без преобразований уровней, тупо ТТЛ.
    555АП6 вполне прокатит. только надо не забыть добавить управление направлением и/или Z-состоянием, иначе он всю шину повесит. но что-то мне подсказывает что не в этом дело...

    - - - Добавлено - - -

    Цитата Сообщение от xintrea Посмотреть сообщение
    И кстати, не понятно, чем нули, выставленные на ножках STM32 хуже тех нулей, которые будут выставлены на ножках микросхемы SN74LVC8T245 / SN74LVC16T245 ?
    надо осциллографом смотреть. либо конфликт на шине (тайминги), либо ножки STM по факту неправильно конфигурируются.

    То есть, другими словами: почему микросхемы SN74LVC8T245 / SN74LVC16T245 будут нормально выставлять все биты на ШД, а STM32 может выставить только единички на ШД?
    а 100% уверенности что с ними все будет нормально - нет.

    Я еще подумываю на STM32 выставлять для нулевых битов режим Open Drain вместо Push-Pull, может быть это поможет снять высокий потенциал на ШД, устанавливаемый Микрошей.
    разницы не вижу, физически в STM ножку тянуть вниз будет тот же самый транзистор.

    Зверинецъ

    Специалист (был когда-то "совсем стандарт") - 1988-2023
    Ленинград1 +256К +AY+BDI+VGA выход +Ethernet (Speccyboot) +Xmodem (115200)+divmmc
    Ленинград2 + CF карта
    Платформа 8085+Z80+CPLD (Специалист МХ2 +SD +FDD +PS/2kbd)
    БК0010-01 стоковый
    [свернуть]

  9. #8
    Member
    Регистрация
    03.09.2020
    Адрес
    г. Санкт-Петербург
    Сообщений
    36
    Спасибо Благодарностей отдано 
    1
    Спасибо Благодарностей получено 
    1
    Поблагодарили
    1 сообщение
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от Serg6845 Посмотреть сообщение
    надо осциллографом смотреть. либо конфликт на шине (тайминги), либо ножки STM по факту неправильно конфигурируются.
    Сейчас доступа к оборудованию нет, но в процессе ковыряния еще обнаружилась такая вещь: если отключить ШД Микроши от STM, и повесить щуп осциллографа на ножки STM, которые отвечают за ШД, то выставленная STM-кой единица выглядит как прямой фронт с последующим экспоненциальным спадом. Примерно так, как на приложенном рисунке. Вот только длительность спада до 0.5В не помню.

    А когда ШД Микроши подключена, то эта единица тоже плавно убывает, но только до следующего изменения к 0 или 1, вызванного Микрошей.

    Миниатюры Миниатюры Нажмите на изображение для увеличения. 

Название:	oscillograf_01.png 
Просмотров:	163 
Размер:	5.9 Кб 
ID:	77311  
    Любопытный хомячок webhamster.ru - маленький и пушистый IT-проект

  10. #9
    Veteran Аватар для Serg6845
    Регистрация
    30.12.2018
    Адрес
    г. Москва
    Сообщений
    1,004
    Спасибо Благодарностей отдано 
    7
    Спасибо Благодарностей получено 
    250
    Поблагодарили
    230 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от xintrea Посмотреть сообщение
    Сейчас доступа к оборудованию нет, но в процессе ковыряния еще обнаружилась такая вещь: если отключить ШД Микроши от STM, и повесить щуп осциллографа на ножки STM, которые отвечают за ШД, то выставленная STM-кой единица выглядит как прямой фронт с последующим экспоненциальным спадом. Примерно так, как на приложенном рисунке. Вот только длительность спада до 0.5В не помню.
    значит надо разбираться с прошивкой STM. спад сигнала должен начинаться по окончании /RD (или /32к), а по картинке получается что ножка STM переводится в нужное состояние и затем сразу переводится на ввод. а длительность спада определяется емкостью проводов (щуп осциллографа и прочее).

    Зверинецъ

    Специалист (был когда-то "совсем стандарт") - 1988-2023
    Ленинград1 +256К +AY+BDI+VGA выход +Ethernet (Speccyboot) +Xmodem (115200)+divmmc
    Ленинград2 + CF карта
    Платформа 8085+Z80+CPLD (Специалист МХ2 +SD +FDD +PS/2kbd)
    БК0010-01 стоковый
    [свернуть]

  11. #10
    Guru Аватар для HardWareMan
    Регистрация
    26.02.2011
    Адрес
    г. Павлодар, Казахстан
    Сообщений
    4,405
    Спасибо Благодарностей отдано 
    320
    Спасибо Благодарностей получено 
    598
    Поблагодарили
    444 сообщений
    Mentioned
    10 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от Serg6845 Посмотреть сообщение
    значит надо разбираться с прошивкой STM. спад сигнала должен начинаться по окончании /RD (или /32к), а по картинке получается что ножка STM переводится в нужное состояние и затем сразу переводится на ввод. а длительность спада определяется емкостью проводов (щуп осциллографа и прочее).
    Нет, ему просто надо открыть вход осциллографа для начала. А уже потом думать.

Страница 1 из 4 1234 ПоследняяПоследняя

Информация о теме

Пользователи, просматривающие эту тему

Эту тему просматривают: 1 (пользователей: 0 , гостей: 1)

Похожие темы

  1. Ответов: 35
    Последнее: 07.01.2020, 11:32
  2. Генерация случайных чисел в заданном диапазоне
    от Oleg N. Cher в разделе Программирование
    Ответов: 31
    Последнее: 09.02.2017, 03:19
  3. Как выставить уровень чёрного?
    от Demige в разделе Изображение
    Ответов: 15
    Последнее: 13.03.2012, 15:16
  4. Как выставить перемычки для подключения к ПК
    от Руслан в разделе Внешние накопители
    Ответов: 13
    Последнее: 12.10.2011, 19:37

Метки этой темы

Ваши права

  • Вы не можете создавать новые темы
  • Вы не можете отвечать в темах
  • Вы не можете прикреплять вложения
  • Вы не можете редактировать свои сообщения
  •