Olá. Boa noite.. Estou estudando números binários e surgiu uma dúvida...

Eu sei que existe o pulso clock que determina o ritmo dos pulsos 1 e 0.

Ate aí tudo bem. Porem..como eu vou saber quando começa e onde termina um determinado valor passado?

Exemplo... Vejam essa imagem
https://encrypted-tbn0.gstatic.com/images?q=tbn:ANd9GcTp_pqGazCBly3...

Pelo que entendi um byte é igual a 8 bits.. Porque nesta imagem, após os 8 bits.. Tem esses outros 3 "uns"?

Alguém poderia me dar alguma explicação?

Obrigado

Exibições: 921

Responder esta

Respostas a este tópico

Aih, para sua imagem, a questão está acima dos numeros binários. Ela seria de transmissão serial.

Se entendi, dentro de uma transmissão serial vc quer saber como diferenciamos o primeiro bit.

Depende... Depende do protocolo.

Protocolo é o nome que se dá ao que foi combinado fazer. Qdo nossa Exma Presidenta por ex chega em uma recepção de gala as coisas acontecem seguindo um protocolo, que não deveria ser quebrado, embora quase sempre seja, em especial por quem não os conhece ou não os respeita.

Mas voltando, protocolo é como foi combinado, como foi feita a regra.

Dentro da regra "Serial Síncrona" por ex um sinal é o clock e o outro o dado. O clock nunca para e o silencio absoluto, representado por 11111111... significa nada de transmissão. Quando um 0 aparece ele é o Start bit, que é um bit colocado a mais, de valor 0 que significa que atras dele vem um byte. Para fechar esse byte podem existir stop bits.

Não é um metodo infalível. Se vc mandar uma sequencia de caracteres iguais, por ex, sem intervalo, e provocar um mau contato pode conseguir passar a receber ou caracter distinto. Mas se houver um silencio com duração igual a 1 caracter o sincronismo do start é restabelecido.

Ja dentro da regra UART não há sinal de clock, ele é criado internamente derivando do proprio sinal de dados. Para perfeito sincronismo do clock como deve ser (meio pulso) é comum usar o conceito de meio bit de start ou 1,5bit de start.

Outro comum é o protocolo de controle remoto de TV ou portão de garagem, baseado em larguras (ou posição) maiores e menores. O start é um 5T, os bits tem largura de T ou 3T. Pela largura se sabe se é start, 0 ou 1. 

E assim vai.

Leitura recomendada:

http://slideplayer.com.br/slide/398114/

Olá, boa noite. Obrigado pela longa e precisa resposta. Até mesmo a analogia com nossa presidente.. Aliás se fosse a sra Dilma como clock os dados estariam corruptos (ou seriam corrompidos) kkkk.


Bom.. Acho que minha dúvida seria mesmo na comunicação UART... A exemplo do nosso arduino... Que envia dados apenas pelo tx.. (um único fio)... Como funciona neste caso? Se não tem um ritmo, como saber se o bite é 1 ou 0? E como saber se a sequência terminou? Após conter os 8 bits formando um Byte?

Desculpe se essa pergunta é tola, porém exatamente sobre essa minha questão não achei nada a respeito..


Valeu

Eh um detalhe que pouca gente se interessa, como uma geladeira:

Como funciona:

Grupo 1) Confira a tensão para a qual foi fabricada, ligue em uma tomada com a tensão correspondente, ajuste a temperatura e usufrua.

Grupo 2) Um motor aciona um compressor que por efeito do princípio de.... 

Existe um oscilador interno ao receptor e ao transmissor. Ele sempre é de frequencia muito maior. Coisa como 16MHz. Um contador por ex conta 416 vezes e inverte um sinal, depois mais 416x e inverte novamente (considerei 19200 para o calculo). O nome dessa implementação é um divisor de frequencia programável.

Antigamente era feito com integrados TTL. Algo como um contador mesmo (CD4040) e um comparador de magnitude (74LSalguma coisa) que tem na sua outra entrada um latch (74LS373 por ex) que seria um registrador do pulso de divisão.

Agora, para sincronizar os pulsos de clock (transmissor em fase com o receptor) é preciso fazer um circuito de reset, que é um detector de borda, que usa o proprio sinal de dados para gerar um reset lá no contador.

Cada vez por ex que o sinal de dados passa de 0 para 1 o sinal de clock é resetado, ficando na fase correta.

Para complicar um pouco esse reset na verdade não é para 0 e sim para 50% da contagem. Isso acontece pq é preciso que cada dado seja lido no meio do tempo que ele fica disponível, que é o momento em que fica mais estável. 

E para complicar ainda mais um pouco o TX tem um clock numa fase, que é passada para o outro lado. Mas a via é bidimensional... Então o mesmo kra que gera um clock para o TX tem seu clock de RX sincronizado ao do outro ! Ou seja: Não necessariamente o clock de TX e de RX de um dispositivo tem a mesma fase, mas é transparente. A eletronica dentro de um integrado faz toda a mágica. Antigamente para ter uma UART era preciso um grande numero de CIs, depois só um (8250 ou 16550):

Agora isso cabe dentro de um cantinho do microcontrolador. Alguns chegam a ter 4 dessas. Fora outras tantas interfaces seriais de outros protocolos (I2C, SPI, CAN, etc).

 

 

Ola... antes de mais nada, obrigado pela resposta! Bem detalhada!

Eu fiz vários testes aqui na bancada pra ver se eu entrendo aqui a comunicação UART.

Liguei um arduino no outro (Um TX e o outro RX) e usei a softwareSerial com BaudRate de 1200bps. Esses posts são feitos em pulso a cada segundo....

Se eu monitorar a serial do arduino RX... consigo recuperar perfeitamente as informações enviadas pelo outro arduino.


Para tentar visualizar as informações, coloquei o osciloscópio no pino que envia o sinal serial e enviei os comandos:

MYSerial.write("0");

Depois
MYSerial.write("1");

Depois:
MYSerial.write("2");


Respectivamente... nas fotos em anexo... Porém eu achei que fosse visualizar os números correspondentes em binários,, mas na verdade formou-se outro padrão.

O correto não seria retornar os seguintes valores?
Para o MYSerial.write("0") deverisa ser 0, não?

Para o MYSerial.write("1") deverisa ser 1, não?

Para o MYSerial.write("2") deverisa ser 10, não?

os padrões registrados no osciloscópio  ficam diferentes..


Anexos

Não dá para analisar comunicação serial com osciloscópio.

Use um analisador lógico - ele próprio descodifica os bits .

http://labdegaragem.com/profiles/blogs/tutorial-analisador-l-gico-c...

Esses bits a mais são os de start (antes) e de stop (depois).

Para localizar um bit mande a sequencia, por ex: 01 e 02, depois 81 e 82. va observando o que muda de um para o outro.

Vc pode ver varias cartas de tempo no datasheet do 8250:

http://pdf1.alldatasheet.com/datasheet-pdf/view/89961/NSC/INS8250.html

De onde é essa figura ?

Normalmente os bits adicionais são de sincronismo em uma comunicação serial . 

Pode ser que seja os três primeiros ZEROs ou os três ultimos UNS.

Olá.
Essa figura era apenas para ilustrar o clock e o pulso de dados... Jus justamente queria saber se os uns do final significavam "fim de transmissão".

Obrigado

RSS

© 2024   Criado por Marcelo Rodrigues.   Ativado por

Badges  |  Relatar um incidente  |  Termos de serviço