krnl
1
Loading...
Searching...
No Matches
examples
oldexamples
demos-w-analyser
k02
k02.ino
Go to the documentation of this file.
1
2
/* k02
3
One task printing own usage of stak
4
*/
5
6
#include <
krnl.h
>
7
8
#define STKSIZE 100
9
10
#define TASKPRIO 10
11
12
char
stak
[
STKSIZE
],
stak2
[
STKSIZE
];
13
struct
k_t
*
pTask
,*
pTask2
;
14
15
void
task
()
16
{
17
int
unusedStak;
18
while
(1) {
19
// k_eat_msec(10); // consume 10 millisec of CPU time
20
// k_sleep(30); // sleep 100 ticks - replacement for delay bq k_seelp releases CPU
21
}
22
}
23
24
25
void
task2
()
26
{
27
int
unusedStak;
28
while
(1) {
29
// k_eat_msec(3); // consume 10 millisec of CPU time
30
// k_sleep(20); // sleep 100 ticks - replacement for delay bq k_seelp releases CPU
31
}
32
}
33
34
35
void
setup
() {
36
// for debugging
37
for
(
int
i
= 8;
i
< 14;
i
++)
38
pinMode(
i
, OUTPUT);
39
40
Serial.begin(9600);
41
42
k_init
(2, 0, 0);
// 1 task, 0 semaphores, 0 messaegQueues */
43
pTask
=
k_crt_task
(
task
,
TASKPRIO
,
stak
,
STKSIZE
);
44
pTask2
=
k_crt_task
(
task2
,
TASKPRIO
+1,
stak2
,
STKSIZE
);
45
k_start
();
/* start krnl timer speed 1 milliseconds*/
46
47
Serial.println(
"If you see this then krnl didnt start :-( "
);
48
}
49
50
void
loop
() {}
51
52
/***** DEBUGGING PART - LED ON 8-12**********/
53
/************************ DEBUG CALLBACK BREAKOUT PART ****************/
54
// must be extern C ! its not mandatory to supply with these functions - only if you need
55
56
extern
"C"
{
57
58
// called when a semphore is clipping - nr is id of semaphore and i os nr of times clip has occured
59
unsigned
char
led13
;
60
void
k_sem_clip
(
unsigned
char
nr
,
int
i
)
61
{
62
return
;
63
if
(
nr
== 2)
64
led13
|= 0x20;
65
}
66
67
void
k_sem_unclip
(
unsigned
char
nr
)
68
{
69
return
;
70
if
(
nr
== 2)
71
led13
= 0x00;
72
}
73
74
75
/* void k_send_Q_clip(unsigned char nr, int i) {} */
76
77
// task numbering is in creation order: dummy: 0, first of yours 1, next 2,...
78
void
k_breakout
()
// called every task shift from dispatcher
79
{
80
unsigned
char
c;
81
PORTB = (1 <<
pRun
->nr);
// arduino uno !! specific usage of PORTB
82
}
83
// for a MEGA you have to find another port :-)
84
// port K (adc8-15) seems feasible
85
// get inspired at http://kom.aau.dk/~jdn/edu/doc/arduino/ards.html
86
}
87
88
89
90
STKSIZE
#define STKSIZE
Definition
k02.ino:8
setup
void setup()
Definition
k02.ino:35
stak
char stak[100]
Definition
k02.ino:12
k_breakout
void k_breakout()
Definition
k02.ino:78
k_sem_clip
void k_sem_clip(unsigned char nr, int i)
Definition
k02.ino:60
task
void task()
Definition
k02.ino:15
k_sem_unclip
void k_sem_unclip(unsigned char nr)
Definition
k02.ino:67
task2
void task2()
Definition
k02.ino:25
led13
unsigned char led13
Definition
k02.ino:59
loop
void loop()
Definition
k02.ino:50
pTask
struct k_t * pTask
Definition
k00hacksPWM.ino:4
i
volatile int i
Definition
k02twotasks.ino:29
stak2
char stak2[STKSZ]
Definition
k02twotasks.ino:9
task2
void task2()
Definition
k06syncsem.ino:92
TASKPRIO
#define TASKPRIO
Definition
k08isrsem.ino:14
pTask2
struct k_t * pTask2
Definition
k09msgq.ino:11
pRun
struct k_t * pRun
Definition
krnl.c:148
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
task
struct k_t * task
Definition
kernelmoviesimple.ino:10
k_t
Definition
krnl.h:323
k_t::nr
unsigned char nr
Definition
krnl.h:327
Generated by
1.15.0