I2C problem

Hi, I have a rather large problem with my PCF8574AN(4W) chips here... As i am currently developing a library to drive a ks0108 screen via two TWI Port expanders i have to get at least those running, yet the following code hangs at the Wire.available() point:

byte ks0108::getTWIDATA(byte address)
{
  Serial.println("getTWI Start");
  byte _tmp = B00000000;
  
  Serial.print("getTWI TMP = ");
  Serial.println(_tmp);
  
  Serial.print("get TWI: Request from ");
  Serial.println((int)address);
  Wire.requestFrom((int)address, (int)1);   
  if(Wire.available()) {
    _tmp = Wire.receive();
  } 
  
  Serial.print("IN: ");
  Serial.println((int)_tmp);
  return _tmp;
}

Address is B0111000 (none of the As on the PCF is connected) yet it simply seems not to return anything, or at least turn available..

Does someone have any ideas? (SDA and SCL are SDA = Analog4 and SCL is Analog 5)

code hangs at the Wire.available()

What made you think, that your code hangs on Wire.available()? If you take a look at Wire.cpp, than Wire.available is not doing anything fancy, just subtracts current index in the buffer, from buffer length:

// must be called in:
// slave rx event callback
// or after requestFrom(address, numBytes)
uint8_t TwoWire::available(void)
{
  return rxBufferLength - rxBufferIndex;
}

My guess would be, that you have not called Wire.begin() before communicating with port expanders.

I cant believe i am stuck on such a simple thing as forgetting Wire.begin()!?!?!

Damnit. If I ever met you in real life i owe you a beer!