コード例 #1
0
ファイル: tdma_c.c プロジェクト: EDAyele/wsn430
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;
}
コード例 #2
0
ファイル: main.c プロジェクト: fantasea/APRS
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;
}
コード例 #3
0
ファイル: blinker.c プロジェクト: EDAyele/wsn430
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;
    }
}
コード例 #4
0
ファイル: main.c プロジェクト: hunt978/vatdma
/** 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();
}
コード例 #5
0
ファイル: main.c プロジェクト: jarn0ld/smeagol-walkie-talkie
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;
}
コード例 #6
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;
}