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

User Tag List

Страница 71 из 120 ПерваяПервая ... 676869707172737475 ... ПоследняяПоследняя
Показано с 701 по 710 из 1199

Тема: Орион-2010. Hard & Soft

  1. #701
    Super Moderator Аватар для Ewgeny7
    Регистрация
    03.07.2005
    Адрес
    Санкт-Петербург
    Сообщений
    10,168
    Спасибо Благодарностей отдано 
    146
    Спасибо Благодарностей получено 
    76
    Поблагодарили
    51 сообщений
    Mentioned
    1 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от Error404 Посмотреть сообщение
    На фиге 10 (и 12) нарисована диаграмма сигналов,
    В том то и дело. что по определению должен учавствовать IORQ, это нарисовано в диаграммах. А на схемах нарисован какойто хитровыверт с MREQ.
    Вот, нашел в загашниках: http://narod.ru/disk/18688700000/Z80...0Unit.rar.html
    Хорошая дока на рузском езыке про Z80.
    И там как раз написано, что вектор прерывания выставляется по IORQ='0' and M1='0' and RD='0'. То, что нам и требовалось.

    Error404, не наваяешь простенькую прогу для приема байта по прерыванию? В целях отладки железа.

    ---------- Post added at 15:08 ---------- Previous post was at 14:56 ----------

    Цитата Сообщение от Error404 Посмотреть сообщение
    И сколько выдать WAIT-a.
    Вайт два такта проц создает самостоятельно.
    ScorpEvo ZS 1024 turbo+ CF-HDD/FDD/Mouse/SMUC 3.1/ProfROMse/NeoGS/ZC
    Speccy-2007 128/AY/TR-DOS

    Сайт с документацией к "Scorpion ZS 256"

  2. #702
    Moderator
    Регистрация
    14.08.2006
    Адрес
    Владимир
    Сообщений
    4,577
    Спасибо Благодарностей отдано 
    61
    Спасибо Благодарностей получено 
    106
    Поблагодарили
    92 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от ewgeny7 Посмотреть сообщение
    не наваяешь простенькую прогу для приема байта по прерыванию? В целях отладки железа.
    Во вложении.

    Но проверить это мне, сам понимаешь, негде. Если что, приглядывай в исходник, может какие-то ошибки найдешь...
    Последний раз редактировалось Error404; 13.03.2010 в 16:13.
    Лучше сделать и жалеть, чем не сделать и жалеть.

    Некоторые из моих поделок тут: https://github.com/serge-404

  3. #703
    Super Moderator Аватар для Ewgeny7
    Регистрация
    03.07.2005
    Адрес
    Санкт-Петербург
    Сообщений
    10,168
    Спасибо Благодарностей отдано 
    146
    Спасибо Благодарностей получено 
    76
    Поблагодарили
    51 сообщений
    Mentioned
    1 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от Error404 Посмотреть сообщение
    Во вложении.
    Наворочено то...
    Я терминалку для приема и вывода на экран соорудил из 30 байт
    Хорошо, спасибо!
    Только тут такой нюанс... версия USART в альтере сейчас выдает короткие импульсы по факту приема или передачи байта. Импульсы настолько невелики, что и в асме их не особо поймаешь. Для формирования прерывания будут самое то... Можно добавить еще какие-нибудь сигналы, например, как я описывал выше (а ы реализовал в тестовой программе). Или есть предложения каксделать удобнее?
    ScorpEvo ZS 1024 turbo+ CF-HDD/FDD/Mouse/SMUC 3.1/ProfROMse/NeoGS/ZC
    Speccy-2007 128/AY/TR-DOS

    Сайт с документацией к "Scorpion ZS 256"

  4. #704
    Moderator
    Регистрация
    14.08.2006
    Адрес
    Владимир
    Сообщений
    4,577
    Спасибо Благодарностей отдано 
    61
    Спасибо Благодарностей получено 
    106
    Поблагодарили
    92 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от ewgeny7 Посмотреть сообщение
    Наворочено то...
    Я терминалку для приема и вывода на экран соорудил из 30 байт
    Хорошо, спасибо!
    У меня там отрабатывается еще обращение на неправильный вектор (если на шину при прерывании выдано не FD, а меньшее значение) с соответствующим сообщением, есть индикатор работоспособности прерываний вообще (работает по int 50 Hz), чтение клавиатуры с выводом в порт. Я всегда добавляю много лишнего - чтобы если что-то не работает, было от чего оттолкнуться в размышлении.

    Цитата Сообщение от ewgeny7 Посмотреть сообщение
    Только тут такой нюанс... версия USART в альтере сейчас выдает короткие импульсы по факту приема или передачи байта. Импульсы настолько невелики, что и в асме их не особо поймаешь. Для формирования прерывания будут самое то... Можно добавить еще какие-нибудь сигналы, например, как я описывал выше (а ы реализовал в тестовой программе). Или есть предложения каксделать удобнее?
    Если мы остановимся на схеме обработки получения байта по прерыванию, то длительность импульсов на прием (и вообще анализ состояния UART при приеме) нас совершенно не интересует: сработало прерывание, считай байт с порта. И все.

    С отправкой байта чуть сложнее - если в цикле отправляется большой массив, то надо убедиться что UART уже отправил предыдущий байт, как собственно ты и писал двумя страницами форума ранее:

    Код:
    ; Отправка байта - запись в порт F764. 
    ; Прием байта - чтение порта F764.
    ; Контроль состояния передачи - порт F765 на чтение: 
    ;   Бит D7 - "1"-байт отправлен, готов принять новый байт для отправки. 
    ;   Бит D6 - "1"-вспомогательный, байт отправлен. После нескольких тактов обнуляется.
    Кстати, бит D6 я наверное перед отправкой зря проверяю на равенство "1" (я проверяю на "11000000"), раз он обнуляется ? Зачем он обнуляется, с чем это связано? И что отображает этот бит до обнуления и после обнуления?
    Последний раз редактировалось Error404; 13.03.2010 в 11:30.
    Лучше сделать и жалеть, чем не сделать и жалеть.

    Некоторые из моих поделок тут: https://github.com/serge-404

  5. #705
    Super Moderator Аватар для Ewgeny7
    Регистрация
    03.07.2005
    Адрес
    Санкт-Петербург
    Сообщений
    10,168
    Спасибо Благодарностей отдано 
    146
    Спасибо Благодарностей получено 
    76
    Поблагодарили
    51 сообщений
    Mentioned
    1 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от Error404 Посмотреть сообщение
    то надо убедиться что UART уже отправил предыдущий байт,
    Цитата Сообщение от Error404 Посмотреть сообщение
    Кстати, бит D6 я наверное перед отправкой зря проверяю на равенство "1" (я проверяю на "11000000"), раз он обнуляется ? Зачем он обнуляется, с чем это связано? И что отображает этот бит до обнуления и после обнуления?
    Вот тута я и хотел что-нибудь доработать. В принципе, надо сделать чтобы можно было работать и без прерываний .
    Насчет сигналов - D7 сейчас нет вообще. Читается всегда "1", но я хочу его снова "создать"
    D6 - короткий, исчезает после такта. Догадываемся. что этот сигнал нужен просто для генерации прерывания и больше ни для чего. Байт улетел через USART - получаем импульс, можно отправлять следующий. Аналогично и с D5 - генерация прерывания по приему байта. Пришел импульс - забираем байт с F764.
    Соответственно, эти два импульса должны вызывать прерывания и выставлять каждый свой байт на вектор прерывания. Вроде так должна выглядеть авторская задумка. Тогда, выходит, на чтении байта ставим FD, на отправке байта - FB.
    Многое можно переделать, поэтому и спрашиваю, как удобнее программисту?
    ScorpEvo ZS 1024 turbo+ CF-HDD/FDD/Mouse/SMUC 3.1/ProfROMse/NeoGS/ZC
    Speccy-2007 128/AY/TR-DOS

    Сайт с документацией к "Scorpion ZS 256"

  6. #706
    Moderator
    Регистрация
    14.08.2006
    Адрес
    Владимир
    Сообщений
    4,577
    Спасибо Благодарностей отдано 
    61
    Спасибо Благодарностей получено 
    106
    Поблагодарили
    92 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от ewgeny7 Посмотреть сообщение
    Вот тута я и хотел что-нибудь доработать. В принципе, надо сделать чтобы можно было работать и без прерываний .
    Насчет сигналов - D7 сейчас нет вообще. Читается всегда "1", но я хочу его снова "создать"
    D6 - короткий, исчезает после такта. Догадываемся. что этот сигнал нужен просто для генерации прерывания и больше ни для чего. Байт улетел через USART - получаем импульс, можно отправлять следующий. Аналогично и с D5 - генерация прерывания по приему байта. Пришел импульс - забираем байт с F764.
    Соответственно, эти два импульса должны вызывать прерывания и выставлять каждый свой байт на вектор прерывания. Вроде так должна выглядеть авторская задумка. Тогда, выходит, на чтении байта ставим FD, на отправке байта - FB.
    Многое можно переделать, поэтому и спрашиваю, как удобнее программисту?
    С отправкой не так критично, как с приемом (где в случае без прерывания нужен постоянный опрос устройства). Тут уже нужно считать и решать что выгоднее - опросить готовность устройства перед отправкой и придержать клиента в ожидании до момента готовности (что маловероятно, т.к. пока на наших скоростях отрабатывают прочие куски подпрограммы вывода символа на консоль, USART предыдущий байт по-любому отправит), или обрабатывать прерывание (каждое из которых - это тормозное сохранение/восстановление на стеке + обслуга вектора + нужен буфер для сохранения символов на отправку).

    Если мы будем делать многозадачную ОС, то надо смотреть в сторону работы по прерыванию с буферизацией во всех случаях. Для однозадачной с прерываниями на передачу не стоит заморачиваться, делать только на прием. А для простых терминалок вообще можно без прерываний обойтись.

    А можно сделать эти прерывания маскируемыми какими-то двумя битами порта F765 на запись (и готовность)? И определяться с конкретным методом обслуживания уже при разработке конкретного ПО? А какой разрядности в порту F765 управляемый делитель? Сколько битов в "F765 на запись" сейчас уже распределено и подо что?

    Соответственно для случая обработки чтения без прерываний, к уже имеющимся в порту "F765 на чтение" битам
    Код:
    ;   Бит D7 - "1"-байт отправлен, готов принять новый байт для отправки. 
    ;   Бит D6 - "1"-вспомогательный, байт отправлен. После нескольких тактов обнуляется. 
    ;   Бит D5 - "1"-прием байта завершен. После нескольких тактов обнуляется (зачем??? Возможно для вызова прерывания).
    добавить Бит D4 - "1"- прием байта завершен. Сбрасывается только после чтения с порта данных (F764). И соответственно принимать следующий байт на вход только когда бит D4 сброшен чтением с F764.
    Последний раз редактировалось Error404; 13.03.2010 в 13:05.
    Лучше сделать и жалеть, чем не сделать и жалеть.

    Некоторые из моих поделок тут: https://github.com/serge-404

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

  8. #707
    Super Moderator Аватар для Ewgeny7
    Регистрация
    03.07.2005
    Адрес
    Санкт-Петербург
    Сообщений
    10,168
    Спасибо Благодарностей отдано 
    146
    Спасибо Благодарностей получено 
    76
    Поблагодарили
    51 сообщений
    Mentioned
    1 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от Error404 Посмотреть сообщение
    Если мы будем делать многозадачную ОС, то надо смотреть в сторону работы по прерыванию с буферизацией во всех случаях. Для однозадачной с прерываниями на передачу не стоит заморачиваться, делать только на прием. А для простых терминалок вообще можно без прерываний обойтись.

    Я поступил таким образом - маленько перелопатил порт F765.
    Теперь чтение порта выглядит так -
    D7 - TX_Ready (0 - идет отправка байта, порт не готов. 1 - можно записывать следующий байт для отправки)
    D6 - RX_Status (0 - нет нового принятого байта. 1 - принят новый байт. После считывания байта из F764 этот бит сбрасывается в 0).
    Итго, при чтении данных из F765 имеем соответственно:
    FF - принят новый байт, передатчик готов принять байт на отправку.
    BF - новых данных не принято, передатчик готов принять байт на отправку.
    3F - новых данных не принято, идет передача байта "наружу".
    7F - догадайтесь сами
    Скорости UART - биты D0 и D1. Набор скоростей - 9600 (умолчание), 19200, 38400, 57600. Установленная скорость с порта F765 не считывается.
    Зарись "1" в D6 порта F765 разрешает прерывание по приему байта. На ШД ставится FD.
    Передача байта с прерываниями не связана, и контролируется считыванием с порта F765 сигнала TX_Ready.

    Годится? Закрываем на этом моменте этот вопрос? Если да, то Error404, проверь пожалуйста, твой тест на "работоспособность" с такими параметрами порта

    ---------- Post added at 14:51 ---------- Previous post was at 14:46 ----------

    "Терминалка" на бейсике Ориона, которой я проверял прием данных, выглядит так:
    10 CLS
    20 D=PEEK(&F765)
    30 IF D=&BF THEN GOTO 20
    40 D=PEEK(&F764)
    50 PRINT CHR$(D);
    60 GOTO 20
    Миниатюры Миниатюры Нажмите на изображение для увеличения. 

