static uint16_t beacon_send(void) { LED_RED_ON(); LED_GREEN_OFF(); LED_BLUE_OFF(); // flush cc1101_cmd_idle(); cc1101_cmd_flush_rx(); cc1101_cmd_flush_tx(); // calibrate cc1101_cmd_calibrate(); // config IRQ cc1101_gdo0_register_callback(beacon_sent); cc1101_gdo0_int_clear(); cc1101_gdo0_int_enable(); // start TX cc1101_cmd_tx(); // put frame in FIFO cc1101_fifo_put((uint8_t*)&beacon_msg, beacon_msg.hdr.length+1); beacon_msg.ctl=0; beacon_msg.data=0; return 0; }
int main(void) { init(); LOG_INFO("\r\n== BeRTOS TNC\r\n"); LOG_INFO("== Starting.\r\n"); kfile_printf(&ser_port.fd, "\r\n== BeRTOS TNC\r\n"); kfile_printf(&ser_port.fd, "== Starting.\r\n" ); while (1) { ax25_poll(&ax25); if (ax25.dcd) { LED_BLUE_ON(); } else { LED_BLUE_OFF(); } if (afsk.sending) { LED_GREEN_ON(); } else { LED_GREEN_OFF(); } kiss_serial_poll(); kiss_queue_process(); } return 0; }
void vBlinkerRequest(uint8_t cmd) { switch (cmd & CMD_MASK) { case CMD_LED_ON: switch (cmd & LED_MASK) { case LED_RED: LED_RED_ON(); break; case LED_GREEN: LED_GREEN_ON(); break; case LED_BLUE: LED_BLUE_ON(); break; case LED_ALL: LEDS_ON(); break; } break; case CMD_LED_OFF: switch (cmd & LED_MASK) { case LED_RED: LED_RED_OFF(); break; case LED_GREEN: LED_GREEN_OFF(); break; case LED_BLUE: LED_BLUE_OFF(); break; case LED_ALL: LEDS_OFF(); break; } break; case CMD_LED_TOGGLE: switch (cmd & LED_MASK) { case LED_RED: LED_RED_TOGGLE(); break; case LED_GREEN: LED_GREEN_TOGGLE(); break; case LED_BLUE: LED_BLUE_TOGGLE(); break; case LED_ALL: LED_RED_TOGGLE(); LED_GREEN_TOGGLE(); LED_BLUE_TOGGLE(); break; } break; } }
/** Toggles LED * @param n iIndex of the LED to toggle. Red LED as index 0, green one 1 and blue one 2. */ void toggle_led( uint16_t n ) { led_state ^= (1 << n); if(led_state & 0x1) LED_RED_ON(); else LED_RED_OFF(); if(led_state & 0x2) LED_GREEN_ON(); else LED_GREEN_OFF(); if(led_state & 0x4) LED_BLUE_ON(); else LED_BLUE_OFF(); }
int main(void) { volatile int16_t* samples; unsigned int i; DISABLE_GLOBAL_INT(); /* stop watchdog timer */ WDTCTL = WDTPW +WDTHOLD; /* SET CPU to 5MHz */ /* max DCO MCLK = DCOCLK SMCLK = DCOCLK ACLK = 8KHz */ DCOCTL = DCO0 + DCO1 + DCO2; BCSCTL1 = RSEL0 + RSEL1 + RSEL2 + XT2OFF; BCSCTL2 = 0x00; delay_us(10000); /* activate Active Mode */ __bic_SR_register(LPM4_bits); /* set LEDs when loaded */ P5SEL = 0x00; P5DIR = 0x70; LED_RED_ON(); LED_GREEN_OFF(); LED_BLUE_OFF(); check_for_clock(); init_usb_serial(); #ifdef USE_DMA init_dma(&g_sample_flag); #endif #ifdef TX init_adc(&g_sample_flag); #else init_dac(); #endif init_rf(RF_CHANNEL, PAN_ID, NODE_ADDR, &g_sample_flag); debug_print("Successfully booted.\n"); /* set LEDS to signalize finished initilizing */ LED_RED_OFF(); ENABLE_GLOBAL_INT(); #ifdef TX /* TX */ while(1) { if(g_sample_flag == 1) { g_sample_flag = 0; #ifdef USE_DMA /* get samples */ samples = get_samples_dma(); #else /* get samples */ samples = get_samples(); #endif /* send oder radio, 2*num_words */ send_rf_data(RF_RX_ADDR, (uint8_t*) samples, NUM_SAMPLES*2); } /* reset WDT */ WDTCTL = WDTPW + WDTCNTCL; } #else /* RX */ while(1) { if(g_sample_flag == 1) { g_sample_flag = 0; samples = get_samples_rf(); #if 0 uint8_t err = 0; for(i = 0; i < NUM_SAMPLES; ++i) { //samples[i] = 4095-7*i; usb_printf("%d\n", samples[i]); //if( ((uint16_t) samples[i]) > 4095) { // usb_printf("i=%u\n", i); // ++err; //} } usb_printf("#error: %u\n", err); usb_printf("\n\n"); #endif set_dma_data(samples, NUM_SAMPLES); } /* reset WDT */ WDTCTL = WDTPW + WDTCNTCL; } #endif return 0; }
/* Main function */ int main(void) { int value_mg_x, value_mg_y, value_mg_z; /* setup all GPIOs */ gpio_setup(); /* initialise LIS3DSH */ lis3dsh_init(); /* infinite loop */ while (1) { /* get X, Y, Z values */ value_mg_x = ((lis3dsh_read_reg(ADD_REG_OUT_X_H) << 8) | lis3dsh_read_reg(ADD_REG_OUT_X_L)); value_mg_y = ((lis3dsh_read_reg(ADD_REG_OUT_Y_H) << 8) | lis3dsh_read_reg(ADD_REG_OUT_Y_L)); value_mg_z = ((lis3dsh_read_reg(ADD_REG_OUT_Z_H) << 8) | lis3dsh_read_reg(ADD_REG_OUT_Z_L)); /* transform X value from two's complement to 16-bit int */ value_mg_x = two_compl_to_int16(value_mg_x); /* convert X absolute value to mg value */ value_mg_x = value_mg_x * SENS_2G_RANGE_MG_PER_DIGIT; /* transform Y value from two's complement to 16-bit int */ value_mg_y = two_compl_to_int16(value_mg_y); /* convert Y absolute value to mg value */ value_mg_y = value_mg_y * SENS_2G_RANGE_MG_PER_DIGIT; /* transform Z value from two's complement to 16-bit int */ value_mg_z = two_compl_to_int16(value_mg_z); /* convert Z absolute value to mg value */ value_mg_z = value_mg_z * SENS_2G_RANGE_MG_PER_DIGIT; /* set X related LEDs according to specified threshold */ if (value_mg_x >= LED_TH_MG) { LED_BLUE_OFF(); LED_ORANGE_OFF(); LED_GREEN_OFF(); LED_RED_ON(); } else if (value_mg_x <= -LED_TH_MG) { LED_BLUE_OFF(); LED_ORANGE_OFF(); LED_RED_OFF(); LED_GREEN_ON(); } /* set Y related LEDs according to specified threshold */ if (value_mg_y >= LED_TH_MG) { LED_BLUE_OFF(); LED_RED_OFF(); LED_GREEN_OFF(); LED_ORANGE_ON(); } else if (value_mg_y <= -LED_TH_MG) { LED_RED_OFF(); LED_GREEN_OFF(); LED_ORANGE_OFF(); LED_BLUE_ON(); } /* set Z related LEDs according to specified threshold */ if (value_mg_z >= LED_TH_MG) { LED_BLUE_ON(); LED_ORANGE_ON(); LED_RED_ON(); LED_GREEN_ON(); } else if (value_mg_z <= -LED_TH_MG) { LED_BLUE_OFF(); LED_ORANGE_OFF(); LED_RED_OFF(); LED_GREEN_OFF(); } } return 0; }