static void error_handler(void) { LED_RED_ON(); cli(); while (true) { ; } }
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; }
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; } }
int main(void) { char str_buf[30]; int32_t value =43552; LED_Init(); ILI9341_Init(); Usart1_Init(9600); Myprintf_Init(0x00,myputc); ILI9341_Puts(0,0,"LCD string test",&MY_Font_11x18,ILI9341_COLOR_WHITE,ILI9341_COLOR_BLUE); while(1) { //my_printf("It's usart1 test!\n"); my_sprintf(str_buf,"%d\n",value); my_printf(str_buf); LED_GREEN_ON(); LED_RED_OFF(); delay(800000); LED_GREEN_OFF(); LED_RED_ON(); delay(800000); } return 0; }
/** 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(); }
void bldc_set_pwm(uint8_t val) { unsigned char pwm_tmp; pwm_tmp = bldc_pwm = val; if (pwm_tmp > bldc_pwm_max) { pwm_tmp = bldc_pwm_max; LED_RED_ON(); } PWM_SET(pwm_tmp); }
static void error_handler(void) { /* Inidicate serious HW error by turning the red LED on. */ LED_RED_ON(); /* Enter non-interryuptable endless loop. */ cli(); while (true) { ; } }
void led_change( void ) { LEDS_OFF(); switch (led_state) { case 0: LED_RED_ON(); break; case 1: LED_GREEN_ON(); break; case 2: LED_BLUE_ON(); break; case 3: LEDS_ON(); break; } led_state = (led_state + 1) & 0x3; }
void do_Led_Flicker_Control(void) { static U8 u8LedStatus = 0; if(u8LedStatus != 0) { LED_RED_ON(); } else { LED_RED_OFF(); } u8LedStatus = ~u8LedStatus; }
/* Function implementations */ void gprot_init(){ int i; gpc_init(gprot_trigger_output, 0, gprot_register_changed, 0); for(i=0; i<32; i++){ test_regs[i] = i*3; if(gpc_setup_reg(i, &test_regs[i])){ LED_RED_ON(); } } }
int main(void) { LED_Init(); while(1) { LED_GREEN_ON(); LED_RED_ON(); delay(800000); LED_GREEN_OFF(); LED_RED_OFF(); delay(800000); } return 0; }
int main(void) { float tempf; InitRCC(); InitGPIO(); InitADC(); I2CInit(); InitIT(); Delay_Init(24); // reset pot value PotWrite(0x00); while(1) { if (mode == MODE_CAL) { LED_GREEN_ON(); LED_RED_OFF(); uint16_t av = ADC_GetConversionValue(AN_ADCx); if (av > trig_level) { trig_level = av; tempf = GetADCVolt(trig_level)*VOLT_DIV; // get voltage from piezo tempf = GetTargetK(tempf); // get target amp coefficient tempf = GetTargetR(tempf); // get R2 for opamp feedback tempf = GetPotR(tempf); // get target resistance for pot as part of R2 PotWrite(GetWStep(tempf)); // write step to pot } } else { // turn on red for working mode indication, turn green if mcu gets opamp output high LED_RED_ON(); if (GPIO_ReadInputDataBit(OP_PORT, OP_PIN) == SET) { LED_GREEN_ON(); delay_ms(500); } else { LED_GREEN_OFF(); } } } }
/* * Call this function as fast as possible, with a deterministic rate. */ void ledpwm_update_pwm(void) { static int cnt = 0; cnt++; if (cnt == LEDPWM_CNT_TOP) { cnt = 0; } if (cnt >= led_values[0]) { LED_GREEN_OFF(); } else { LED_GREEN_ON(); } if (cnt >= led_values[1]) { LED_RED_OFF(); } else { LED_RED_ON(); } }
int main(void) { LED_Init(); ILI9341_Init(); ILI9341_Fill(ILI9341_COLOR_BLUE); ILI9341_Puts(0,0,"LCD string test",&MY_Font_11x18,ILI9341_COLOR_WHITE,ILI9341_COLOR_BLUE); while(1) { LED_GREEN_ON(); LED_RED_OFF(); delay(800000); LED_GREEN_OFF(); LED_RED_ON(); delay(800000); } return 0; }
uint16_t packet_received(uint8_t packet[], uint16_t length, uint16_t src_addr, int16_t rssi) { spt_beacon_t *pkt=(spt_beacon_t *)packet; #ifdef DEBUG LED_RED_ON(); #endif //notice_packet_received_mac(); PRINTF("#> Packet from %x:\n", src_addr); if ( pkt->type == SPT_BEACON && my_seqnum != pkt->seqnum) { my_state = STATE_ACTIVE; cpt_last_beacon = 0; num_slot = 1; my_seqnum = pkt->seqnum; beacon_received = 1; } #ifdef DEBUG LED_RED_OFF(); #endif return 0; }
void usart3_irq_handler(void) { /* input (RX) handler */ if(USART_GetITStatus(USART3, USART_IT_RXNE) != RESET){ data_buf = USART_ReceiveData(USART3); if(!gpc_handle_byte(data_buf)){ LED_GREEN_TOGGLE(); }else{ LED_RED_ON(); } } /* output (TX) handler */ if(USART_GetITStatus(USART3, USART_IT_TXE) != RESET){ if((data_buf = gpc_pickup_byte()) >= 0){ USART_SendData(USART3, data_buf); LED_GREEN_TOGGLE(); }else{ usart_disable_send(); } } }
/** * The main function. */ int main( void ) { /* Stop the watchdog timer. */ WDTCTL = WDTPW + WDTHOLD; /* Setup MCLK 8MHz and SMCLK 1MHz */ set_mcu_speed_xt2_mclk_8MHz_smclk_1MHz(); /* Enable Interrupts */ eint(); uart0_init(UART0_CONFIG_1MHZ_115200); uart0_register_callback(char_cb); printf("CC1100 RXTX test program\r\n"); LEDS_INIT(); LEDS_OFF(); cc1100_init(); cc1100_cfg_append_status(CC1100_APPEND_STATUS_ENABLE); cc1100_cfg_crc_autoflush(CC1100_CRC_AUTOFLUSH_DISABLE); cc1100_cfg_white_data(CC1100_DATA_WHITENING_ENABLE); cc1100_cfg_crc_en(CC1100_CRC_CALCULATION_ENABLE); cc1100_cfg_freq_if(0x0C); cc1100_cfg_fs_autocal(CC1100_AUTOCAL_NEVER); cc1100_cfg_mod_format(CC1100_MODULATION_MSK); cc1100_cfg_sync_mode(CC1100_SYNCMODE_30_32); cc1100_cfg_manchester_en(CC1100_MANCHESTER_DISABLE); printf("CC1100 initialized\r\nType 's' to send a message\r\n"); while(1) { // Enter RX LED_RED_ON(); cc1100_cmd_idle(); cc1100_cmd_flush_rx(); cc1100_cmd_calibrate(); cc1100_cmd_rx(); cc1100_cfg_gdo0(CC1100_GDOx_SYNC_WORD); cc1100_gdo0_int_set_falling_edge(); cc1100_gdo0_int_clear(); cc1100_gdo0_int_enable(); cc1100_gdo0_register_callback(rx_ok); // Low Power Mode LPM0; // Check for send flag if (send == 1) { send = 0; LED_RED_OFF(); cc1100_cmd_idle(); cc1100_cmd_flush_tx(); cc1100_cmd_calibrate(); cc1100_gdo0_int_disable(); frameseq ++; length = sprintf((char *)frame, "Hello World #%i", frameseq); printf("Sent : %s \r\n", frame); cc1100_fifo_put(&length, 1); cc1100_fifo_put(frame, length); cc1100_cmd_tx(); // Wait for SYNC word sent while (cc1100_gdo0_read() == 0); // Wait for end of packet while (cc1100_gdo0_read() != 0); } // Check for receive flag if (receive == 1) { receive = 0; uint8_t i; // verify CRC result if ( !(cc1100_status_crc_lqi() & 0x80) ) { continue; } cc1100_fifo_get(&length, 1); if (length > 60) { continue; } cc1100_fifo_get(frame, length+2); uint16_t rssi = (uint16_t)frame[length]; int16_t rssi_d; if (rssi >= 128) rssi_d = (rssi-256)-140; else rssi_d = rssi-140; printf("Frame received with RSSI=%d.%d dBm: ", rssi_d, 5*(rssi_d&0x1)); for (i=0; i<length; i++) { printf("%c",frame[i]); } printf("\r\n"); LED_GREEN_TOGGLE(); } } return 0; }
/** * Monitor the motor and control it's speed. */ void bldc_run() { //wdt_enable(WDTO_2S); uint16_t bldc_stop_detect_timer = timer_new_sw_ms(64); uint16_t speed_report = timer_new_sw_ms(50); while (1) { wdt_reset(); static uint8_t uart_cmd = 0; uint8_t ch = 0; if (getch((char*) &ch) == UART_SUCCESS) { if (ch <= '9' && ch >= '1') { ch = ch - '0'; ch = ((uint16_t) ch) * 255 / 9; bldc_set_pwm(uart_cmd = ch); print_str("cmd:"); print_number(ch, 10); print('\n'); } else if (ch == ',') { print_str("="); bldc_phase = 0; bldc_old_phase = bldc_phase; DISABLE_BEMF_INT(); bldc_set_pwm(5); bldc_pwm = 0; bldc_running = 0; bldc_set_comm(); bldc_cnt_comm = 0; } else if (ch == '.') { do { bldc_phase++; bldc_phase %= 6; bldc_set_comm(); bldc_cnt_comm++; if (BEMF) { LED_GREEN_TOGGLE(); } for (int ee = 0; ee < 20 * 10; ee++) timer_wait(100); } while (bldc_phase != 0); bldc_running = 0; bldc_old_phase = bldc_phase; print_str("stop.\n"); print_number(bldc_cnt_comm, 10); } else { // echo while (!(UCSRA & (1 << UDRE))) ; UDR = ch; print_str("stop.\n"); bldc_set_pwm(0); LED_RED_ON(); DISABLE_BEMF_INT(); bldc_running = 0; SET_ALL_OFF(); uart_cmd = 0; } } if (bldc_old_phase != bldc_phase) { bldc_stop_detect_timer = timer_new_sw_ms(125); bldc_running = 1; bldc_old_phase = bldc_phase; } if (bldc_running && timer_sw_check(bldc_stop_detect_timer)) { print_str("stalled\n"); LED_RED_ON(); DISABLE_BEMF_INT(); bldc_running = 0; SET_ALL_OFF(); } if (!bldc_running) { LED_GREEN_OFF(); bldc_do_start = (bldc_pwm != 0); } if (bldc_running && timer_sw_check(speed_report)) { const uint16_t dt = 20; //ms speed_report = timer_new_sw_ms(dt); static uint16_t previous_cnt = 0; uint32_t rotations = (bldc_cnt_comm - previous_cnt); uint32_t rps = rotations * (1000L / dt) / 66; bldc_set_pwm(uart_cmd); print_number(rps, 10); print('\n'); previous_cnt = bldc_cnt_comm; } if (bldc_do_start) { LED_RED_OFF(); bldc_do_start = 0; print_str("starting..."); if (bldc_start()) { print_str("done.\n"); LED_GREEN_ON(); bldc_running = 1; BEMF_TOGGLE_INT(); ENABLE_BEMF_INT(); bldc_set_pwm(PWM_MIN); bldc_stop_detect_timer = timer_new_sw_ms(75); while (!timer_sw_check(bldc_stop_detect_timer)) { asm("nop"); } bldc_old_phase = 7; } else bldc_do_start = 1; } } }
/* 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; }
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; }
/** * Nothing to initialize at the moment. * Turns the red LED on and the green LED off. */ void board_init() { LED_GREEN_OFF(); LED_RED_ON(); puts("RIOT native board initialized."); }