krnl 1
Loading...
Searching...
No Matches
akrnltaskblink2.ino
Go to the documentation of this file.
1#include <krnl.h>
2
3struct k_t * pt1, *pt2, *pt3,
5
6#define TICKSPEED 10
7
8#define STK 100
9char st1[STK], st2[STK], st3[STK];
10
11volatile int cnt = 0;
12
14{
15 int clip;
16 Serial.println("hello");
18 while (1) {
19 k_wait_lost(sem1, 0, &clip);
20 if (clip != 0) {
21 // digitalWrite(13, HIGH); // led on bq we are behind
22 }
23 k_eat_time(50); // lets eat 200 milliseconds
24 }
25}
26
27
28void medprio()
29{
30 int clip;
31 k_set_sem_timer(sem2, 1000 / TICKSPEED); //
32 while (1) {
33 k_wait_lost(sem2, 0, &clip);
34 if (clip != 0) {
35 // digitalWrite(13, HIGH); // led on bq we are behind
36 }
37 k_eat_time(200); // lets eat 5 milliseconds
38 }
39}
40
41void lowprio()
42{
43 int clip;
44 k_set_sem_timer(sem3, 3000 / TICKSPEED); //
45 while (1) {
46
47 k_wait_lost(sem3, 0, &clip);
48 if (clip != 0) {
49 // digitalWrite(13, HIGH); // led on bq we are behind
50 }
51 k_eat_time(100);
52 }
53
54}
55
56
57void setup()
58{
59 {
60 int i;
61 for (i = 8; i <= 13; i++)
62 {
63 pinMode(i, OUTPUT);
64 digitalWrite(i, LOW);
65 }
66 }
67 pinMode(13, OUTPUT); //LED
68 digitalWrite(13, LOW);
69 k_init(4, 3, 0); // dummy get tasknr 0
70 Serial.begin(9600);
71 pt3 = k_crt_task(lowprio, 30, st3, STK); //get tasknr 1
72 pt2 = k_crt_task(medprio, 20, st2, STK); // 2 ...
73 pt1 = k_crt_task(highprio, 10, st1, STK); // 3
74
75 sem1 = k_crt_sem(0, 2); // so 1 is highest value
76 sem2 = k_crt_sem(0, 2); // so 1 is highest value
77 sem3 = k_crt_sem(0, 2); // so 1 is highest value
78 Serial.println("stnart");
79 k_start(10); // 10 millisecond heartbeat
80 Serial.print("oev");
81}
82
83extern "C" {
84
85
86 void k_sem_clip(unsigned char nr, int i)
87 {
88 cnt++;
89 }
90
91 void k_send_Q_clip(unsigned char nr, int i)
92 {
93 cnt++;
94 }
95 void k_breakout() // called every task shift
96 {
97 unsigned char c;
98 PORTB = 1 << pRun->nr; // arduino uno !!
99 }
100
101}
102
103
104
105void loop() {}
#define STK
volatile int i
struct k_t * pt2
struct k_t * pt1
struct k_t * sem1
char st2[110]
char st1[110]
struct k_t * sem2
struct k_t * pRun
Definition krnl.c:148
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
char st3[110]
volatile int cnt
#define TICKSPEED
struct k_t * sem3
void highprio()
struct k_t * pt3
void medprio()
void lowprio()
void setup()
void k_breakout()
void k_send_Q_clip(unsigned char nr, int i)
breakout for k_send
void highprio()
void k_sem_clip(unsigned char nr, int i)
void medprio()
void lowprio()
void loop()
Definition krnl.h:323
unsigned char nr
Definition krnl.h:327
volatile int clip
Definition krnl.h:339