Hello.
I have used this code for SPI comminuation on port E on xmega128A1:
//******************SPIE**************** SPI_Master_t spiMasterE; SPI_DataPacket_t SPIdataPacketE; uint8_t SPIsendDataE[600]="\0"; uint8_t SPIreceivedDataE[600]="\0"; void SPIInitE( void ) { /* Init SS pin as output with wired AND and pull-up. */ PORTE.DIRSET = PIN4_bm; PORTE.PIN4CTRL = PORT_OPC_WIREDANDPULL_gc; /* Set SS output to high. (No slave addressed). */ PORTE.OUTSET = PIN4_bm; /* Initialize SPI master on port C. */ SPI_MasterInit(&spiMasterE, &SPIE, &PORTE, false, SPI_MODE_0_gc, SPI_INTLVL_LO_gc, false, SPI_PRESCALER_DIV4_gc); /* Enable low and medium level interrupts in the interrupt controller. */ PMIC.CTRL |= PMIC_MEDLVLEN_bm | PMIC_LOLVLEN_bm; sei(); } ISR(SPIE_INT_vect) { SPI_MasterInterruptHandler(&spiMasterE); } void SendViaSPIE(int NumByte) { SPIInitE(); WDT_Reset(); /* Create data packet (SS to slave by PC4) */ SPI_MasterCreateDataPacket(&SPIdataPacketE, SPIsendDataE, SPIreceivedDataE, NumByte+1, &PORTE, PIN4_bm); /* Transmit and receive first data byte. */ uint8_t status; do { WDT_Reset(); status = SPI_MasterInterruptTransceivePacket(&spiMasterE, &SPIdataPacketE); } while (status != SPI_OK); /* Wait for transmission to complete. */ }
Now, I need to use another SPI on port D and I wrote this code:
//******************SPID**************** SPI_Master_t spiMasterD; SPI_DataPacket_t SPIdataPacketD; uint8_t SPIsendDataD[600]="\0"; uint8_t SPIreceivedDataD[600]="\0"; void SPIInitD( void ) { /* Init SS pin as output with wired AND and pull-up. */ PORTD.DIRSET = PIN4_bm; PORTD.PIN4CTRL = PORT_OPC_WIREDANDPULL_gc; /* Set SS output to high. (No slave addressed). */ PORTD.OUTSET = PIN4_bm; /* Initialize SPI master on port C. */ SPI_MasterInit(&spiMasterD, &SPID, &PORTD, false, SPI_MODE_0_gc, SPI_INTLVL_LO_gc, false, SPI_PRESCALER_DIV4_gc); /* Enable low and medium level interrupts in the interrupt controller. */ PMIC.CTRL |= PMIC_MEDLVLEN_bm | PMIC_LOLVLEN_bm; sei(); } ISR(SPID_INT_vect) { SPI_MasterInterruptHandler(&spiMasterD); } void SendViaSPID(int NumByte) { SPIInitD(); WDT_Reset(); /* Create data packet (SS to slave by PC4) */ SPI_MasterCreateDataPacket(&SPIdataPacketD, SPIsendDataD, SPIreceivedDataD, NumByte+1, &PORTD, PIN4_bm); /* Transmit and receive first data byte. */ uint8_t status; do { WDT_Reset(); status = SPI_MasterInterruptTransceivePacket(&spiMasterD, &SPIdataPacketD); } while (status != SPI_OK); /* Wait for transmission to complete. */ }
but I get this errors:
Error 76 redefinition of 'SPIsendDataE'
Error 80 redefinition of 'SPIsendDataD'
Error 78 redefinition of 'SPIreceivedDataE'
Error 82 redefinition of 'SPIreceivedDataD'
Error 84 redefinition of 'SPIInitE'
Error 90 redefinition of 'SPIInitD'
Error 88 redefinition of 'SendViaSPIE'
Error 94 redefinition of 'SendViaSPID'
Error 92 redefinition of '__vector_87'
Error 86 redefinition of '__vector_57'
could you please help me?