Próbowałem zobaczyć znak ASCII „A” z oscyloskopem, ale rzeczywista wartość binarna i wartości oscyloskopu są różne, dlaczego tak jest? ASCII „A” Wartość binarna - 01000001
Oscyloskop wyświetla ten wykres:
Używam Arduino Uno do wysyłania wartości ASCII za pomocą kodu:
void setup() {
Serial.begin(9600);
}
void loop() {
Serial.println("A");
delay(1000);
}
źródło
println
polecenia, które oznacza wydrukowanie ciągu, a także „\ r \ n”. Tak więc trzy postacieJeśli spojrzysz na dokumentację Arduino println () , zobaczysz, że dołącza ona znak powrotu karetki i znak końca linii. W systemie dziesiętnym otrzymamy 65 (A), 13 (CR) i 10 (LF), co w binarnym tłumaczeniu oznacza:
Asynchroniczne dane szeregowe wysyłane są najpierw LSB, dzięki czemu stają się:
Twój sygnał jest bezczynny, więc bit startowy będzie wynosił 0, a bit stopowy będzie równy 1, więc dodając go do każdego bajtu, otrzymujesz:
Trudno jest ustalić dokładny czas z twojego diagramu, ale wydaje się, że przynajmniej z grubsza się zgadza i powinien dać ci wyobrażenie, skąd pochodzą niektóre dodatkowe bity i dlaczego są ponownie zamawiane. Link do Wikipedii udostępniony przez Kvegaoro zawiera wiele dobrych informacji na temat asynchronicznych danych szeregowych.
źródło
Jeśli w strumieniu, który pokazuje, że jest szereg asynchroniczny , oscyloskop pokaże odpowiedni bit początkowy, bit (y) stopu (ów) i bity parzystości. Weź również pod uwagę, czy twój sygnał jest odwrócony, czy nie, a pogoda to Najpierw znaczący bit lub leas znaczący pierwszy. Jeśli dodasz więcej szczegółów na temat strumienia szeregowego, który reprezentowałeś na zdjęciu, możemy dać ci bardziej szczegółową odpowiedź, w przeciwnym razie jest to tylko wykształcone przypuszczenie
źródło