krnl 1
Loading...
Searching...
No Matches
k01twotasks.ino
Go to the documentation of this file.
1#include <krnl.h>
2// one task loops and blink
3// one task loops and print
4
5struct k_t *p1, *p2;
6
7void t1()
8{
9 while (1) {
10 k_sleep(500);
11 digitalWrite(13,HIGH);
12
13 k_sleep(100);
14 digitalWrite(13,LOW);
15 }
16}
17
18void t2()
19{
20int i = 0;
21 while (1) {
22 k_sleep(300);
23 Serial.println(i++);
24 }
25}
26
27
28void setup()
29{
30 int res;
31 Serial.begin(9600);
32 while (! Serial) ;
33 pinMode(13,OUTPUT);
34
35 k_init(2,0,0); // init with space for one task
36 // |--- no of mg Queues (0)
37 // |----- no of semaphores (0)
38 // |------- no of tasks (2)
39
40 // priority low number higher priority than higher number
41 p1 = k_crt_task(t1,10,100); // t1 as task, priority 10, 100 B stak
42 p2 = k_crt_task(t2,10,100); // t2 as task, priority 10, 100 B stak
43 res= k_start(1); // 1 milli sec tick speed
44 // you will never return from k_start
45 Serial.print("ups an error occured: "); Serial.println(res);
46 while (1) ;
47}
48
49void loop() {}
void setup()
void t2()
void t1()
void loop()
volatile int i
struct k_t * p1
Definition k03asleep.ino:22
struct k_t * p2
Definition k03asleep.ino:22
int k_sleep(int time)
let task sleep for a number of milliseconds
Definition krnl.c:445
struct k_t * k_crt_task(void(*pTask)(void), char prio, char *pStk, int stkSize)
create a task - only to be called before k_start creates a task and put it in the active Q
Definition krnl.c:328
int k_init(int nrTask, int nrSem, int nrMsg)
Definition krnl.c:1108
int k_start()
Definition krnl.c:1149
struct k_t * t1
Definition krnlgen.ino:3
struct k_t * t2
Definition krnlgen.ino:3
Definition krnl.h:323