krnl
1
Loading...
Searching...
No Matches
examples
krnlsimpledebugled
krnlsimpledebugled.ino
Go to the documentation of this file.
1
//220216
2
#include <
krnl.h
>
3
4
/*
5
* LED on dig pin 8,9,10
6
* D8 dummy running
7
* D9 first task created running
8
* D10 second ...
9
*
10
*/
11
#define STK 110
12
struct
k_t
*
p1
, *
p2
, *
p3
;
13
char
st1
[
STK
],
st2
[
STK
],
st3
[
STK
];
14
15
void
tgeneric
()
16
{
17
while
(1) {
18
k_eat_msec
(
pRun
->nr * 100);
// tasks has 1,2,3 so mul by 100 gives 100msec,...
19
k_sleep
(1000);
20
}
21
}
22
23
void
setup
()
24
{
25
26
Serial.begin(115200);
27
28
for
(
int
i
= 8;
i
< 14;
i
++)
// using PORTB 0..5: d8..d13
29
pinMode(
i
, OUTPUT);
30
/* MEGA PORTA (int i=22; i < 30; i++) pinMode(i,OUTPUT); */
31
32
k_init
(3, 0, 0);
// init with space for three tasks2
33
34
// priority low number higher priority than higher number
35
//Task 1
36
p1
=
k_crt_task
(
tgeneric
, 10,
st1
,
STK
);
// t1 as task, priority 10, 100 B stak
37
//Task 2
38
p2
=
k_crt_task
(
tgeneric
, 11,
st2
,
STK
);
// t1 as task, priority 10, 100 B stak
39
//Task 3
40
p3
=
k_crt_task
(
tgeneric
, 12,
st3
,
STK
);
// t1 as task, priority 10, 100 B stak
41
42
k_start
();
// 1 milli sec tick speed
43
}
44
45
void
loop
() {}
46
47
extern
"C"
{
48
49
void
k_breakout
()
// called every task shift from dispatcher
50
{
51
PORTB = (1 <<
pRun
->nr);
// D8: dummy running, D9 first task created running,...
52
// on MEGA use PORTA
53
}
54
}
55
56
// D8 ON dummy eating cpu
57
// D9 ON Task 1 (the first created
58
// D10 ON Task 2
59
// ...
60
// only one led ON at a time
61
// dont use led 13 for othe stuff bq it s cleared her
62
// can be fixed - just ask me
STK
#define STK
Definition
k00hacksPWM.ino:7
i
volatile int i
Definition
k02twotasks.ino:29
p1
struct k_t * p1
Definition
k03asleep.ino:22
p2
struct k_t * p2
Definition
k03asleep.ino:22
st2
char st2[110]
Definition
k04periodic-clip.ino:7
st1
char st1[110]
Definition
k04periodic-clip.ino:7
k_eat_msec
void k_eat_msec(unsigned int eatTime)
eat milliseconds - to mimik time consuming code
Definition
krnl.c:246
pRun
struct k_t * pRun
Definition
krnl.c:148
k_sleep
int k_sleep(int time)
let task sleep for a number of milliseconds
Definition
krnl.c:445
k_crt_task
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
k_init
int k_init(int nrTask, int nrSem, int nrMsg)
Definition
krnl.c:1108
k_start
int k_start()
Definition
krnl.c:1149
krnl.h
st3
char st3[110]
Definition
krnldebugled13.ino:8
p3
struct k_t * p3
Definition
krnldebugled13.ino:5
setup
void setup()
Definition
krnlsimpledebugled.ino:23
k_breakout
void k_breakout()
Definition
krnlsimpledebugled.ino:49
tgeneric
void tgeneric()
Definition
krnlsimpledebugled.ino:15
loop
void loop()
Definition
krnlsimpledebugled.ino:45
k_t
Definition
krnl.h:323
Generated by
1.15.0