Collecting entropy: can I use timing of reading as a separate source from the reading itself? I'm implementing an entropy gathering program.

For that I collect 2 bits from two gpio-pins connected to a random source.
I whiten this stream of bits using the von Neumann decorrelation algorithm. Now 2 out of 4 cases I can't use the bits because of that whitening algorithm (e.g. when both bits are 0 or both are 1). The timestamp when I have to discard bits is random.

My question now is: I use the value of the two bits, can I now also use that bit-discard-timestamp as an entropy source? Or are these (the values and the timestamps) correlated? I think they are not neccessarily correlated but I'm not entirely sure.
The values of these timestamps  appear to be determined by two components:


when your code decides to sample the GPIO inputs; and
whether a bit is to be discarded or not.


The first component is not proven to be random (and if you assume it is, you would not need to add complexity to this RNG; just create a second RNG based on CPU execution jitter).

The second component is the same information that you have already used in the whitener.
In other words, if an attacker can make some (partial) predictions about the raw GPIO inputs, then the timestamps are predictable, too.



Please note that the Wikipedia page you linked is not a complete description of the von Neumann algorithm; if you click through to Von Neumann extractor, you see that this algorithm requires that the source is a Bernoulli sequence.
Almost all physical noise sources fail this because their output values are correlated.