Forum: Compiler & IDEs I2C SCL nach Startbedingung auf LOW


von Sven E. (ecke)


Lesenswert?

Hallo alle zusammen,
beim Auslesen eines Sensors wird nach dem Senden der Startbedingung kein 
Takt auf SCL erzeugt.
SCL und SDA sind mit 4,7 als Pullup beschalten (5V).
Als Quellcode habe ich bereits mehrere Varianten getestet und auch den 
Controller habe ich bereits gewechselt (AT90CAN). Merkwürdig erscheint 
mir folgendes:
1.) SCL geht ziemlich zeitgleich mit SDA auf LOW
2.) Beim Senden der Adresse wechselt SDA auf High - SCL bleibt weiterhin 
LOW
Um Auszuschließen das der Sensor einen Treffer hat, habe ich 2 AT90CAN 
miteinander verbunden. Der Effekt bleibt der gleiche - SCL wird nicht 
generiert!!

Wo kann nur der Fehler liegen ?


Der Controller läuft als Master Receiver mit folgenden Quellcode:

int main(void)
{
    DDRB  = 0xff;
    PORTB = 0xff;
    i2c_init();    // 100kHz bei 16Mhz Systemtakt
while(1){

    i2c_start_wait(0x78+I2C_READ);
    i2c_readAck();
    i2c_stop();
}
Die Funktionen basieren auf der Lib von Peter Fleury

von Walter S. (avatar)


Lesenswert?

Sven E. schrieb:
> 1.) SCL geht ziemlich zeitgleich mit SDA auf LOW
was heißt ziemlich?

ist die Lib als Software-I2C?
wenn ja hab ich die auch in Verwendung und sie funkt.
Hast du vielleicht irgendwo Kurzschlüsse?
oder SDA und SCL falsch definiert?

von Walter S. (avatar)


Lesenswert?

einen hab ich noch:
hast du die Wartezeiten auf 16MHz angepasst?

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.