krnl 1
Loading...
Searching...
No Matches
rt-arduino-periodic-delay.ino
Go to the documentation of this file.
1
2#include <krnl.h>
3//Jens 2021
4
5
6
7// k_task_periodic_delay - for sampling etc
8
9// return 0: ok and have been waiting - was arriving in good time
10// 1: ok just on time - no wait
11// 2: behind - no wait
12// -1 Time parameter above 60000
13
14
15void wr(void)
16{
17 int i = 0,ee;
18 unsigned long ii, x;
19
20 // similar o freertos' vTaskdDelayUntil
21 i = k_millis(); // get curren tick from kernel as starting point
22
23 while (1) {
24 ee = k_task_periodic_delay(&ii, 100);//sleep( random(100, 1000)); // NB k_sleep and not k_eat_ticks bq then you will never release CPU
25 DI();
27 EI();
28 Serial.print(ee); Serial.print(" ");
29 Serial.println(x);
30 k_sleep( random(90, 105));
31 }
32}
33
34void setup()
35{
36 Serial.begin(115200); // for output from task 1
37 delay(2000);
38 Serial.print("RW START");
39 k_init(1, 0, 0);
40 k_crt_task(wr, 12, 200);
41
42 k_start(1); // start kernel with tick speed 1 milli seconds
43 Serial.println("if coming hre then init went wrong");
44}
45
46void loop() {
47 /* loop will never be called */
48}
volatile int i
int x
unsigned long k_millis(void)
return no of millisec sincs start NB no leap seconds - its clean
Definition krnl.c:1247
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
#define DI()
Definition krnl.h:478
#define EI()
Definition krnl.h:479
unsigned long k_millis_counter
Definition krnl.c:161
void wr(void)