1wire termometer (ds1820). Får inte tillbaka rätt (AVR)

PIC, AVR, Arduino, Raspberry Pi, Basic Stamp, PLC mm.
joelnordh
Inlägg: 87
Blev medlem: 31 januari 2010, 20:36:29
Ort: Linköping

1wire termometer (ds1820). Får inte tillbaka rätt (AVR)

Inlägg av joelnordh »

Börjar en ny tråd om 1wire här, jag håller på att göra en termometer som senare även ska kunna varna om det blir för kallt på balkongen. Sitter nu med 1wire eller möjligen USART problem.

Om jag har förstått det hela rätt påbörjas varje skickat kommando med att man skickar ut en puls och sedan väntar på svar från DS1820. Eftersom allt sker via 1wire hur vet jag då att det inte är Receive pinnen som tar emot det transmit just skickat?

Jag påbörjar med en skipROM bit för jag bara har en grej på 1wire systemet (för tillfället) sedan skickar jag en ny initiering med pulserna, sedan skickar jag convert temperatur som ska påbörja en temperatur omvandling. vänter sedan i 500 ms för att sedan på nytt skicka en initierings puls följt av skipROM kommandot, sedan gör jag en read scrathpad och om jag tolkat detta rätt så kommer DS1820 skicka tillbaka 9bytes där de två första är temperaturen.

Skriver jag ut det jag får på tillbaka på displayen (detta kan också vara en felkälla med mina pekare och grejer) så får jag @ som LSB och fyra horisontella streck som MSB.

Bifogar koden jag skrivet. Känns lite rörig men ska göra om lite. Bland annat kommer USART få en egen .h fil så detta inte ligger i main (display heter den i mitt fall för det var där jag började :) )

EDIT: Värkar vara nån form av tidsproblem sänkte BAUDRate till 2400 och fick istället D och fyra horisontella steck, eller kanske inte fick samma resultat även om jag drog ur DS1820:n
Du har inte behörighet att öppna de filer som bifogats till detta inlägg.
Användarvisningsbild
stekern
Inlägg: 453
Blev medlem: 2 november 2008, 08:24:18
Ort: Esbo, Finland

Re: 1wire termometer (ds1820). Får inte tillbaka rätt (AVR)

Inlägg av stekern »

Jag har inte orkat kolla igenom din kod särskilt noggrant, men du kan ju kolla på mina ds1820 rutiner.
DS1820.h
DS1820.c
Du har inte behörighet att öppna de filer som bifogats till detta inlägg.
joelnordh
Inlägg: 87
Blev medlem: 31 januari 2010, 20:36:29
Ort: Linköping

Re: 1wire termometer (ds1820). Får inte tillbaka rätt (AVR)

Inlägg av joelnordh »

du använder inte usart eller?
Har börjat om på något liknande där jag inte har usarten..
sneaky
Inlägg: 1621
Blev medlem: 22 juni 2009, 18:38:42

Re: 1wire termometer (ds1820). Får inte tillbaka rätt (AVR)

Inlägg av sneaky »

Vad förväntar du dig att det ska skrivas ut på displayen då? Det du får tillbaka från ds1820 är ju ett värde som du måste räkna om för att få reda på temperaturen, det är ju inte ascii som du kan peta ut direkt på displayen?

Har själv problem med ds18b20 just nu. Har suttit i tre dagar och stångat mig blodig. Funkar fint att läsa av med en PIC och skriva ut via usart till datorn men när jag skickar det till en annan PIC för att skriva ut på en liten LCD display så blir det alltid fel värde när tempen är under ~16C av nån anledning, blir tokig snart hehe.
Användarvisningsbild
stekern
Inlägg: 453
Blev medlem: 2 november 2008, 08:24:18
Ort: Esbo, Finland

Re: 1wire termometer (ds1820). Får inte tillbaka rätt (AVR)

Inlägg av stekern »

Nää, jag använder inte usarten, skummade igenom din kod lite.
Skall inte varje usart byte representera en 1-wire bit?
har du läst den här?
http://www.atmel.com/dyn/resources/prod ... oc2579.pdf
joelnordh
Inlägg: 87
Blev medlem: 31 januari 2010, 20:36:29
Ort: Linköping

Re: 1wire termometer (ds1820). Får inte tillbaka rätt (AVR)

Inlägg av joelnordh »

