3 cooperative multitasking – Digi JACKRABBIT BL1800 User Manual

Page 52

Advertising
background image

48

Jackrabbit (BL1800)

4.3 Cooperative Multitasking

Cooperative multitasking is a convenient way to perform several different tasks at the
same time. An example would be to step a machine through a sequence of steps and at the
same time independently carry on a dialog with the operator via a human interface. Coop-
erative multitasking differs from a different approach called preemptive multitasking.
Dynamic C supports both types of multitasking. In cooperative multitasking each separate
task voluntarily surrenders its compute time when it does not need to perform any more
activity immediately. In preemptive multitasking control is forcibly removed from the task
via an interrupt.

Dynamic C has language extensions to support multitasking. The major C constructs are
called costatements, cofunctions, and slicing. These are described more completely in the
Dynamic C User’s Manual. The example below, sample program

DEMOJR3.C

, uses cos-

tatements. A costatement is a way to perform a sequence of operations that involve pauses
or waits for some external event to take place. A complete description of costatements is
in the Dynamic C User’s Manual. The

DEMOJR3.C

sample program has two independent

tasks. The first task flashes LED DS4 once a second. The second task uses button S1 on
the Prototyping Board to toggle the logical value of a virtual switch,

vswitch

, and flash

DS1 each time the button is pressed. This task also debounces button S1.

Advertising