www.elektronik.si Seznam forumov www.elektronik.si
Forum o elektrotehniki in računalništvu
 
 PomočPomoč  IščiIšči  Seznam članovSeznam članov  SkupineSkupine  StatisticsStatistika  AlbumAlbum  DatotekeFilemanager DokumentacijaDocDB LinksPovezave   Registriraj seRegistriraj se 
  PravilaPravila  LinksBolha  PriponkePriponke  KoledarKoledar  ZapiskiZapiski Tvoj profilTvoj profil Prijava za pregled zasebnih sporočilPrijava za pregled zasebnih sporočil PrijavaPrijava 

AVR>DS1820>ERR
Pojdi na stran 1, 2  Naslednja
 
Objavi novo temo   Odgovori na to temo   Printer-friendly version    www.elektronik.si Seznam forumov -> AVR, LPC900, x51
Poglej prejšnjo temo :: Poglej naslednjo temo  
Avtor Sporočilo
stursc
Član
Član



Pridružen-a: Tor 08 Jun 2004 14:29
Prispevkov: 323
Aktiv.: 1.36

PrispevekObjavljeno: Ned Sep 07, 2008 10:36 am    Naslov sporočila:  AVR>DS1820>ERR Odgovori s citatom

Pozdravljeni

V aplikaciji berem temperature 5-tih senzorjev DS1820
V primeru nebranja ID senzorja bi rad dobil podatek o tem iz podatka ERR.
Če iz aplikacije odstranim vsej 5 senzorjev, dobim podatek ERR=1, če pa imam priklopljen samo en senzor je pa ERR podatek za vse senzorje- Seer=0.
Podatke bi rad zajemal v spremenjivki Serr(5) za vsak senzor posebej, vendar mi to nikakor ne uspeva.
Prosim za kak namig - rešitev tega problema
V prilogi je trenutno uporabljen način zajemanja ERR podatka, ki se odvija vsako minuto.
Hvala

LP, stursc



ERR.GIF
 Opis:
 Velikost datoteke:  35.66 KB
 Pogledana:  109 krat

ERR.GIF


Nazaj na vrh
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo
aly
Član
Član



Pridružen-a: Tor 28 Sep 2004 14:51
Prispevkov: 9407
Aktiv.: 39.70
Kraj: Kranj - struževo

PrispevekObjavljeno: Ned Sep 07, 2008 1:54 pm    Naslov sporočila:   Odgovori s citatom

Predvidevam, da dobiš podatek ERR iz ukaza "RESET one wire bus".
Ta ukaz se izvede na začetku vsakega paketa, še preden senzorje kličeš po IDjih.
Če je na vodilu vsaj en senzor, se na reset odzove z "0". Če je na vodilu več senzorjev, se odzovejo vsi z "0".

Tako da tega ne moreš uporabiti za identificiranje dotičnega senzorja.

Če senzor je in če deluje pravilno, ugotoviš tako, da pošlješ reset, pošlješ ID in prebereš Scratchpad in preračunaš CRC. Če se ujema, potem je s senzorjem in komunikacijo vse ok. Enako za vsakega.

_________________
I'm going to stand outside, so if anyone asks, I'm outstanding Smile
Nazaj na vrh
Skrit Poglej uporabnikov profil Pošlji zasebno sporočilo Obišči avtorjevo spletno stran MSN Messenger - naslov
vilko
Član
Član



Pridružen-a: Pet 13 Feb 2004 10:26
Prispevkov: 3360
Aktiv.: 14.18
Kraj: Dragomer

PrispevekObjavljeno: Ned Sep 07, 2008 5:25 pm    Naslov sporočila:  Imel Odgovori s citatom

Imel sem nekoč problem, tudi 4 ali 5 senzorjev na enem 1wire busu, dela odlično dan ali dva, potem ne dobim nobene temperature več, vse je v errorju. karkoli sem naredil na busu, je bilo v errorju.

Potem sem za vsak termemeter določil en pin, in vsakega bral na svojem senzorju, spet dela nekaj časa, potem pa samo eden termometer štrajka, in ne dela.

Potem sem zamenjal defektni termometer, in sedaj dela že nekaj mesecev.

Ker sem kontkatke termometra lotal na žičke in čez dal skrčljive špagete, sumim, da sem tistega enega mora z vžigalnikom pregrel, ko sem ogreval špagetke. Od takrat vedno kadar segrevam skrčljive špagetke blizu integriranih vezij, primem samo veze s ploščatimi kleščami, da jih hladim, med tem ko segrevam špagetke.

_________________
Nihče ni za vojno in vsi so za mir,
vsi so za bratstvo, nihče za prepir.
Od same ljubezni vsak čas na granatah
bo vtisnjeno geslo: "Darilo za brata"
Janez Menart
Nazaj na vrh
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo
Silvo
Moderator
Moderator



