Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]


Groups > comp.lang.forth > #57351

Re: polyForth multitasker question

Path csiph.com!eternal-september.org!feeder.eternal-september.org!news.eternal-september.org!.POSTED!not-for-mail
From Paul Rubin <no.email@nospam.invalid>
Newsgroups comp.lang.forth
Subject Re: polyForth multitasker question
Date Fri, 14 Apr 2017 23:50:58 -0700
Organization A noiseless patient Spider
Lines 66
Message-ID <87mvbif9kd.fsf@nightsong.com> (permalink)
References <ocafkt$1929$1@gioia.aioe.org> <ocfkhb$8ig$1@dont-email.me> <ochdnu$1r70$1@gioia.aioe.org> <ocile6$7ro$1@dont-email.me> <e11a25dd-5c4c-404e-bbfa-3ec67c7b1d08@googlegroups.com> <2ef60cba-5577-4813-ae93-3946cd4b415b@googlegroups.com> <877f2ql73h.fsf@nightsong.com> <f3ba41b0-66e3-4688-afed-8aebed8f9c49@googlegroups.com> <8760i9jf0d.fsf@nightsong.com> <91b82032-d469-47a8-8586-b7dfc4dc42ec@googlegroups.com> <46d8a45d-99b8-4f48-a011-f08d4de9e918@googlegroups.com> <8737dcixu5.fsf@nightsong.com> <CpWdna89psBySXLFnZ2dnUU7-N2dnZ2d@supernews.com> <87vaq7hg4l.fsf@nightsong.com> <mqGdnYQe2bgs-W3FnZ2dnUU7-IXNnZ2d@supernews.com> <87r30vgzd2.fsf@nightsong.com> <ocrbm2$c86$1@dont-email.me> <87a87ihcxe.fsf@nightsong.com> <ocrpc8$nqb$1@dont-email.me> <871ssugzm0.fsf@nightsong.com> <ocs2cj$6r0$1@dont-email.me>
Mime-Version 1.0
Content-Type text/plain
Injection-Info mx02.eternal-september.org; posting-host="55e23b86542ccc33df908631a998fc13"; logging-data="31187"; mail-complaints-to="abuse@eternal-september.org"; posting-account="U2FsdGVkX1/axcNrO90HGYjq7VnZ6pD9"
User-Agent Gnus/5.13 (Gnus v5.13) Emacs/24.3 (gnu/linux)
Cancel-Lock sha1:/hcyOrBXP1ukygoiXo+NhdnM77w= sha1:mc6Hk+YAX8sC/e9W3j26VOV/NSQ=
Xref csiph.com comp.lang.forth:57351

Show key headers only | View raw


rickman <gnuarm@gmail.com> writes:
> "Wake up the scheduler" is a term full of importance.  Dig into that
> if you want to understand what is going on.

Not sure what you're getting at here.

> How much power do you think it takes?  What processor?  What is the
> power source?

Meh, processor = something tiny, low powered 8 bitter.  Though since
we're talking about Forth, maybe a small ARM (Cortex M0) or the like.
Power source = watch battery, so average power should be in the 1-digit
microamps.

> The point is there is a *lot* of ground to cover here.  Of course you
> don't run a scheduler as a wait loop if you don't need to or if you
> don't have the power.  But for an interrupt to "wake up" the scheduler
> requires a mechanism to do that.

Ok, I'm imagining a program something like this (untested):

  CREATE queue 16 CELLS ALLOT    DOES> ( i -- addr ) cells + ;
  VARIABLE head 0 head !    VARIABLE tail 0 tail !
  : incx ( var-addr -- var++ ) dup @ >r r@ 1+ $1F AND swap ! r> ;
  : empty? ( -- flag ) head @ tail @ = ;
  : log ( event -- )  head incx queue ! ;
  : pop ( -- event flag ) empty? IF 0 FALSE ELSE tail incx queue @ TRUE ;

  : zzz ( -- ) ... ;   \ put the processor to sleep
  : wakeup ( -- ) ... ; \ cleanup ISR stack and re-awaken cpu

  keycode CONSTANT 37   \ some code to indicate that a key was pressed
  : key-isr ( -- ) keycode log wakeup ;  \ record the keypress and wake up

  : dispatch ( event -- ) ... ; \ call event handler, with lookup or case stmt

  : event-loop ( -- ) BEGIN empty? IF zzz ELSE pop dispatch AGAIN ;

