problem med tempbivare och picbasicpro

PIC, AVR, Arduino, Raspberry Pi, Basic Stamp, PLC mm.
älan
Inlägg: 79
Blev medlem: 4 september 2003, 18:30:14

problem med tempbivare och picbasicpro

Inlägg av älan »

Jag har progblem med att läsa av 2st ds18B20 tempgivare med en pic16F870 och picbasicpro. Jag har kopplat båda givarna till samma pinne på pic:en. Men när jag använder det här programmet så låser sig pic:en om jag har båda tempgivarna monterade men om jag tar bort en så läser han av den andra men aldrig när båda sitter där vad kan vara felet jag använder ca 12 m cat5 kabel till varje tempgivare

DEFINE OSC 8
ADCON1 = 7
DEFINE LCD_EREG PORTA
DEFINE LCD_EBIT 5

TRISB = %11111111
TRISC = %11111111

DQ VAR PortC.0

Stat VAR BIT
S1 Var byte
S2 Var byte
S3 Var byte
A VAR WORD
B VAR WORD

start:

S1 = $E5
S2 = $93
S3 = $1E
gosub Temp
A=B

S1 = $86
S2 = $81
S3 = $7B
gosub Temp

A=A >> 3
B=B >> 3

Lcdout $fe, 1
Lcdout dec (A >> 1),".",dec(A.0 * 5)

Lcdout $fe, $C0
Lcdout dec (B >> 1),".",dec(B.0 * 5)

pause 2000
goto start

Temp:
OWOUT DQ, 1, [$55,$28,S1,S2,$79,$00,$00,$00,S3,$44]
W1:
OWIN DQ, 4, [Stat]' Check for still busy converting1
IF Stat = 0 THEN W1' Still busy?, then loop
OWOUT DQ, 1,[$55,$28,S1,S2,$79,$00,$00,$00,S3,$BE]
OWIN DQ, 2, [B.LOWBYTE,B.HIGHBYTE]' Read two bytes, then end communications
Return
Användarvisningsbild
Icecap
Inlägg: 26647
Blev medlem: 10 januari 2005, 14:52:15
Ort: Starup (Haderslev), Danmark

Inlägg av Icecap »

Jag skulle tro att den står i ett väntläge som aldrig termineras.

När du har givit "konvertera" kommandon behöver du bara vänta en viss tid innan du kan läsa bussen igen, du behöver inte kolla pinnen.

Jag använder själv DS18S20 och har ingen problem fast jag använder inte heller PIC + BASIC
älan
Inlägg: 79
Blev medlem: 4 september 2003, 18:30:14

Inlägg av älan »

hur lång tid ska jag vänta då?
Användarvisningsbild
Icecap
Inlägg: 26647
Blev medlem: 10 januari 2005, 14:52:15
Ort: Starup (Haderslev), Danmark

Inlägg av Icecap »

Testa 100ms eller kolla databladet, Dallas specificerar en max. tid.
Användarvisningsbild
cykze
EF Sponsor
Inlägg: 1539
Blev medlem: 8 april 2004, 10:40:28
Ort: Uppsala

Inlägg av cykze »

Runt max 750 ms ligger den tiden på.

Har du extern spänningsmatning till sensorerna eller kör du med parasitmatning?
älan
Inlägg: 79
Blev medlem: 4 september 2003, 18:30:14

Inlägg av älan »

extern spänningsmatning jag provade sätta en pause på 1000ms och då fungerar det om jag kopplar bort en lång kabel och använder en 3dm kabel men det går inte ha två långa kablar
Tack för all hjälp
älan
Inlägg: 79
Blev medlem: 4 september 2003, 18:30:14

Inlägg av älan »

Nu har jag provat att lura pic:en att den går i 16 Mhz fast kör den i 8 Mhz och då fungerar allt perfekt men jag vill inte köra den så kan man sänka fastigheten på owin och owout komandona eller ska jag gjöra nåt med kablarna jag har provat att sätta en diod mellan jord och signal vid tempgivarna men det hjälper ej ?
Användarvisningsbild
Icecap
Inlägg: 26647
Blev medlem: 10 januari 2005, 14:52:15
Ort: Starup (Haderslev), Danmark

Inlägg av Icecap »

Vad har du av pull-up?

12m Kat5 är en hel del kapacitiv belastning och du kanske skulle kolla lite på om din pull-up skulle vara lite lägre värde.......
älan
Inlägg: 79
Blev medlem: 4 september 2003, 18:30:14

Inlägg av älan »

pull-up är 4,7k
Användarvisningsbild
cykze
EF Sponsor
Inlägg: 1539
Blev medlem: 8 april 2004, 10:40:28
Ort: Uppsala

Inlägg av cykze »

Eftersom du kör med extern spänningsförsörjning så ska du inte behöva vänta ett visst antal ms på att konvertingen är färdig. Utan det ska räcka med att polla din 1-wire-pinne, och vänta till den blir hög. Det är det som sker här i din kod:

Kod: Markera allt

W1:
OWIN DQ, 4, [Stat]' Check for still busy converting1
IF Stat = 0 THEN W1' Still busy?, then loop
Varför det inte fungerar beror nog på att tiderna som används av OWIN och OWOUT inte är anpassade för så långa kablar. Så det du borde göra, är precis som du föreslår, att ändra dessa tider på något sätt. Kolla runt lite på internet, det lär vara fler än du som har råkat ut för det här. Alternativet är att skriva egna rutiner för 1-wire eller ladda hem färdiga. Då kan du iaf ställa in tiden som du vill ha den, utan att behöva prova med olika OSC-värden som du har fått göra nu.
älan
Inlägg: 79
Blev medlem: 4 september 2003, 18:30:14

Inlägg av älan »

Jag ändrade pull-up motståndet och nu värkar det fungera
Tack för all hjälp jag fått
Skriv svar