Tentei ver um caractere ASCII "A" com um osciloscópio, mas o valor binário real e os valores do osciloscópio são diferentes. Por que isso? Valor binário ASCII "A" - 01000001
O osciloscópio exibe este gráfico:
Eu uso um Arduino Uno para enviar o valor ASCII usando o código:
void setup() {
Serial.begin(9600);
}
void loop() {
Serial.println("A");
delay(1000);
}
fonte
println
comando, o que significa imprimir a string, além de um "\ r \ n". Então, três caracteresSe você olhar para a documentação do Arduino println () , verá que ela anexa um retorno de carro e avanço de linha no final. Portanto, em decimal, você terminará com 65 (A), 13 (CR) e 10 (LF), que em binário se traduz em:
Os dados seriais assíncronos são enviados primeiro ao LSB para que se tornem:
Seu sinal está ocioso, então o bit inicial será 0 e o bit final será 1, adicionando isso a cada byte e você terá:
É um pouco difícil determinar o tempo exato do seu diagrama, mas isso parece corresponder pelo menos aproximadamente e deve lhe dar uma idéia de onde vêm alguns bits extras e por que eles são reordenados. O link da Wikipedia fornecido pelo Kvegaoro fornece muitas informações básicas sobre dados seriais assíncronos.
fonte
Se você mostrar que o fluxo é serial assíncrono , o osciloscópio mostrará o bit inicial correspondente, o (s) bit (s) de parada e os bits de paridade. Também leve em consideração se o seu sinal está invertido ou não e o clima é o bit mais significativo primeiro ou o menos significativo primeiro. Se você adicionar mais detalhes sobre o fluxo serial que você representou na imagem, poderemos fornecer uma resposta melhor e mais detalhada, caso contrário, esse é apenas um palpite.
fonte