This isn't a real tasker (just what I'd use for something with a few
pushbuttons and other channels).  But the idea is that the cpu is in a
hard sleep til something interrupts.  When the ISR runs, in this case it
would re-activate the loop by diddling the return stack so that it
looked like "zzz" had returned.  The 16-element queue is just in case a
few events happen at the same time or faster than the handlers.  Maybe
it should have some guards to recover from overflow if it happens, but
it shouldn't.

I've got a cool machined aluminum enclosure for a bike headlamp and have
been wanting to someday make a bike light programmed in Forth.  I
figured that the code would be organized something like the above.  The
cpu would be stopped almost all the time, but would have handlers for
pushbuttons and timers.  So pushbutton detection and debouncing would
happen in the button event handlers, which would cause more events for
cleaned-up input that would adjust settings and light indicators.
Timers would trigger software PWM for the main led, battery and
temperature monitoring, and stuff like that.

Obviously I haven't tested any of this but it seems reasonable from
10000 feet.  If I actually ever do anything with it I'll deal with any
snags as I encounter them.

> BTW, waking up nearly any embedded processor I have used at a 10 Hz
> rate would use barely any more power than the timer itself.

OK, probably true.  But, thinking of the GA144 etc. makes me want to
avoid running the processor at all unless there's something to do.

Back to comp.lang.forth | Previous | Next — Previous in thread | Next in thread | Find similar | Unroll thread


Thread

