Existe algum código que eu possa usar para descobrir em que velocidade a porta serial escolhida está sendo executada?
serial
arduino-mega
Hayden Thring
fonte
fonte
Respostas:
Não existe um nível superior, fácil de usar. Desculpa. Provavelmente, é mais fácil armazenar a taxa de transmissão escolhida em uma variável quando você configura a porta serial.
De qualquer forma, o que você pode tentar fazer pelos UARTs de hardware baseados em AVR é desfazer o que
Serial.begin
faz para configurar uma taxa de transmissão específica, mas é um pouco trabalhoso. Este é o código para definir a taxa de transmissão:Você pode encontrar os resultados disso lendo os registros UCSRA, UBRRH e UBRRL corretos. Em um uno esses são os nomes de registro corretos, em um mega seu UCSR0A, UBRR0H, UBRR0L para Serial, UCRS1A ... para serial1 e assim por diante. Placas não-avr (e
Serial
em um leonardo) serão totalmente diferentes.Haverá um estado único para esses três registros em uma porta serial de hardware AVR para uma placa específica (e a frequência dessa placa) a cada taxa de transmissão. Você pode tentar fazer uma equação para obter a taxa de transmissão original, mas eu recomendo apenas comparar os valores diretos com uma pesquisa de algum tipo, porque os erros de arredondamento aritmético inteiro tornarão uma grande bagunça.
Por exemplo, no meu mega UBBR0H, UBBR0L e UCSR0A são 0, 207, 2 a 9600 baud, mas são 0, 51, 2 a 38400 baud e 0, 16, 0 a 57600 baud.
fonte