Пишу программу на си для работы через RS-232 с одним устройством. Как можно контролировать состояние TxD выхода? Необходимо в определенный момент изменять его с high на low и наоборот
Я думаю дебе надо почитать мат часть на твой контроллер чип итд итп, и тогда ты поймёш что такое TxD RxD CTS RTS. И что его состояние в определённый момент меняет автомат сам исходя из того что в его буфер вывода записанно. Ну это если ты софтово ручной RS не делаеш.
Доку прочел, но ответа не нашел Другая формулировка. RS-232 должен использоваться нестандартно, т.е. от всех пинов требуются только переходы high-low. С RTS и DTR никаких проблем, а с TXD никак
Контроллер паял сам. Так что его мат часть знаю. TXD передается на регистр сдвига, который получает такт от DTR. После получения 8 битов одним импульсом RTS выходы регистра сдвига принимают соответствующие значения
Твой самопальный контроллер стоит на шине ISA или PCI? Тогда тебе надо писать ал-я драйвер к нему.
Если твой контроллер висит на противоположном конце провода 232, то надо определиться какого формата пакеты долен генерить твой 16550 который стоит на Линуксе. 8N1?
Допустим Tx, Rx, GND подключены стандартно. Модемные сигналы RTS, DTR используются стандартно? Если тебе надо, то ты можешь управлять стандартыми модемными сигналами RTS, DTR на своём uart16550 через ioctl()
Если ты знаешь схемотехнику и uart16550 то как ты себе представляешь возможность настройки этой микросхемы, чтобы она выдавала данные в таком вормате. По моему минимальный размер поля данных 7 бит что ли... но не как ни один бит.
Он с другого конца провода
На машине uart16550
А нсчет возможности..... Схему саму нашел в одном журнале. Там еще програмка под винду была. Так вот она спокойно с ним работает
А тебе сильно нужна дальнобойность? Если нет, то параллельный порт удобнее. Во-первых, не нужно преобразовывать 2-полярные сигналы. Во-вторых, можно легко управлять любыми сигналами прямо из юзер-спэйс записью нужного числа в /dev/parport безо всяких ioctl.
UART можно перевести в break-состояние. При этом на TXD будет напряжение +3..15V. Для этого необходимо LineControlRegister уарта (RegisterOffset: 3) 6 бит поставить на 1. break-состояние будет сново покинуто, когда этот бит будет 0
> Доку прочел, но ответа не нашел Другая формулировка. RS-232 должен использоваться нестандартно, т.е. от всех пинов требуются только переходы high-low. С RTS и DTR никаких проблем, а с TXD никак
в таком случае - никак. стандартные UARTы не поддерживают таких извратов.