Arduino loop() Tid

Fra Holstebro HTX Wiki
Skift til: navigering, søgning

loop() funktionen bruges til at gentage kode mange gange. Den er stort set uundværlig lige meget, hvilket program man laver, da det er den eneste funktion der bliver kaldt ud over setup().

Når man bruger den, skal man dog til tider tage højde for små forsinkelse der opstår når loop() når til bunden af funktionen og skal op i toppen af funktionen igen.

Tid

Dette program kan bruges til at tjekke, hvor lang tid det tager for loop() at komme fra slutningen af funktionen til starten igen. Det er svært hvis ikke umuligt at skrive denne værdi ud i den serielle monitor, da aduinosprogets(C/C++) micros() funktion, som bruges til at måle mikrosekunder siden programmet startede, ikke er præcis nok. Man kan i stedet sætte et oscilloskop til, og give programmet nogle opgaver der gør oscilloskopets graf læsbar, og det er præcis det dette program gør.

Det eneste det består af er, at der tændes og slukkes for to bit. Oscilloskopet giver udsving når dette sker og den resterende tid, hvor grafen ikke foretager sig noget, må derfor være tiden det tager for loop() at starte forfra.

void setup() {
  pinMode(7, OUTPUT);
  pinMode(6, OUTPUT);
}

void loop() {
  PORTD |= 0xC0;             //Tænder to bits
  PORTD &= 0x3F;             //Slukker to bits
}

Når man sætter oscilloskopet til, får man en graf der ser således ud:

Osc.png

På grafen er der to stiplede linjer sat ind. Tiden det tager for loop() at starte forfra er tiden mellem disse to linjer. Dette står der på målingen er 0.44 μs (mikrosekunder), hvilket svarer til 7 maskininstruktioner.

Det er en meget lille forsinkelse, og det vil tage rigtig lang tid før at disse 0.44 μs kommer til at give en samlet forsinkelse på et sekund. Dog vil det have en betydning for visse programmer over tid, hvis man for eksempel laver et ur eller andet der kører vha. millis(). millis() regner nemlig også loopets genstartstid med i den samlede tid. Dette vil resulterer i, at uret langsomt vil komme bagefter det rigtige klokkeslet.

Referencer