I2C STCN75 Sensoren Lpc 936

OP #2558671
Hi,

versuche mit einem Lpc936 mehrere STCN75 Temperatursensoren über I2C 
auszulesen.
Vielleicht kann mir ja jemand von euch weiterhelfen wie ich das besser 
machen könnte, weil das Programm manchmal hängt oder die Sensoren nicht 
ausließt.
Möchte nur die aktuelle Temperatur auslesen ohne Kommastelle.

MfG
Simon
Angehängte Dateien:
OP
In der while Schleife I2STAT geht auf 0x68 was bedeutet: Buszugriff geht 
beim SLA+R im Master Mode veloren, eigene SLA+R wurde empfangen, mit ACK 
wurde geantwortet.

Hab die while Schleife jetzt mal raus gemacht und durch eine 
verzögerungs Zeit ersetzt auserdem noch drei weitere Sensoren 
angeschlossen. Nun hab ich das Problem das nur der letzte Sensor nicht 
funktioniert. Bei meinem Testprogramm geht er aber.

delay_time(I2CDELAY);
temp_w (0x90);
delay_time(I2CDELAY);
temp_r (0x91);
delay_time(I2CDELAY);
....
temp_w (0x9E);
delay_time(I2CDELAY);
temp_r (0x9F);
delay_time(I2CDELAY);
Simon R. schrieb:
> In der while Schleife I2STAT geht auf 0x68 was bedeutet: Buszugriff geht
> beim SLA+R im Master Mode veloren, eigene SLA+R wurde empfangen, mit ACK
> wurde geantwortet.
Ich versuch das mal zu verstehen...

Du sendest z.B.
1
temp_w (0x90);
2
temp_r (0x91);
3
while(fertig==0);
Und während er in der while Schleife ist, kommt ein Interrupt in dem das 
Register I2STAT mit 0x68 gelesen wird. Da dieser Fall nicht programmiert 
ist, hängt er sich auf. Richtig?

0x68 ist allerdings auch ein Code für den Slave Receiver, das sollte bei 
dir jedoch nie vorkommen da der Controller ja immer Master ist...


> Nun hab ich das Problem das nur der letzte Sensor nicht
> funktioniert. Bei meinem Testprogramm geht er aber.
Welches Testprogramm?


Bis du sicher das ACK auf 1 muss?
1
I2CON = 0x44; // (STO, STA, SI = 0, ACK =1)
OP
Hi Jörg ersmal danke für die Antwort.

> Und während er in der while Schleife ist, kommt ein Interrupt in dem das
> Register I2STAT mit 0x68 gelesen wird. Da dieser Fall nicht programmiert
> ist, hängt er sich auf. Richtig?

Sollte eigentlich eine Stoppbedingung erzeugen. Der fehler ist auch 
nicht mehr aufgetreten.

default:
I2CON = 0x54; // Stoppbedingung setzen (STO =1)
break;
Angehängte Dateien:

Antwort schreiben

Eine eigene Frage? Dieser Thread ist über 14 Jahre alt. Stell sie in einem eigenen Thread – dort lesen mehr Leute mit, und sie wird öfter und schneller beantwortet.

Neuen Thread starten

Eine Lösung, Ergänzung oder Rückmeldung zu diesem Thread? Dann antworte hier.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.