Pridružen-a: Pon 24 Feb 2003 17:09
Prispevkov: 14673
Aktiv.: 61.93
Kraj: Koroška-okolica Dravograda

PrispevekObjavljeno: Ned Sep 07, 2008 6:01 pm    Naslov sporočila:   Odgovori s citatom

Visokonivojskih jezikov, s katerim je napisan gornji košček kode ne poznam. Lahko pa potrdim tisto, kar je že napisal Aljaž. Vsi senzorji, ki so priključeni na 1Wire vodilo se odzivajo na reset, katerega razumejo kot nizko stanje vodila v trajanju ca 480-960 mi S, z nizkim stanjem v dolžini do 240 mi S od časa, ko CPU vodilo sprosti, na kar vodilo sprostijo. Z danih informacij lahko izberemo, če je sploh kaj priključeno na vodilo ter ali je vodilo (ali senzor) slučajno v kratkem stiku. Okvaro ali prisotnost dotičnega senzorja za katerega poznamo ID pa lahko preverimo le z branjem CRC-ja.
Osebno sem DS1820 kar dosti uporabljal. (med drugim je z njimi bila razvita ena idustrijska aplikacija, ki se še vedno izdeluje. Senzorji delujejo izredno zanesljivo.) Osebno prilotam 100n smd kondezator neposredno na pine. Senzorje pa zaščitim z termo bužirko, ki vsebuje lepilo. Tak senzor se lahko brez škode namoči v vodo.

_________________
lp
Silvo
Nazaj na vrh
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo
stursc
Član
Član



Pridružen-a: Tor 08 Jun 2004 14:29
Prispevkov: 323
Aktiv.: 1.36

PrispevekObjavljeno: Pon Sep 08, 2008 9:10 am    Naslov sporočila:   Odgovori s citatom

Pozdrav

@aly :Če senzor je in če deluje pravilno, ugotoviš tako, da pošlješ reset, pošlješ ID in prebereš Scratchpad in preračunaš CRC. Če se ujema, potem je s senzorjem in komunikacijo vse ok.

To je verjetno tudi najboljša rešitev le izvedba se mi nikakor "ne posveti"
Sedaj sem v ta namen uporabljal ukaz "če je temperatura 0 (nič)" kot simulacijo nedelovanja senzorja, ker pa nekatere koristim kot protizmrzovalno zaščito, kjer naj bi bila uporabna temperatura 0 (nič).
Ni mi jasno kako prebrati ID posameznega senzorja, če je na 1wire priključenih več senzorje. Če obstoja ta rešitev potem bi tudi moja rešitev bila preprosta.
ID posameznega senzorja hranim v eepromu in jih vnašam tako, da je pri vnosu ID-ja priklopljen le dotični.

@Silvo:Okvaro ali prisotnost dotičnega senzorja za katerega poznamo ID pa lahko preverimo le z branjem CRC-ja.
Kako to izvesti ?? bolj po "kmečko", da bom razumel

V prilogi je del kode za branje, ki je sedaj v uporabi


LP, stursc



ERR.txt
 Opis:

Download
 Ime datoteke:  ERR.txt
 Velikost datoteke:  2.95 KB
 Downloadano:  30 krat

Nazaj na vrh
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo
Highlag
Član
Član



Pridružen-a: Pet 23 Jan 2004 20:42
Prispevkov: 4034
Aktiv.: 17.03
Kraj: Črnuče

PrispevekObjavljeno: Pon Sep 08, 2008 9:34 am    Naslov sporočila:   Odgovori s citatom

Sam sem najprej napisal programček, ki je na LCD-ju izpisal kodo posameznega senzorja, ko je le ta samostojno priključen.

Potem sem te kode uporabil v programu.
Drugače se to verjetno ne da narediti, ker če narediš poizvedbo, ko so priključeni vsi senzorji, odgovorijo vsi hkrati in ni možno razbrati kod posameznih senzorjev.

_________________
If at first you don't succeed, destroy all evidence that you tried.
Nazaj na vrh
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo Obišči avtorjevo spletno stran
robika
Član
Član



Pridružen-a: Pon 05 Apr 2004 20:55
Prispevkov: 281
Aktiv.: 1.19
Kraj: ajdovščina

PrispevekObjavljeno: Pon Sep 08, 2008 9:46 am    Naslov sporočila:   Odgovori s citatom

stursc je napisal/a:

Ni mi jasno kako prebrati ID posameznega senzorja, če je na 1wire priključenih več senzorje. Če obstoja ta rešitev potem bi tudi moja rešitev bila preprosta.
ID posameznega senzorja hranim v eepromu in jih vnašam tako, da je pri vnosu ID-ja priklopljen le dotični.


