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
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);
Hab mich wohl getäscht irgendwie funktioniert das nur machmal. Hat jemand noch eine Idee was ich falsch mache?
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) |
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;
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.