А если попробовать завести RxRDY через RС цепочку, по типу как сделано в "Ленинграде", может поможет.
Ух, прям руки чешутся, глядя на вас. Пошёл свою железку допиливать...![]()
А если попробовать завести RxRDY через RС цепочку, по типу как сделано в "Ленинграде", может поможет.
Ух, прям руки чешутся, глядя на вас. Пошёл свою железку допиливать...![]()
Ленинград-1 48К
ЮТ-88 в минимальной конфигурации
ScorpEvo ZS 1024 turbo+ CF-HDD/FDD/Mouse/SMUC 3.1/ProfROMse/NeoGS/ZC
Speccy-2007 128/AY/TR-DOS
Сайт с документацией к "Scorpion ZS 256"
ScorpEvo ZS 1024 turbo+ CF-HDD/FDD/Mouse/SMUC 3.1/ProfROMse/NeoGS/ZC
Speccy-2007 128/AY/TR-DOS
Сайт с документацией к "Scorpion ZS 256"
А не логичней было бы все принятые данные сначала загонять в какой-то буфер (сколько там ? 20х2=40 байт), и только по окончанию посылки передавать данные из буфера в дисплей ?
ScorpEvo ZS 1024 turbo+ CF-HDD/FDD/Mouse/SMUC 3.1/ProfROMse/NeoGS/ZC
Speccy-2007 128/AY/TR-DOS
Сайт с документацией к "Scorpion ZS 256"
Немного вспомню, как это делал на 6850...
1. Передача слова на внешнее устройство:
- Проверяем регистр статуса передачи. Если не пустой, значит передача предыдущего слова ещё не окончена - ждём в цикле. Если пустой, то записываем в регистр данных слово на передачу. По идее передача начинается сразу, как только слово помещено в регистр данных.
2. Приём слова с внешнего устройства:
- проверяем регистр статуса приёма. Если пуст, то нам ничего не поступило, можем заняться основной программой. Если полон, то считываем слово из регистра данных. Обнуляем регистр статуса приёма.
- проверяем полученный байт. Если это комбинация ctrl+C, то передаём управление прерыванию исполнения текущей программы, иначе просто принимаем байт (по крайней мере у меня для работы с Бейсиком это нужно).
Т.е. без проверки флагов никак. А вот для остановки внешнего устройства, если оно торопливое, а мы не успеваем обрабатывать, RxRDY как раз и нужен, в комп заводить его не надо кмк, а вывести сигналом RTS наружу
Почти та же фигня и с ЛСД, у многих есть сигнал BUSY, который показывает, что дисплей ещё не обработал символ. Вот и приходится метаться между этими двумя "неуспевающими"...
Последний раз редактировалось rw6hrm; 07.04.2016 в 15:06.
С любовью к вам, Yandex.Direct
Размещение рекламы на форуме способствует его дальнейшему развитию
rw6hrm, я до кучи и про 6850 документы читал. Была мысль ее использовать (там есть выход INT), но у нас их нету в питерах.
А вот выход RxRDY у ВВ51А даже в документации заводится на проц для инициации прерывания. Но рабочего примера с прерыванием я не нашел
А насчет флагов - все подобно 6850.
Бит 0 регистра статуса - 1- передатчик занят, 0 - можно засылать байт на отправку.
Бит 1 - 1 - новый байт в приемник не прилетел, 0 - есть новый поступивший байт.
Т.е., когда порт статуса читается как 0, то делай вообще что хочешь![]()
ScorpEvo ZS 1024 turbo+ CF-HDD/FDD/Mouse/SMUC 3.1/ProfROMse/NeoGS/ZC
Speccy-2007 128/AY/TR-DOS
Сайт с документацией к "Scorpion ZS 256"
Последний раз редактировалось ALS; 07.04.2016 в 18:37.
В хабровских статьях о применении ЖКИ не парятся относительно сигнала занятости ЖКИ, там просто играются программными задержками. Но ведь не всегда это возможно, если проц под сотню МГц и выше, тогда фиксим задержками ибо не жалко, а если, как в нашем случае, максимум 2-3 МГц (тактовой, реально рабочая скорость ещё ниже раза в три-пять), то задержки уже жирно как по временным затратам, так и по коду в ПЗУ...
Ewgeny7, я вот посматриваю на Вашу реализацию, учусь, поскольку с 6850 уходить придётся, если надеяться, чтобы конструкцию хоть кто-то повторил...
Сейчас глянул даташит на AC162D : Set RAM address - 39uS и Write DATA to RAM - 43uS
Это даже меньше, чем пауза между байтами при 9600bps.
Кроме того, пока мы принимаем следующий байт (а это вообще ок. 950uS), это тоже своего рода задержка для ЖКИ.
Т.е. - да, при 9600 никакие доп. задержки для ЖКИ точно не нужны (ну, разве что, во время инициализации и очистке дисплея, там от 1,5mS до 30). И тут главное, чтоб проц успел.
Последний раз редактировалось ALS; 07.04.2016 в 19:30.
Эту тему просматривают: 1 (пользователей: 0 , гостей: 1)