aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDimitri Sokolyuk <demon@dim13.org>2012-05-21 14:28:13 +0000
committerDimitri Sokolyuk <demon@dim13.org>2012-05-21 14:28:13 +0000
commit278150fd65a71bc645b0da24a2b7ede4a5297752 (patch)
tree73a6b2d0927acbbcf763be66b6ebcf04c06f843e
parent59ab7176bfb66db55746b8fe3fd44deae76f8d4c (diff)
run at least 1/1000 of quant
-rw-r--r--kernel/kernel.c6
1 files changed, 5 insertions, 1 deletions
diff --git a/kernel/kernel.c b/kernel/kernel.c
index 1c333c0..7f7f6eb 100644
--- a/kernel/kernel.c
+++ b/kernel/kernel.c
@@ -36,6 +36,8 @@
#define NOW(hi, lo) (((uint32_t)(hi) << 0x10) | (lo))
#define DISTANCE(from, to) ((int32_t)((to) - (from)))
#define SCHEDULE TIMER1_COMPA_vect
+#define QUANT UINT16_MAX
+#define MQUANT (QUANT >> 10)
struct task {
uint32_t release; /* release time */
@@ -81,7 +83,7 @@ ISR(TIMER1_COMPA_vect, ISR_NAKED)
pusha();
/* grab time as early as possible */
now = NOW(kern.cycles, TCNT1);
- nexthit = UINT16_MAX;
+ nexthit = QUANT;
if (!kern.reboot)
wdt_reset();
@@ -120,6 +122,8 @@ ISR(TIMER1_COMPA_vect, ISR_NAKED)
SP = kern.cur->sp;
/* set timer */
+ if (nexthit < MQUANT)
+ nexthit = MQUANT;
OCR1A = TCNT1 + nexthit;
popa();