krnl 1
Loading...
Searching...
No Matches
k04periodic-simple.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
5struct k_t *p1, *p2, *s1;
6
7void t1()
8{
9 k_set_sem_timer(s1, 100); // let krnl signal sem s1 every 100 tick == 100 msec
10
11 while (1) {
12 k_wait(s1, 0); //wait until a kick comes parm 0 means waith until signal - so no timeout
13 digitalWrite(13, ! digitalRead(13));
14 }
15}
16
17
18void t2()
19{
20 int d[40];
21 int h,l,sp, tsp;
22 int bot;
23 unsigned int tickk;
24 while (1) {
25 Serial.print(tickk);
26 Serial.print(" ");
27 tickk++;
28 d[37] = tickk;
29 h = SPH;
30 l = SPL;
31 sp = h <<8 | l;
32 bot = pRun->cnt1;
33 Serial.print(d[37]); Serial.print(" ");
34 Serial.print(sp); Serial.print(" ");
35 Serial.println(bot);
36 k_sleep(100)
37; }
38}
39
40#define STK 100
41char stk1[STK], stk2[STK];
42
43void setup()
44{
45 int res;
46 Serial.begin(115200);
47 while (! Serial) ;
48 pinMode(13, OUTPUT);
49
50 k_init(2, 1, 0); // init with space for one task
51 // |--- no of mg Queues (0)
52 // |----- no of semaphores (0)
53 // |------- no of tasks (2)
54
55 // priority low number higher priority than higher number
56 p1 = k_crt_task(t1, 10, stk1,STK); // t1 as task, priority 10, 100 B stak
57 p2 = k_crt_task(t2, 11, stk2,STK); // t2 as task, priority 11 == lower than t1, 100 B stak
58
59 s1 = k_crt_sem(0, 10); // crt sem
60
61 res = k_start(); // 1 milli sec tick speed
62 // you will never return from k_start
63 Serial.print("ups an error occured: "); Serial.println(res);
64 while (1) ;
65}
66
67void loop() {}
#define STK
struct k_t * p1
Definition k03asleep.ino:22
struct k_t * p2
Definition k03asleep.ino:22
unsigned char s1[110]
Definition k03asleep.ino:25
void setup()
char stk2[100]
void t2()
void t1()
char stk1[100]
void loop()
struct k_t * pRun
Definition krnl.c:148
int k_sleep(int time)
let task sleep for a number of milliseconds
Definition krnl.c:445
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
volatile int l
Definition simpleisr.ino:7
Definition krnl.h:323