polyForth multitasker question "HAA" <someone@microsoft.com> - 2017-04-08 20:53 +1000
  Re: polyForth multitasker question Andrew Haley <andrew29@littlepinkcloud.invalid> - 2017-04-08 12:29 -0500
    Re: polyForth multitasker question "HAA" <someone@microsoft.com> - 2017-04-10 09:50 +1000
      Re: polyForth multitasker question David Schultz <abuse@127.0.0.1> - 2017-04-09 19:25 -0500
        Re: polyForth multitasker question "HAA" <someone@microsoft.com> - 2017-04-10 10:52 +1000
          Re: polyForth multitasker question Andrew Haley <andrew29@littlepinkcloud.invalid> - 2017-04-10 08:58 -0500
            Re: polyForth multitasker question "HAA" <someone@microsoft.com> - 2017-04-15 10:39 +1000
        Re: polyForth multitasker question "HAA" <someone@microsoft.com> - 2017-04-11 11:12 +1000
          Re: polyForth multitasker question Paul Rubin <no.email@nospam.invalid> - 2017-04-10 18:22 -0700
            Re: polyForth multitasker question "HAA" <someone@microsoft.com> - 2017-04-11 12:17 +1000
          Re: polyForth multitasker question Andrew Haley <andrew29@littlepinkcloud.invalid> - 2017-04-11 03:10 -0500
      Re: polyForth multitasker question "Elizabeth D. Rather" <erather@forth.com> - 2017-04-09 14:37 -1000
        Re: polyForth multitasker question Paul Rubin <no.email@nospam.invalid> - 2017-04-09 18:05 -0700
          Re: polyForth multitasker question "Elizabeth D. Rather" <erather@forth.com> - 2017-04-09 15:50 -1000
          Re: polyForth multitasker question Lars Brinkhoff <lars.spam@nocrew.org> - 2017-04-10 07:47 +0200
        Re: polyForth multitasker question "HAA" <someone@microsoft.com> - 2017-04-10 12:20 +1000
        Re: polyForth multitasker question Alex <alex@rivadpm.com> - 2017-04-10 09:11 +0100
          Re: polyForth multitasker question Andrew Haley <andrew29@littlepinkcloud.invalid> - 2017-04-10 04:20 -0500
            Re: polyForth multitasker question Alex <alex@rivadpm.com> - 2017-04-10 10:53 +0100
              Re: polyForth multitasker question Alex <alex@rivadpm.com> - 2017-04-10 11:24 +0100
              Re: polyForth multitasker question "HAA" <someone@microsoft.com> - 2017-04-11 12:05 +1000
                Re: polyForth multitasker question Alex <alex@rivadpm.com> - 2017-04-11 14:27 +0100
                Re: polyForth multitasker question minforth@arcor.de - 2017-04-11 07:08 -0700
                Re: polyForth multitasker question foxaudioresearch@gmail.com - 2017-04-11 18:06 -0700
                Re: polyForth multitasker question Paul Rubin <no.email@nospam.invalid> - 2017-04-11 18:58 -0700
                Re: polyForth multitasker question foxaudioresearch@gmail.com - 2017-04-12 13:57 -0700
                Re: polyForth multitasker question Paul Rubin <no.email@nospam.invalid> - 2017-04-12 18:02 -0700
                Re: polyForth multitasker question foxaudioresearch@gmail.com - 2017-04-12 19:47 -0700
                Re: polyForth multitasker question Paul Rubin <no.email@nospam.invalid> - 2017-04-12 21:22 -0700
                Re: polyForth multitasker question foxaudioresearch@gmail.com - 2017-04-13 02:57 -0700
                Re: polyForth multitasker question minforth@arcor.de - 2017-04-12 23:17 -0700
                Re: polyForth multitasker question Paul Rubin <no.email@nospam.invalid> - 2017-04-13 00:13 -0700
                Re: polyForth multitasker question "Elizabeth D. Rather" <erather@forth.com> - 2017-04-13 09:43 -1000
                Re: polyForth multitasker question Paul Rubin <no.email@nospam.invalid> - 2017-04-13 19:34 -0700
                Re: polyForth multitasker question "Elizabeth D. Rather" <erather@forth.com> - 2017-04-13 19:57 -1000
                Re: polyForth multitasker question rickman <gnuarm@gmail.com> - 2017-04-14 02:45 -0400
                Re: polyForth multitasker question "Elizabeth D. Rather" <erather@forth.com> - 2017-04-13 21:28 -1000
                Re: polyForth multitasker question anton@mips.complang.tuwien.ac.at (Anton Ertl) - 2017-04-14 07:53 +0000
                Re: polyForth multitasker question Paul Rubin <no.email@nospam.invalid> - 2017-04-14 01:44 -0700
                Re: polyForth multitasker question minforth@arcor.de - 2017-04-14 02:01 -0700
                Re: polyForth multitasker question Paul Rubin <no.email@nospam.invalid> - 2017-04-14 11:28 -0700
                Re: polyForth multitasker question rickman <gnuarm@gmail.com> - 2017-04-14 16:23 -0400
                Re: polyForth multitasker question "Elizabeth D. Rather" <erather@forth.com> - 2017-04-13 22:46 -1000
                Re: polyForth multitasker question anton@mips.complang.tuwien.ac.at (Anton Ertl) - 2017-04-14 11:31 +0000
                Re: polyForth multitasker question Paul Rubin <no.email@nospam.invalid> - 2017-04-14 11:23 -0700
                Re: polyForth multitasker question "Elizabeth D. Rather" <erather@forth.com> - 2017-04-14 10:06 -1000
                Re: polyForth multitasker question Andrew Haley <andrew29@littlepinkcloud.invalid> - 2017-04-14 08:13 -0500
                Re: polyForth multitasker question anton@mips.complang.tuwien.ac.at (Anton Ertl) - 2017-04-14 14:12 +0000
                Re: polyForth multitasker question pahihu <pahihu@gmail.com> - 2017-04-14 09:30 -0700
                Re: polyForth multitasker question anton@mips.complang.tuwien.ac.at (Anton Ertl) - 2017-04-15 08:46 +0000
                Re: polyForth multitasker question pahihu <pahihu@gmail.com> - 2017-04-15 13:07 -0700
                Re: polyForth multitasker question Paul Rubin <no.email@nospam.invalid> - 2017-04-15 17:27 -0700
                Re: polyForth multitasker question foxaudioresearch@gmail.com - 2017-04-15 18:18 -0700
                Re: polyForth multitasker question anton@mips.complang.tuwien.ac.at (Anton Ertl) - 2017-04-17 13:53 +0000
                Re: polyForth multitasker question Andrew Haley <andrew29@littlepinkcloud.invalid> - 2017-04-14 11:34 -0500
                Re: polyForth multitasker question hughaguilar96@gmail.com - 2017-04-14 11:31 -0700
                Re: polyForth multitasker question Julian Fondren <julian.fondren@gmail.com> - 2017-04-14 12:14 -0700
                Re: polyForth multitasker question hughaguilar96@gmail.com - 2017-04-14 12:46 -0700
                Re: polyForth multitasker question hughaguilar96@gmail.com - 2017-04-14 12:48 -0700
                Re: polyForth multitasker question hughaguilar96@gmail.com - 2017-04-14 12:50 -0700
                Re: polyForth multitasker question albert@cherry.spenarnc.xs4all.nl (Albert van der Horst) - 2017-04-15 14:39 +0200
                Re: polyForth multitasker question Julian Fondren <julian.fondren@gmail.com> - 2017-04-15 11:48 -0700
                Re: polyForth multitasker question Alex <alex@rivadpm.com> - 2017-04-14 22:07 +0100
                Re: polyForth multitasker question anton@mips.complang.tuwien.ac.at (Anton Ertl) - 2017-04-15 16:47 +0000
                Re: polyForth multitasker question "Elizabeth D. Rather" <erather@forth.com> - 2017-04-15 11:36 -1000
                Re: polyForth multitasker question foxaudioresearch@gmail.com - 2017-04-15 17:07 -0700
                Re: polyForth multitasker question "Elizabeth D. Rather" <erather@forth.com> - 2017-04-15 14:17 -1000
                Re: polyForth multitasker question hughaguilar96@gmail.com - 2017-04-15 18:27 -0700
                Re: polyForth multitasker question Ron Aaron <rambamist@gmail.com> - 2017-04-16 06:53 +0300
                Re: polyForth multitasker question hughaguilar96@gmail.com - 2017-04-15 22:00 -0700
                Re: polyForth multitasker question Ron Aaron <rambamist@gmail.com> - 2017-04-16 08:59 +0300
                Re: polyForth multitasker question lehs <skydda.barnen@gmail.com> - 2017-04-15 22:19 -0700
                Re: polyForth multitasker question hughaguilar96@gmail.com - 2017-04-15 17:26 -0700
                Re: polyForth multitasker question Andrew Haley <andrew29@littlepinkcloud.invalid> - 2017-04-16 09:10 -0500
                Re: polyForth multitasker question "Elizabeth D. Rather" <erather@forth.com> - 2017-04-16 09:13 -1000
                Re: polyForth multitasker question anton@mips.complang.tuwien.ac.at (Anton Ertl) - 2017-04-16 16:28 +0000
                Re: polyForth multitasker question "Elizabeth D. Rather" <erather@forth.com> - 2017-04-16 09:27 -1000
                Re: polyForth multitasker question Paul Rubin <no.email@nospam.invalid> - 2017-04-16 14:45 -0700
                Re: polyForth multitasker question "Elizabeth D. Rather" <erather@forth.com> - 2017-04-16 17:50 -1000
                Re: polyForth multitasker question anton@mips.complang.tuwien.ac.at (Anton Ertl) - 2017-04-17 12:13 +0000
                Re: polyForth multitasker question Paul Rubin <no.email@nospam.invalid> - 2017-04-17 13:27 -0700
                Re: polyForth multitasker question Andrew Haley <andrew29@littlepinkcloud.invalid> - 2017-04-18 03:49 -0500
                Re: polyForth multitasker question Alex <alex@rivadpm.com> - 2017-04-18 13:47 +0100
                Re: polyForth multitasker question Andrew Haley <andrew29@littlepinkcloud.invalid> - 2017-04-18 14:30 -0500
                Re: polyForth multitasker question hughaguilar96@gmail.com - 2017-04-16 20:58 -0700
                Re: polyForth multitasker question "HAA" <someone@microsoft.com> - 2017-04-18 11:47 +1000
                Re: polyForth multitasker question Paul Rubin <no.email@nospam.invalid> - 2017-04-17 19:19 -0700
                Re: polyForth multitasker question Andrew Haley <andrew29@littlepinkcloud.invalid> - 2017-04-18 04:34 -0500
                Re: polyForth multitasker question Paul Rubin <no.email@nospam.invalid> - 2017-04-19 02:00 -0700
                Re: polyForth multitasker question "HAA" <someone@microsoft.com> - 2017-04-19 18:10 +1000
                Re: polyForth multitasker question Paul Rubin <no.email@nospam.invalid> - 2017-04-19 01:41 -0700
                Re: polyForth multitasker question "HAA" <someone@microsoft.com> - 2017-04-19 21:38 +1000
                Re: polyForth multitasker question Lars Brinkhoff <lars.spam@nocrew.org> - 2017-04-19 10:56 +0200
                Re: polyForth multitasker question Andrew Haley <andrew29@littlepinkcloud.invalid> - 2017-04-19 07:22 -0500
                Re: polyForth multitasker question hughaguilar96@gmail.com - 2017-04-17 20:10 -0700
                Re: polyForth multitasker question stephen@mpeforth.com (Stephen Pelc) - 2017-04-18 09:35 +0000
                Re: polyForth multitasker question hughaguilar96@gmail.com - 2017-04-18 08:01 -0700
                Re: polyForth multitasker question Julian Fondren <julian.fondren@gmail.com> - 2017-04-18 09:03 -0700
                Re: polyForth multitasker question Cecil Bayona <cbayona@cbayona.com> - 2017-04-18 11:07 -0500
                Re: polyForth multitasker question Cecil Bayona <cbayona@cbayona.com> - 2017-04-18 10:59 -0500
                Re: polyForth multitasker question "HAA" <someone@microsoft.com> - 2017-04-19 19:13 +1000
                Re: polyForth multitasker question Paul Rubin <no.email@nospam.invalid> - 2017-04-15 17:36 -0700
                Re: polyForth multitasker question anton@mips.complang.tuwien.ac.at (Anton Ertl) - 2017-04-16 16:27 +0000
                Re: polyForth multitasker question Andrew Haley <andrew29@littlepinkcloud.invalid> - 2017-04-16 04:32 -0500
                Re: polyForth multitasker question "Elizabeth D. Rather" <erather@forth.com> - 2017-04-14 10:15 -1000
                Re: polyForth multitasker question albert@cherry.spenarnc.xs4all.nl (Albert van der Horst) - 2017-04-15 13:07 +0200
                Re: polyForth multitasker question anton@mips.complang.tuwien.ac.at (Anton Ertl) - 2017-04-17 15:13 +0000
                Re: polyForth multitasker question Paul Rubin <no.email@nospam.invalid> - 2017-04-14 01:36 -0700
                Re: polyForth multitasker question "Elizabeth D. Rather" <erather@forth.com> - 2017-04-13 22:48 -1000
                Re: polyForth multitasker question rickman <gnuarm@gmail.com> - 2017-04-14 16:36 -0400
                Re: polyForth multitasker question Paul Rubin <no.email@nospam.invalid> - 2017-04-14 14:55 -0700
                Re: polyForth multitasker question hughaguilar96@gmail.com - 2017-04-14 15:27 -0700
                Re: polyForth multitasker question Alex <alex@rivadpm.com> - 2017-04-14 23:45 +0100
                Re: polyForth multitasker question hughaguilar96@gmail.com - 2017-04-16 21:13 -0700
                Re: polyForth multitasker question Alex <alex@rivadpm.com> - 2017-04-17 16:57 +0100
                Re: polyForth multitasker question hughaguilar96@gmail.com - 2017-04-17 20:08 -0700
                Re: polyForth multitasker question rickman <gnuarm@gmail.com> - 2017-04-14 20:29 -0400
                Re: polyForth multitasker question "Elizabeth D. Rather" <erather@forth.com> - 2017-04-14 15:34 -1000
                Re: polyForth multitasker question Paul Rubin <no.email@nospam.invalid> - 2017-04-14 19:43 -0700
                Re: polyForth multitasker question rickman <gnuarm@gmail.com> - 2017-04-14 23:03 -0400
                Re: polyForth multitasker question Paul Rubin <no.email@nospam.invalid> - 2017-04-14 23:50 -0700
                Re: polyForth multitasker question rickman <gnuarm@gmail.com> - 2017-04-15 03:55 -0400
                Re: polyForth multitasker question Paul Rubin <no.email@nospam.invalid> - 2017-04-15 01:38 -0700
                Re: polyForth multitasker question rickman <gnuarm@gmail.com> - 2017-04-15 11:50 -0400
                Re: polyForth multitasker question john <anon@example.com> - 2017-04-15 12:03 +0100
                Re: polyForth multitasker question anton@mips.complang.tuwien.ac.at (Anton Ertl) - 2017-04-15 12:41 +0000
                Re: polyForth multitasker question rickman <gnuarm@gmail.com> - 2017-04-15 12:14 -0400
                Re: polyForth multitasker question Paul Rubin <no.email@nospam.invalid> - 2017-04-15 17:32 -0700
                Re: polyForth multitasker question rickman <gnuarm@gmail.com> - 2017-04-15 20:41 -0400
                Re: polyForth multitasker question anton@mips.complang.tuwien.ac.at (Anton Ertl) - 2017-04-17 14:57 +0000
                Re: polyForth multitasker question hughaguilar96@gmail.com - 2017-04-14 20:45 -0700
                Re: polyForth multitasker question rickman <gnuarm@gmail.com> - 2017-04-14 23:56 -0400
                Re: polyForth multitasker question albert@cherry.spenarnc.xs4all.nl (Albert van der Horst) - 2017-04-15 14:32 +0200
                Re: polyForth multitasker question rickman <gnuarm@gmail.com> - 2017-04-15 12:05 -0400
                Re: polyForth multitasker question Andrew Haley <andrew29@littlepinkcloud.invalid> - 2017-04-15 04:10 -0500
                Re: polyForth multitasker question foxaudioresearch@gmail.com - 2017-04-13 03:19 -0700
                Re: polyForth multitasker question Alex <alex@rivadpm.com> - 2017-04-13 15:46 +0100
                Re: polyForth multitasker question foxaudioresearch@gmail.com - 2017-04-14 11:37 -0700
                Re: polyForth multitasker question "Elizabeth D. Rather" <erather@forth.com> - 2017-04-13 09:48 -1000
                Re: polyForth multitasker question Andrew Haley <andrew29@littlepinkcloud.invalid> - 2017-04-13 05:37 -0500
                Re: polyForth multitasker question minforth@arcor.de - 2017-04-11 22:12 -0700
                Multitasking with Forth processors Lars Brinkhoff <lars.spam@nocrew.org> - 2017-04-12 07:39 +0200
                Re: Multitasking with Forth processors Paul Rubin <no.email@nospam.invalid> - 2017-04-11 22:58 -0700
                Re: Multitasking with Forth processors rickman <gnuarm@gmail.com> - 2017-04-12 03:00 -0400
                Re: Multitasking with Forth processors albert@cherry.spenarnc.xs4all.nl (Albert van der Horst) - 2017-04-12 12:18 +0200
                Re: Multitasking with Forth processors rickman <gnuarm@gmail.com> - 2017-04-12 17:11 -0400
                Re: Multitasking with Forth processors foxaudioresearch@gmail.com - 2017-04-12 13:50 -0700
                Re: Multitasking with Forth processors "Elizabeth D. Rather" <erather@forth.com> - 2017-04-12 13:30 -1000
                Re: Multitasking with Forth processors Jan Coombs <jenfhaomndgfwutc@murmic.plus.com> - 2017-04-14 12:20 +0100
                Re: Multitasking with Forth processors rickman <gnuarm@gmail.com> - 2017-04-14 16:47 -0400
            Re: polyForth multitasker question "Elizabeth D. Rather" <erather@forth.com> - 2017-04-10 07:42 -1000

csiph-web