Beispiel #1
0
void rbInit() {
    // TODO FIXME special port disable ? LEDs BTNs ?

    // prepare power
    // TODO FIXME more power init needed ? chrg + volt input ?
    // enable external vcc
    gpioSetDir(RB_PWR_GOOD, gpioDirection_Output);
    gpioSetValue (RB_PWR_GOOD, 0); 

    // Disable USB Connect (we don't want USB by default)
    gpioSetDir(USB_CONNECT, gpioDirection_Output);
    gpioSetValue(USB_CONNECT, 1);

    // prepare buttons
    gpioSetDir(RB_BTN0, gpioDirection_Input);
    gpioSetPullup (&RB_BTN0_IO, gpioPullupMode_PullUp);

    gpioSetDir(RB_BTN1, gpioDirection_Input);
    gpioSetPullup (&RB_BTN1_IO, gpioPullupMode_PullUp);

    gpioSetDir(RB_BTN2, gpioDirection_Input);
    gpioSetPullup (&RB_BTN2_IO, gpioPullupMode_PullUp);

    gpioSetDir(RB_BTN3, gpioDirection_Input);
    gpioSetPullup (&RB_BTN3_IO, gpioPullupMode_PullUp);

    gpioSetDir(RB_BTN4, gpioDirection_Input);
    gpioSetPullup (&RB_BTN4_IO, gpioPullupMode_PullUp);

    // prepate chrg_stat
    gpioSetDir(RB_PWR_CHRG, gpioDirection_Input);
    gpioSetPullup (&RB_PWR_CHRG_IO, gpioPullupMode_PullUp);

    // prepare LEDs
    IOCON_JTAG_TDI_PIO0_11 &= ~IOCON_JTAG_TDI_PIO0_11_FUNC_MASK;
    IOCON_JTAG_TDI_PIO0_11 |= IOCON_JTAG_TDI_PIO0_11_FUNC_GPIO; 
 
    gpioSetDir(RB_LED0, gpioDirection_Output);
    gpioSetValue (RB_LED0, 0); 

    gpioSetDir(RB_LED1, gpioDirection_Output);
    gpioSetValue (RB_LED1, 0); 

    gpioSetDir(RB_LED2, gpioDirection_Output);
    gpioSetValue (RB_LED2, 0); 

    gpioSetDir(RB_LED3, gpioDirection_Output);
    gpioSetValue (RB_LED3, 0); 

    // Set LED3 to ?
    IOCON_PIO1_11 = 0x41;

    // prepare lcd
    // TODO FIXME more init needed ?
    gpioSetDir(RB_LCD_BL, gpioDirection_Output);
    gpioSetValue (RB_LCD_BL, 0); 

    // Set P0.0 to GPIO
    RB_PWR_LCDBL_IO&= ~RB_PWR_LCDBL_IO_FUNC_MASK;
    RB_PWR_LCDBL_IO|= RB_PWR_LCDBL_IO_FUNC_GPIO; 
    gpioSetDir(RB_PWR_LCDBL, gpioDirection_Input);
    gpioSetPullup(&RB_PWR_LCDBL_IO, gpioPullupMode_Inactive);

    // prepare I2C
    #ifdef __I2C_h
	i2cInit(I2CMASTER); // TODO FIXME via define ?
    #endif


    // prepare SPI/SS
    // TODO FIXME init miso/mosi/sck somehow ?
    gpioSetDir(RB_SPI_SS0, gpioDirection_Output);
    gpioSetValue (RB_SPI_SS0, 1); 

    gpioSetDir(RB_SPI_SS1, gpioDirection_Output);
    gpioSetValue (RB_SPI_SS1, 1); 

    gpioSetDir(RB_SPI_SS2, gpioDirection_Output);
    gpioSetValue (RB_SPI_SS2, 1); 

    gpioSetDir(RB_SPI_SS3, gpioDirection_Output);
    gpioSetValue (RB_SPI_SS3, 1); 

    gpioSetDir(RB_SPI_SS4, gpioDirection_Output);
    gpioSetValue (RB_SPI_SS4, 1); 

    gpioSetDir(RB_SPI_SS5, gpioDirection_Output);
    gpioSetValue (RB_SPI_SS5, 1); 


    // prepare hackerbus
    gpioSetDir(RB_HB0, gpioDirection_Output);
    gpioSetValue (RB_HB0, 1); 

    gpioSetDir(RB_HB1, gpioDirection_Output);
    gpioSetValue (RB_HB1, 1); 

    gpioSetDir(RB_HB2, gpioDirection_Output);
    gpioSetValue (RB_HB2, 1); 

    gpioSetDir(RB_HB3, gpioDirection_Output);
    gpioSetValue (RB_HB3, 1); 

    gpioSetDir(RB_HB4, gpioDirection_Output);
    gpioSetValue (RB_HB4, 1); 

    gpioSetDir(RB_HB5, gpioDirection_Output);
    gpioSetValue (RB_HB5, 1); 


    // prepare BUSINT interrupt
    gpioSetDir(RB_BUSINT, gpioDirection_Input);
    gpioSetPullup (&RB_BUSINT_IO, gpioPullupMode_PullUp);
    gpioSetInterrupt(RB_BUSINT, gpioInterruptSense_Edge, gpioInterruptEdge_Single, gpioInterruptEvent_ActiveLow);
    gpioIntEnable(RB_BUSINT);

    //nrf_init();
    backlightInit();
    font=&Font_7x8;
    ECIES_setup();
}
Beispiel #2
0
static void chb_radio_init()
{
    U8 ieee_addr[8];

    // reset chip
    chb_reset();

    // disable intps while we config the radio
    chb_reg_write(IRQ_MASK, 0);

    // force transceiver off while we configure the intps
    chb_reg_read_mod_write(TRX_STATE, CMD_FORCE_TRX_OFF, 0x1F);

    // make sure the transceiver is in the off state before proceeding
    while ((chb_reg_read(TRX_STATUS) & 0x1f) != TRX_OFF);

    // set radio cfg parameters
    // **note** uncomment if these will be set to something other than default
    //chb_reg_read_mod_write(XAH_CTRL_0, CHB_MAX_FRAME_RETRIES << CHB_MAX_FRAME_RETRIES_POS, 0xF << CHB_MAX_FRAME_RETRIES_POS);
    //chb_reg_read_mod_write(XAH_CTRL_0, CHB_MAX_CSMA_RETRIES << CHB_MAX_CSMA_RETIRES_POS, 0x7 << CHB_MAX_CSMA_RETIRES_POS);
    //chb_reg_read_mod_write(CSMA_SEED_1, CHB_CSMA_SEED1 << CHB_CSMA_SEED1_POS, 0x7 << CHB_CSMA_SEED1_POS);
    //chb_ret_write(CSMA_SEED0, CHB_CSMA_SEED0);     
    //chb_reg_read_mod_write(PHY_CC_CCA, CHB_CCA_MODE << CHB_CCA_MODE_POS,0x3 << CHB_CCA_MODE_POS);
    //chb_reg_write(CCA_THRES, CHB_CCA_ED_THRES);

    // set frame version that we'll accept
    chb_reg_read_mod_write(CSMA_SEED_1, CHB_FRM_VER << CHB_FVN_POS, 3 << CHB_FVN_POS);

    // set interrupt mask
    // re-enable intps while we config the radio
    chb_reg_write(IRQ_MASK, (1<<IRQ_RX_START) | (1<<IRQ_TRX_END));

    #if (CFG_CHIBI_PROMISCUOUS == 0)
      // set autocrc mode
      chb_reg_read_mod_write(TRX_CTRL_1, 1 << CHB_AUTO_CRC_POS, 1 << CHB_AUTO_CRC_POS);
    #endif
    // set up default phy modulation, data rate and power (Ex. OQPSK, 100 kbps, 868 MHz, 3dBm)
    chb_set_mode(CFG_CHIBI_MODE);       // Defined in projectconfig.h
    chb_set_pwr(CFG_CHIBI_POWER);       // Defined in projectconfig.h
    chb_set_channel(CFG_CHIBI_CHANNEL); // Defined in projectconfig.h

    // set fsm state
    // put trx in rx auto ack mode
    chb_set_state(RX_STATE);

    // set pan ID
    chb_reg_write16(PAN_ID_0, CFG_CHIBI_PANID); // Defined in projectconfig.h

    // set short addr
    // NOTE: Possibly get this from EEPROM
    chb_reg_write16(SHORT_ADDR_0, chb_get_short_addr());

    // set long addr
    // NOTE: Possibly get this from EEPROM
    chb_get_ieee_addr(ieee_addr);
    chb_reg_write64(IEEE_ADDR_0, ieee_addr);

#if (CHB_CC1190_PRESENT)
    // set high gain mode pin to output and init to zero
    gpioSetDir (CHB_CC1190_HGM_PORT, CHB_CC1190_HGM_PIN, 1);
    gpioSetPullup (&CHB_CC1190_HGM_IOCONREG, gpioPullupMode_Inactive);
    gpioSetValue (CHB_CC1190_HGM_PORT, CHB_CC1190_HGM_PIN, 0);

    // set external power amp on AT86RF212
    chb_reg_read_mod_write(TRX_CTRL_1, 1<<CHB_PA_EXT_EN_POS, 1<<CHB_PA_EXT_EN_POS);

    // set power to lowest level possible
    chb_set_pwr(0xd);   // set to -11 dBm
#endif

    // set interrupt/gpio pin to input
    gpioSetDir (CHB_EINTPORT, CHB_EINTPIN, 0);

    // set internal resistor on EINT pin to inactive
    gpioSetPullup (&CHB_EINTPIN_IOCONREG, gpioPullupMode_Inactive);

    // configure pin for interrupt
    gpioSetInterrupt (CHB_EINTPORT,
                      CHB_EINTPIN,
                      gpioInterruptSense_Edge,        // Edge-sensitive
                      gpioInterruptEdge_Single,       // Single edge
                      gpioInterruptEvent_ActiveHigh); // High triggers interrupt

    // enable interrupt
    gpioIntEnable (CHB_EINTPORT,
                   CHB_EINTPIN); 

    if (chb_get_state() != RX_STATE)
    {
        // ERROR occurred initializing the radio. Print out error message.
        printf(chb_err_init);
    }
}
Beispiel #3
0
static void
prt(void)
{
	int i, j;

	printf("\r\nHello World\r\n");

	gpioSetDir(1, 1, gpioDirection_Input);
	for (i = 0; i < 8; i++)
		gpioSetDir(2, i, gpioDirection_Input);
	gpioSetDir(0, 8, gpioDirection_Output);
	gpioSetDir(0, 9, gpioDirection_Output);
	gpioSetDir(0, 10, gpioDirection_Output);

	IOCON_JTAG_TCK_PIO0_10 = 0
	    | IOCON_JTAG_TDI_PIO0_11_FUNC_GPIO
	    | IOCON_JTAG_TDI_PIO0_11_ADMODE_DIGITAL;

	IOCON_JTAG_TDI_PIO0_11 = 0
	    | IOCON_JTAG_TDI_PIO0_11_FUNC_GPIO
	    | IOCON_JTAG_TDI_PIO0_11_ADMODE_DIGITAL;

	gpioSetDir(0, 11, gpioDirection_Output);
	gpioSetDir(3, 0, gpioDirection_Input);
	gpioSetDir(3, 1, gpioDirection_Output);
	gpioSetDir(3, 2, gpioDirection_Input);
	gpioSetDir(3, 3, gpioDirection_Input);

	gpioSetInterrupt(1,                  // Port
	    1,                               // Pin
	    gpioInterruptSense_Edge,         // Edge/Level Sensitive
	    gpioInterruptEdge_Single,        // Single/Double Edge
	    gpioInterruptEvent_ActiveLow);   // Rising/Falling
	gpioIntEnable(1, 1);

	gpioSetValue(0,11,1);
	gpioSetValue(0,10,0);
	gpioSetValue(0,9,0);

	while (1) {
		j = CDC_getchar();
		switch (j) {
		case 's':	gpioSetValue(0,8,0); sts(); break;
		case 'S':	gpioSetValue(0,8,1); sts(); break;
		case 'p':	gpioSetValue(0,9,0); sts(); break;
		case 'P':	gpioSetValue(0,9,1); sts(); break;
		case 'b':	gpioSetValue(0,10,0); sts(); break;
		case 'B':	gpioSetValue(0,10,1); sts(); break;
		case 'a':	gpioSetValue(0,11,0); sts(); break;
		case 'A':	gpioSetValue(0,11,1); sts(); break;
		case 'e':	gpioSetValue(3,1,0); sts(); break;
		case 'E':	gpioSetValue(3,1,1); sts(); break;
		case 'x':
			while (1) 
				CDC_putchar('x');
			break;
		case '?':
			sts();
			break;
		}

		if (gpioGetValue(0, 10)) {
			CDC_putchar(got_prn);
			for (j = 0; j < 2; j++)
				gpioSetValue(0,11,0);
			gpioSetValue(0,11,1);
			gpioSetValue(0,10,0);
		}
	}


}