Hallo,
ich hab mal ne Frage zu diesem EEPROM.
Ich hab derzeit den EEPROM an die SDA und SCL vom Mega verbunden und
benutze die I2C (nicht Two-Wire) Bus Funktion von Codevision.
Habe auch da die entsprechenden Ports programmiert.
1 | // I2C Bus functions
|
2 | #asm
|
3 | .equ __i2c_port=0x15 ;PORTC
|
4 | .equ __sda_bit=1
|
5 | .equ __scl_bit=0
|
6 | #endasm
|
7 |
|
8 | ...
|
9 |
|
10 | PORTC=0x00;
|
11 | DDRC=0x20;
|
12 |
|
13 | ...
|
14 | unsigned char sec;
|
15 |
|
16 | while(i2c_start()==0);
|
17 | while(i2c_write(0b10100000)==0); //Slaveaddr + WRITE
|
18 | while(i2c_write(0x01)==0); //Pageaddr
|
19 | while(i2c_write(0x15)==0); //Testdatum
|
20 | i2c_stop();
|
21 |
|
22 | delay_ms(1000);
|
23 |
|
24 | while(i2c_start()==0);
|
25 | while(i2c_write(0b10100000)==0); //Slaveaddr + WRITE
|
26 | while(i2c_write(0x01)==0); //Pageaddr
|
27 | while(i2c_start()==0); //Start für READ
|
28 | while(i2c_write(0b10100001)==0); //Slaveaddr + READ
|
29 | sec=i2c_read(0); //READ ohne Ack
|
30 | i2c_stop();
|
Mit den whiles lese ich die Acks und Busbelegung.
Leider bekomme ich bei dieser Konfiguration nur 0xFF zurück.
Hat also wohl nicht geschrieben.
Kann es mit DDRC zusammenhängen??
Ansonsten weiß ich auch nicht so recht weiter.
MfG, Bernhard