#include <JC_Button.h>
#include <util/atomic.h>
#define PIN_BTN_START A1
Button btnStart(PIN_BTN_START);
bool isStart;
uint32_t saveMillis;
// dichiarazione extern per il linker ld
extern volatile uint32_t timer0_millis;
//char s[] = "4294960300 - 4294959800 = 501";
char buff[35];
#define HOOO (300UL - 4294967096UL)
void setup() {
pinMode(5, OUTPUT);
btnStart.begin();
Serial.begin(115200);
// stampa il risultato di (300UL - 4294967096UL)
Serial.println(HOOO);
//Serial.prin{tln(strlen(s));
// modifica atomica del contatore restituito da millis()
ATOMIC_BLOCK(ATOMIC_RESTORESTATE) {
timer0_millis = 0xFFFFFFFF - 699;
}
// Stampa il valore corrente del contatore di millis
Serial.println(millis());
saveMillis = millis();
}
void loop() {
btnStart.read();
if (btnStart.wasPressed()) {
// accesso non atomico a timer0_millis
Serial.println(timer0_millis);
} else {
if (millis() - saveMillis >= 500) {
digitalWrite(5, !digitalRead(5));
uint32_t dt = millis() - saveMillis;
sprintf(buff, "%lu - %lu = %lu", millis(), saveMillis, dt);
Serial.println(buff);
saveMillis = millis();
}
}
}