Forum: Mikrocontroller und Digitale Elektronik SHT11 mit 2313


von Dominik Tewiele (Gast)


Angehängte Dateien:

Lesenswert?

Hallo,

ich versuche den SHT11 mit dem µC 2313 anzusprechen.
Schaltungstechnisch schließe ich alle Fehler aus, bis auf das der
Sensor vielleicht defekt ist (Ich denke es liegt am Programm). An der
Datenleitung ist ein PullUp von 10k und parallel zur
Spannungsversorgung vom Sensor ein Kondensator. Die Schaltung ist auf
einem Experimentierboard aufgebaut, also sind auch keine Leitungen zu
lang.
Da ich noch nicht sehr lange mit µC's arbeite, habe ich das Programm
erstmal ganz einfach aufgebaut, also noch nicht auf die Länge geachtet.

Habe jetzt das Problem, das ich nichts vom Sensor zurück bekomme, bzw.
einen ständigen H-Pegel auf der Datenleitung. Aber nur wenn der PullUp
dran ist, sonst ist die Leitung auf L-Pegel mit ein paar komischen
Verzerrungen drin. (Das Bild kommt im nächsten Beitrag zusammen mit dem
Quellcode)

Im Anhang befindet sich eine Fotomontage g von dem Oszillogramm, ich
hoffe man kann es erkennen. Zum Schluss fehlt ein Teil, aber das ist
erstmal egal.

Bin für jede Hilfe dankebar!


Gruß, Dominik

von Dominik Tewiele (Gast)


Angehängte Dateien:

Lesenswert?

Im Anhang nun das Bild mit den Verzerrungen wenn der PullUp weg ist und
hier der ASM-Code:

;*******************************************************
; SHT11 1.0
; (c) by Dominik Tewiele
; 19.12.2003
;*******************************************************

.include "2313def.inc"
    rjmp reset  ;reset
    reti    ;int0
    reti    ;int1
    reti    ;t1
    reti    ;t1
    reti    ;t1
    reti    ;t0
    reti    ;uart rx
    reti    ;udr
    reti    ;uart tx
    reti    ;analog comp

.equ DATA=PD0
.equ SCK=PD1


reset:  ldi  r16,low(RAMEND)
    out  SPL,r16
    ldi r16, 0b00111111
    out DDRB,r16
    ldi r16, 0b00000111
    out DDRD,r16
    ldi r16,0b00000000
    out SREG,r16

    rcall pause2
start:
    ldi r16, 0b00000111
    out DDRD,r16
    sbi PORTD,PD2
    rcall pause
    cbi PORTD, PD2
    rcall pause

;Transmission Start" - Sequence
    sbi PORTD, DATA
    rcall pause
    sbi PORTD, SCK
    rcall pause
    cbi PORTD, DATA
    rcall pause
    cbi PORTD, SCK
    rcall pause
    sbi PORTD, SCK
    rcall pause
    sbi PORTD, DATA
    rcall pause
    cbi PORTD, SCK
    rcall pause

;Address & Command
    cbi PORTD, DATA
    ldi r20,0b00000101
    ldi r21,8
loop1:  cbi PORTD, SCK
    rcall pause
    cbi PORTD, DATA
    sbrc r20,7
    sbi PORTD, DATA
    rcall pause
    sbi PORTD, SCK
    rcall pause
    lsl r20
    dec r21
    brne loop1
    ldi r16, 0b00000110
    out DDRD,r16
    cbi PORTD, DATA
    cbi PORTD, SCK
    rcall pause
    rcall pause
    sbi PORTD,SCK
    rcall pause
    cbi PORTD,SCK
loop2:  sbic PIND, DATA
    rjmp loop2

    rcall pause
    ldi r20,8
loop3:  sbi PORTD, SCK
    rcall pause
    cbi PORTD, SCK
    rcall pause
    dec r20
    brne loop3
    rcall pause

    ldi r16, 0b00000111
    out DDRD,r16
    sbi PORTD, DATA
    rcall pause
    sbi PORTD, SCK
    rcall pause
    cbi PORTD, DATA
    ldi r16, 0b00000110
    out DDRD,r16
    cbi PORTD, SCK

    rcall pause
    ldi r20,8
loop4:  sbi PORTD, SCK
    rcall pause
    cbi PORTD, SCK
    rcall pause
    dec r20
    brne loop4
    rcall pause

    ldi r16, 0b00000111
    out DDRD,r16
    sbi PORTD, DATA
    rcall pause
    sbi PORTD, SCK
    rcall pause
    rcall pause
    rcall pause
    rcall pause

    rjmp start

pause:    ldi  R17, $10
WGLOOP0:  ldi  R18, $10
WGLOOP1:  dec  R18
          brne WGLOOP1
          dec  R17
          brne WGLOOP0
          ldi  R17, $01
WGLOOP2:  dec  R17
          brne WGLOOP2

      ret


pause2:
          ldi  R17, $DE
WGLOOP02: ldi  R18, $F5
WGLOOP12: dec  R18
          brne WGLOOP12
          dec  R17
          brne WGLOOP02
          ldi  R17, $01
WGLOOP22: dec  R17
          brne WGLOOP22
          nop
      ret

von Gerd Vergin (Gast)


Lesenswert?

Hallo,

auch ich hatte am Anfang etwas Probleme mit dem Auslesen vom STH11.
Jetzt geht er hervorragend.
Hol Dir von www.driesen-kern.de die Beschreibung in Deutsch.
Programmiere genau das nach, was in dem Impulsdiagramm Seite 48
dargestellt ist.
Mein Fehler lag genau an der Stelle wo ACK gesendet wird, hier muss
unbedingt die Datenrichtung von DATA eingehalten werden.
Sicher wurde alles allerdings erst richtig, nachdem ich einen
Software-Reset vor jeder Datenübernahme eingeführt habe.

Gruss

Gerd

von Dominik Tewiele (Gast)


Lesenswert?

Wusste garnicht, das es auch ein deutsches Datenblatt gibt. Vielleicht
komm ich ja damit weiter.

Danke, Dominik

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.