Hallo,
mir kommt das irgendwie doppelt gemoppelt vor, nur möchte ich den millis Zugriff Interrupt sicher gestalten.
Es geht um einen ATtiny, deswegen sieht das nicht ganz Arduino like aus.
volatile uint32_t millis;
volatile uint32_t second;
Im Timer Compare Match Interrupt erzeuge ich den millis Zähler.
ISR(TIMER0_COMPA_vect)
{
static uint32_t local_millis = 0;
millis++;
local_millis++;
if(local_millis > 999) {
second++;
local_millis = 0;
}
}
Wenn ich jetzt irgendwann im Hauptprogramm auf millis zugreife zum vergleichen, dann könnte mir das doch böse enden, weil das eine Zahl größer wie 1 Byte ist. Gehe ich jetzt richtig im Verständnis, wenn ich mir eine Zwischenfunktion mit atomic baue in der Art ... ?
uint32_t millis()
{
ATOMIC_BLOCK (ATOMIC_RESTORESTATE) // cli und sei mit SREG Sicherung
{
return millis;
}
}