void POSCALL nosInit(POSTASKFUNC_t firstfunc, void *funcarg, VAR_t priority, UINT_t taskStackSize, UINT_t idleStackSize) { #if POSCFG_TASKSTACKTYPE == 0 void *stk_task1, *stk_idle; #endif taskparams_g.func = firstfunc; taskparams_g.arg = funcarg; #if (NOSCFG_FEATURE_MEMALLOC != 0) && (NOSCFG_MEM_MANAGER_TYPE == 1) nos_initMem(); #endif #if POSCFG_TASKSTACKTYPE == 0 if (taskStackSize == 0) taskStackSize = NOSCFG_DEFAULT_STACKSIZE; if (idleStackSize == 0) idleStackSize = NOSCFG_DEFAULT_STACKSIZE; stk_task1 = NOS_MEM_ALLOC(NOSCFG_STKMEM_RESERVE + taskStackSize); stk_idle = NOS_MEM_ALLOC(NOSCFG_STKMEM_RESERVE + idleStackSize); if ((stk_task1 != NULL) && (stk_idle != NULL)) { #if NOSCFG_STACK_GROWS_UP == 0 posInit(nano_init, stk_task1, priority, (void*) (((MEMPTR_t)stk_task1) + taskStackSize - (NOSCFG_STKMEM_RESERVE + 1)), (void*) (((MEMPTR_t)stk_idle) + idleStackSize - (NOSCFG_STKMEM_RESERVE + 1)) ); #else posInit(nano_init, stk_task1, priority, (void*) (((MEMPTR_t)stk_task1) + NOSCFG_STKMEM_RESERVE), (void*) (((MEMPTR_t)stk_idle) + NOSCFG_STKMEM_RESERVE) ); #endif } #elif POSCFG_TASKSTACKTYPE == 1 if (taskStackSize == 0) taskStackSize = NOSCFG_DEFAULT_STACKSIZE; if (idleStackSize == 0) idleStackSize = NOSCFG_DEFAULT_STACKSIZE; posInit(nano_init, NULL, priority, taskStackSize, idleStackSize); #elif POSCFG_TASKSTACKTYPE == 2 (void) taskStackSize; (void) idleStackSize; posInit(nano_init, NULL, priority); #endif }
int main(void) { PRINTSTR("\n" POS_STARTUPSTRING "\n\n"); /* start multitasking and execute first task (task1) */ #if (POSCFG_TASKSTACKTYPE == 0) posInit(task1, NULL, 1, allocstack(0x0600), allocstack(0x0200)); #elif (POSCFG_TASKSTACKTYPE == 1) posInit(task1, NULL, 1, 0x0600, 0x0200); #elif (POSCFG_TASKSTACKTYPE == 2) posInit(task1, NULL, 1); #endif /* we will never get here */ return 0; }
int main(void) { DDRB = 0x01; posInit(initialTask, NULL, 2); return 0; }
/* Program main function. * This function starts pico]OS by initializing the pico layer. */ int main(void) { /* initialize pico]OS (pico layer only) */ posInit(firsttask, /* ptr to function: first task that is executed */ NULL, /* optional argument, not used here */ 1); /* priority of the first task */ /* Note: The call to posInit() will never return */ return 0; }
int main(void) { //RTOS initialization halInit(); chSysInit(); palSetPad(GPIOG, GPIOG_LED4_RED); //modules and peripherals initialization dcmInit(); pcm9685Init(); max11628Init(); max7317Init(); lcdInit(); fieldInit(); posInit(position_computed_hook); trajectoryInit(); asservInit(); mecaInit(); //stepInit(); //usirInit(); pathfinderInit(); //gyroInit(); stratInit(); lcdPrintln(LCD_WARNING, "Start: robot principal"); while(0) { while((max7317Read() & (1 << IO_SWITCH_BACK_LEFT))) { chThdSleepMilliseconds(100); } lcdPrintln(LCD_INFO, "Click !"); stepAction(STEP_ACTION_TAKE_RIGHT); stepWait(); lcdPrintln(LCD_INFO, "Done !"); while(!(max7317Read() & (1 << IO_SWITCH_BACK_LEFT))) { chThdSleepMilliseconds(100); } } lcdPrintln(LCD_INFO, "Attente tirette (mise en place)"); while(!(max7317Read() & (1 << IO_SWITCH_STARTUP))) { chThdSleepMilliseconds(100); } lcdPrintln(LCD_INFO, "Attente du depart"); while(max7317Read() & (1 << IO_SWITCH_STARTUP)) { chThdSleepMilliseconds(100); } stratStart(); //chThdSleepMilliseconds(3000); // dcmSetWidth(0, 500); // dcmSetWidth(1, -500); //while (true) //{ // lcdPrintln(LCD_INFO,"l %ld, r %ld", posGetLeftTick(), posGetRightTick()); // chThdSleepMilliseconds(500); //} //int i = 0; //int d = 400; //while (true) //{ // lcdPrintln(LCD_INFO, "tour: %d", i); // i += 1; // TRAJECTORY_XY_MM(d, 0); // TRAJECTORY_XY_MM(d, d); // TRAJECTORY_XY_MM(0, d); // TRAJECTORY_XY_MM(0, 0); // trajectoryWait(); //} while(true) { chThdSleepMilliseconds(3000); } }
int main(void) { posInit(initialTask, NULL, 2); return 0; }