Na ZS sem ti poslal mojo delujočo kodo za AT89S8252, v kateri je zajetih 7 senzorjev, podobno pa imam uporabljeno tudi v AT89C4051, ki tudi deluje brezhibno. Žal ne morem te kode uporabno pretvorit za AVR-je, pa sem poskušal vse živo in mi je na koncu zmanjkalo idej. Če uspe tebi uporabit dele tiste kode, jo prosim prilepi nazaj Smile.

Za branje ID posameznega senzorja pa uporabljam pripeto kodo.



id_finder.txt
 Opis:

Download
 Ime datoteke:  id_finder.txt
 Velikost datoteke:  950 Bytov
 Downloadano:  29 krat

Nazaj na vrh
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo
int47
Član
Član



Pridružen-a: Pon 15 Dec 2003 0:10
Prispevkov: 2104
Aktiv.: 8.88
Kraj: Ljubljana

PrispevekObjavljeno: Pon Sep 08, 2008 10:11 am    Naslov sporočila:   Odgovori s citatom

Citiram:
Drugače se to verjetno ne da narediti, ker če narediš poizvedbo, ko so priključeni vsi senzorji, odgovorijo vsi hkrati in ni možno razbrati kod posameznih senzorjev.


Serijske številke (naslove) posameznih senzorjev se da prebrati (poglej v pdf od senzorja). Problem, je v tem, da dobiš seznam serijskih številk, ne veš pa kateri je kje. Potrebuješ še eno tabelo, v kateri so serijske številke in imena lokacij senzorjev. Uporabo po vrsti, kakor jih najdeš z algoritmom iskanja odsvetujem, ker se v primeru menjave enega senzorja vrstni red spremeni.
Nazaj na vrh
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo
aly
Član
Član



Pridružen-a: Tor 28 Sep 2004 14:51
Prispevkov: 9407
Aktiv.: 39.70
Kraj: Kranj - struževo

PrispevekObjavljeno: Pon Sep 08, 2008 1:29 pm    Naslov sporočila:   Odgovori s citatom

stursc je napisal/a:
Sedaj sem v ta namen uporabljal ukaz "če je temperatura 0 (nič)" kot simulacijo nedelovanja senzorja,

Ne bo šlo. Če se senzorja ne javi, potem prebereš vrednost FFFFh, kar ti da vrednost -1 ali -0.5 ali -0.25, odvisno kako bereš.

stursc je napisal/a:
Ni mi jasno kako prebrati ID posameznega senzorja, če je na 1wire priključenih več senzorje.

Če bi prebral datasheet, bi vedel, da obstaja funkcija Search. Ki pa je dokaj zahtevna in je ne priporočam, dokler ti ne deluje vse 100%. S to iterativno funkcijo poiščeš vse zadeve na 1-wire vodilu, ne samo senzorjev.

_________________
I'm going to stand outside, so if anyone asks, I'm outstanding Smile
Nazaj na vrh
Skrit Poglej uporabnikov profil Pošlji zasebno sporočilo Obišči avtorjevo spletno stran MSN Messenger - naslov
stursc
Član
Član



Pridružen-a: Tor 08 Jun 2004 14:29
Prispevkov: 323
Aktiv.: 1.36

PrispevekObjavljeno: Pon Sep 08, 2008 2:09 pm    Naslov sporočila:   Odgovori s citatom

Hvala aly !
Ostajam pri dosedanji zaščiti,kako stopinjo višje, pa bo !


@robika :Žal ne morem te kode uporabno pretvorit za AVR-je, pa sem poskušal vse živo
Vsekakor boš moral AVR-ju povedat kaj bo kateri pin - AOUTPUT ali INPUT
potem bi pa znalo delovati, saj ti že sam prevajalnik pove, da nekaj ne štima !


LP, stursc
Nazaj na vrh
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo
Silvo
Moderator
Moderator



Pridružen-a: Pon 24 Feb 2003 17:09
Prispevkov: 14673
Aktiv.: 61.93
Kraj: Koroška-okolica Dravograda

PrispevekObjavljeno: Pon Sep 08, 2008 2:45 pm    Naslov sporočila:   Odgovori s citatom

Citiram:
stursc je napisal/a:
Ni mi jasno kako prebrati ID posameznega senzorja, če je na 1wire priključenih več senzorje.

Če bi prebral datasheet, bi vedel, da obstaja funkcija Search. Ki pa je dokaj zahtevna in je ne priporočam, dokler ti ne deluje vse 100%. S to iterativno funkcijo poiščeš vse zadeve na 1-wire vodilu, ne samo senzorjev.


Poleg tega pri tem iskanju ne veš kje fizično se nahaja najden senzor. (razen, da ga takrat, ko je že najden pogreješ - če gre za temperaturni oz, da ga odstraniš, če gre za kako drugo 1-wire periferijo)

