Arduino with i2c doesnt work

hello
I have postet my Problem in the german section
http://www.arduino.cc/cgi-bin/yabb2/YaBB.pl?num=1263155654.

The Arduino repeat the setup() routine often. And i think after a time it crashes.
My Program works fine if i dont use Wire.begin().
For testing the correct connection i tried
http://combustory.com/wiki/index.php/RTC1307_-_Real_Time_Clock
and it works fine. With the same configuration.

Need the Wire library anything to work fine. Maybe it doesnt work with a Duemilanove?
I use the Arduino IDE 0017

Strange:
If i change the Serial.println(ASDF) string to Serial.println(AS) it seems to work. Any hints?

void setup() {
  //i2c bus anfang Arduino ist Master
  //Wire.begin(); 
    // klappt aus irgendeinem Grund nicht
   
  //Start up the serial port
  Serial.begin(9600);
  //Signal the program start
  Serial.println("Timer2 Test");
  
 // set up the LCD's number of rows and columns: 
 // lcd.begin(20, 1);
  lcd.begin(16,2);    //Olli Display anpassen
  // Print a message to the LCD.
  
  lcd.print(" init  ");
 
  Serial.println("ASDF");  // 1
  Wire.begin(); // olli Test
  Serial.println("Warum ist das nötig"); // malsehen ob das reicht oder warum das nötig ist OLLi
}

Please post the rest of the Sketch.

Here is the sketch.
Why do you need it?
I think the setup() dont use any functions that i have written.
The strange think, if i change the serial.println(“DF”); to a other output or delete it. The behavior change. But i dont see
the reason for this behavior.

#include <LiquidCrystal.h>
#include <Wire.h>

/* 
Version  : 0.1.prealpha
Titel    : AutoDisplay: Uhr Temperatur
Zweck    : Erstmal nur einfach
 
 
*/

// Display ist ein 20 * 1 Zeichen Display 
// Ansatz der Ausgabe:
// 12:34           22°C
// 12345678901234567890
// 12:23  12.5 V   23°C

/*

  The circuit:
 * LCD RS pin to digital pin 12
 * LCD Enable pin to digital pin 11
 * LCD D4 pin to digital pin 5
 * LCD D5 pin to digital pin 4
 * LCD D6 pin to digital pin 3
 * LCD D7 pin to digital pin 2
 * 10K resistor:
 * ends to +5V and ground
 * wiper to LCD VO pin (pin 3)
 
 */
 
 LiquidCrystal lcd(12, 11, 5, 4, 3, 2);
 byte anzeigeStunden = 01;
 byte anzeigeMinuten = 01;
 byte anzeigeTemperatur = 01;
 boolean DisplayAktualisieren = false;
 byte AbgleichStunden = 23;
 byte AbgleichMinuten = 59;

long letztesMalMillis = 0;
 
const char* VariablenListe[] = {"hallo","test"};
 
void setup() {
 
  //Start up the serial port
  Serial.begin(9600);
  //Signal the program start
  Serial.println("Timer2 Test");
  
 // set up the LCD's number of rows and columns: 
 // lcd.begin(20, 1);
  lcd.begin(16,2);    //Olli Display anpassen
  // Print a message to the LCD.
  
  lcd.print(" init  ");
 
  //Serial.println("DF"); 
  
  Wire.begin(); // olli Test
  
  Serial.println("Warum"); // malsehen ob das reicht oder warum das nötig ist OLLi
}
  
void loop() {
//  lcd.setCursor(0,1);
//  lcd.print(millis()/1000);

 if ( (millis() - letztesMalMillis) > 100 ){ // eine Sekunde um?
   letztesMalMillis = millis();
   Zeit();
   Display();
   SerialDebug();
 }
 i2cAnfang();
}     

void i2cAnfang(){
const byte adresseRTC = B1101000; //DS1307 arbeitet nur im 100kHz Modus
  
 
}

