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


Groups > comp.lang.forth > #57353

Re: polyForth multitasker question

From rickman <gnuarm@gmail.com>
Newsgroups comp.lang.forth
Subject Re: polyForth multitasker question
Date 2017-04-15 03:55 -0400
Organization A noiseless patient Spider
Message-ID <ocsjfv$eg2$1@dont-email.me> (permalink)
References (17 earlier) <87a87ihcxe.fsf@nightsong.com> <ocrpc8$nqb$1@dont-email.me> <871ssugzm0.fsf@nightsong.com> <ocs2cj$6r0$1@dont-email.me> <87mvbif9kd.fsf@nightsong.com>

Show all headers | View raw


On 4/15/2017 2:50 AM, Paul Rubin wrote:
> 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.

I don't want to wade through a bunch of code and you complied by not 
supplying any that was useful.

: wakeup ( -- ) ... ; \ cleanup ISR stack and re-awaken cpu

What does this code do?  I mean what does it mean to "re-awaken" CPU. 
Tell me what is going on in the CM0 CPU here.  The processor is already 
awake or it wouldn't be executing code.  Yes, this is one way to do it, 
but you need to figure out just how to manage the CPU to make this 
happen the way you are imagining it.  There is a TON of detail.

You also didn't give any estimate for what it takes to use a hardware 
timer to wake up the CPU via interrupt.  It only takes the CPU a few 
instructions to determine there is nothing to do and it can go back to 
sleep or process the event that was created by the interrupt handler.

-- 

Rick C

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