Hi Dirk,

Most of my apps have what you could consider 'tasks'. However, I use
non-blocking state machines instead of the jal TASK feature, because I
fail to see the added value of this feature since it only allows
'suspend' at level0 (there are other reasons too, similar to the
discussion if/when an RTOS is worth while).
But I am happy to learn, so please enlighten me if you think I am
missing something ;)

When reading the issue, the first questions that comes to mind are
- does blinking work as expected without tasks?
- is the issue in the isr (in other words: does it take more time to
decrease the counter) or in the task/main loop (does it take more time
to see the counter is zero)?
- is the issue also there when you don't start the second task?
I had a glance at your code and it looks okay and clean to me. You
might want to take a look at the asm file to see what code is produced
by the compiler to handle both tasks (and particual, the way it
suspends / switches).
I don't recall much on tasks at the yahoo jal group, but since this
group is much larger, you might get more info there.

And in case you can't convince me to give tasks a try, you might
consider creating your 'tasks' as small, non-blocking procedures and
call them from the main loop. The delay slot sample shows how to
control the calling frequency of different tasks.

Joep


2012/9/20 dirk <[email protected]>:
> Hello group,
>
> I am trying to do a project with several tasks, but I am having trouble
> getting it going.
> Can anyone tell me why the following code doesn't work?
>
> -- JAL 2.0.4
> include 18f2520
> pragma target clock 20_000_000        -- oscillator frequency
> -- Configuration memory settings (fuses)
> pragma target OSC  HS             -- HS crystal or resonator
> pragma target WDT  disabled        -- no watchdog
> pragma target LVP  disabled        -- no Low Voltage Programming
> --
> pragma task 2
> -- Enable delays without blocking
> const timer0_isr_rate = 1000            -- 1 kHz isr rate
> const DELAY_SLOTS = 1                   -- support 1 delays at the same time
> include timer0_isr_interval
> timer0_isr_init()                       -- init timer0 isr
> --
> enable_digital_io()                -- Make all pins digital I/O
> --
> PORTA_direction = OUTPUT
> --
> task Something() is
>     forever loop
>         --do something
>         suspend
>     end loop
> end task
> --
> start Something()
> set_delay(0, 100)
> forever loop
>     if (check_delay(0)) then
>          pin_a0 = ! pin_a0
>          set_delay(0, 100)
>     end if
>     suspend
> end loop
>
> I expected the led on pin  A0 to blink every 10th of a second, in stead it
> blinks at a much slower rate (every minute).
>
> Please help me out.
> Greetz, Dirk
>
> --
> You received this message because you are subscribed to the Google Groups
> "jallib" group.
> To view this discussion on the web visit
> https://groups.google.com/d/msg/jallib/-/d5RX2TFoiAgJ.
> To post to this group, send email to [email protected].
> To unsubscribe from this group, send email to
> [email protected].
> For more options, visit this group at
> http://groups.google.com/group/jallib?hl=en.

-- 
You received this message because you are subscribed to the Google Groups 
"jallib" group.
To post to this group, send email to [email protected].
To unsubscribe from this group, send email to 
[email protected].
For more options, visit this group at 
http://groups.google.com/group/jallib?hl=en.

Reply via email to