Mikä on Serial.begin (9600)?

Tiedän, että tällä pyritään alustamaan jotain:

Serial.begin(9600); 

Mutta haluan tiedät mitä se todella tarkoittaa?

Kommentit

Vastaa

Serial.begin(9600) ei oikeastaan tulosta mitään. Sitä varten haluat käyttää Serial.print("Hello world!") tekstin tulostamiseen” Hei maailma!” sarjakonsoliin. Pikemminkin se alustaa sarjaliitännän nopeudella 9600 bittiä sekunnissa.

Sarjayhteyden molemmat puolet (ts. Arduino ja tietokone) on asetettava käyttämään samaa nopeutta sarjayhteyttä saadakseen minkäänlaisia ymmärrettävää tietoa. Jos näiden kahden järjestelmän mielestä nopeus on ristiriidassa, tiedot hämmentyvät.

9600 bittiä sekunnissa on Arduinon oletusarvo ja se on täysin riittävä useimmille käyttäjille, mutta voit muuttaa sen muille nopeuksille: Serial.begin(57600) asettaisi Arduinon lähettämään nopeudella 57600 bittiä sekunnissa. Sinun on määritettävä mikä tahansa tietokoneellasi käyttämäsi ohjelmisto (kuten Arduino IDE: n sarjamonitori) samalla nopeudella, jotta näet tiedot lähetetään.

Kommentit

  • Baud ja BPS ovat kaksi eri asiaa … ei ’ löydä etsimääni linkkiä.
  • entä jos laitan ” sarja .begin (0); ” tai ” Sarja.begin (4000); ” . Tarkoitan, että haluan tietää, mikä on numeroiden välinen ero?
  • Serial.begin-asetusta käytetään viestinnän nopeuden asettamiseen bitteinä sekunnissa. Yksi tavu on yhtä suuri kuin 8 bittiä, mutta sarjaliitännät lähettävät aloitus- ja lopetusbitin tunnistaakseen tietyn tavun alun ja lopun vastaanottavalle järjestelmälle. Siten yhden merkin lähettämiseen tarvitaan 10 bittiä. Käyttämällä Serial.begin(0) kerrotaan Arduinolle, että sen pitäisi olla yhteydessä sarjaan nopeudella 0 bittiä sekunnissa. Kuten voit odottaa, tämä tarkoittaa, että Arduino ei koskaan lähetä tietoja ollenkaan. Serial.begin(4000) saa Arduinon lähettämään tietoja nopeudella 4000 bittiä sekunnissa. Tämä ei ole standardia, mutta muuten hieno.
  • Lyhyesti sanottuna: numeron muuttaminen muuttaa nopeutta. Pienentämällä numeroa (esim. Serial.begin(300)) Arduino lähettää tietoja hitaammin. Suurentamalla sitä, sanoen 57600, lähetät tietoja nopeammin. Sekä lähettävän että vastaanottavan järjestelmän on sovittava käytettävästä nopeudesta: tietokoneesi ’ sarjaohjelma, kuten Arduino Serial Monitor -ikkuna, antaa sinun asettaa nopeuden, jolla tietokoneesi vastaanottaa tietoja, mutta voit valita vain yleisimmistä nopeuksista: 300, 1200, 2400, 4800, 9600, 19200, 38400, 57600 ja 11520 bittiä / s. Voit ’ t syöttää muita nopeuksia, kuten 4000. 9600 on yleensä hyvä.
  • Baud and BPS are two different things... can't find the link I was looking for now. – Tässä ’ yksi selitys: Liite C: ” baud ” vs. ” bps ”

Vastaa

Kuva on 1000 sanan arvoinen, joten he sanovat (1024 sanaa, jos työskentelet tietokoneiden kanssa), joten lähetän joitain kuvia …

Asetin Unon lähettämään ”Fab” 9600 baudilla ja siepasin tulokset logiikan analysaattoriin.

Sarjakomennot - 3 kirjainta

Punaisella varjostetut osat ovat tavujen välinen tyhjäkäyntiaika.

Yllä olevasta graafisesta huomautuksesta Tx (lähetys) -datalinja on normaalisti korkea (1), kunnes se putoaa matalalle merkin (tavun) alkamisen osoittamiseksi. Tämä on aloitusbitti . ) näytetään siirtonopeudella (9600 näytettä sekunnissa). Sen jälkeen viiva nostetaan jälleen korkealle. Tämä on pysäytysbitti (punainen osa). Sitten näemme seuraavan merkin alkubitin ja niin edelleen. ”Stop” -osa voi olla määrittelemättömän pitkä, mutta sen on kuitenkin oltava vähintään yhden bittinen.


Ensimmäisen merkin yksityiskohdat (kirjain ”F” tai 0x46 tai 0b01000110) voivat olla nähty täällä:

