#include #include #include #include #include #include #include #include #include #include #include #include #define STACK_SIZE 0 #define PRIO_TIMER 3 RT_TASK test_task; int int_count = 0; int end = 0; // --s-ms-us-ns RTIME task_period_ns = 001000000llu; void test_task_fct(){ int count = 0; int ret; int err =0; unsigned long overrun; unsigned char sound_byte; unsigned char toggle = 0; ret = rt_task_set_periodic(NULL, TM_NOW, rt_timer_ns2ticks(task_period_ns)); if (ret) { printf("error while set periodic, code %d\n",ret); return; } while(!end){ ret = rt_task_set_mode(0, T_PRIMARY, NULL); if (ret) { printf("error while rt_task_set_mode, code %d\n",ret); return; } ret = rt_task_wait_period(&overrun); if (ret) { switch (ret) { case -EWOULDBLOCK: printf("1\n"); break; case -EINTR: printf("2\n"); break; case -ETIMEDOUT: printf("3\n"); break; case -EPERM: printf("4\n"); break; } printf("error while rt_task_wait_period, code %d\n",ret); return; } unsigned char bell = 7; printf("%c",bell); fflush(NULL); } } // signal-handler, to ensure clean exit on Ctrl-C void clean_exit(int dummy) { printf("[MAIN] try clean exit\n"); end = 1; rt_task_delete(&test_task); printf("[MAIN] bye bye\n"); } int main(int argc, char *argv[]) { int err, ret = 0; printf("[MAIN] start system\n"); // install signal handler signal(SIGTERM, clean_exit); signal(SIGINT, clean_exit); mlockall(MCL_CURRENT | MCL_FUTURE); err = rt_task_spawn(&test_task, "Timer", STACK_SIZE, PRIO_TIMER, 0, &test_task_fct, NULL); if (err) { printf("error rt_task_spawn\n"); return 0; } printf("[MAIN] test_task created\n"); printf("[MAIN] \n"); pause(); fflush(NULL); return 0; }