Forum: Mikrocontroller und Digitale Elektronik Programmierung des SHT11 mit dem AT90S4433


von Tobias Doerffel (Gast)


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

von Gunter (Gast)


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

von Tobias Doerffel (Gast)


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!!

von Tobias Doerffel (Gast)


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...

von Gunter (Gast)


Lesenswert?

Hi,

Listing ist unterwegs

von Tobias Doerffel (Gast)


Lesenswert?

danke, habs bekommen!!! (Antwortmail ist unterwegs :)

von Werner Hoch (Gast)


Lesenswert?

Hi Tobias,

Ich hab hier C-Code für SHT11 und AT90S2313 rumliegen.

Meld dich wenn du den noch gebrauchen kannst.

mfg
werner

von stromie (Gast)


Lesenswert?

Hi Werner

stell doch mal deine C-Code als Anhang hier rein
würde mich auch interessieren.

stromie

von Tobias Doerffel (Gast)


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

von Werner Hoch (Gast)


Angehängte Dateien:

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

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
Noch kein Account? Hier anmelden.