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.