Spørsmål:
Hvordan jobbe med ikke-tradisjonelle UART-overføringshastigheter
user28282
2018-06-28 18:25:29 UTC
view on stackexchange narkive permalink

Jeg prøver, uten hell, å kommunisere, ved hjelp av Arduino Nano, med en tilpasset enhet med en overføringshastighet på 800 kbit / s.

Arduino-koden ser slik ut:

  ugyldig oppsett () {// Sett oppsettkoden din her, for å kjøre en gang: Serial.begin (800000);} ugyldig sløyfe () {// Sett hovedkoden din her, for å kjøre gjentatte ganger: forsinkelse (5000) ; Serial.println (0x2be1);}  

Når jeg prøver å feilsøke det med PuTTY, blir resultatet:

PuTTY output @ 800 kb/s

Og når jeg endrer overføringshastigheten til 400 kbit / s, blir resultatet (som det skal være):

PuTTY output @ 400 kb/s

Har du noen ide?

En svar:
Edgar Bonet
2018-06-28 18:45:10 UTC
view on stackexchange narkive permalink

Arduino Nano klarer ikke 800 kb / s. Som du kan se i kildekoden, avrundes bitvarigheten til nærmeste multiplum av 8 CPU-sykluser. I ditt tilfelle er den avrundet til 3 × 8 CPU-sykluser, noe som gir en overføringshastighet på 666,666 kb / s. Det er 16% for sakte, en feil for stor til at enhver kommunikasjon er mulig.

Ved 400 kb / s er det ingen avrundingsfeil, så alt fungerer bra.

Rediger : Vær oppmerksom på at hvis du bygger din egen barebonesArduino, bør enten en 12,8 MHz eller en 19,2 MHz-krystall tillate deg å få den nøyaktige baudfrekvensen. Men så millis () , delay () og co. ville alle være av.



Denne spørsmålet ble automatisk oversatt fra engelsk.Det opprinnelige innholdet er tilgjengelig på stackexchange, som vi takker for cc by-sa 4.0-lisensen den distribueres under.
Loading...