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


Announcement: there is an English version of this forum on EmbDev.net. Posts you create there will be displayed on Mikrocontroller.net and EmbDev.net.
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

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]
  • [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.