www.mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik I2C und PIC16F887


Autor: mantis (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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

Autor: mantis (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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

Autor: usuru (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert

Autor: mantis (Gast)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
@ 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.

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.