Go Down

Topic: [Solved]Subroutine (Read 2 times) previous topic - next topic

rikky





0 - 4294967295  =  1

Als ik het scetchje van robtillaart run, zien ik als x: 4294967280.
mijn : #define MAX_MILLIS_VALUE 34359738 ..... is dus al fout.
maar als ik 0-x doe krijg ik 16.

Als ik dit run:
Quote
void setup()
{
  Serial.begin(115200);
  Serial.println("Start "); 
  uint32_t x = 0xFFFFFFF0;
  uint32_t miellies = 0xFFFFFFF0; 
  Serial.print("0 - ");
  Serial.print(x);
  Serial.print(" = ");
  Serial.println(0 - x);
  Serial.print("0 - 4294967295  =   ");
  Serial.println(0 - 4294967295);

Quote

Start
0 - 4294967280 = 16
0 - 4294967295  =  1


Ik denk dus gewoon te moeilijk.
Het is een soort van cirkeltje.

Maar je moet wel het goede getalletje pakken.

Maar scheinbaar kan het dus allemaal ook zonder rekening te houden met die overflow.
Ik zal het allemaal nog eens bekijken.
Het is niet makkelijk.


robtillaart

dat is unsigned rekenen.

Quote
Het is een soort van cirkeltje.

Inderdaad! n et zoals jijzelf doet met een 12 uurs klok.   

voorbeeld     duration = eindtijd - begintijd
1)   4 uur - 2 uur = 2 uur.
2)  4 uur - 10 uur = 6 uur

precies hetzelfde alleen loopt de millis klok van 0 tot 4294967295   ipv  0..11

PS ik heb je tuinsproeier gerefactored als voorbeeld hoe je met de millis werkt. (andere thread)
Als je er vragen over hebt, hoor ik het graag.
Rob Tillaart

Nederlandse sectie - http://arduino.cc/forum/index.php/board,77.0.html -
(Please do not PM for private consultancy)

Go Up