dit projekt
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 
5 struct k_t *p1, *p2, *s1;
6 
7 void 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 
18 void 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
41 char stk1[STK], stk2[STK];
42 
43 void 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 
67 void loop() {}
struct k_t * s1
void setup()
char stk2[STK]
void t2()
void t1()
char stk1[STK]
struct k_t * p1
#define STK
struct k_t * p2
void loop()
JDN SIGER NOGO IN SIMPLIFY VRS struct k_t * pRun
Definition: krnl.c:200
int k_sleep(int time)
Definition: krnl.c:491
struct k_t * k_crt_sem(int init_val, int maxvalue)
Definition: krnl.c:589
int k_wait(struct k_t *sem, int timeout)
Definition: krnl.c:728
int k_set_sem_timer(struct k_t *sem, int val)
Definition: krnl.c:631
struct k_t * k_crt_task(void(*pTask)(void), char prio, char *pStk, int stkSize)
Definition: krnl.c:374
int k_init(int nrTask, int nrSem, int nrMsg)
Definition: krnl.c:1152
int k_start()
Definition: krnl.c:1192
Definition: krnl.h:334
volatile int cnt1
Definition: krnl.h:346