Za branje ID-ja je najbolje uporabit svoj pin na mikrokontrolerju. (Če uporabljaš v aplikaciji tipke, recimo lahko uporabiš en pin, ki ga uporablja tipka. Lahko sicer uporabiš tudi isto vodilo, a v tem primeru mora biti na vodilu pri branju le en senzor.)

Za AVR nimam spisanega kakega primera. (lahko ga sicer spišem - a le v assemblerju-če ti kaj koristi)

_________________
lp
Silvo
Nazaj na vrh
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo
int47
Član
Član



Pridružen-a: Pon 15 Dec 2003 0:10
Prispevkov: 2104
Aktiv.: 8.88
Kraj: Ljubljana

PrispevekObjavljeno: Pon Sep 08, 2008 3:17 pm    Naslov sporočila:   Odgovori s citatom

@aly
Bascom ima funkcijo za iskanje že napisano. Samo poklicati jo je treba (in pogledati v dokumentacijo, kako se uporablja).

EDIT: Primer uporabe search funkcije.
Nazaj na vrh
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo
stursc
Član
Član



Pridružen-a: Tor 08 Jun 2004 14:29
Prispevkov: 323
Aktiv.: 1.36

PrispevekObjavljeno: Pon Sep 08, 2008 5:52 pm    Naslov sporočila:   Odgovori s citatom

Silvo, hvala. Asembler poznam zelo slabo, bolje rečeno ne poznam.
Bo poskušal kaj ugotoviti v Bascom-AVR, dokler bo pa zaščita kot je bila že sedaj
2 leti.
Če bo ratalo bom pa poročal !

Hvala vsem za odziv.


Lp, stursc
Nazaj na vrh
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo
stursc
Član
Član



Pridružen-a: Tor 08 Jun 2004 14:29
Prispevkov: 323
Aktiv.: 1.36

PrispevekObjavljeno: Tor Sep 09, 2008 5:07 pm    Naslov sporočila:   Odgovori s citatom

Spisal proceduro za 1wsearch.
Stvar res deluje, vendar, kot je napisal aly - ne priporočam.
Ne vidim uporabne možnosti.
Če dotičnega senzorja ni bere naslednjega, če odstranim vse bere zadnjega.
Torej, branje izvrši enkart in podatki ostanejo RAM-u do reseta.
Kateri senzor bo prvi prebran je pa vprašanje.
V mojem primeru ta sistem kontrole nima funkcije



LP, stursc
Nazaj na vrh
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo
robika
Član
Član



Pridružen-a: Pon 05 Apr 2004 20:55
Prispevkov: 281
Aktiv.: 1.19
Kraj: ajdovščina

PrispevekObjavljeno: Tor Sep 09, 2008 9:09 pm    Naslov sporočila:   Odgovori s citatom

Jaz s tistim programčkom, ki je pripet malo višje preberem naslove vsakega posameznega senzorja, nato pa to vpišem v kodo na sledeči način:

Rem /////////////////////////
'Read Address 1
Sub Srno1 'branje adrese
For I = 0 To 7
Ar(i) = Lookup(i , Dta1)
Next
End Sub


Rem /////////////////////////
'Read Address 2
Sub Srno2 'branje adrese
For I = 0 To 7
Ar(i) = Lookup(i , Dta2)
Next
End Sub

'//////////////////////////////////


Dta1: 'naslov 1
Data 16 , 106 , 205 , 60 , 0 , 8 , 0 , 21 'kotel
Dta2:
Data 16 , 153 , 221 , 64 , 0 , 8 , 0 , 248 'kolektorji


Ravno ta del programa za uporabo z AVR-jem, nikakor ne uspem usposobit, dočim na AT89S8252 ali AT89C4051 dela brez problema.

Lp
Nazaj na vrh
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo
Pokaži sporočila:   
Objavi novo temo   Odgovori na to temo   Printer-friendly version    www.elektronik.si Seznam forumov -> AVR, LPC900, x51 Časovni pas GMT + 2 uri, srednjeevropski - poletni čas
Pojdi na stran 1, 2  Naslednja
Stran 1 od 2

 
Pojdi na:  
Ne, ne moreš dodajati novih tem v tem forumu
Ne, ne moreš odgovarjati na teme v tem forumu
Ne, ne moreš urejati svojih prispevkov v tem forumu
Ne, ne moreš brisati svojih prispevkov v tem forumu
Ne ne moreš glasovati v anketi v tem forumu
Ne, ne moreš pripeti datotek v tem forumu
Ne, ne moreš povleči datotek v tem forumu

Uptime: 494 dni


Powered by phpBB © 2001, 2005 phpBB Group