eu acho que o 68681 da motorola eh infinitamente mais interessante (ou como vc diria: bem bolado, bem engenhoso). eh um bom exemplo de como funciona controle de fluxo por hardware.
voce comeca testando se a TX FIFO do 68681 esta vazia. se estiver, vc pode escrever nela sem se preocupar (quando ela encher, um flag ira sinalizar que vc nao deve mais escrever). o que esta na TX FIFO soh eh transmitido efetivamente quando o sinal CTS esta ativo (ele eh ativo em nivel baixo). como o TX esta conectado no RX remoto e o CTS esta conectado no RX remoto, a analise passa para o lado receptor do 68681.
neste caso, ele vai receber ateh encher a RX FIFO. quando isso acontecer, ele ira automaticamente desativar RTS (que eh ativo em nivel baixo, tal como CTS). e desativando RTS, q esta conectado ao CTS remoto, vc inibe a transmissao remota, de modo que nao estoura a RX FIFO do lado receptor. na medida que a RX FIFO eh esvaziada e a fila anda, o 68681 ativa RTS indicando que o outro lado pode voltar a transmitir.
existem muitas variacoes do 68681, sendo que no componente original acho que a TX FIFO possui 2 bytes e a RX FIFO possui 3 bytes. com o mecanismo de controle de fluxo, evita-se perder caracteres em funcao de um buffer overflow na RX FIFO.
note que para controle de fluxo por hardware com alta velocidade, apenas CTS e RTS sao usados, os outros pinos sao para funcionalidades estaticas e nao servem para sinalizacao de alta velocidade.
Djalma Toledo Rodrigues escreveu:Francesco escreveu:... Isso indica que o terminal que irá receber é quem solicita os dados para quem vai transmitir?....
Isso . E porque ? Porque ele possui um Buffer logo, só permite que o outro envie se espaço houver.
O Transmissor, no caso do 8251, também possui um Buffer mas de apenas um Byte. Logo o além do Byte que esta no momento sendo enviado em série, de D0 a D7, o próximo Byte já esta no Buffer.
(Um sistema bem bolado, bem engenhoso)
.