Vorlagen beschleunigen Arduino E / A

Es ist einfach zu vergessen, dass jedoch das Arduino C ++ verwendet. In der Regel ist der C ++ – Teil in den Bibliotheken sowie dem Rahmen sowie der Framework sowie viele Personen neigen dazu, ihre Hauptprogramme neigen dazu, ihre Hauptprogramme mit einem C-stil zu codieren, der gerade die Bibliotheksobjekte wie C-Spracherweiterungen verwendet. [Fredllll] Erzeugte kürzlich kürzlich eine Design-Template-Bibliothek, um Arduino-E / A zu beschleunigen, und er hat es auf Github geteilt.

Wenn Sie jemals etwas Großartiges mit dem Arduino getan haben, verstehen Sie höchstwahrscheinlich, dass digitalwrite praktisch ist, es ist viel Arbeit hinter den Kulissen, um sicherzustellen, dass die PIN-Konfiguration ist, und dies fügt jedem Anruf den Umfang hinzu. [Fredlllls] Design-Vorlagen-Versionen können eine PIN in zwei Zyklen angeben. Sie können das in der Hälfte schneiden, wenn Sie nichts dagegen haben, die Angabe anderer Pins auf dem gleichen Port zu belästigen.

Sie können eine Konstante verwenden, um eine PIN einzuschalten, wie folgt:

Umschaltung <1> ();
Wenn Sie keine Zaubernummern verwenden möchten (und das ist smart), können Sie eine Konstante definieren:

const uint8_t ledpin = 1;
Switchon ();
Da Sie höchstwahrscheinlich ein elegantes Timing machen möchten, gibt es ebenfalls eine NOP-Designvorlage, mit der Sie eine bestimmte Anzahl von Zyklen verzögern können. Hier ist ein Testcode von Reddit, der eine 1,3-MHz-Square-Welle erzeugt:

const uint8_t mypin = 5;
void loop () {
CLI (); // Deaktivieren Sie Interrupts, da sie den Timing verschrauben würden
tun {
switchonexclusive (); // 1 Zyklus.
NOP <5> (); // 5 Zyklen
switchportofpin (); // 1 Zyklus.
NOP <3> (); // 3 Zyklen
} Während (1) // springen Sie zurück, um 2 Zyklen zu tun
}
Natürlich ist dies auch nicht das Maximum, denn es gibt acht Verzögerungszyklen in der Schleife.

Sie müssen nicht viel über Vorlagen verstehen, um diese Bibliothek zu nutzen, wenn Sie jedoch mehr verstehen möchten, haben wir sie in der Vergangenheit bedeckt. Wir haben bemerkt, dass digitalwrite ungefähr fünfzig Mal langsamer ist als ein direkter Anschlusszugang sowie der andere E / A-Betrieb ist nicht viel besser. Es wäre faszinierend, zu überprüfen, ob Vorlagen andere Operationen wesentlich effizienter machen könnten.

Back to top