示例#1
0
void eskylinkInit()
{
  if(isInit)
    return;

  nrfInit();

  nrfSetInterruptCallback(interruptCallback);

  //vTaskSetApplicationTaskTag(0, (void*)TASK_RADIO_ID_NBR);

  /* Initialise the semaphores */
  vSemaphoreCreateBinary(dataRdy);

  /* Queue init */
  rxQueue = xQueueCreate(3, sizeof(CRTPPacket));

  eskylinkInitPairing();

    /* Launch the Radio link task */
  xTaskCreate(eskylinkTask, (const signed char * const)ESKYLINK_TASK_NAME,
              ESKYLINK_TASK_STACKSIZE, NULL, ESKYLINK_TASK_PRI, NULL);

  isInit = true;
}
示例#2
0
void airdrums_debug() {
        WDTCTL  = WDTPW + WDTHOLD; // Stop WDT

        __delay_cycles(10000);
        // Clock rate 1MHz
        if (CALBC1_1MHZ==0xFF) { // If calibration constant erased
            while(1);            // do not load, trap CPU!!
        }
        DCOCTL = 0; // Select lowest DCOx and MODx settings
        BCSCTL1 = CALBC1_1MHZ; // Set DCO
        DCOCTL = CALDCO_1MHZ;

        uart_init();
        nrfInit();

        __delay_cycles(10000);
        nrfStartRX('!'); // start RX with address '!'
        __delay_cycles(10000);

        volatile char a;

        while(1) {
            while(!nrfDataReady());
            a = nrfGetRXByte();
            //art_putc(a);
            //uart_putc("\n");
        }
}
示例#3
0
void eskylinkInit()
{
  if(isInit==TRUE)
    return;

  nrfInit();

  nrfSetInterruptCallback(interruptCallback);

  //vTaskSetApplicationTaskTag(0, (void*)TASK_RADIO_ID_NBR);

  /* Initialise the semaphores */
  vSemaphoreCreateBinary(dataRdy);

  /* Queue init */
  rxQueue = xQueueCreate(3, sizeof(CRTPPacket));

  eskylinkInitPairing();

    /* Launch the Radio link task */
  xTaskCreate(eskylinkTask, (const signed char * const)"EskyLink",
              configMINIMAL_STACK_SIZE, NULL, /*priority*/1, NULL);

  isInit = TRUE;
}
示例#4
0
void airdrums_stick(void){

    //initial setup
    WDTCTL = WDTPW + WDTHOLD; // Stop WDT

    P1SEL &= 0;
    P1SEL2 &= 0;
    P1SEL |= BIT6 + BIT7; // Assign I2C pins to USCI_B0
    P1SEL2|= BIT6 + BIT7; // Assign I2C pins to USCI_B0

    // LED pin
    P1DIR |= 0x01;
    P1OUT = 0x00;

    // start up i2c bus
    init_i2c();

    //intialise some globals
    highCount = 0;
    isDown = FALSE;
    driftCount=0;

    // Give the nrf plenty of time to start up;
    // it gets pissy if you talk to it too early.

    __delay_cycles(10000);
    nrfInit();
    __delay_cycles(10000);
    // Start TX with address '!'.
    // Hard coded because why not
    nrfStartTX('!');
    __delay_cycles(10000);

    //transmit stuff to set up mpu6050
    //set sensitivity levels
    MPU6050_write_byte(MPU6050_GYRO_CONFIG, MPU6050_FS_SEL_2000);
    MPU6050_write_byte(MPU6050_ACCEL_CONFIG, MPU6050_AFS_SEL_16G);

    //wake sensor up by clearing sleep bit
    MPU6050_write_byte (MPU6050_PWR_MGMT_1, 0);

    // initialise circular buffer
    circ_init();

    // Do some quick and dirty drift correction
    findDrift();

    // Set up timer interrupts for main loop
    CCTL0 = CCIE;                    // CCR0 interrupt enabled
    TACTL = TASSEL_2 + MC_1 + ID_3;  // SMCLK/8, upmode
    CCR0 =  (1000000 / 8 / PROCESS_RATE_HZ); // Set process rate
    // CCR0 = 417; // 300 Hz

    _BIS_SR(CPUOFF + GIE); // Enter LPM0 w/ interrupt
    while(1);
}
示例#5
0
int main() {
    uart_init(UART_BAUD_SELECT(UART_BAUD_RATE, F_CPU));
    sei();
    uart_puts("begin\r\n");

    nrfInit();

    writeReg(RF_SETUP, SET_RF_SETUP);
    writeAddr(RX_ADDR_P0, SET_RX_ADDR_P0);
    writeAddr(TX_ADDR, SET_TX_ADDR);
    writeReg(DYNPD, SET_DYNPD);
    writeReg(FEATURE, SET_FEATURE);
    writeReg(RF_CH, SET_RF_CH);
    writeReg(CONFIG, SET_CONFIG);

    startRadio();


    uint8_t worked;
    uint8_t size;
    char sendbuffer[] = "Testing 1..2..3.. Testing.";
    size = sizeof (sendbuffer);
    char receivebuffer[33];
    char c;
    char count[10];
    int charbuffer;
    char payloadlength;
    //   uart_puts(sendbuffer);
    worked = transmit(sendbuffer, size);
    if (worked == 1) {
        uart_puts("Transmit Worked!\r\n");
    } else {
        uart_puts("Transmit Failed.\r\n");
    }
    startRx();

    while (1) {
        payloadlength = dynReceive(receivebuffer);
        if (payloadlength > 0) {
            uart_puts("Got something:");
            uart_puts(receivebuffer);
            uart_puts("\r\n");
        } else {
            uart_puts("nothin received\r\n");
        }

        c = uart_getc();
        if (!(c & UART_NO_DATA)) {
            uart_putc(c);
        }
        printRegisters();
        _delay_ms(2000);
    }


}
示例#6
0
// ################ Main Program ################ //
int main(void)
{
	//* --------------- Init --------------- *//
	uOpioidInit();

	// Init the Clock
	//outputPIN(REFOCLK);
	//REFOCONbits.RODIV = 4;	//Div by 8
	//REFOCONbits.ROSEL = 1;	//PBCLK outputed
	//REFOCONbits.OE = 1;		//enbale ouput
	//REFOCONbits.ON = 1;		//enable REFOCLK
	//* ------------------------------------ *//


	//* ----------- Testing Space ---------- *//

	timerInit(TIMER_2,0);
	ocSetConfig(OC_1,OC_MODE_PWM|OC_TIMER_2);
	ocSetConfig(OC_2,OC_MODE_PWM|OC_TIMER_2);
	ocSetConfig(OC_3,OC_MODE_PWM|OC_TIMER_2);
	pwmSetPeriod(OC_1,1000);
	pwmSetPeriod(OC_2,1000);
	pwmSetPeriod(OC_3,1000);
	ocStart(OC_1);
	ocStart(OC_2);
	ocStart(OC_3);

	//SPI test
	outputPIN(COM0_IO2);

	nrfInit(COM0_SPI_ID, &LATA, COM0_IO2);

	COM0ControlTransaction.pSlave = pCOM0SlaveControl;
	COM0ControlTransaction.control.all = 0;
	COM0ControlTransaction.transferNb = 10;
	COM0ControlTransaction.txNbRemaining = 10;
	COM0ControlTransaction.rxNbDone = 0;
	COM0ControlTransaction.pTX = sourceArray;
	COM0ControlTransaction.pRX = checkArray;

	spiStartTransaction(&COM0ControlTransaction);

	//testBufCtlPtr = rBufCreate(10, sizeof(U8));
	//if (uartInit(0,UART_TX_INT_TSR_EMPTY|UART_RX_INT_DATA_READY|UART_MODE_8N1,1250000) == STD_EC_SUCCESS)
	//	setPIN(LED_B);
	//* ------------------------------------ *//

	
	//* ----------- Loop forever ----------- *//
	for (;;)
	{
		if ((sysTick - ledSTRed) >= LED_R_SYSTICK_INTERVAL)
		{
			// -- Handle boundary -- //
			if (ledRed == 255)
				ledRedDir = 0;
			else if (ledRed == 0)
				ledRedDir = 1;
			// --------------------- //

			// -- Duty mouvement -- //
			if (ledRedDir)
				ledRed++;
			else
				ledRed--;
			// -------------------- //

			pwmSetDuty(OC_1,ledRed,0xFF);

			ledSTRed = sysTick;
		}

		if ((sysTick - ledSTGreen) >= LED_G_SYSTICK_INTERVAL)
		{
			// -- Handle boundary -- //
			if (ledGreen == 255)
				ledGreenDir = 0;
			else if (ledGreen == 0)
				ledGreenDir = 1;
			// --------------------- //

			// -- Duty mouvement -- //
			if (ledGreenDir)
				ledGreen++;
			else
				ledGreen--;
			// -------------------- //

			pwmSetDuty(OC_2,ledGreen,0xFF);

			ledSTGreen = sysTick;
		}

		if ((sysTick - ledSTBlue) >= LED_B_SYSTICK_INTERVAL)
		{
			// -- Handle boundary -- //
			if (ledBlue == 255)
				ledBlueDir = 0;
			else if (ledBlue == 0)
				ledBlueDir = 1;
			// --------------------- //

			// -- Duty mouvement -- //
			if (ledBlueDir)
				ledBlue++;
			else
				ledBlue--;
			// -------------------- //

			pwmSetDuty(OC_3,ledBlue,0xFF);

			ledSTBlue = sysTick;
		}

		/*
		switch(ledID)
		{
			case 0:	setPIN(LED_R);		setPIN(LED_G);		setPIN(LED_B);		break;
			case 1:	clearPIN(LED_R);	setPIN(LED_G);		setPIN(LED_B);		break;
			case 2:	setPIN(LED_R);		clearPIN(LED_G);	setPIN(LED_B);		break;
			case 3:	setPIN(LED_R);		setPIN(LED_G);		clearPIN(LED_B);	break;
			case 4:	clearPIN(LED_R);	clearPIN(LED_G);	setPIN(LED_B);		break;
			case 5:	clearPIN(LED_R);	setPIN(LED_G);		clearPIN(LED_B);	break;
			case 6:	setPIN(LED_R);		clearPIN(LED_G);	clearPIN(LED_B);	break;
			case 7:	clearPIN(LED_R);	clearPIN(LED_G);	clearPIN(LED_B);	break;
			default: ledID = 0;
		}
		*/

		//uartSendByte(0,0x55);
	}
	//* ------------------------------------ *//
}