www.mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik LM75 an PIC16F886


Autor: Sven Stefan (stepp64) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,

bin langsam am verzweifeln. Ich versuche seit drei Tagen einen 
Temperatursensor LM75 an einem PIC 16F886 zum laufen zu bekommen. Das 
Teil sagt aber einfach nix. Noch nicht mal ein ACK kommt zurück. Ich 
möchte das Teil gern mit dem MSSP Modul (I2C) ansprechen. Programmieren 
tue ich in Assembler. Hochziehwiderstände sind an SDA und SCL dran 
(1k8). Verdrahtung ist auch ok (schon 5 mal überprüft). So langsam weis 
ich nicht mehr weiter. Probiert habe ich schon mit 400kBit und mit 
100kBit. Irgendwie sieht es so aus, als ob das Teil nicht antwortet. Das 
Prog sendet die Startcondition, dann die Adresse mit gesetztem R/W-Bit. 
Hier wird nun schon nicht das ACK-Bit im STATUS-Register gesetzt. 
Scheinbar fühlt sich mein LM75 nicht angesprochen. Das Lesen des 
Datenwortes hängt sich dann auf (er wartet in einer Endlosschleife auf 
das erste Byte).

Hat eventuell jemand einen Link oder eine Idee was ich falsch machen 
könnte? Im Netz findet man dazu auch nichts. Nur immer die Ansteuerung 
ohne MSSP Modul oder in C.

Danke für die Hilfe
Sven

Autor: Dieter Werner (dds5)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Bist Du sicher dass die Adresse stimmt?

In vielen Datenblättern steht die Adresse als 7 Bit Wert drin, den muss 
man erst ein Bit nach links schieben und dann das R/W Bit als LSB 
dazutun.

Ich hatte bei einigen Bausteinen auch schon mit Adresse 0 Erfolg, das 
ist wohl so eine Art Brotkasten ähhh broadcast Adresse.

Autor: Sven Stefan (stepp64) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Adresse ist 0x90 bzw 0x91 (wenn man Lesen will) und sollte so stimmen 
(1001 A2,A1,A0,R/W). Das mit Adresse 0 könnte ich noch testen. Da an den 
Bus aber noch zwei weitere ICs sollen (EEprom und Busexpander) geht das 
später nicht mehr, da die 0 tatsächlich als eine Art Broadcast 
reserviert ist.

Autor: Sven Stefan (stepp64) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Habs gerade mal noch schnell probiert. Mit Adresse 0 antwortet der LM75, 
sendet allerdings als Temperatur immer nur 0xFF in beiden Bytes. Nun 
muss ich nur noch rausfinden, warum der auf Adresse 0x90 nicht 
antwortet. Eventuell haben ja meine 3 Adresspins nicht alle 
Massekontakt. Werd ich wohl noch mal nachlöten müssen. Für heute ist 
aber erst mal Schluss. Danke für den Tip.

Sven

Autor: Sven Stefan (stepp64) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ich habe jetzt mal den Sensor getauscht. Anfangs genau das selbe Bild. 
Nach einigem hin und her habe ich mal das Bit SMP im Register SSPSTAT 
gesetzt:
In I2C Master or Slave mode:
1 = Slew rate control disabled for standard speed mode (100 kHz and 1 MHz)
0 = Slew rate control enabled for high speed mode (400 kHz)

Nun scheint es zu gehen, auch wenn der Sensor scheinbar etwas zu viel 
anzeigt (ich glaub dem nicht das es in meinem WZ gerade 25°C sind).

Wenn mir jetzt noch einer erklären könnte, was es mit dem Bit auf sich 
hat. Ich kann das nicht so ganz richtig deuten. Scheint eine Art 
Kontrolle der Flanken im Signal zu sein? Oder habe ich das jetzt falsch 
übersetzt? Was ich nicht verstehe, der PIC steuert den BUS mit 400kHz 
an. Laut Datenblatt wäre es nicht richtig dieses Bit zu setzen. Damit 
geht es aber. Was ist also richtig?

Gruß
Sven

Autor: Bernd Rüter (Firma: Promaxx.net) (bigwumpus)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Super-Erklärung für dieses Bit...
Ich habe hier auch lange mit I2C gekämpft und habe jetzt eine Verbindung 
mit 33kHz (über 5m im Fahrzeug) installiert.
Dabei hilft es, mit einem Oszillokop den Kurvenverlauf zu sehen!
Und das letzte große Debugging habe ich dann mit einem Logicanalysator 
(Po.Scope) gemacht. Hat lange gedauert, bis ich rausfand, daß die 
Compiler-Routinen für das LCD einige TRIS-Bits (immer wieder) setzen, 
die das MSSP-Modul zum K..... findet.

Aber dieses Problem wirst Du nicht haben.

Warum 400kHz ?

Autor: Sven Stefan (stepp64) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hihi, jetzt weis ich wenigstens, warum ich mich innerlich so weigere auf 
eine Hochsprache umzusteigen. Bei Assembler weiß ich wenigstens welches 
Bit ich falsch eingestellt habe und muss nicht damit rechnen das der 
Compiler denkt, er müsste das irgenwie anders machen. Ich muss 
allerdings auch zugeben, dass ich am Anfang dieses Bit schon einmal 
umgestellt hatte und es auch nicht ging. Da hatte allerdings das Banking 
wieder mal zugeschlagen *** grrrrr ***. Ich hatte nicht beachtet das 
SSPSTAT in Bank 1 liegt.....

Im Moment läuft das ganze auf 100kHz. Das Bit ist auch gesetzt. Warum 
sollte ich nicht 400kHz nehmen? Der Chip kann das eigentlich ab. Ich 
werde es aber auf 100kHz lassen, da ich auch noch einen Uhrenschaltkreis 
einen EEPROM und einen Busexpander anschließen will. Der 
Uhrenschaltkreis kann nur 100kHz. Wenn die dann erst mal alle 
miteinender spielen, bin ich in meinem Projekt einen Schritt weiter :-)

Sven

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.