Archiv verlassen und diese Seite im Standarddesign anzeigen : DS1820 auslesen
Bernie19
07.06.2005, 22:42
Hi!
Ich habe ne C-Control und habe vier DS1820 angeschlossen (jeweils an einen digitalen Port). Nun habe ich aber ein Problem: Wie lese ich diesen Temperatursensor aus? Hat sich da schon einer mit diesem Thema beschäftigt und könnte mir vielleicht helfen?
Viele Grüße
Bernie
Suggarman
08.06.2005, 15:01
Unter http://c-control-support.de/ gibt es Demoprogramm hierzu.
mfg
Stefan
Bernie19
08.06.2005, 15:16
*Räuspern* Die Seite habe ich auch schon durchsucht, aber ich find's da nicht. Ich seh da nur den einene Temperatursensor. Aber das ist doch kein DS1820, oder?
mfg
Bernie (dem hoffentlich geholfen werden kann ;-) )
Hi,
ich schätze, da hast Du dir was vorgenommen.
Hab gerade mal das Datenblatt überflogen.
Da gibt es ein wunderbares Kapitel über das
"1- Wire Bus System". Wahrscheinlich ist das sowas wie der SMBus
in neueren Rechnern.
Das ist schon recht komplex für eine Ansteuerung/ Auswertung
mit dem sperrigen Basic der C-Control. Die Daten
müßten erst mal vom Port "abgepollt" und dann
in Variable eingelesen werden. Umgekehrt, um den kleinen
2-Draht-Wunderchip anzusprechen, mußt Du sie wieder Serialisieren.
Im Prinzip bräuchtest Du hierfür 'ne zweite UART
Denke, die Serielle der CC wird sich hierfür nicht
mißbrauchen lassen.
Falls Du jedenfalls noch nicht so viel Erfahrung hast,
würde ich Dir eher empfehlen 'nen guten alten NTC oder PTC
zu besorgen und das Ganze mit 'nem Spannungsteiler an den
analogen Eingängen auszuprobieren.
Dazu braucht's nicht so viel Code bzw. zusätzliche
Komponenten, da die C-Control eigene A/D-Wandler hat.
Viel Glück noch,
tholan
Bernie19
08.06.2005, 15:38
Hmm. Naja ich muss es erstmal mit nem DS1820 versuchen, da ich diese Dinger nun mal habe, bzw neu gekauft habe.
Also ich fänds Klasse, wenn mir einer den Code (am besten ein Beispielprogramm) einfach mal geben könnte. (Vielleicht gibts den ja wirklich auf der Seite den Sugarman vorgeschlagen hat). Das Datenblatt vom DS1820 habe ich mir auch schon durchgelesen doch da verstehe ich (noch) nicht allzuviel von ;-) .
Grüße
Bernie
Die Sensoren kannst du dank dem 1-Wire Bus alle an den gleichen Port anschliesen.
Dieser Assemblercode könnte ein Ansatz sein.
port .equ $02 ; Port C
portdir .equ $06 ; Datenrichtungsregister
ds18s .equ 7 ; bit 7
ds18smask .equ $80
bas_1 .equ $b7 ; erste Basic Variable => Fehlerrückgabe
bas_2 .equ $b8 ; zweite Basic Variable => Daten Rein&Raus
.ORG $101
reset sei ;mask any intr, as they inject heavy jitter
bclr ds18s,port ; port low
bset ds18s,portdir; Port als Ausgang
lda #$4b ; 4b 75 * 10 5sec => ~750 5sec
jsr delay ; in Warteschleife springen
bclr ds18s,portdir; Port high Z
lda #$08 ; 8 * 10 5sec => ~80 5sec
jsr delay ; warten auf PRESENCE-PULSE-DS1820
lda port
and #ds18smask ; nur bit1, alle anderen maskieren
bne error ; Fehler-Flag setzen
lda #$2d ; erneut 45 * ~10 5sec => ~450 5sec
jsr delay
byte_send lda #$08 ; 08 Bits
sta bas_1
bset ds18s,port
bset ds18s,portdir
byte_send_b bclr ds18s,port; Write 1 Slot ~5 5sec Port 1 Low
clc ; clear Carry bit
ror bas_2 ; in Carry schieben
bcc write0
bcs write1
write0 bclr ds18s,port
bra weiter
write1 bset ds18s,port
weiter lda #$07 ; 7 * ~10 => 70 5sec delay
jsr delay
bset ds18s,port
dec bas_1
bne byte_send_b
cli ;vor jedem rts ein cli nicht vergessen
rts
byte_read lda #$08 ; 08 Bits
sta bas_1
lda #$00
sta bas_2
byte_read_b bset ds18s,port; first set value, then drive, not vice versa
bset ds18s,portdir
bclr ds18s,port
bclr ds18s,portdir
nop ; 14 5sec abwarten
nop ; wenn ein hochkapazitives oder langes Kabel verwendet wird, haben die Dallas Probleme
nop ; von 0 auf highZ in 14us zu kommen. Event muessesn dann mehr nops eingebaut werden.
nop
nop
nop
nop
nop
brset ds18s,port,rot ; Bit in C lesen
rot ror bas_2
lda #$07 ; Gesamtzykluszeit abwarten (~60 5sec)
jsr delay
dec bas_1
bne byte_read_b
bset ds18s,port
bset ds18s,portdir
cli
rts
delay ldx #$02 ; ca. 10 5sec delay
inloop decx
bne inloop
deca
bne delay
rts
error lda #$ff ; Ein Fehler => 255 speichern
sta bas_1
cli
rts
.end
Quelle: http://www.b-kainka.de/ccbsp.htm
Bernie19
08.06.2005, 18:31
Jep auf diesen Code bin ich auch schon gestoßen. Ich werd mich mal intensiver damit auseinander setzen. (Muss auch erstmal lernen wie man mit Assemblercode umgeht). Falls noch einer mehr Code/Informationen zum Auslesen des DS1820 hat, bitte melden ja?!
Schonmal herzlichen Dank,
Bernie
Bernie19
14.06.2005, 23:43
Hi, hier bin ich nochmal.
Also so richtig weitergekommen bin ich nicht. Deshalb werde ich jetzt wohl oder übel auf NTC/PTC umsteigen und meine 4 DS1820-Sensoren bei Ebay verticken.
Trotzdem vielen Dank für die Tipps,
Gruß Bernie
DIE HARD
15.06.2005, 17:35
Hallo.....
Für die M 2.0 gibt es einen IICBUS-1Wire-Bus
converter. Auf c-control-support sind Demos
zum Converter und DS1820.
ciao....
Powered by vBulletin® Version 4.2.5 Copyright ©2024 Adduco Digital e.K. und vBulletin Solutions, Inc. Alle Rechte vorbehalten.