void nrk_create_taskset () { nrk_task_set_entry_function (&rx_task_info, rx_task); nrk_task_set_stk (&rx_task_info, rx_task_stack, NRK_APP_STACKSIZE); rx_task_info.prio = 1; rx_task_info.FirstActivation = TRUE; rx_task_info.Type = BASIC_TASK; rx_task_info.SchType = PREEMPTIVE; rx_task_info.period.secs = 0; rx_task_info.period.nano_secs = 250 * NANOS_PER_MS; rx_task_info.cpu_reserve.secs = 0; rx_task_info.cpu_reserve.nano_secs = 100 * NANOS_PER_MS; rx_task_info.offset.secs = 0; rx_task_info.offset.nano_secs = 0; nrk_activate_task (&rx_task_info); nrk_task_set_entry_function (&tx_task_info, tx_task); nrk_task_set_stk (&tx_task_info, tx_task_stack, NRK_APP_STACKSIZE); tx_task_info.prio = 1; tx_task_info.FirstActivation = TRUE; tx_task_info.Type = BASIC_TASK; tx_task_info.SchType = PREEMPTIVE; tx_task_info.period.secs = 0; tx_task_info.period.nano_secs = 250 * NANOS_PER_MS; tx_task_info.cpu_reserve.secs = 0; tx_task_info.cpu_reserve.nano_secs = 100 * NANOS_PER_MS; tx_task_info.offset.secs = 0; tx_task_info.offset.nano_secs = 0; nrk_activate_task (&tx_task_info); tdma_task_config (); }
int main () { nrk_setup_ports (); nrk_setup_uart (UART_BAUDRATE_115K2); nrk_init (); nrk_led_clr (0); nrk_led_clr (1); nrk_led_clr (2); nrk_led_clr (3); nrk_time_set (0, 0); tdma_mode_set(TDMA_MASTER); // use tdma's tree scheduler tdma_schedule_method_set(TDMA_SCHED_TREE); tdma_task_config (); nrk_create_taskset (); nrk_start (); return 0; }
int main () { uint16_t div; nrk_setup_ports (); nrk_setup_uart (UART_BAUDRATE_115K2); begin();//start I2C nrk_init (); nrk_led_clr (0); nrk_led_clr (1); nrk_led_clr (2); nrk_led_clr (3); nrk_time_set (0, 0); tdma_set_error_callback(&tdma_error); tdma_task_config(); //nrk_register_drivers(); nrk_create_taskset (); nrk_start (); return 0; }
int main () { uint8_t ds; nrk_setup_ports (); nrk_setup_uart (UART_BAUDRATE_115K2); ds=nrk_eeprom_read_byte(EEPROM_SLEEP_STATE_ADDR); if(ds==1) deep_sleep_button(); nrk_init (); nrk_led_clr (0); nrk_led_clr (1); nrk_led_clr (2); nrk_led_clr (3); nrk_time_set (0, 0); tdma_set_error_callback(&tdma_error); tdma_task_config(); nrk_register_drivers(); nrk_create_taskset (); nrk_start (); return 0; }
int main () { nrk_setup_ports (); nrk_setup_uart (UART_BAUDRATE_115K2); nrk_init (); nrk_led_clr (0); nrk_led_clr (1); nrk_led_clr (2); nrk_led_clr (3); nrk_time_set (0, 0); tdma_mode_set(TDMA_SLAVE); // do the scheduling by yourself tdma_schedule_method_set(TDMA_SCHED_MANUAL); // rcv sync packet from master tdma_schedule_add(0, TDMA_RX, -1); // SCHEDULE A // add a TX slot for every tenth slot for (tdma_slot_t i = 10; i < TDMA_SLOTS_PER_CYCLE; i+=10) { tdma_schedule_add(i, TDMA_TX_PARENT, 0); } // SCHEDULE B // just do one slot //tdma_schedule_add(10, TDMA_TX_PARENT, 0); // SCHEDULE C // for node 2 // tdma_schedule_add(0, TDMA_RX, 0); // tdma_schedule_add(10, TDMA_TX_PARENT, 0); // tdma_schedule_add(100, TDMA_TX_CHILD, 0); // for node 3 //tdma_schedule_add(20, TDMA_TX_PARENT, 0); //tdma_schedule_add(100, TDMA_RX, 0); tdma_task_config (); nrk_create_taskset (); nrk_start (); return 0; }
int main () { uint16_t div; nrk_int_disable(); // Configure relay port directions DDRE |= 0x10; socket_0_enable(); // Configure led port directions DDRE |= 0x0c; DDRD |= 0x00; PORTD |= 0xff; DDRF = 0; socket_0_active=nrk_eeprom_read_byte(EEPROM_STATE_ADDR); // turn outlet on if active or throttled for testing if(socket_0_active==1 || socket_0_active==2) { socket_0_enable(); plug_led_green_set(); } else { socket_0_disable(); plug_led_green_clr(); } // If PUD value set, then we expect it wasn't a clean reboot (unexpected restart). // Try to force a proper watchdog reboot if((MCUCR&0x10)!=0 ) { //nrk_watchdog_enable(); nrk_int_disable(); MCUSR &= ~(1<<WDRF); WDTCSR |= (1<<WDCE) | (1<<WDE); WDTCSR = (1<<WDE) | (1<<WDP2) | (1<<WDP0); // Disable interrupts to stop pending timers etc while(1); } nrk_setup_uart (UART_BAUDRATE_115K2); MCUCR |= BM(PUD); nrk_init (); nrk_time_set (0, 0); tdma_set_error_callback(&tdma_error); tdma_task_config(); nrk_create_taskset (); nrk_start (); return 0; }
int main () { nrk_setup_ports (); nrk_setup_uart (UART_BAUDRATE_115K2); nrk_init (); nrk_led_clr (0); nrk_led_clr (1); nrk_led_clr (2); nrk_led_clr (3); nrk_time_set (0, 0); tdma_mode_set(TDMA_MASTER); // do the scheduling by yourself tdma_schedule_method_set(TDMA_SCHED_MANUAL); // send sync to child tdma_schedule_add(0, TDMA_TX_CHILD, 0); // SCHEDULE A // add a RX from child every tenth slot for (tdma_slot_t i = 10; i < TDMA_SLOTS_PER_CYCLE; i+=10) { tdma_schedule_add(i, TDMA_RX, 0); } // SCHEDULE B // rcv data from child. priority is ignored //tdma_schedule_add(10, TDMA_RX, -1); // SCHEDULE C: Sync Test // Add 2 RX slots from children from level 1 and 2 //tdma_schedule_add(0, TDMA_TX_CHILD, 0); //tdma_schedule_add(10, TDMA_RX, 0); //tdma_schedule_add(20, TDMA_RX, 0); tdma_task_config (); nrk_create_taskset (); nrk_start (); return 0; }
int main () { uint16_t div; // Configure relay port directions DDRE |= 0x10; socket_0_enable(); // Configure led port directions DDRE |= 0x0c; DDRD |= 0x00; PORTD |= 0xff; DDRF = 0; socket_0_active=nrk_eeprom_read_byte(EEPROM_STATE_ADDR); if(socket_0_active==1) { socket_0_enable(); plug_led_green_set(); } else { socket_0_disable(); plug_led_green_clr(); } MCUCR |= BM(PUD); nrk_setup_uart (UART_BAUDRATE_115K2); nrk_init (); nrk_time_set (0, 0); tdma_set_error_callback(&tdma_error); tdma_task_config(); nrk_create_taskset (); nrk_start (); return 0; }
int main () { uint16_t div; nrk_setup_ports (); nrk_setup_uart (UART_BAUDRATE_115K2); InitSyntPorts(); nrk_init (); nrk_led_clr (0); nrk_led_clr (1); nrk_led_clr (2); nrk_led_clr (3); nrk_time_set (0, 0); tdma_task_config(); nrk_create_taskset (); nrk_start (); return 0; }