Forum: Mikrocontroller und Digitale Elektronik I²C-EEPROM 24AA08 von Microchip + ATMega16L


von Bernhard (Gast)


Lesenswert?

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

von Bernhard (Gast)


Lesenswert?

Nachtrag:

i2c_init() wird auch durchgeführt.

von holger (Gast)


Lesenswert?

Hast du Pullups auf SCL und SDA ?

von Bernhard (Gast)


Lesenswert?

gute Frage .. ich glaub ich war von internen Ausgegangen ... danke 
erstmal das werd ich mal probieren

von Bernhard (Gast)


Lesenswert?

Mmh und das wars auch schon.

Ich war doch echt in meiner Blauäugigkeit davon ausgegangen, dass bei 
ATMEL mal was sinnvolles gemacht worden wäre, so vllt auch mal die 
internen Pullups auch an SDA und SCL. Klar wären sie dann nicht mehr so 
variabel in der Taktfrequenz aber sind ja sonst auch zuschaltbar.

Mal wieder ein klarer Fall von Read the f*cking manual :-)

Danke nochmals

von Oliver (Gast)


Lesenswert?

>und benutze die I2C (nicht Two-Wire) Bus Funktion

Daran wird es gelegen haben :-)

Oliver

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.