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