boolean stimmenStrings(char* ersterString, char* zweiterString){
  boolean zwischen = false;
  // noch eine Maximalstringlänge berücksichtigen
  for (byte i = 0; (ersterString[i] != '\0') || (zweiterString[i] != '\0') ; i++ ){
    if ( ersterString[i] == zweiterString[i] ) {
      zwischen = true;
    } else {
      return false;
    }
  }  
  return zwischen;
}


// Damit man jede Variable anzeigen und ändern kann.
// Für Debug Zwecke.
// wird periodisch von loop() aufgerufen.
//   Befehle: Help, Status, Test
void SerialDebug(){
  byte incomingByte;
  char buffer[50];
  byte bufferzaehler = 0;
 
  while (Serial.available() != 0){ // Zeichen in buffer einlesen bis CF 13 kommt
  incomingByte = Serial.read();
  
   if ( incomingByte == 13) {
     break;
     } else if (incomingByte == 10) {
       break;
      } else if (incomingByte == 0) {
         break;
       } else {
         buffer[bufferzaehler] = char(incomingByte);
         bufferzaehler++;
       } 
  }
  buffer[bufferzaehler]= '\0';
  
  /* // warum klappt das nicht? Olli
  if ( buffer == "test" ) {
    Serial.println("Dieser Test ist geglückt");
  }
  */
  
  if (stimmenStrings(buffer,"test") == true ){
    Serial.println("Dieser wenigstens?");
  }
  if (stimmenStrings(buffer,"get time") == true){
    Serial.print("Die Zeit : ");
    Serial.print(anzeigeStunden,DEC);
    Serial.print(":");
    Serial.println(anzeigeMinuten,DEC);
  }
  if (stimmenStrings(buffer,"get timer") == true){
    Serial.println(millis(),DEC);
  }
  if (stimmenStrings(buffer,"help") == true){
    Serial.println("Derzeit mögliche Eingaben:");
    Serial.println("help      : gibt diesen Text aus");
    Serial.println("get time  : gibt die angezeigte Zeit aus");
    Serial.println("get timer : gibt die timer variable millis() aus.");
  }
}

// in millis sind die Millisekunden gespeichert seit dem der uC 
// eingeschaltet wurde.
// Alle 50 Tage wird er überlaufen.   //Olli
// Also entweder vorher einen RTC-Chip einbauen oder abfangen. :)
void Zeit(){
  byte zwischenStunden = 0;
  byte zwischenMinuten = 0;
  byte zwischenTage = 0;
  unsigned long  zwischenMillisG = millis()/1000;
  
//  sekunden = millis()/1000;
//  minuten = millis()/(1000*60);
//  stunden = millis()/(1000*60*60);

    zwischenTage = zwischenMillisG/(60*60*24);
    zwischenMillisG = zwischenMillisG - zwischenTage*(60*60*24); //Tage werden abgezogen

    zwischenStunden = zwischenMillisG/(60*60);
    zwischenMillisG = zwischenMillisG-(zwischenStunden*(60*60));//Stunden werden abgezogen

    zwischenMinuten = zwischenMillisG/60;

    anzeigeMinuten = AbgleichMinuten+zwischenMinuten;
    anzeigeStunden = AbgleichStunden+zwischenStunden;
    if (anzeigeMinuten > 59) {
      anzeigeMinuten -= 60;
      anzeigeStunden++;
    }
    if (anzeigeStunden > 23) {
      anzeigeStunden -= 24;
    }    
}


void Display(){
  
    lcd.clear();
  
    // der Teil ist unwichtig nur für statuskram
    lcd.setCursor(0, 1);
    lcd.print("ha");
    
    // Hier wird die Zeit ausgegeben    
    lcd.setCursor(0,0);
    lcd.print(anzeigeStunden,DEC);
    lcd.print(":");
    lcd.print(anzeigeMinuten,DEC);
    lcd.print(" ");
    lcd.print(millis()/1000);
    lcd.print(" ");
    lcd.print(anzeigeTemperatur,DEC);
}