Vargham Creative Commons License 2021.01.15 0 0 3854

Az Arduino nem használ saját nyelvet. Ez sok félreértést okoz a kezdő használóknál.

Az Atmel (Microchip) cég adja a regiszter definíciókat és néhány függvényt C nyelven.

Az Arduino közösség e fölé készít egy barátságosabban használható, C++ nyelven írt réteget.

Ezeket együtt használod Arduino programozáskor. Az IDE az AVR-GCC-t használja fordításhoz. Az IDE csak egy szövegszerkesztő, bármilyen szabványos C/C++ utasítást használhatsz, a fordító le fogja fordítani.

 

Ha például ezt beírod a setup()-ba:

OCR0A = 0xAF; // Set compare value
TIMSK0 |= _BV(OCIE0A); // Enable interrupt

Akkor a millis() által is használt Timer0 egy másik interruptját kapcsolod be.

Írsz egy ilyen formátumú függvényt:

ISR(TIMER0_COMPA_vect) {

  // Akkor ez ezredmásodpercenként fog lefutni. A millistől és a looptól is függetlenül.

}

 

Időzíteni így is lehet:

 

unsigned long gTimestamp = 0u;

constexpr uint16_t cPeriodTimeMs = 2500u;

 

void setup() {}

 

void loop() {

  if (millis() - gTimestamp > cPeriodTimeMs) {

    // Amit ide írsz, az nagyjából 2,5 másodpercenként fog lefutni.

    gTimestamp = millis();

  }

}

Előzmény: vfp (3850)