SOOOOOOO!Hatte mir eben geschworen, dass dies mein letzter Versuch werden sollte und siehe da, es hat funktioniert =D>

Ich hätte wohl diese viele AckPollings weg lassen sollen! Diese Funktion dient offenbar dazu, dass der Master weiß, dass der Slave auch wirklich da ist...

Naja ich stelle mal den Quellcode hier her, wer weiß wer ihn irgendwann mal gebrauchen kann?!

Quellcode für 512k Speicher zu beschreiben:

#include<p18cxxx.h>
#include<timers.h>
#include<i2c.h>
#include<delays.h>


#pragma config PLLDIV = 3 //PLL for 12Mhz
#pragma config CPUDIV = OSC1_PLL2 //Takt = 12Mhz:1=12Mhz
#pragma config FOSC = HS //bis 20MHz Taktung
#pragma config FCMEN = OFF //keine Taktüberwachung
#pragma config PWRT = OFF //Poweruptimer on
#pragma config BOR = OFF //Kein Brown Out Reset
#pragma config WDT = OFF //WatchDogTimer Off
#pragma config MCLRE = ON //MClr on
#pragma config PBADEN = OFF //PortB digital I/Os
#pragma config STVREN = OFF //Kein Stackreset
#pragma config LVP = OFF //Kein LowPowerICSP
#pragma config DEBUG = OFF //RB6,RB7 stehen zur Verfügung
#pragma config IESO = OFF //IESO Off


#pragma code

unsigned char arraywrite[]={1,2,3,4,5,6,7,8,9,10,11,12,13,14,15};
unsigned char arrayread[]={15,14,13,12,11,10,9,8,7,6,5,4,3,2,1};

void main(void)
{
unsigned char schreiben = 0xAA; //Soll auf EEProm geschrieben werden
unsigned char lesen = 0xFF; //Soll vom EEProm gelesen werden
TRISB=0x03; //RB0,RB1 = Input
TRISD=0; //TRISD Output für LED-Anzeige
PORTD=0; //PORTD=0
OpenI2C(MASTER,SLEW_ON); //PIC als Master
SSPADD=7; //Baudrate einstellen




StartI2C(); //I2C starten
putcI2C(0xA0); //24LC512 ansprechen
putcI2C(0x00); //Highteil der Speicher-Addresse
putcI2C(0x0F); //Lowteil der Speicher-Addresse
putcI2C(schreiben); //Daten in 24LC512 schreiben
SSPCON2=0x04; //Acknoledge
while(SSPCON2==0x04); //
StopI2C(); //I2C stoppen
EEAckPolling(0xA0);

StartI2C(); //I2C starten
putcI2C(0xA0); //24LC512 ansprechen
putcI2C(0x00); //Highteil der Speicher-Addresse
putcI2C(0x0F); //Lowteil der Speicher-Addresse
StartI2C(); //erneutes Starten(24LC512Datasheet)
putcI2C(0xA1); //24LC512 ansprechen(Read)
lesen = ReadI2C(); //Byte einlesen
StopI2C(); //I2C Stop
EEAckPolling(0xA0);
while(1)
{
PORTD=lesen; //Ausgabe des gelesenen Bytes
}
}

Hurra! Also wegen mir kann der Threat nun geschlossen werden, ich für meinen Teil mache jetzt erstmal ein Fass auf