krnl 1
Loading...
Searching...
No Matches
semperf.ino
Go to the documentation of this file.
1#include <krnl.h>
2
3/* Simple program for testing performance of SNOT
4* low prio task signals a high prio task waiting by semaphore
5* At every 100 loop a dig port is toggled so you can use a scope
6* for seeing performance
7* 100 loops == 200 task shift by signal/wait on semaphore and
8* takes 4.4 msec on Arduino Uno.
9* So one full taskshift by semaphore takes
10*/
11struct k_t *pt1,*sem1;
12char s1[200];
13struct k_t *pt2;
14char s2[200];
15
16void t1(void)
17{
18 while (1) {
20 }
21}
22
23void t2(void)
24{
25 char i=0;
26 char togle=0;
27 while (1) {
28 k_wait(sem1,0);
29 i++;
30 if (100 < i)
31 {
32 i=0;
33 if (togle) {
34 PORTD = 0xff;
35 togle = 0;
36 }
37 else {
38 PORTD= 0x00;
39 togle = 1;
40 }
41 }
42 }
43}
44
45void setup()
46{
47 int i;
48 Serial.begin(9600);
49 k_init(3,3,3);
50 for (i=0; i < 8; i++)
51 pinMode(i,OUTPUT); // so we can use fast PORTD output
52 pt1=k_crt_task(t1,11,s1,200);
53 pt2=k_crt_task(t2,10,s2,200);
54 sem1 = k_crt_sem( 0,100);
55 k_start(10);
56}
57
58void loop()
59{
60}
61
62
volatile int i
struct k_t * pt2
struct k_t * pt1
unsigned char s2[110]
Definition k03asleep.ino:25
unsigned char s1[110]
Definition k03asleep.ino:25
struct k_t * sem1
int k_signal(struct k_t *sem)
Signal a semaphore w eventually task shift.
Definition krnl.c:636
int k_wait(struct k_t *sem, int timeout)
stand wait on semaphore call with timeout facility
Definition krnl.c:683
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
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
struct k_t * t1
Definition krnlgen.ino:3
struct k_t * t2
Definition krnlgen.ino:3
void setup()
Definition semperf.ino:45
void t2(void)
Definition semperf.ino:23
void t1(void)
Definition semperf.ino:16
void loop()
Definition semperf.ino:58
Definition krnl.h:323