krnl 1
Loading...
Searching...
No Matches
k015priority.ino
Go to the documentation of this file.
1#include <krnl.h>
2// one task loops and blink
3// k_wait ensures proper timing
4// how does t2 runs ??? and why
5
6struct k_t *p1, *p2,*s1;
7
8
9// the high priority task
10void t1()
11{
12int v;
13 k_set_sem_timer(s1,1100);
14 while (1) {
15
16 k_wait(s1,0); //wait until a kick comes
17 k_eat_ticks(1000); // eat time for 1000 ticks so mimic cpu usage
18 }
19}
20
21void t2()
22{
23 int i=0;
24 while (1) {
25 Serial.println(i++);
26 } // do we keep up in pace ?
27}
28
29
30void setup()
31{
32 int res;
33 Serial.begin(9600);
34 while (! Serial) ;
35 pinMode(13,OUTPUT);
36
37 k_init(2,1,0); // init with space for one task
38 // |--- no of mg Queues (0)
39 // |----- no of semaphores (0)
40 // |------- no of tasks (2)
41
42 // priority low number higher priority than higher number
43 p1 = k_crt_task(t1,9,100); // t1 as task, priority 10, 100 B stak
44 p2 = k_crt_task(t2,10,100); // t1 as task, priority 10, 100 B stak
45
46 s1 = k_crt_sem(0,10);
47 Serial.println("bef start");
48 res= k_start(1); // 1 milli sec tick speed
49 // you will never return from k_start
50 Serial.print("ups an error occured: "); Serial.println(res);
51 while (1) ;
52}
53
54void 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
unsigned char s1[110]
Definition k03asleep.ino:25
int k_wait(struct k_t *sem, int timeout)
stand wait on semaphore call with timeout facility
Definition krnl.c:683
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_set_sem_timer(struct k_t *sem, int val)
attach a periodic timer to a semaphore, to be used for realtime
Definition krnl.c:586
struct k_t * k_crt_sem(int init_val, int maxvalue)
change task priority and reinserts it in task Q and do a task shift
Definition krnl.c:544
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