i2c mit C ansprechen und steuern ? [Einstieg]

  • Moin!

    ich stehe grade vor einem Rätsel :s

    Folgendes Szenario besteht bei mir grade:

    Ich habe ein DS1621 Chip (Temperatursensor) der über I²C gesteuert wird. Das ganze habe ich von hier nachgebaut. Hier gibt’s auch ein c file inklusive Header dazu.

    Ich möchte jetzt als ersten Schritt dem Baustein sagen, dass er mit der Temperaturmessung starten soll. In der Shell ist das kein Problem einfach

    i2cset -y 1 0x48 0xEE

    also -y 1 ist durch das Modell vorgegeben, die 0x48 ist die Adresse des Bausteins und 0xEE der "Startbefehl"

    so in dem c File ist ganz unten auch ne main, also das Hauptprogramm. Das habe ich so abgeändert, so dass nur noch die Funktion für diesen obigen Befehl drin ist (inklusive der benötigten Funktionen. So weit ich das durchblicke besteht in dem Code kein Fehler, aber nach dem Compiler klappt das nicht. Das mache ich so : gcc ds1621 -o ds1621.c ds1621.h

    könnt ihr mir bitte helfen? Ich sitz da schon 2Tage dran, aber komme nicht weiter=(

    im Anhang ist mein C-File den Header kann ich nicht hochladen, aber den fiindet ihr hier

  • Also die original Dateien sind im letzten link. Ich hab nur meine abgespeckte veröffentlicht wion in den Anhang gepackt. Die .h konnte ich hier nichts hochladen.

    Ok also hab ich führ den Compiler nen falschen Befehl, aber das daras entstande Programm war ausführbar.kann es dann an dem gelegen haben? Ich meine in dem .c müsste was faul sein oder?

  • > Ok also hab ich führ den Compiler nen falschen Befehl, aber das daras entstande Programm war ausführbar
    Also:

    * der Befehl fuer den Compiler ist eindeutig falsch
    * das Programm ist aber trotzdem gelaufen ??
    * und die undefinierte Funktion drin war definiert ????

    ich schreibe jetzt besser nicht was ich gerne wuerde ...

    Viel Erfolg

  • ok, also ich habs das jetzt mal so übersetzt. Das Übersetzen hat funktioniert ohne das Fehler ausgegeben wurden.

    Wenn ich das Programm starte, dann kommt der bloß bis zu dem ersten printf bei dem geht ausgegeben wird. In die Ifanweisung kommt der nicht und wenn man das versucht zu umgehen passiert auch nichts gescheitest.

  • Ok ich habe folgendes gemacht, dass habe ich aus nem nuch abgeschrieben und es soll mir lediglich erstmal zeigen, ob der zugriff überhaupt funktioniert.

    Aber es funktioniert nicht. Habt ihr einen tipp wieso? Er springt immer in die else-Anweisung...

  • sowohl mit als auch ohne sudo passiert nichts außer, dass gesagt I2C-Bus kann nicht geoeffnet werden. Sprich das open funktioniert nicht...

    Woran kann das liegen? Ich mein am Quelltext habt ihr ja nichts gemekert genauso wie der Compiler, also müsste das Problem wo anders liegen?!

    • Offizieller Beitrag

    muss das leerzeichen in dem "/dev/i2c-1" string da hin? in Python würde auch auch meckern...und c is da ja deutlich unflexibler ;)

    Der Unterschied zwischen Genie und Wahnsinn definiert sich im Erfolg.

    Einmal editiert, zuletzt von dbv (12. Juni 2014 um 21:01)

  • Jop das hab ich mir auch gedacht^^ habs auch ausprobiert, aber das wäre wohl zu einfach gewesen.... hat leider auch nichts gebracht

    Aber danke für den Tip!:thumbs1:

    Kann es sein das das Probelm darin liegt, dass ich in Visual Studio schreibe und dann die Datei auf den Raspberry schiebe und die dort durch den Compiler jage? Eigentlich dürfte das ja nichts ausmachen?!

    Ok ich habe den Fehler gefunden !

    Code
    char *fileName=" /dev/ic2-1";

    diese Zeile war falsch.

    Code
    char *fileName="/dev/i2c-1";

    ich hab das i2c falsch geschrieben....

    Aber danke an alle ;)

    Einmal editiert, zuletzt von maschler (12. Juni 2014 um 22:09)

Jetzt mitmachen!

Du hast noch kein Benutzerkonto auf unserer Seite? Registriere dich kostenlos und nimm an unserer Community teil!