Gast
#1881266
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