From 278150fd65a71bc645b0da24a2b7ede4a5297752 Mon Sep 17 00:00:00 2001 From: Dimitri Sokolyuk Date: Mon, 21 May 2012 14:28:13 +0000 Subject: run at least 1/1000 of quant --- kernel/kernel.c | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) 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(); -- cgit v1.2.3