Sarjakomennot - yksi tavu

  • A – ei tietoja (Tx on korkea)

  • B – ”Aloitusbitti”. Rivi otetaan matalaksi kertoa vastaanottajalle, että merkki (tavu) alkaa lähettää. Vastaanotin odottaa puolitoista kelloa ennen näytteen ottamista viivasta.

  • C – Ensimmäinen merkki saapuu (kirjain ”F” tai 0x46 tai 0b01000110). Kellobittiä sinänsä ei ole, saapuva data näytetään yksinkertaisesti baudin (lähetys) nopeudella. Toisin kuin SPI-tiedonsiirto, data saapuu ensin vähiten merkitsevään bittiin (jos et lähetä 8 bittiä tavua kohti). Siten näemme 01100010 (pikemminkin kuin 01000110).

  • D – Pysäytysbitti. Tämä on aina korkea, jotta voimme erottaa tämän tavun loppun ja seuraavan alun. Koska aloitusbitti on nolla ja lopetusbitti on yksi, tavasta toiseen siirtyminen on aina selkeä.

  • E – Aloitusbitti seuraava merkki.


Loogisen analysaattorin sieppauksesta näet, että T1 - T2 on 0,1041667 ms, ja kuten tapahtuu eli 1/9600:

1 / 9600 = 0.00010416666 seconds 

Näin ollen nopeus 9600 antaa sinulle -bittien määrän sekunnissa ja käänteinen on bittien välinen aikaväli .


Muut näkökohdat

  • Sarjakomennot eivät ole itsekellotettuja (toisin kuin SPI tai I2C ja muut), joten sekä lähettäjän että vastaanottajan on sovittava kellotaajuudesta.

  • Kellonopeus ei ole tarkka Arduinossa, koska laitteiston on jaettava järjestelmän kello alas saadakseen sarjakellon, eikä jakaminen ole aina tarkka. Virhe on melkein aina, määrä ilmoitetaan tietolomakkeessa (luvut on ilmoitettu 16 MHz: n järjestelmäkellolle, kuten Unossa):

    Sarjasiirtonopeusvirhe

  • Voit muuttaa databittien lukumäärää, sinun ei tarvitse lähettää Niistä kahdeksan, itse asiassa voit lähettää 5-9 bittiä.

  • Databittien jälkeen voidaan lähettää pariteetti -bitti.

    • Jos määrität parittoman pariteetin, pariteettibitti asetetaan siten, että 1-bittinen kokonaismäärä on pariton.
    • Jos määrität parillisen pariteetin , pariteettibitti asetetaan siten, että 1-bittinen kokonaismäärä on parillinen.
    • Jos et määritä pariteettia, pariteettibitti jätetään pois.

    Tämä voi auttaa vastaanotinta havaitsemaan, saapuivatko tiedot oikein vai eivät.

  • Pariteettibitti lähetetään ennen lopetusbittiä.

  • Yhdeksän databitin tapauksessa (kuten käytetään SeaTalk-protokollassa) pariteettibitti suunnataan uudelleen yhdeksänneksi databitiksi . Siksi sinulla ei voi olla sekä 9 databittiä että pariteettibittiä.

  • Sinulla voi olla myös kaksi lopetusbittiä. Tämä pidentää pohjimmiltaan tavujen välistä aikaa. päivää ”tämä oli niin, että hitaat sähkömekaaniset laitteet pystyivät käsittelemään edellisen tavun (esim. tulostamaan sen).


Mahdollinen vioittuminen

Jos aloitat sarjatietojen kuuntelun virran keskellä, on täysin mahdollista, että virran keskellä oleva 0-bittinen tulkitaan aloitusbittinä, ja sitten vastaanotin tulkitsee kaiken sen jälkeen väärin.

Ainoa todellinen tapa palautua tästä on aika ajoin riittävän suuri aukko (esim. 10 bittiä pitkä), ettei sitä voi tapahtua.


Käänteinen logiikka

Tässä esitettyjä bittejä (logiikkataso) ei ole käännetty. Toisin sanoen 1-bittinen on KORKEA ja 0-BIT LOW. Jos sinulla on RS232-laitteita, jotka todennäköisesti lähettävät jotain -12 V 1-bittiselle ja +12 V. 0-bittiselle. Tämä on käänteinen, koska yksi on vähemmän th nolla, jännitekohtaisesti.

Jos sinulla on tällaisia laitteita, sinun on tehtävä jännitteen muunnos ja looginen inversio. Sirut, kuten MAX232 , tekevät molemmat puolestasi. Ne voivat myös tuottaa tällaisten laitteiden käyttämiseen tarvittavan -12 V: n tuottamalla sen sisäisesti muutaman käyttäjän toimittaman kondensaattorin avulla.


Nopeussääntösääntö

Koska yhdellä aloitusbitillä, 8 databitillä ja yhdellä pysäytysbitillä on yhteensä 10 bittiä, voit nopeasti nyrkkisääntönä laskea tavun lukumäärän. voit lähettää sekunnissa jakamalla bittinopeuden 10: llä.

Esim. 9600 BPS: llä voit lähettää 960 tavua sekunnissa.


Toistettava koodi:

 void setup() { Serial.begin(9600); Serial.print("Fab"); } void loop () { }  

vastaus

; TLDR; Se alustaa sarjaliikenneportin ja asettaa siirtonopeuden. Laite, johon olet yhteydessä (tai Arduino IDE Serial Monitor), on asetettava vastaavaan siirtonopeuteen. Kun olet alustanut portin, voit alkaa lähettää tai vastaanottaa merkkejä. Arduino-sarjanumero

Kommentit

  • Ei vähennä tai kunnioita @ Nick- Gammon ’ erinomainen kattavuus tästä aiheesta.

Vastaa

Sähköpostiosoitettasi ei julkaista. Pakolliset kentät on merkitty *