Как же оно работает, как без /WR, так и без /RD?
Зы. Туплю, они просто на разъеме не нарисованы.
/WAIT планируется в этой схеме?
Вид для печати
Пока нет, возможно тинька успеет за процессором, в прошивке сделано два прерывания, одно на данные, другое на статус, выбираются они с помощью ИД7 и реагируют на смену уровня, то есть за время цикла чтения данных из тиньки или записи в неё прерывания срабатывают два раза, первый, при спадающем импульсе на соответствующем входе, она выдаёт или забирает данные с ШД в зависимости от состояния сигнала /RD, а при возрастающем переводит порт в высокоимпедансное состояние, ну а всё остальное работает в основном цикле программы.
Желательно прерывания на входах МК стробировать сигналами WR и RD, иначе придется реагировать на весь шум, идущий на шине адресов процессора.Цитата:
Сообщение от alx32
Вход прерывания надо использовать один, никакого выигрыша от того, что вы используете оба аппаратных прерывания не будет, поскольку всё равно придется по INT0 делать безусловный переход на отработку прерывания, а это дополнительно два такта, эквивалентно тому, что вы будете анализировать на входе МК состояние входа A0.
Почти уверен, что без WAIT обойтись не удастся, слишком коротки циклы RD и WR у INTEL 8080.
PS. Желательно конечно расписать все величины в цифре, но что-то давно я не занимался времянками 8080 :)
Что касается Z80, то для него, при тактовой частоте = 3.5 Мгц время отработки прерывания не должно превышать два с половиной периода тактовой частоты Z80. А это получается порядка 715 нсек.
Надо еще учитывать, что только реакция на прерывание у Тиньки занимает порядка 4..6 тактов, а это даже при 20 Мгц уже 300 нсек.
Я ориентировался на тайминги Z80 при частоте 5МГц, там период обращения к шине получается где-то 400нс, но вейтить всё равно придётся, хотя бы пропустить 1-2 такта МП.
Z80 хорош стробом адреса (MREQ), а значит гличей на сигналах CS не будет. А вот ВМ80 этим не может похвастать, поэтому я еще когда свой собирал видел гличи на дешифраторе портов F4xx-F7xx.
Я о том же.Цитата:
Сообщение от HardWareMan
Нельзя подавать на прерывание сигнал без подтверждения устойчивости данных (WR или RD).
Порт UART поддержан софтинками для Z80, поэтому... ;)
Собираю свой вариант UART. Покурив даташиты, выбрал Тини2313 в ДИПе. Порт В целиком уходит на шину данных, INT0 и INT1 идут на дешифратор ИД7 (F764 и F765), PD4 - WR, PD5 - RD, PD6 - WAIT. Вейт пока подключаю "на всякий случай", возможно он не понадобится. Время покажет. В качастве USB2UART использую готовый модуль на одной мелкосхемке CP2102. Лапки Таньки для подключения кварца пока свободны, можно будет воткнуть кварц на 20Мгц. Это пока тоже под вопросом, использую внутренний генератор 8Мгц.
Возможно, придется выбирать из двух вариантов - или вейт, или кварц. Как считаете, что лучше?
---------- Post added at 13:35 ---------- Previous post was at 13:32 ----------
Используем этот факт, обойдемся без буферов и прерываний. На Орион-2010 нужды в них не возникало. А схема (и код) упростятся в разы.
я за кварц
А на какую частоту кварц хотите?
А если на ВВ51 и ВИ53, по старинке, чтобы не мучаться? Я так делал и COM-мышу ради интереса подключал.
На 20МГц будут ошибки, чтоб их не было, нужны усартовские кварцы, такие как 18,432; 11,0592; 7,37...
Евгений, как бы не получилось так, что у нас пересылка этих байтов превратится в поток, ну и полезут ошибки...
На Орион-2010 частота кварца 50Мгц. Никак не кратно "кварцевым".
Алгоритм работы такой - отправляем байт, читаем в цикле статус, по готовности отправляем следующий. Т.е. USART перезапускается каждый раз. Битов у нас 10, поэтому искажения в частоте в несколько процентов беды не создадут. Реально же отклонения будут меньше.
---------- Post added at 22:32 ---------- Previous post was at 22:28 ----------
Что-то я убился уже... Событие "отправка байта" отлавливаю внешним прерыванием, первая же команда читает порт В (шина данных). Но получаем какую-то битовую кашу. Менял условия, читал и по низкому уровню, и по обоим фронтам. Думаю... :v2_dizzy_newspaper:
Люди, дайте кто нибудь нормальную распиновку системного разъёма Орион-512?
Решил RS-232 сделать на отдельной плате, а так же поместить туда часики на КР512ВИ1.
http://img.tapatalk.com/551aa527-86b3-c477.jpg
Так какую же схему решил делать? Че-та я гляжу, много корпусов. Одних 20-ногих регистров(или буферов) аж 3 штуки
Фух, сдал экзамен на электробезопасность :) Можно продолжать измываться над RS232.
Первый вариант, второй без вейта работать не захотел...
Вместо ЛП8 поставил АП5, и вместо второй ТМ2 поставил ТМ7.
То есть скорость будет задаваться тремя битами, а не двумя, как раньше. Нужно будет согласовать какие битрейты ещё будут.
Ну что, получает что-нибудь?
Ох, пока не до него... с программатором для Winbond'ов мучаюсь, вроде пишет и стирает, а вот прочитать... в линуксе проблема с приёмным буфером...
Сегодня попробую воткнуть прошитую ПЗУ вместо ROM-диска, если всё нормально, то больше заморачиваться не буду и перейду к RS-232...
временно уполз на "Ленинград-2012", там косяки табунами пока ходят :(
Error404, а по каким точно адресам лежит КР512ВИ1, F760-F761, или какие-то другие?
Так, ладно, в общем программатор пишет и ладно, часики тикают, правда насколько точно не знаю, пора браться за прошивку ATTiny2313...:v2_dizzy_botan:
Да пока никак, тут семейных проблем навалилось, с работой непонятки, да плюс ещё винт на компе накрылся, сейчас с 4Гб компакт флеш работает через переходник, места не хватает чтобы avr-gcc поставить, не говоря о чём-то ещё...
:'(
"Ой, напрасно, тётя..."(С) Нафига тебе тебе этот обогреватель? :v2_conf2:
Хочешь, свою плату сфотографирую в высоком разрешении (или перепишу номиналы микрух)? 155 серия давно не производится, там уже возможны глюки от "перележания" на складах.
---------- Post added at 18:25 ---------- Previous post was at 18:24 ----------
Это я Сергея подковырнул :)
---------- Post added at 18:27 ---------- Previous post was at 18:25 ----------
У меня, к примеру, никак. "Голая" Тинька не хочет устойчиво читать шину данных, нужно обвешивать ее регистрами-защелками. А это уже приближает схему к варианту alx32. А нафига нам два велосипеда?
Вот и я тоже, попробовал и обломался, пришлось делать первоначальную схему, правда получилось на этой же плате без дополнительной дешифрации ещё и часики прикрутить, так как все элементы там уже были, выбор адреса или данных получилось сделать от штатного ИД7, предварительно инвертировав...
Я склоняюсь к мнению, что проще будет использовать ПЛИСку, а на нее повесить и компорт, и часы. ПЛИСе проще работать с шинами.
---------- Post added at 19:32 ---------- Previous post was at 19:31 ----------
С другой стороны, Камиль же как-то прилепил Мегу на спектрумовскую шину :)