void Task1() { uint16_t i,j; uint32_t it; nrk_time_t time, time2, time3; while(1) { nrk_led_set(RED_LED); nrk_gpio_toggle(NRK_DEBUG_0); nrk_kprintf("Task 1\r\n"); //for (i = 0; i < 10; i++) { // nrk_time_get(&time); // nrk_time_get(&time2); // nrk_time_sub(&time3, time2, time); // printf("%lu.%09lu\r\n", time3.secs, time3.nano_secs); nrk_time_get(&time); printf("%lu.%09lu\r\n", time.secs, time.nano_secs); for(it=0;it<115200;it++); nrk_time_get(&time); printf("%lu.%09lu\r\n", time.secs, time.nano_secs); // nrk_time_get(&time2); // nrk_time_sub(&time3, time2, time); // printf("%lu.%09lu\r\n", time3.secs, time3.nano_secs); //} // nrk_time_get(&time); // for(i=0;i<256;i++) for(j=0;j<65000;j++); // wait 1 second // nrk_time_get(&time2); // nrk_time_sub(&time3, time2, time); // printf("%lu.%lu\r\n", time3.secs, time3.nano_secs); nrk_kprintf("Task 1 done\r\n"); nrk_wait_until_next_period(); } }
void my_timer_callback() { nrk_led_toggle(ORANGE_LED); nrk_gpio_toggle(NRK_DEBUG_0); // Normally you should not call long functions like printf // inside a interrupt callback nrk_kprintf( PSTR("*** Timer interrupt!\r\n")); }
void Task3() { uint16_t cnt; printf("Task3 PID=%u\r\n", nrk_get_pid()); cnt = 0; while (1) { nrk_led_toggle(BLUE_LED); nrk_gpio_toggle(NRK_DEBUG_2); printf("Task3 cnt=%u\r\n", cnt); nrk_wait_until_next_period(); cnt++; } }
void Task2() { int16_t cnt; printf("Task2 PID=%u\r\n", nrk_get_pid()); cnt = 0; while (1) { nrk_led_toggle(GREEN_LED); nrk_gpio_toggle(NRK_DEBUG_1); printf("Running: Task2 , signed cnt=%d\r\n", cnt); nrk_wait_until_next_period(); //nrk_stats_display_pid(nrk_get_pid()); cnt--; } }
void Task1() { nrk_time_t t; uint16_t cnt; cnt=0; nrk_kprintf( PSTR("Nano-RK Version ") ); printf( "%d\r\n",NRK_VERSION ); setup_uart1(UART_BAUDRATE_19K2); DDRE=0x2; printf( "My node's address is %u\r\n",NODE_ADDR ); printf( "Task1 PID=%u\r\n",nrk_get_pid()); t.secs=5; t.nano_secs=0; // setup a software watch dog timer nrk_sw_wdt_init(0, &t, NULL); nrk_sw_wdt_start(0); putc1('~'); putc1('A'); putc1(' '); putc1('8'); nrk_wait_until_next_period(); putc1('~'); putc1('A'); putc1(' '); putc1('8'); while(1) { // Update watchdog timer nrk_sw_wdt_update(0); nrk_led_toggle(ORANGE_LED); nrk_gpio_toggle(NRK_DEBUG_0); printf( "Task1 cnt=%u\r\n",cnt ); nrk_wait_until_next_period(); // Uncomment this line to cause a stack overflow // if(cnt>20) kill_stack(10); // At time 50, the OS will halt and print statistics // This requires the NRK_STATS_TRACKER #define in nrk_cfg.h // if(cnt==50) { // nrk_stats_display_all(); // nrk_halt(); // } cnt++; } }
void Task1() { nrk_time_t t; uint16_t cnt; cnt = 0; printf("My node's address is %u\r\n", NODE_ADDR); printf("Task1 PID=%u\r\n", nrk_get_pid()); while (1) { nrk_led_toggle(ORANGE_LED); nrk_gpio_toggle(NRK_DEBUG_0); //for(int i=0 ; i < 5 ; i++){ // Waste some time... //} printf("Running Task1, cnt=%u\r\n", cnt); nrk_wait_until_next_period(); cnt++; } }
void Task3() { uint16_t i,j; uint32_t it; nrk_time_t time; while(1) { nrk_led_set(BLUE_LED); nrk_gpio_toggle(NRK_DEBUG_2); nrk_kprintf("Task 3\r\n"); nrk_time_get(&time); printf("%lu.%09lu\r\n", time.secs, time.nano_secs); for(it=0;it<345600;it++);//345600 nrk_time_get(&time); printf("%lu.%09lu\r\n", time.secs, time.nano_secs); nrk_kprintf("Task 3 done\r\n"); nrk_wait_until_next_period(); } }
void Task2() { uint16_t i,j; uint32_t it; nrk_time_t time, time2, time3; while(1) { nrk_led_set(GREEN_LED); nrk_gpio_toggle(NRK_DEBUG_1); nrk_kprintf("Task 2\r\n"); nrk_time_get(&time); printf("%lu.%09lu\r\n", time.secs, time.nano_secs); for(it=0;it<400800;it++);//for(it=0;it<460800;it++);//460800 nrk_time_get(&time); printf("%lu.%09lu\r\n", time.secs, time.nano_secs); nrk_kprintf("Task 2 done\r\n"); nrk_wait_until_next_period(); } }
void my_timer_callback() { int8_t v; nrk_led_toggle(GREEN_LED); nrk_gpio_toggle(NRK_DEBUG_0); // printf("#"); V_Awatt_S32R = ade_read32(AWATT); V_Avar_S32R = ade_read32(AVAR); memcpy(&V_TxBuff_U8R[V_WrPtr_U32R],&V_Awatt_S32R,3); V_WrPtr_U32R+=3; memcpy(&V_TxBuff_U8R[V_WrPtr_U32R],&V_Avar_S32R,3); V_WrPtr_U32R+=3; if(V_WrPtr_U32R == C_CircBuffSize) { V_WrPtr_U32R = 0; V_WrSeqNo_U8R = 1; } //////////////////////////// V_EvnDetCntr_U32R++; if(V_EvnDetCntr_U32R==Fs) { V_EvnDetCntr_U32R = 0; V_DataNew_U32R = V_Awatt_S32R; V_DiffData_S32R = V_DataNew_U32R - V_DataOld_U32R; V_DataOld_U32R = V_DataNew_U32R; if((V_DiffData_S32R>C_ThresholdPwr)||(V_DiffData_S32R<(-1*C_ThresholdPwr))) { F_Occ_U8R = 0; F_Det_U8R = 0; } else { if(F_Occ_U8R==0) { F_Det_U8R = 1; F_Occ_U8R = 1; } else F_Det_U8R = 0; } V_RdDSP_U16R = ade_read16(RUN); if(V_RdDSP_U16R==0) { ade_write16(RUN, START); printf("\r\n$$"); } } ///////////////////////////// if(F_ReadyForSignal_U8R==1) { if(((V_WrSeqNo_U8R*C_CircBuffSize + V_WrPtr_U32R)-(V_RdPtr_U32R)) >= C_SlipPktSize) { v = nrk_event_signal(signal_one); if(v==NRK_ERROR){} } } V_TINTcnt_U8R++; if(V_TINTcnt_U8R==250) { F_1secData_U8R = 1; V_TINTcnt_U8R=0; V_ArmsCurr_U32R = ade_read32(AIRMS); V_ArmsVolt_U32R = ade_read32(AVRMS); V_ArmsWatt_S32R = ade_read32(AWATT); } // nrk_kprintf( PSTR("*** Timer interrupt!\r\n")); }