Programmierung des SHT11 mit dem AT90S4433

Gast #55577
Lesenswert?

hallo!

Ich habe einen SHT11 (Temperatur und Feuchtesensor)
(http://www.sensirion.com/de/sensors/humidity/sensors_devices/sensorSHT11.htm)
an einem AT90S4433 an den pins 6 und 7 (also die letzten beiden) von
Port D. allerdings muss ich sowohl daten senden, als auch empfangen,
dabei muss ich ich vor dem empfangen die letzten beiden bits von DDRD
auf 0 setzten. wird dadurch der pegel an den pins 6 und 7 irgendwie
geändert?? ich muss nämlich erst bestimmte sequenzen schicken und dann
darauf warten, dass der SHT11 die DATA-Line (ist pin 6) auf LOW zieht.
das kommt aber nicht... kann es also an dem umschalten des DDRD
liegen??  noch besser wäre, wenn jemand zufällig schon mal was mit der
kombination AT90S4433 (oder ähnliche) und SHT11 gemacht hat und mir da
vielleicht code schicken könnte... sonstige tips und anregungen sind
auch willkommen!

Tschüss, Tobias
Gast #55578
Lesenswert?

Hi Tobias,
mein Tip:
ziehe Dir mal von http://www.e-lab.de die Demo-Version
des AVRco Pascal Compiler.
Der hat einen Treiber für den SHT11, der problemlos
funktioniert. Laß Dir ein kleines Programm mit dem 4433
und dem SHT11 generieren, kompiliere es (dazu brauchst Du
kein einziges Pascal Statement zu schreiben).
Und schau Dir dann das Assembler-Listing an.
Das Listing ist sehr gut lesbar, weil da auch die Registernamen
(DDRD etc.) benutzt werden.

hth
Gunter
Gast #55579
Lesenswert?

hey danke für den tip! ich will bzw. kann momentan aber nicht so einen
großen download machen... hast du bzw. jemand anders das zufällig auf
der platte, so dass mir jemand das von gunther erwähnte listing
schicken kann?? wäre wirklich echt nett!!
Gast #55580
Lesenswert?

ich hab mir das jetzt doch downgeloadet, bei der installation bekomm ich
aber immer eine fehlermeldung... geht also nicht... deshalb immer noch
die bitte an irgendjemanden da draußen :) installiert das ding bitte
mal und schickt mir bitte das listing. ich brauch das wirklich ganz
dringend...
Gast #55585
Lesenswert?

Danke für alles! Nach vielen Stunden arbeit habe ich meinen Fehler
entdeckt. Man kann natürlich nicht über PORTD Daten lesen, dazu muss
man PIND benutzen... das habe ich anhand des Listings von Gunter
entdeckt. Der Rest war dann weniger ein Problem. Allerdings waren in
dem Listing einige Fehler drinne, weshalb ich dann bestimmt noch etwa
eine Stunde rumprobiert habe... Jetzt klappt alles wunderbar. Über die
serielle Schnittstelle werden die Daten über ein selbst entwickeltes
Protokoll übertragen, auf dem Linux-Server werden sie in eine Datenbank
gesteckt und per CGI werden dann entsprechende Diagramme (für letzte
Stunden, letzten Tag, letzte Woche, letzten Monat und letztes Jahr)
erzeugt. Das ganze kann man sich bald unter
http://www.agricola-gymnasium.de/wetter/ anschauen... momentan sind da
noch die Sachen von der alten Station, die allerdings sehr fehlerhafte
Daten liefert (sieht man spätestens an den Tages-Diagrammen... :) Also
noch mal vielen Dank!

Tschüss, Tobias
Gast #55586
Lesenswert?

Hier ist der Quellcode,

Der Code stammt ursprünglich von Sensirion und wurde von mir
überarbeitet.

Der Code hat noch folgende Unschönheiten:
  - verwendet eigene delay loops anstatt den Bibliotheksfunktionen
  - der Code blockiert den Controller während auf den Meßwert gewartet
wird. Die Funktion sht11_get_measure_value sollte in zwei Funktionen
aufgespaltet werden. (sht11_ready und sht11_get_measure_value).

mfg
werner
Angehängte Dateien:

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren