PDA

Просмотр полной версии : UART (последовательный порт) для Pentagon 128 2016



Вадим Димтревич
14.04.2020, 14:03
Здравствуйте!:v2_dizzy_coder:
Собрал себе Pentagon 128 (ревизия 2016 года, синяя плата) по информации из темы <<Новая плата Pentagon 128k модификация 2014 г. (https://zx-pk.ru/threads/23343-novaya-plata-pentagon-128k-modifikatsiya-2014-g.html)>>. И только потом понял, что у этой платы нет выходов во внешний мир. А хотелось бы хотя бы последовательный порт иметь (UART хотя бы. В идеале на 115200 с возможностью вызова ассинхронных прерываний по приему байта).
Все, что удалось найти по этой теме, это:

Вот эта (https://zxpress.ru/article.php?id=14341) статья о доработке последовательным портом + еще пара статей объяснений. Но толковых примеров там ясное дело нет и не ясно, работоспособна эта схема вообще или нет.
Рабочая схема (https://zx-pk.ru/threads/25670-yut-88-posledovatelnyj-port.html?highlight=%d0%bf%d0%be%d1%81%d0%bb%d0%b5 %d0%b4%d0%be%d0%b2%d0%b0%d1%82%d0%b5%d0%bb%d1%8c%d 0%bd%d1%8b%d0%b9+%d0%bf%d0%be%d1%80%d1%82) для ЮТ-88.
Анонс железки, которая сможет в NET и UART в журнале ZaRulem (https://zx-pk.ru/threads/23343-novaya-plata-pentagon-128k-modifikatsiya-2014-g.html?p=1056882&viewfull=1#post1056882).
И схема классического ZX Spectrum-а (https://zx-pk.ru/threads/23343-novaya-plata-pentagon-128k-modifikatsiya-2014-g.html?p=1056882&viewfull=1#post1056882), у которого последовательный порт был проброшен через порт AY чипа (каким образом это работает, так же не ясно, как и то, есть ли там прием). На вид это вообще похоже на то, что биты нужно выставлять самому и вымерять нужные промежутки времени (по сути, ногодрыг)..

Вопрос. Есть ли уже какое-то готовое рабочее решение на эту тему? Требования к нему:

Возможность работать на 9600, 115200
Возможность переключать скорости
Возможность получать прерывание по получении байта.
В идеале иметь возможность организовывать непрерывную передачу (как у всяких stm32, когда ты кладешь в регистр DR данные, они тут же начинают передаваться и в этот момент с 1-м тактом ты получаешь прерывание о том, что DR пуст и можно положить следующий байт, который пойдет после передачи первого)

nihirash
14.04.2020, 17:20
Робус смог сделать 115200 поверх АУ.

Тут скорее вопрос ко мне, что я не осилил проправить его код под себя. Может чуть позже выпущу апдейт софта, работающего заметно быстрее.

krotan
14.04.2020, 18:52
UART - это не последовательный порт. UART - это аппаратная надстройка последовательного порта с дополнительными функциями.
Нужен обязательно UART или достаточно просто последовательного порта RS-232?

Вадим Димтревич
14.04.2020, 20:28
UART - это не последовательный порт. UART - это аппаратная надстройка последовательного порта с дополнительными функциями.
Я, видимо, сильно молод... Настолько, что для меня это - синонимы...

Нужен обязательно UART или достаточно просто последовательного порта RS-232?
В идеале - именно UART + сигнал, что идет отправка. Впринципе, можно же имитировать UART простым последоватльным портом при условии, что мне нужен только режим 8N1, TX/RX + линия показывающая, что идет отправка (для организации RS-485). Хотя, если будет хотя бы просто последовательный порт, то, думаю, что конвертер RS-232 -> RS-485 сам подергает эту ножку.

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


Робус смог сделать 115200 поверх АУ.

Тут скорее вопрос ко мне, что я не осилил проправить его код под себя. Может чуть позже выпущу апдейт софта, работающего заметно быстрее.
А где этот код? Где подробнее изучить тему можно?

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

Основная идея - заупровлять несколькими устройствами с Pentagon-а. Они работают по интерфейсу на основе RS-485. На 115200. По собственному протоколу. Сам протокол-то я напишу. Проблем нет. По сути, сформирую массив байт для отправки. А вот как его передать и как получить потом так же массив байт-ответа для последующего разбора и отрисовки на экран результатов - это вопрос. Раньше никогда просто периферией помимо стандартной не управлял)

Serg6845
14.04.2020, 20:50
UART - это не последовательный порт. UART - это аппаратная надстройка последовательного порта с дополнительными функциями.
Нужен обязательно UART или достаточно просто последовательного порта RS-232?

а не наоборот? UART = Universal Asynchronous Receiver/Transmitter, устройство типа "последовательный порт". в минимальном варианте - RXD, TXD и все.
а вот RS232 - стандарт, в котором оговаривается как набор сигналов, так и электрические параметры этих сигналов.

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


Я, видимо, сильно молод... Настолько, что для меня это - синонимы...


UARTом обычно называется блок [внутри микроконтроллера], который осуществляет прием/передачу последовательных данных. чтобы из него получить RS232 или там 485 - надо прикрутить к нему трансивер соответствующего стандарта.


В идеале - именно UART + сигнал, что идет отправка. Впринципе, можно же имитировать UART простым последоватльным портом при условии, что мне нужен только режим 8N1, TX/RX + линия показывающая, что идет отправка (для организации RS-485).


Хотя, если будет хотя бы просто последовательный порт, то, думаю, что конвертер RS-232 -> RS-485 сам подергает эту ножку.

485 - двухпроводной? там кроме простого дергания ножки есть еще куча подводных граблей. типа коллизий, особенно когда устройств много. но это вопросы протокола, т.е. программа.



Основная идея - заупровлять несколькими устройствами с Pentagon-а. Они работают по интерфейсу на основе RS-485. На 115200. По собственному протоколу. Сам протокол-то я напишу. Проблем нет. По сути, сформирую массив байт для отправки. А вот как его передать и как получить потом так же массив байт-ответа для последующего разбора и отрисовки на экран результатов - это вопрос. Раньше никогда просто периферией помимо стандартной не управлял)

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

и на софтверную эмуляцию через AY на 115200 я бы особо не надеялся. особенно прием.

Вадим Димтревич
15.04.2020, 05:40
UARTом обычно называется блок [внутри микроконтроллера], который осуществляет прием/передачу последовательных данных. чтобы из него получить RS232 или там 485 - надо прикрутить к нему трансивер соответствующего стандарта.
В курсе, работал) Просто не очень в терминологии.

485 - двухпроводной? там кроме простого дергания ножки есть еще куча подводных граблей. типа коллизий, особенно когда устройств много. но это вопросы протокола, т.е. программа.

Да, двух проводной RS-485. Вопрос коллизий и адресации решается текущим протоколом. С какой-нибудь AVR все работает хорошо)

я видел в одном китайском переходнике самый простой способ - ножка передачи просто шла заодно на ножку переключения направления. и оно даже работает. хотя это не совсем правильно.
Жуть какая)

и на софтверную эмуляцию через AY на 115200 я бы особо не надеялся. особенно прием.
Ну хотелось бы полноценный драйвер. А то ресурс Z80 и так не очень большой. Тратить еще ни имитацию ногодрыга - такое себе)