Uncategorized

模板加速Arduino I / O

它很簡單忘記,但是Arduino確實使用C ++。通常,C ++部分在庫中以及框架中以及許多人傾向於利用C-Language Extensions等庫對象使用C樣式來編碼其主要程序。 [Fredllll]剛剛製作了一個設計模板庫,加快了Arduino I / O以及他在GitHub上分享了它。

如果您對Arduino進行了任何專業的話,您最有可能理解,雖然DigitalWrite是方便的,但在幕後做出了很大的工作,以確保PIN是配置以及每個呼叫增加開銷。 [Fredllll]設計模板版本可以在兩個週期中切換PIN指定。如果您不介意打擾完全相同的端口上的其他引腳,則可以將其切成兩半。

您可以使用常量打開PIN,如下所示:

Switchon <1>();
如果您不喜歡使用魔術號碼(並且是聰明的人),您可以定義一個常量:

const uint8_t letpin = 1;
SwitchOn ();
因為你最有可能做一些優雅的時間,所以同樣有一個NOP設計模板,可以讓你延遲設定的周期。以下是從Reddit的一些測試代碼,它產生1.3 MHz平方波,例如:

const uint8_t mypin = 5;
void loop(){
cli(); //禁用中斷,因為它們會擰緊時間
做 {
switchonexclusive (); // 1週期
nop <5>(); // 5個循環
SwitchOffPortofpin (); // 1週期
nop <3>(); // 3個循環
}雖然(1)//跳回到2週期
}
顯然,這不是最大值,因為循環中有八個延遲週期。

您不要求了解如何使用此庫的模板,但是如果您想了解更多,我們過去涵蓋了它們。我們在DigitalWrite之前註意到比直接端口訪問速度大約五十次,以及其他I / O操作並沒有更好。檢查模板是否可能使其他操作更有效,這將是令人著迷的。