예제 #1
0
/**
 * The main initialisation method to setup pins and interrupts
 */
void DWire::_initMain( void ) {

	// Initialise the receiver buffer and related variables
	rxReadIndex = 0;
	rxReadLength = 0;

	requestDone = false;
	sendStop = true;

	switch (module) {
#ifdef USING_EUSCI_B0
	case EUSCI_B0_BASE:
		pTxBuffer = EUSCIB0_txBuffer;
		pTxBufferIndex = &EUSCIB0_txBufferIndex;
		pTxBufferSize = &EUSCIB0_txBufferSize;

		pRxBuffer = EUSCIB0_rxBuffer;
		pRxBufferIndex = &EUSCIB0_rxBufferIndex;
		pRxBufferSize = &EUSCIB0_rxBufferSize;

		modulePort = EUSCI_B0_PORT;
		modulePins = EUSCI_B0_PINS;

		intModule = INT_EUSCIB0;

		MAP_I2C_registerInterrupt(module, EUSCIB0_IRQHandler);
		break;
#endif
#ifdef USING_EUSCI_B1
	case EUSCI_B1_BASE:
		pTxBuffer = EUSCIB1_txBuffer;
		pTxBufferIndex = &EUSCIB1_txBufferIndex;
		pTxBufferSize = &EUSCIB1_txBufferSize;

		pRxBuffer = EUSCIB1_rxBuffer;
		pRxBufferIndex = &EUSCIB1_rxBufferIndex;
		pRxBufferSize = &EUSCIB1_rxBufferSize;

		modulePort = EUSCI_B1_PORT;
		modulePins = EUSCI_B1_PINS;

		intModule = INT_EUSCIB1;

		MAP_I2C_registerInterrupt(module, EUSCIB1_IRQHandler);
		break;
#endif
#ifdef USING_EUSCI_B2
	case EUSCI_B2_BASE:
		pTxBuffer = EUSCIB2_txBuffer;
		pTxBufferIndex = &EUSCIB2_txBufferIndex;
		pTxBufferSize = &EUSCIB2_txBufferSize;

		pRxBuffer = EUSCIB2_rxBuffer;
		pRxBufferIndex = &EUSCIB2_rxBufferIndex;
		pRxBufferSize = &EUSCIB2_rxBufferSize;

		modulePort = EUSCI_B2_PORT;
		modulePins = EUSCI_B2_PINS;

		intModule = INT_EUSCIB2;

		MAP_I2C_registerInterrupt(module, EUSCIB2_IRQHandler);
		break;
#endif
#ifdef USING_EUSCI_B3
	case EUSCI_B3_BASE:
		pTxBuffer = EUSCIB3_txBuffer;
		pTxBufferIndex = &EUSCIB3_txBufferIndex;
		pTxBufferSize = &EUSCIB3_txBufferSize;

		pRxBuffer = EUSCIB3_rxBuffer;
		pRxBufferIndex = &EUSCIB3_rxBufferIndex;
		pRxBufferSize = &EUSCIB3_rxBufferSize;

		modulePort = EUSCI_B3_PORT;
		modulePins = EUSCI_B3_PINS;

		intModule = INT_EUSCIB3;

		MAP_I2C_registerInterrupt(module, EUSCIB3_IRQHandler);
		break;
#endif
	default:
		return;
	}

	// Register this instance in the 'moduleMap'
	registerModule(this);
}
예제 #2
0
파일: DWire.cpp 프로젝트: DelfiSpace/DWire
/**
 * The main initialisation method to setup pins and interrupts
 */
void DWire::_initMain( void ) 
{
    requestDone = false;
    sendStop = true;

    switch (module) 
    {
        case EUSCI_B0_BASE:

			DWire_instances[0] = this;

			pTxBuffer = EUSCIB0_txBuffer;
			pTxBufferIndex = &EUSCIB0_txBufferIndex;
			pTxBufferSize = &EUSCIB0_txBufferSize;

			pRxBuffer = EUSCIB0_rxBuffer;
			pRxBufferIndex = &EUSCIB0_rxBufferIndex;
			pRxBufferSize = &EUSCIB0_rxBufferSize;

			modulePort = EUSCI_B0_PORT;
			modulePins = EUSCI_B0_PINS;
			moduleSCL = EUSCI_B0_SCL;

			intModule = INT_EUSCIB0;

			MAP_I2C_registerInterrupt(module, EUSCIB0_IRQHandler);
			break;

        case EUSCI_B1_BASE:

            DWire_instances[1] = this;

            pTxBuffer = EUSCIB1_txBuffer;
            pTxBufferIndex = &EUSCIB1_txBufferIndex;
            pTxBufferSize = &EUSCIB1_txBufferSize;

            pRxBuffer = EUSCIB1_rxBuffer;
            pRxBufferIndex = &EUSCIB1_rxBufferIndex;
            pRxBufferSize = &EUSCIB1_rxBufferSize;

            modulePort = EUSCI_B1_PORT;
            modulePins = EUSCI_B1_PINS;
			moduleSCL = EUSCI_B1_SCL;

            intModule = INT_EUSCIB1;

            MAP_I2C_registerInterrupt( module, EUSCIB1_IRQHandler );
            break;

        case EUSCI_B2_BASE:

            DWire_instances[2] = this;

            pTxBuffer = EUSCIB2_txBuffer;
            pTxBufferIndex = &EUSCIB2_txBufferIndex;
            pTxBufferSize = &EUSCIB2_txBufferSize;

            pRxBuffer = EUSCIB2_rxBuffer;
            pRxBufferIndex = &EUSCIB2_rxBufferIndex;
            pRxBufferSize = &EUSCIB2_rxBufferSize;

            modulePort = EUSCI_B2_PORT;
            modulePins = EUSCI_B2_PINS;
			moduleSCL = EUSCI_B2_SCL;
			
            intModule = INT_EUSCIB2;

            MAP_I2C_registerInterrupt(module, EUSCIB2_IRQHandler);
            break;

        case EUSCI_B3_BASE:

            DWire_instances[3] = this;

            pTxBuffer = EUSCIB3_txBuffer;
            pTxBufferIndex = &EUSCIB3_txBufferIndex;
            pTxBufferSize = &EUSCIB3_txBufferSize;

            pRxBuffer = EUSCIB3_rxBuffer;
            pRxBufferIndex = &EUSCIB3_rxBufferIndex;
            pRxBufferSize = &EUSCIB3_rxBufferSize;

            modulePort = EUSCI_B3_PORT;            ;
            modulePins = EUSCI_B3_PINS;
            moduleSCL = EUSCI_B3_SCL;

            intModule = INT_EUSCIB3;

            MAP_I2C_registerInterrupt(module, EUSCIB3_IRQHandler);
            break;

        default:
            return;
    }
    
    // Initialise the receiver buffer and related variables
    *pTxBufferIndex = 0;
    *pRxBufferIndex = 0;
    *pTxBufferSize = 0;
    *pRxBufferSize = 0;
}