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.