Czy jest jakiś kod, którego mogę użyć do ustalenia prędkości wybranego portu szeregowego?
serial
arduino-mega
Hayden Thring
źródło
źródło
Odpowiedzi:
Nie ma najwyższego poziomu, łatwego w użyciu sposób. Przepraszam. Prawdopodobnie łatwiej jest po prostu zapisać wybraną prędkość transmisji w zmiennej podczas konfiguracji portu szeregowego.
W każdym razie, to, co możesz zrobić dla sprzętowych UART-ów opartych na AVR, to cofnięcie czynności
Serial.begin
ustawiania określonej prędkości transmisji, ale jest to trochę uciążliwe. Oto kod do ustawiania prędkości transmisji:Możesz znaleźć wyniki tego, czytając odpowiednie rejestry UCSRA, UBRRH i UBRRL. Na urządzeniu uno są to prawidłowe nazwy rejestrów, na urządzeniu mega: UCSR0A, UBRR0H, UBRR0L dla portu szeregowego, UCRS1A ... dla portu szeregowego itd. Tablice inne niż avr (i
Serial
na Leonardo) będą zupełnie inne.Będzie istniał jeden stan dla tych trzech rejestrów na sprzętowym porcie szeregowym AVR dla konkretnej płyty (i częstotliwości tej płyty) przy każdej szybkości transmisji. Możesz spróbować wykonać równanie, aby uzyskać oryginalną szybkość transmisji, ale zalecam po prostu porównanie bezpośrednich wartości z pewnego rodzaju wyszukiwaniem, ponieważ błędy zaokrąglania arytmetycznych liczb całkowitych spowodują, że będzie to wielki bałagan.
Na przykład na moim mega UBBR0H, UBBR0L i UCSR0A są 0, 207, 2 przy 9600 bodów, ale są to 0, 51, 2 przy 38400 bodów i 0, 16, 0 przy 57600 bodów.
źródło