[erledigt. ja] Millis resetbar?

Hallo allerseits!

Ich habe eine Frage ohne Bezug zu einem real existierendem Projekt:

Ist das Ding, das die Millisekunden seit Einschalten zählt, eigentlich resetbar (auf null zurückstellbar)? Es würde mich nicht wundern, wenn es das nicht wäre, auch nicht durch noch so tolle Assembler-Tricks. Schließlich könnte man es dann nicht „Millisekunden seit Einschalten“ nennen.

Danke vorweg!

Gregor

Ja, das geht.
Es gibt aber keinen Grund das zu tun.

Ja, geht; aber wieso?
Solange niemand an millis() was ändert sind das die millisekunden seit Einschalten bzw nach mehr als 49,5 Tagen ein Teil davon.
Grüße Uwe

uwefed:
Ja, geht

Ups?!!!

uwefed:
aber wieso?

Das war nur so ein Gedanke ohne konkreten Bezug. „Out of the blue“ sozusagen.

Gruß

Gregor

combie:
Ja, das geht.
Es gibt aber keinen Grund das zu tun.

Stimme dem 2. Teil zu, aber aus reiner Neugierde möcht ich auch wissen wollen wo man da ansetzt.

Lass uns an Deinem Wissen teilhaben!

Lass uns an Deinem Wissen teilhaben!

Aber gerne doch…

Alles schon ausprobiert. Wollte damals für debugging Zwecke schnell große millis() Bereiche durchspielen. War aber Blödsinn, konnte stattdessen genauso gut mit micros() arbeiten.

Aus meiner Wühlkiste:

#include <util/atomic.h>

/**
 * kleinere zeitliche Differenzen, von maximal 1 ms 
 * ergeben sich aus der nicht Erreichbarkeit der 
 * Variablen timer0_fract, und der Unmoeglichkeit 
 * den Hardware Timer0 Count Wert zu aendern, ohne
 * eine evtl. genutzte PWM zu stoeren
 */

void setMillis(unsigned long newMillis = 0)
{

  extern volatile unsigned long timer0_overflow_count;
  extern volatile unsigned long timer0_millis;

  ATOMIC_BLOCK(ATOMIC_RESTORESTATE)
  {
    timer0_millis = newMillis;
    timer0_overflow_count = 0;
  }
}


void setup() 
{
  Serial.begin(9600);      
  Serial.println("Start");
}

void loop() 
{
  delay(1000);
  Serial.println(millis());

  setMillis(); // reset millis
}

Hi

Lass mich raten: Das ist der umgekehrte Weg der millis()-Funktion, Die man in den Tiefen des Arduino-Ordner finden können sollte?
(Bzw. aufgrund der darin enthaltenen Aufrufe Rückschlüsse auf die benutzten Register ect.pp.)

MfG

Die man in den Tiefen des Arduino-Ordner finden können sollte?

So ist es!

Siehe:
X:\Programme\arduino\hardware\arduino\avr\cores\arduino\wiring.c

Tipp:
Es lohnt sich den cores Order mal zu durchstöbern.

Aber Vorsicht:
Es könnten sich erhebliche Mengen an Wissen anhäufen.