Название:	lv01.jpg 
Просмотров:	220 
Размер:	2.2 Кб 
ID:	16578  
    Последний раз редактировалось Ewgeny7; 13.03.2010 в 15:00.
    ScorpEvo ZS 1024 turbo+ CF-HDD/FDD/Mouse/SMUC 3.1/ProfROMse/NeoGS/ZC
    Speccy-2007 128/AY/TR-DOS

    Сайт с документацией к "Scorpion ZS 256"

  9. #708
    Moderator
    Регистрация
    14.08.2006
    Адрес
    Владимир
    Сообщений
    4,577
    Спасибо Благодарностей отдано 
    61
    Спасибо Благодарностей получено 
    106
    Поблагодарили
    92 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от ewgeny7 Посмотреть сообщение
    Скорости UART - биты D0 и D1. Набор скоростей - 9600 (умолчание), 19200, 38400, 57600. Установленная скорость с порта F765 не считывается.
    Скорости 0=9600, 1=19200, 2=38400, 3=57600 ?

    Тест мне пока проверить негде. Я внес правки (во вложении) - может запустишь у себя? Кстати, MA80/MLINK (это который аналог M80 для PC и MSDOS) исходник из вложения не берет - ошибок не выдает, но и код после линковщика выдает бредовый. Я пока не разбирался кто виноват - ассемблер или загрузчик. Или какие-то специфические ключи нужны...

    Цитата Сообщение от ewgeny7 Посмотреть сообщение
    Зарись "1" в D6 порта F765 разрешает прерывание по приему байта. На ШД ставится FD.
    Передача байта с прерываниями не связана, и контролируется считыванием с порта F765 сигнала TX_Ready.

    Годится? Закрываем на этом моменте этот вопрос? Если да, то Error404, проверь пожалуйста, твой тест на "работоспособность" с такими параметрами порта
    Годится. Тут еще такой моментик: обработчик прерывания делает следующее (схематично):
    DI
    push all
    ld a,(F764)
    <do something>
    pop all
    EI
    reti

    Что произойдет если следующий байт (и прерывание) будут готовы раньше, чем обработчик сделает EI? Будут проглатываться байты? Как избежать?

    А какой "протокол наружу" реализован в USART? Что указываешь в свойствах соединения терминала?
    Вложения Вложения
    Последний раз редактировалось Error404; 13.03.2010 в 16:40.
    Лучше сделать и жалеть, чем не сделать и жалеть.

    Некоторые из моих поделок тут: https://github.com/serge-404

  10. #709
    Super Moderator Аватар для Ewgeny7
    Регистрация
    03.07.2005
    Адрес
    Санкт-Петербург
    Сообщений
    10,168
    Спасибо Благодарностей отдано 
    146
    Спасибо Благодарностей получено 
    76
    Поблагодарили
    51 сообщений
    Mentioned
    1 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от Error404 Посмотреть сообщение
    Будут проглатываться байты? Как избежать
    Вероятно - да...
    Импульс прерывания поступит, но разрешение еще не включено EI. честно говоря - не знаю. Предполагаю, что новый пришедший байт не зачтется.
    Или триггеры в Z80 всетаки запомнят запрос на прерывание и оно произойдет сразу же за EI... Это не ко мне вопрос. Наверное стОит почитать мануальчик по Z80, который я выкладывал недавно.

    Я сделал включение прерывания по D6 и вектор на шину данных FD. Вроде комп запустился, сейчас буду глюки искать. И твою программу проверю

    ---------- Post added at 18:16 ---------- Previous post was at 16:42 ----------

    Забавно вышло.
    Твоя программа выдает "wrong im2 vector"
    Буду искать ошибку.

    Зато как я загрузил твою прогу в Орион... Программатор флеши я оставил на работе.
    Шить нечем. Дай, думаю, попробую...
    В результате залил её через RS232 прямо на диск С. Загрузчик сваял на асме, отправил пакетный файл через терминал. На диске появился файлик
    ScorpEvo ZS 1024 turbo+ CF-HDD/FDD/Mouse/SMUC 3.1/ProfROMse/NeoGS/ZC
    Speccy-2007 128/AY/TR-DOS

    Сайт с документацией к "Scorpion ZS 256"

  11. #710
    Super Moderator Аватар для Ewgeny7
    Регистрация
    03.07.2005
    Адрес
    Санкт-Петербург
    Сообщений
    10,168
    Спасибо Благодарностей отдано 
    146
    Спасибо Благодарностей получено 
    76
    Поблагодарили
    51 сообщений
    Mentioned
    1 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от Error404 Посмотреть сообщение
    А какой "протокол наружу" реализован в USART? Что указываешь в свойствах соединения терминала?
    8 бит, 1-старт, 1-стоп, без контроля четности.
    Миниатюры Миниатюры Нажмите на изображение для увеличения. 

Название:	USART.JPG 
Просмотров:	202 
Размер:	27.5 Кб 
ID:	16582  
    ScorpEvo ZS 1024 turbo+ CF-HDD/FDD/Mouse/SMUC 3.1/ProfROMse/NeoGS/ZC
    Speccy-2007 128/AY/TR-DOS

    Сайт с документацией к "Scorpion ZS 256"

Страница 71 из 120 ПерваяПервая ... 676869707172737475 ... ПоследняяПоследняя

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

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

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

Похожие темы

  1. Ответов: 22
    Последнее: 06.10.2008, 14:17
  2. MAGIC-SOFT
    от White_Hunter в разделе Люди
    Ответов: 1
    Последнее: 22.08.2008, 08:56
  3. MAGIC-SOFT
    от White_Hunter в разделе Люди
    Ответов: 2
    Последнее: 21.08.2008, 13:31
  4. soft dt
    от roxx в разделе Софт
    Ответов: 4
    Последнее: 30.01.2008, 18:41

Ваши права

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