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();
}
}