Jag förväntar mig inte i detta läge att få ut rätt temperatur på displayen, det jag tror och vad som borde ske är att jag väll ska få ut andra tecken om jag t ex värmer ds1820 vilket jag inte får. Men har lämnat usarten nu och försöker skriva på annat sätt.
v-g
EF Sponsor
Inlägg: 7875
Blev medlem: 25 november 2005, 23:47:53
Ort: Kramforce

Re: 1wire termometer (ds1820). Får inte tillbaka rätt (AVR)

Inlägg av v-g »

Ett tips är att läsa databladet till DS1820, sen läser du det igen, därefter en gång till. Upprepa c:a 10 gånger sen börjar man fatta :mrgreen:

Ungefär så gjorde jag plus att jag kollade med oscilloskop. USART:en är den verkligen avsedd för 1wire? Jag kör iaf BITbangat då jag använder USART:en till annat.

Timingen är inte extremt viktig (se databladet för exakt spec.) däremot är kommandoordningen mycket viktig.

Börja med en DS1820 om du ska ha en chans att få igång det hela.

Man börjar alltid med en RESET, om man kör med en så kör man skip rom [CCh] därefter skickar man convert T [44h] och väntar på att linan ska gå hög igen (dvs kör inte parasitmatat)

Därefter en RESET, skip rom [CCh] och read scratchpad [BEh] först därefter svarar DS1820.

Tänk också på att BITarna ska komma i rätt ordning samt att man måste ge DS1820 read slots osv för att den ska kunna svara korrekt. Finns detta i hårdvaran så borde det ju fungera automagiskt iofs.

Jag hade iaf varit chanslös utan skop det kan jag intyga, trots detta tog det 2 dagar innnan jag fick det minsta svar!
joelnordh
Inlägg: 87
Blev medlem: 31 januari 2010, 20:36:29
Ort: Linköping

Re: 1wire termometer (ds1820). Får inte tillbaka rätt (AVR)

Inlägg av joelnordh »

Det är möjligt att uart:en inte är menat att använda? men det skulle ju helt klart vara smidigt att bara behöva skicka ut "rätt" kommando så löser uarten resten. mindre funktioner att skriva då, för alternativet är väll att själv använda en pin till att gå hög,låg i rätt ordning för att sedan ändra den till att lyssna och på något sätt lägga in detta i en byte.

Det jag inte lyckats läsa mig till är det där h i kommandona 44h vad innebär h:et?

Min tanke är också att göra det så lätt som möjligt för mig, alltså en grej på linan och inte parasitmatat.

När man kör read scrathpad, skickar den då alla 9 bytes tillbaka rakt efter varandra?

//Joel
nifelheim
Den första
Inlägg: 2490
Blev medlem: 27 mars 2008, 22:31:16
Ort: stockholm

Re: 1wire termometer (ds1820). Får inte tillbaka rätt (AVR)

Inlägg av nifelheim »

h betyder hexadecimalt
http://sv.wikipedia.org/wiki/Hexadecimala_talsystemet

44h är alltså 68 decimalt
joelnordh
Inlägg: 87
Blev medlem: 31 januari 2010, 20:36:29
Ort: Linköping

Re: 1wire termometer (ds1820). Får inte tillbaka rätt (AVR)

Inlägg av joelnordh »

Ja okej tack! förstod det när jag funderade lite! :) har ju tillomed skrivit det i hex redan! :)
joelnordh
Inlägg: 87
Blev medlem: 31 januari 2010, 20:36:29
Ort: Linköping

Re: 1wire termometer (ds1820). Får inte tillbaka rätt (AVR)

Inlägg av joelnordh »

kollade lite på pdf:en stekern skickade och ser ut som jag för tillfället får överge usarten då det krävde några transistorer som jag inte har (och ELFA har ju extremt dumt nog stängt i linköping)
Det är jobbigt när man bor i 2:a där man inte har nån bra förvaring för komponenter och oscilloskopet i vardagsrummet är ju inte det snyggaste.
joelnordh
Inlägg: 87
Blev medlem: 31 januari 2010, 20:36:29
Ort: Linköping

Re: 1wire termometer (ds1820). Får inte tillbaka rätt (AVR)

Inlägg av joelnordh »

Tog mig en lite lugnt dag igår och gjorde inget. Så idag satte jag mig med det igen, och nu funkar den, övergav usarten. Måste tacka Stekern din kod var väldigt hjälpsam att komma i rätt riktning sen lite nogrannare kolla i databladet som v-g sa så klicka allt igång om än "bara" med 0.5 steg.

//Joel
Skriv svar