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