krnl 1
Loading...
Searching...
No Matches
krnlsimpledebugled.ino
Go to the documentation of this file.
1//220216
2#include <krnl.h>
3
4/*
5 * LED on dig pin 8,9,10
6 * D8 dummy running
7 * D9 first task created running
8 * D10 second ...
9 *
10 */
11#define STK 110
12struct k_t *p1, *p2, *p3;
13char st1[STK], st2[STK], st3[STK];
14
16{
17 while (1) {
18 k_eat_msec(pRun->nr * 100); // tasks has 1,2,3 so mul by 100 gives 100msec,...
19 k_sleep(1000);
20 }
21}
22
23void setup()
24{
25
26 Serial.begin(115200);
27
28 for (int i = 8; i < 14; i++) // using PORTB 0..5: d8..d13
29 pinMode(i, OUTPUT);
30 /* MEGA PORTA (int i=22; i < 30; i++) pinMode(i,OUTPUT); */
31
32 k_init(3, 0, 0); // init with space for three tasks2
33
34 // priority low number higher priority than higher number
35 //Task 1
36 p1 = k_crt_task(tgeneric, 10, st1, STK); // t1 as task, priority 10, 100 B stak
37 //Task 2
38 p2 = k_crt_task(tgeneric, 11, st2, STK); // t1 as task, priority 10, 100 B stak
39 //Task 3
40 p3 = k_crt_task(tgeneric, 12, st3, STK); // t1 as task, priority 10, 100 B stak
41
42 k_start(); // 1 milli sec tick speed
43}
44
45void loop() {}
46
47extern "C" {
48
49 void k_breakout() // called every task shift from dispatcher
50 {
51 PORTB = (1 << pRun->nr); // D8: dummy running, D9 first task created running,...
52 // on MEGA use PORTA
53 }
54}
55
56// D8 ON dummy eating cpu
57// D9 ON Task 1 (the first created
58// D10 ON Task 2
59// ...
60// only one led ON at a time
61// dont use led 13 for othe stuff bq it s cleared her
62// can be fixed - just ask me
#define STK
volatile int i
struct k_t * p1
Definition k03asleep.ino:22
struct k_t * p2
Definition k03asleep.ino:22
char st2[110]
char st1[110]
void k_eat_msec(unsigned int eatTime)
eat milliseconds - to mimik time consuming code
Definition krnl.c:246
struct k_t * pRun
Definition krnl.c:148
int k_sleep(int time)
let task sleep for a number of milliseconds
Definition krnl.c:445
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_init(int nrTask, int nrSem, int nrMsg)
Definition krnl.c:1108
int k_start()
Definition krnl.c:1149
char st3[110]
struct k_t * p3
void setup()
void k_breakout()
void tgeneric()
void loop()
Definition krnl.h:323