Je snadné zapomenout, avšak Arduino využívá C ++. Typicky, C ++ část je v knihovnách, stejně jako na rámec stejně jako mnoho lidí jen tendenci kódovat své hlavní programy využívající C-Styl pouze s využitím objektů knihovny, jako jsou rozšíření jazyka C. [Fredlllll] Právě nedávno produkoval knihovnu šablony návrhu, aby se urychlil Arduino I / O, stejně jako on sdílel na GitHub.
Pokud jste někdy udělali cokoliv spolu s Arduino, s největší pravděpodobností pochopíte, že zatímco DigitalWrite je praktický, dělá to velké práce za scénou, aby se ujistil, že pin je konfigurace, stejně jako to přidává režii na každém volání. [Fredlllll] Verze šablony návrhu mohou přepínat specifikaci PIN ve dvou cyklech. Můžete snížit, že v polovině, pokud vám to nevadí obtěžovat specifikovat jiné kolíky na přesném stejném portu.
Můžete použít konstantu, aby se zapnul pin, jako je tento:
Switchon <1> ();
Pokud nechcete využít kouzelná čísla (a to je chytrý), můžete definovat konstantu:
CONST UINT8_T LEDPIN = 1;
Switchon
Protože s největší pravděpodobností chcete udělat nějaké elegantní načasování, je také šablona návrhu NOP, která vám umožní oddálit nastavený počet cyklů. Zde je nějaký testovací kód od RedDIT, který produkuje 1,3 MHz čtvercové vlny, například:
CONST UINT8_T MYPIN = 5;
Void Loop () {
CLI (); // Zakázat přerušení, protože by přišroubovali načasování
dělat {
Switchonxclusive
nop <5> (); // 5 cyklů
Switchoffportofpin
nop <3> (); // 3 cykly
} Zatímco (1) // skočit zpět do práce je 2 cykly
}
Je zřejmé, že to není maximum, buď, protože ve smyčce existuje osm cyklů zpoždění.
Nemáte požadavek pochopit hodně o šablonách, aby využívali tuto knihovnu, ale pokud chcete porozumět více, jsme je v minulosti pokryli. Zjistili jsme si, že digitalwrite je asi padesátkrát pomalejší než přímý přístup k přímému, stejně jako ostatní I / O operace nejsou mnohem lepší. Bylo by fascinující, aby se podíval na to, zda mohou šablony učinit další operace mnohem efektivnější.