void setup()
{
Serial.begin(115200);
Serial.println( "=========");
Serial.println( getJohnDiff( 100, 200));
Serial.println( getJohnDiff( 200, 100));
Serial.println( getJohnDiff( 0xFFFFFFF5, 0x09));
Serial.println( getJohnDiff( 0x09, 0xFFFFFFF5));
Serial.println( "---------");
Serial.println( discardWrongOne( 100, 200));
Serial.println( discardWrongOne( 200, 100));
Serial.println( discardWrongOne( 0xFFFFFFF5, 0x09));
Serial.println( discardWrongOne( 0x09, 0xFFFFFFF5));
Serial.println( "---------");
Serial.println( original( 100, 200));
Serial.println( original( 200, 100));
Serial.println( original( 0xFFFFFFF5, 0x09));
Serial.println( original( 0x09, 0xFFFFFFF5));
Serial.println( "---------");
}
void loop() { }
uint32_t getJohnDiff( uint32_t X, uint32_t Y )
{
int32_t diff = X - Y; // Signed difference
if (diff < 0) // If the result is negative
diff = Y - X; // Positive difference
return diff; // Convert back to unsigned
}
unsigned long discardWrongOne( unsigned long t1, unsigned long t2)
{
unsigned long d1 = t2 - t1;
unsigned long d2 = t1 - t2;
unsigned long elapsedMillis = d1;
if( d2 < d1)
elapsedMillis = d2;
return( elapsedMillis);
}
const uint32_t MAXDIFF = 0xFFFFFFFF / 2 ;
uint32_t original( uint32_t X, uint32_t Y )
{
uint32_t Diff = X - Y;
if( Diff > MAXDIFF )
{
Diff = Y - X ;
}
else
{
if( X < Y )
Diff = Y - X ;
if( Diff > MAXDIFF )
Diff = X - Y ;
}
return( Diff );
}