[an error occurred while processing this directive]
[an error occurred while processing this directive]
|
Об аппаратном управлении потоком при передаче данных через последовательный порт
Вот такая проблемка возникла. Есть внешнее устройство, работающее с машиной по протоколу RTS/CTS. При приеме данных в компьютер все происходит правильно. Теперь о передаче. Устройство имеет буфер приемника – 128 байт. Когда приняты 64 байта – выставляет сигнал RTS=1, машина должна ловиь этот сигнал и немедленно приостанавливать передачу. На деле все получается гораздо хуже. Машина действительно ловит этот сигнал, но после его получения успевает передать еще пару десятков байтов. Сколько именно – всегда по-разному. Посему неясно, как определить, сколько данных получено. Можно сделать это по тайм-ауту, но задолбешься его писать на AT89C51. Может, кто уже с таким багом сталкивался ?
С уважением, Виноградов Алексей
E-mail: info@telesys.ru