Hallo Zusammen,
ich möchte bei dem ATXMega128A1 die Master TWI Schnittstelle von Port D
verwenden.
Mein Problem ist, dass bei Aufruf von
TWI_SEND(0x01,0x02) lediglich die Slave Adresse ausgesendet wird.
sendBuffer[0] und [1] werden nicht gesendet.
Ich kann den Fehler nicht finden, bin dankbar für jeden Hinweis.
Gruss
JSC
#define SLAVE_ADDRESS_1 0x55
#define SLAVE_ADDRESS_2 0x56
#define SLAVE_ADDRESS_3 0x57
/*! Defining number of bytes in buffer. */
#define NUM_BYTES 8
/*! CPU speed 32MHz, BAUDRATE 100kHz and Baudrate Register Settings */
#define CPU_SPEED 32000000
#define BAUDRATE 100000
#define TWI_BAUDSETTING TWI_BAUD(CPU_SPEED, BAUDRATE)
extern uint8_t BufPos;
uint8_t sendBuffer[NUM_BYTES] = {};
/* Global variables */
TWI_Master_t twiMaster; // TWI master module.
void InitTWI(void){ // Initialize TWI master PORT D
PORTD.DIRSET = PIN0_bm; // Set SDA pin as output
PORTD.DIRSET = PIN1_bm; // Set SCL pin as output
TWI_MasterInit(&twiMaster,
&TWID,
TWI_MASTER_INTLVL_LO_gc,
TWI_BAUDSETTING);
}
void TWI_SEND(char I2CByte1, char I2CByte2){ //Send 2 bytes via I2C Bus
Port D0/D1
sendBuffer[0]=I2CByte1;
sendBuffer[1]=I2CByte2;
TWI_MasterWrite(&twiMaster,
SLAVE_ADDRESS_1,
&sendBuffer[0],
2);
while (twiMaster.status != TWIM_STATUS_READY) {// Wait until
transaction is complete.
}
//printf("\n*** 2 Byte über I2C Port D gesendet ***");
}
/*! TWIC Master Interrupt vector. */
ISR(TWID_TWIM_vect)
{
TWI_MasterInterruptHandler(&twiMaster);
printf("\n*** Byte über I2C Port D gesendet ***");
}
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.