Hallo, ich habe ein Problem mit dem I2C-Bus. Ich will mehrere LM75 Sensoren ansteuern. Um zu überprüfen welcher Sensor angeschlossen ist sende ich die Adresse vom LM75 auf dem I2C Bus und warte aufs ACK Signal - quasi wenn Sensor angeschlossen ACK ja / Sensor nicht angeschlossen ACK nein. Dieses ACK signal frage ich im Pir1, SSPIF ab. Programmschleife sieht ungefähr so aus: check_sen movfw W_Sensor0 ; Schreibadresse von Sensor0 laden (1001 001 0) call I2C_take ; I²C-Bus Übernehmen call check_send ; Adresse senden btfss PIR1, SSPIF ; ACK schon empfangen? bzw. meldet sich der Sensor goto Sen_fail0 ; nein -> Sensor nicht angeschlossen ! bcf PIR1, SSPIF ; ja -> Sensor ist angeschlossen ! bsf Sen_con, 0 ; Makiere Sensor0 als vorhanden call I2C_free ; Bus wieder freigeben return check_send bsf STATUS, RP0 ; Bank 1 ! bcf SSPCON2, RCEN ; Daten Empfang ausschalten bcf STATUS, RP0 ; Bank 0 ! movwf SSPBUF ; Sendebuffer laden call wait50 ; Warte auf ACK (50µs) return Nun zum Problem: ich bekomme !immer! ein ACK signal egal ob ich überhaupt ein Senor angeschlossen habe oder nicht. Weiß einer warum ? Gruß mantis
ich habe inzwischen Hardware seitig alles überprüft es muss ich um ein Software problem handeln. Pullup widerstände =4,7Kohm SDA und SDC sind an den richtigen Pins angeschlossen mit dem Oszillopskop messe ich immer ein LOW signal wenn ich den PIC im reset lasse messe ich ein HIGH signal. Es sieht so aus als ob das MSSP modul nicht startet bzw keinen clk bekommt. Als Oscilator nehme ich den interen OSC der auf 4 MHz default eingestellt ist. Evtl. mal mit externen (20Mhz) probieren !? Weiß wirklich keiner rat ? Gruß Mantis
@ usuru Das ist genau die Seite nach der ich meine I2C einstellung vorgenommen habe. Tutorials oder Erklärungen habe ich schon sehr lange und ausführlich gesucht. Deshalb wollte ich mal im forum nach rat suchen ;) Hier ist mal meine I2C test routine vielleicht sieht ja jemand meine Fehler.
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.