Erstmal einmal den gesamten Code damit ihrs im Zusammenhang habt:

Code:
/*  motormodul.c

***************************************************

***************************************************
$Log:$


*/
#include <avr/io.h>

#include <avr/interrupt.h>
#include <avr/signal.h>

#include <inttypes.h>      /* fuer uint32_t */

#include <avr/delay.h>

#include "twi.h"
#include "TWI_Master.h"


#define LED1         PC0
#define LED2         PC1
#define LED_PORT     PORTC
#define KEY1         PC2
#define KEY2         PC3
#define KEY_PORT     PINC
#define ENABLE       PB0
#define ENABLE_PORT  PINB

#define MOTOR_PORT        PORTB
#define MOTOR1_RICHTUNG   PB3
#define MOTOR1_PWM        PB1
#define MOTOR2_RICHTUNG   PB4
#define MOTOR2_PWM        PB2

#define SWAP(port, pin)  (port ^= _BV(pin))

#define READ  1
#define WRITE 0

void init_io(void);


/* Adresse vom Slave */
BYTE slave_adress = 0x40;
BYTE buf[4];

int main (void)
{


  /* Ports einstellen */
  init_io();


  /* TWI Initialisieren */
  TWI_Master_Initialise();
  
  /* Interrupts global aktivieren */
  sei();




  /* Hauptprogramm */
  for(;;)
    {

      /* Ausgänge auf High setzen */
      buf[0] = slave_adress | WRITE;
      buf[1] = 0xFF;
      TWI_Start_Transceiver_With_Data( buf, 2);

      /** Eingänge lesen **/
      buf[0] = slave_adress | READ;
      TWI_Start_Transceiver_With_Data( buf, 1);  // Adresse senden 
      /* Daten lesen, in buf[0] steht die Slave Adresse, danach
	 kommen die gelesenen Daten */
      TWI_Get_Data_From_Transceiver( buf, 2);    
       


      _delay_loop_2(16000);
      
      if( buf[1] == 0xFF)
	sbi( LED_PORT, LED1);
      else
	cbi( LED_PORT, LED1);

    }
}


void init_io(void)
{
  /* PB0 als Eingang alle anderen als Ausgang */
  DDRB  = _BV(PB1)| _BV(PB2)| _BV(PB3)| _BV(PB4)| _BV(PB5);
  PORTB = _BV(PB0);    /* Pull-Up PB0 ein */

  DDRC  = _BV(LED1)| _BV(LED2);  /* PC0 und 1 als Ausgang */
  PORTC = _BV(KEY1)| _BV(KEY2);  /* Pull-Ups Eingang */
 
  DDRD  = 0x00;    /* Port D als Ausgang */
}
So wie funtktioniert das mit dem buf[] das ist wenn ich es richtig sehe ein array und wenn ich dann dieses stück code sehe:

Code:
      /* Ausgänge auf High setzen */
      buf[0] = slave_adress | WRITE;
      buf[1] = 0xFF;
      TWI_Start_Transceiver_With_Data( buf, 2);
da werden 2 werte in den array geschrieben aber nur einer übertragen warum oder seh ich da etwas falsch?