Commit 6df40e824c0b686b12d14193ebb0e944aee697eb
authorSami Liedes <sliedes@cc.hut.fi>
Thu, 17 Feb 2011 19:47:00 +0000 (21:47 +0200)
committerSami Liedes <sliedes@cc.hut.fi>
Thu, 17 Feb 2011 19:57:53 +0000 (21:57 +0200)
treec4bae30958baac0018a4364e1a079a62fef6d7fb
parentb778a45f49549badc2980ac79ca18a4ae7b5c5b5
Message:
timer: Fix a subtle off-by-one bug in TCNT reading.

There's a subtle bug in TCNT (timer counter) reading which only causes
the counter to ever run from 0 to TOP-1, while it should stay in the
TOP value for a full timer cycle before resetting to 0 (but the
interrupt needs to come when TOP is first reached).

Interestingly, this causes Arduino's micros() function to occasionally
return incorrect values. micros() function relies on TCNT0 not
transitioning from <= 254 to 0 in only a few cycles with /64
prescaler.

Signed-off-by: Sami Liedes <sliedes@cc.hut.fi>
simavr/sim/avr_timer.c