Hi,
mein Programm in cc für den Atmega128 hängt sich bei "I2C_Start();" auf, eigendlich sollte es den Wert vom SRF02 im EEProm speichern und am LCD ausgeben. Der Kompiler findet keine Fehler.





int WERT1, WERT2;
char zeile1[12], zeile2[12];

void main(void)
{
word address;
byte data,EEPROM_data;
address=0x20;
data=0x42;


I2C_Init(I2C_100kHz); //I2C-Schnittstelle wird initialisiert


LCD_Init();
LCD_ClearLCD(); //Displayinhalt löschen
LCD_CursorOff(); //Display Cursur ausschalten

zeile1 = "Zentim."; //zeile1 bedeutet Zentim.
LCD_CursorPos(0); //Position von Zeile1
LCD_WriteText(zeile1); //Jez ausgeben





while (true) //Unendlichschleife

{



I2C_Start(); //I2C starten...
I2C_Write(0xE0); //...und zwar im Schreibmodus EO(224=11100000)
I2C_Write(0x51); //Ausgabe in cm
AbsDelay(100); //Verschnaufpause (er braucht 67ms, ich geb ///ihm 100)
I2C_Stop(); //I2C stoppen
AbsDelay(5); //Pause für EEprom


I2C_Start(); // I2C starten...
I2C_Write(0xE0);
I2C_Write(address>>;
I2C_Write(address);
I2C_Start(); // I2C neustarten...


I2C_Write(0xE1); // ...jetzt aber im Lesemodus E1(225=11100001)

//Der Wert1 wirdgelesen...
WERT1=I2C_Read_ACK(); //...und mit einem ACK gespickt.
EEPROM_data=I2C_Read_ACK(); //...und abgespeichert

//Der Wert2 wirdgelesen...
WERT2=I2C_Read_NACK(); //...und mit einem NACK gespickt.


I2C_Stop(); //I2C wird angehalten

Msg_WriteHex(EEPROM_data); //Den Wert im EEprom als /
//Hexadezimale Zahl abspeichern


Str_WriteInt(WERT1, zeile2, 0x40); //...Schreib in die 2.Zeile W1
LCD_CursorPos(0x40); //In Zeile2

Str_WriteInt(WERT2, zeile2, 0x40+;//...Schreib in die 2.Zeile W2
LCD_CursorPos(0x40+; //In Zeile2 in die mitte

AbsDelay(1000); //Nach einer Sekunde springt das Programm
// zur Zur Zeile "while (true)" zurück
}

}


Hat jemand ne Ahnung was ich machen kann, da das Programm bereits beim I2C_Bus starten aufgibt, handelt es sich eher um einen Hardwearfehler, das Board un der Sensor sind fehlerfrei. Wie aktiviert man eigendlich die Pullupwiderstände des Chips?