Mallit nopeuttavat Arduino I / O

On helppo unohtaa, mutta Arduino hyödyntää C ++. Tyypillisesti C ++ osa on kirjastoissa sekä kehys ja monet ihmiset vain koodiavat pääohjelmansa hyödyntäen C-tyylistä vain käyttämällä kirjaston esineitä, kuten C-kielen laajennuksia. [Fredllll] Vain äskettäin laatinut suunnittelumalli kirjasto nopeuttaa Arduinon I / O: ta sekä hän jakoi sen GitHubiin.

Jos olet koskaan tehnyt mitään suurta Arduinon kanssa, todennäköisesti ymmärrät, että vaikka digitaalinen kirjoitus on kätevä, se tekee paljon työtä kulissien takana varmistaaksesi, että PIN on kokoonpano sekä tämä lisää yläpuolella jokaiseen puheluun. [Fredllllin] Design Template -versiot voivat vaihtaa PIN-koodin määrittää kahdessa syklillä. Voit leikata sen puoliksi, jos et mielessä häiritä muita nastoja täsmälleen samassa satamassa.

Voit käyttää vakiota kääntääksesi PIN-koodin, kuten tämä:

Switchon <1> ();
Jos et halua käyttää Magic-numeroita (ja se on älykäs), voit määrittää vakion:

const uint8_t ledpin = 1;
SWITCHON ();
Koska todennäköisesti haluat tehdä tyylikkäät ajoituksen, on myös NOP-suunnittelumalli, jonka avulla voit viivyttää määrän sykliä. Tässä on joitain testauskoodia Redditistä, joka tuottaa esimerkiksi 1,3 MHz: n neliöaaltoa, esimerkiksi:

const uint8_t mypin = 5;
Voidin silmukka () {
CLI (); // Poista keskeytykset, kun ne ruuvaisivat ajoituksen
tee {
Switchonexclusive (); // 1 sykli
Nop <5> (); // 5 sykliä
SWITCHOFFPORTOFPIN (); // 1 sykli
Nop <3> (); // 3 sykliä
} Vaikka (1) // hypätä takaisin tekemään 2 sykliä
}
Ilmeisesti tämä ei ole enimmäismäärä, koska silmukassa on kahdeksan viivejaksoa.

Et tarvitse ymmärtää paljon malleja käyttää tätä kirjastoa, mutta jos haluat ymmärtää enemmän, olemme peittäneet ne aiemmin. Olemme huomanneet, että digitalwrite on noin viisikymmentä kertaa hitaampi kuin suora satama pääsy, samoin kuin muut I / O-toiminnot eivät ole paljon parempia. Olisi kiehtovaa tarkistaa, jos mallit voivat tehdä muita toimintoja paljon tehokkaammin.

Back to top