logo elektroda
logo elektroda
X
logo elektroda
Adblock/uBlockOrigin/AdGuard mogą powodować znikanie niektórych postów z powodu nowej reguły.

DS18B20/Bascom/teoretyczne pytania

arktik1 26 Lis 2010 21:53 4489 24
  • #1 8793562
    arktik1
    Poziom 27  
    Witam
    Przeglądając tematy na Elektrodzie nie znalazłem odpowiedzi na 2 konkretne pytania.
    Jak przydzielane są DSy?
    Czy o kolejności rozpoznania czujników decyduje ich numer ID.
    Czym starszy numer, to czujnik następny w kolejności?
    Rozumiem że podłączenie 1Wire- GND i Vdd razem, DQ podciągnięte do 5v.
    Na odczyt potrzeba 750ms.
    A co z połączeniem 2Wire, jeśli tak to się nazywa- GND do masy, Vdd do 5v i DQ do Uc.
    Ile potrzeba na odczyt?
    Czy wartość"$crystal = xxxxxxx" ma wpływ na działanie DS?
  • #2 8794102
    dominon
    Poziom 18  
    Jak widzę będzie się kolega zmagał z programem w Bascom.

    Jeżeli chodzi o one 1Wire to możemy podłączyć to na 2 sposoby:

    - z dwoma przewodami - wtedy używamy tylko lini DQ (linia DQ powinna być podciągnięta do zasilania poprzez rezystor 3k3 - 4k7 do zasilania ponieważ porty mikro kontrolera mają zbyt małą wydajność) i GND. Zasilanie odbywa się przez linię DQ. Gdy magistrala jest wolna, na lini panuje stan wysoki czyli typowe +5V, to powoduje ładowanie wewnętrznego kondensatora który jest w strukturze układu dołączonego do mikro kontrolera. Jak łatwo się domyślić z tego kondensatora jest czerpana energia do transmisji danych z układu. To nazywane jest 1-Wire

    -z zastosowaniem trzech przewodów - wtedy używamy też Vdd a reszta pozostaje bez zmian i to jest 2-Wire

    Wartość $crystal określa częstotliwość z jaka pracuje mikro kontroler. Powinna być taka sama jak użyty rezonator kwarcowy czy to wewnętrzny czy zewnętrzny. Jest to informacja dla kompilatora.

    Każdy układ ma swój własny ID i właśnie po nim są one rozpoznawane. Co do kolejności wykrywania czujników to i tak trzeba je podłączyć i sprawdzić ich ID więc może po prostu małe doświadczenie?

    Co do czasu odczytu to 750ms to jest maksymalny czas jaki DS18B20 potrzebuje na konwersję odczytu. Możesz spróbować go zmniejszyć ale przy niektórych temperaturach może skutkować to błędem odczytu bądź niegotowością czujnika do przesłania danych.

    Powodzenia
  • #3 8794229
    galusz
    Poziom 15  
    Cytat:
    Czy o kolejności rozpoznania czujników decyduje ich numer ID.

    W pewnym sensie tak, ale to jest dość złożony algorytm. Bo aby odczytać wszystkie ID trzeba praktycznie skanować wszystko bit po bicie, a w odpowiedzi dostaje się informacje czy na danej pozycji jest bit czy go nie ma. Następnie trzeba sprawdzić cz bit należy do 1 czy do kilku ID, itd. (http://pdfserv.maxim-ic.com/en/an/AN187.pdf) Generalnie trzeba traktować, że kolejność będzie przypadkowa, bo ciężko to jednoznacznie przewidzieć.

    Cytat:
    Czy wartość"$crystal = xxxxxxx" ma wpływ na działanie DS?

    Oczywiście, że ma wpływ. Jeśli podasz inną wartość niż Twoje rzeczywiste taktowanie wszystkie operacje które w jakikolwiek sposób uzależnione są od czasu (np. wait waitms, print) będą działały nieprawidłowo. W 1wire ważne są czasy nadawania/odbierania danych więc podanie fałszywej wartości uniemożliwi kompilatorowi wyznaczenia przeliczeń cykli zegarowych na czas.

    Ogólnie jest tak jak napisał dominon
  • #4 8794284
    mirekk36
    Poziom 42  
    dominon napisał:
    ... To nazywane jest 1-Wire

    -z zastosowaniem trzech przewodów - wtedy używamy też Vdd a reszta pozostaje bez zmian i to jest 2-Wire


    Panowie co wy za herezje sobie opowiadacie ?????

    skąd wytrzasnęliście NOWY standard 2-Wire ???

    Tego typu czujniki pracują TYLKO W JEDNYM STANDARDZIE i nazywa się on 1Wire!

    Natomiast są DWA sposoby połączeń czujników na magistrali.

    1. TRZY przewodowy (VCC, GND oraz sygnał DQ)
    2. DWU przewodowy zwany także PARASITE w którym zwarte są piny VCC i GND czujnika natomiast układ zasilany jest pasożytniczo przez linię danych DQ. Stąd potrzebne jest silne podciąganie tejże linii do VCC. Proponowane przez ciebie wartości od 3,3K do 4,7K będą najczęściej niewystarczające. Poczytaj notę PDF. Toż w trybie 3-przewodowym zalecany jest rezystor 4,7K. Natomiast w trybie Parasite zalecane jest wręcz podłączenie przez dodatkowy tranzystor. Jednak właśnie z uwagi na sporą wydajność prądową procków AVR (czyli odwrotnie niż napisałeś) można często pominąć dodatkowy tranzystor ale już rezystor podciągający powinien być maksymalnie 2,2K a lepiej by było nawet gdyby był w przedziale 1K - 2,2K ... można sobie dobrać doświadczalnie.

    Poza tym obydwa tryby różnią się minimalnie jeśli chodzi o programowanie. Jednak w Bascomie to jest nieistotne - można korzystać zarówno z jednego jak i drugiego sposobu. Procedury Bascomowskie uwzględniają oba.
  • #5 8795609
    arktik1
    Poziom 27  
    No właśnie, to wycinek z HELPa:
    
    ·	Stosując dwa przewody – wtedy używane są tylko linia DQ oraz masa. Zasilanie elementu jest dostarczane przez linię DQ. Gdy magistrala jest wolna na linii panuje +5V, co powoduje ładowanie wewnętrznego kondensatora elementu. Zgromadzone napięcie jest wtedy wykorzystywane przez element podczas komunikacji. Takie rozwiązanie nazywane jest właśnie 1Wire.
    
    ·	Stosując 3 przewody – wtedy także linia Vdd jest używana, po której podawane jest zasilanie +5V. Reszta linii jest połączona jak przy komunikacji 1 przewodowej. To rozwiązanie zwane jest 2Wire. 
    

    Jak to w końcu jest?
    Koleina sprawa to taka, że jeśli DSy są przydzielane losowo, to jaki sens jest budować termometr z 2 lub więcej czujnikami jeśli za każdym razem czujnik będzie wskazywał co innego.
    Wyobraźmy sobie termometr na baterie, który mierzy temperaturę na zewnątrz budynku i wewnątrz.
    Czujniki montujemy na stałe i co?
    Po restarcie termometru musimy zamieniać czujniki , lub wtyczki DS.
    Chyba musi być jakieś rozwiązanie by na stałe przydzielić czujniki?
    Następnie:
    "Czy wartość"$crystal = xxxxxxx" ma wpływ na działanie DS?"
    To oczywiste że ta prędkość musi zgadzać się z prędkością oscylatora, ale nie o to chodziło.
    Chodzi o to czy można stosować dowolne prędkości oscylatorów ,czy tylko jakieś niskie np: 2000000 czy 1000000.
    Pytam dla tego ,bo tylko takie prędkości widziałem w programach znalezionych w sieci.
  • #6 8795833
    mirekk36
    Poziom 42  
    No to coś jednak w tej wersji helpa się nie tak komuś napisało ;) chodziło chyba raczej temu komuś że połączenie leci 2 przewodami i dlatego zrobiło się z tego 2wire ;)

    Tylko ciekawe dlaczego przy połączeniu czujnika 3 przewodami ktoś nie napisał że to jest zwane 3Wire ;)

    ale to tylko słowa i nie wypływają na działanie. Jeśli masz rozterki to co trzeba zrobić ?????

    ZAWSZE SIĘGNĄĆ do PDF'a - a wtedy się wszystko wyjaśni ;) tam nigdzie nie spotkasz 2Wire tylko tryb zwany Parasite i działający tak jak to opisałem.

    Ok odnośnie szukania czujników , które następuje jak to powiedziałeś losowo ;) .... ale to nie oznacza w ogóle żeby nie można było przydzielić każdego czujnika do konkretnego miejsca ;) ..... eeeeeeh - no trzeba troszkę pomyśleć - akurat to jest łatwe do oprogramowania jak drut

    Przeczytaj sobie DOKŁADNIE mój 3-ci post w tym temacie:

    https://www.elektroda.pl/rtvforum/topic1827191-0.html

    ale dokładnie i nie bój się, że wątek jest związany z C i LCD .... akurat tutaj opisałem algorytmy jak sobie z tym radzić - skorzystaj więc z tego.

    To jest jedno z takich rozwiązań ;)

    Odnośnie wartości taktowania procka to kolega chyba raczy żartować domyślając się, że trzeba niejako stosować jakieś tylko niskie wartości 1MHz czy 2MHz bo tylko takie widziałeś w przykładach ;) SZOK ! ..... Ja bym wręcz powiedział że ZAWSZE czym wolniejsze taktowanie w takich rozważaniach to tym gorzej - a im szybciej - to TYM LEPIEJ .... więc nie wiem skąd w ogóle takie pytanie i domysły?
  • #7 8796236
    arktik1
    Poziom 27  
    No dobra.
    Udało mi się wyświetlić ID czujników:
    
    Dsid(1) = 1wsearchfirst()
    Dsid1(1) = 1wsearchnext()
    
    If Dsid(8) = Crc8(dsid(1) , 7) Then
     Locate 1 , 1
     Lcd "Czujnik 1 ID"
     Wait 1
     Locate 1 , 1
     For B = 1 To 8
     Lcd Hex(dsid(b))
     Next
    End If
    Wait 2
    
    If Dsid1(8) = Crc8(dsid1(1) , 7) Then
     Locate 2 , 1
     Lcd "Czujnik 2 ID"
     Wait 1
     Locate 2 , 1
     For B = 1 To 8
     Lcd Hex(dsid1(b))
     Next
    End If
    Wait 2
    

    Tylko nie wiem jak dopisać je na "sztywno" do tego:
    
    1wreset
       1wwrite &H55
       1wverify Dsid(1)                                         'wysyłamy adres pierwszego czujnika
       1wwrite &HBE
       I1 = 1wread(2)
    '---------------------------------
       1wreset
       1wwrite &H55
       1wverify Dsid1(1)                                        'wysylam adres drugiego czujnika
       1wwrite &HBE
       I2 = 1wread(2)
      1wreset
       1wwrite &HCC
       1wwrite &H44
    Wait 1
    
  • #8 8796268
    mirekk36
    Poziom 42  
    arktik1 napisał:
    Tylko nie wiem jak dopisać je na "sztywno" do tego:


    No, pomijając że masz źle napisany kod do odczytu temperatury bo twoje Wait 1 stoi nie w tym miejscu ;) .... to jeśli chodzi o pytanie powyżej a raczej odpowiedź na nie - to ja już ci podałem wyżej w tym linku.

    Poza tym - skoro pierwszy raz zaczynasz bawić się tymi czujnikami to niedługo zadasz kolejne pytanie tak jak wróżyłem ci w innym temacie gdzie była mowa o timerach programowych ;) ..... może wtedy jednak sięgniesz po tamte porady.
  • #9 8796308
    arktik1
    Poziom 27  
    Pierwszy raz podłączam więcej niż 1 czujnik.
    Wait zostawmy w spokoju z tego powodu, że jest to wycinek programu, a całość będzie pisana bez Wait.
    Chodzi o to gdzie i w jakiej składni wpisać numer HEX czujnika.
    Jak go przypisać na stałe?
  • #10 8804245
    galusz
    Poziom 15  
    Wszystko znajdziesz w nocie od DS'a.
    Generalnie musisz wysłać komendę MATCH ROM/ID, a po niej wysłać adres wtedy zareaguje tylko urządzenie o zadanym ID.

    Oczywiście rozpoczęcie pomiaru możesz zadać wszystkim DS'om jednocześnie (SKIP ROM) następnie start

    
    'Numery wpisane na sztywno do tablic
    Ds2(1) = 40
    Ds2(2) = 55
    Ds2(3) = 181
    Ds2(4) = 1
    Ds2(5) = 1
    Ds2(6) = 0
    Ds2(7) = 0
    Ds2(8) = 207
     
    Ds1(1) = 16
    Ds1(2) = 171
    Ds1(3) = 224
    Ds1(4) = 167
    Ds1(5) = 0
    Ds1(6) = 8
    Ds1(7) = 0
    Ds1(8) = 220
     
    
    1wreset
    1wwrite &HCC ' rozkaz adresowy (SKIP_ROM) - zareagują wszyskie DSy
    1wwrite &H44 ' Start konwersji
    Wait 1
    
    
    'Odczyt z DS1
    1wreset
    1wwrite &H55 ' rozkaz adresowy (MATCH_ROM)
    1wwrite Ds1(1) , 8 ' wysłanie adresu
    1wwrite &HBE 'rozkaz funkcyjny - polecenie odczytu 
    xxx= 1wread():
    xxx= 1wread():
    
    'Odczyt z DS2 
    1wreset
    1wwrite &H55
    1wwrite Ds2(1) , 8
    1wwrite &HBE
    xxx = 1wread():
    yyy = 1wread():
    
    
  • #11 8806023
    arktik1
    Poziom 27  
    Tylko czym odczytać te numery by wpisać do tablicy?
    Próbowałem HEX,BIN,STR, ale coś się nie zgadza.
    Nie potrafię tego odczytać:
    
    Ds2(1) = 40
    Ds2(2) = 55
    Ds2(3) = 181
    Ds2(4) = 1
    Ds2(5) = 1
    Ds2(6) = 0
    Ds2(7) = 0
    Ds2(8) = 207 
    
  • #13 8806557
    arktik1
    Poziom 27  
    Dzięki pętli mogę odczytać tylko id w formacie HEX ,BIN lub STR.
    numer wygląda tak:
    HEX = 2830C5B80000008E
    BIN = 00101000001100001100010110111100000000000
    STR= 4048197184000142
    :?:
  • Pomocny post
    #14 8808630
    galusz
    Poziom 15  
    W ogóle skoro nie potrafisz odczytać tego co napisałem wyżej to znaczy że do końca nie rozumiesz co to tablica. Wyjaśnię najbardziej łopatologicznie.

    Wyobraź sobie, że tablica to pociąg z wagonami od 1 do 8. Każdy wagonik może przewozić daną liczbę. A cały pociąg ma swoją nazwę np. pociąg "Kopernik"

    Więc.
    Ds1(1)=9
    Oznacza, że mamy tablicę o nazwie "Ds1", czyli tak nazywa się Nasz pociąg.
    W tym pociągu wagonik 1 przewozi nam liczbę 9.
    Ds1(2)=200
    Oznacza ze drugi wagonik pociągu o nazwie "Ds1" wiezie nam liczbę 200..

    Cała tablica (cały pociąg) przechowuje nam cały numer seryjny ID składający się z 8 liczb. Podobnie jak nr rejestracyjny składa się np. z 3 liter i 4 cyfr.

    np. "WSC8888"
    NrRej(1) ="w"
    NrRej(2) ="s"
    ...
    ...
    NrRej(6) ="8"
    NrRej(7) ="8"


    Pętla dzięki której zapewnie wyświetlasz służy tylko do kolejnego odczytania wa 8 kolejnych bajtów numeru ID. Natomiast nie ma tutaj żadnego znaczenia w jakiej formie to wyświetlisz.Wszystkie liczby jakie podałeś to jest to samo, każdy nr ma dokładnie taką samą wartość, tylko że są inaczej zapisane, ale to nadal ta sama liczba...

    Sam numer zapewne wyszukujesz komendą 1wsearchfirst() i 1wsearchnext()
    Zamiast tego co napisałem wyżej możesz użyć

    Ds1(1)=1wsearchfirst()
    Ds2(1)=1wsearchnext()

    Trzeba zaznaczyć, że 1wsearch....() od razu zapisuje nam wszystkie 8 bajtów do tablicy.


    
    Ds1(1)=1wsearchfirst() ' Wyszukanie 1 czujnika
    Ds2(1)=1wsearchnext() ' Wyszukanie kolejnego czujnika
    
    
    1wreset
    1wwrite &HCC ' rozkaz adresowy (SKIP_ROM) - zareagują wszyskie DSy
    1wwrite &H44 ' Start konwersji
    Wait 1
    
    
    'Odczyt z DS1
    1wreset
    1wwrite &H55 ' rozkaz adresowy (MATCH_ROM)
    1wwrite Ds1(1) , 8 ' wysłanie adresu
    1wwrite &HBE 'rozkaz funkcyjny - polecenie odczytu
    xxx= 1wread():
    xxx= 1wread():
    
    'Odczyt z DS2
    1wreset
    1wwrite &H55
    1wwrite Ds2(1) , 8
    1wwrite &HBE
    xxx = 1wread():
    yyy = 1wread(): 
    
    
  • #15 8809840
    arktik1
    Poziom 27  
    No ok to rozumiem, nie mogę tylko zrozumieć jak wypełnić tablicę.
    jeśli przypisuje numer w ten sposób:
    
    Ds(1) = &H2830C5B80000008E
    

    Nie działa.
    Z kont mam wiedzieć jak przypisać numery do tablicy i który "wagon" co przewozi.
    jeśli wpiszę np tak:
    
    Ds2(1) = 28
    Ds2(2) = 30
    Ds2(3) = C5
    Ds2(4) = B8
    Ds2(5) = 00
    Ds2(6) = 00
    Ds2(7) = 00
    Ds2(8) = 8e
    

    też jest źle.
  • #17 8810068
    arktik1
    Poziom 27  
    Czyli mam rozumieć, że każdy numer w postaci HEX można podzielić na 8 kawałków i wpisać w taki właśnie sposób?
    A co by było gdy wpisałbym go np:
    
    Ds2(1) =&H283
    Ds2(2) = &H0
    Ds2(3) = &HC5
    Ds2(4) = &HB8
    Ds2(5) = &H0
    Ds2(6) = &H0
    Ds2(7) = &H0
    Ds2(8) = &H8E
    

    Czy taka forma też będzie poprawna?
  • #18 8810101
    galusz
    Poziom 15  
    Cytat:
    Ds2(1) = &H2830C5B80000008E

    Tak nie wolno, bo jeden wagonik w tym wypadku (1) przewozi tylko jeden bajt. Czyli liczbę od 0 do 255

    Cytat:

    Ds2(1) = 28
    ...
    Ds2(8) = 8e
    też jest źle.

    Jeśli podajesz jakieś wartości w systemie hex to powinieneś zrobić to podobnie jak wyżej &H. Możesz oczywiście przeliczyć to na dziesiętne np.

    
    Dsid(1) = 40   ' lub  po staremu &h28 itd....
    Dsid(2) = 48
    Dsid(3) = 197
    Dsid(4) = 184
    Dsid(5) = 0
    Dsid(6) = 0
    Dsid(7) = 0
    Dsid(8) = 142 
    


    Napisz co dalej z tym robisz. Daj jakiś kod bo teraz to się pogubiłem z czym masz dokładnie problem... Generalnie nie musisz przecież wpisywać ID czujników na sztywno. Po prostu po uruchomieniu układu będziesz musiał sprawdzić który został wykryty jako pierwszy i ten np. wystawisz za okno, a drugi zostawisz w domu. :) Numery na sztywno przydają się jeśli potrzebujesz pewności gdzie który czujnik się znajduje i masz ich więcej....
    Jeśli przypisujesz już nr na sztywno to wstaw to zamiast
    Dsid(1) = 1wsearchfirst()
    Dsid1(1) = 1wsearchnext()

    Dodano po 5 [minuty]:

    Cytat:
    Ds2(1) =&H283

    To nie jest poprawne bo Ds2(1) jest wartością typu Byte (od 0 do 255) a Ty próbujesz załadować wagonik zbyt dużą ilością towaru (nie zmieści się)

    &H283 to 643
  • #19 8810181
    arktik1
    Poziom 27  
    Tak właśnie o to chodzi.
    Czujników będzie kilka i potrzebne jest przypisanie odpowiednich czujników w odpowiednie miejsca.
    Nie może zdarzyć się tak że czujniki zostaną zamienione.
    Restartowałem urządzenie kilkanaście razy i zawsze czujniki były w tym samym miejscu.
    Czym ID czujnika większy, tym czujnik następny w kolejności.
    Problem wystąpi wtedy, gdy trzeba będzie wymienić któryś z czujników, bo wtedy czujniki się pozamieniają.
    Dlatego potrzebuję przypisać czujniki na stałe.
    Jeśli któryś czujnik odmówi współpracy program się zatrzyma.

    Dodano po 1 [minuty]:

    tak teraz wszystko jasne, załapałem w końcu.
  • #20 8830435
    markokon
    Poziom 12  
    Witam !
    Czy możesz przedstawić zapis napisanego programu z przypisywaniem wg ID kolejności DSów ?
  • #21 8831577
    arktik1
    Poziom 27  
    Masz napisane w postach od "galusz"a
    Jeśli używasz :
    
    Ds1(1)=1wsearchfirst() ' Wyszukanie 1 czujnika
    Ds2(1)=1wsearchnext() ' Wyszukanie kolejnego czujnika
    

    To id czujników jest zapisywany w/g numerów.
    czym ID większy tym czujnik następny w kolejności.
    Jeśli odczytasz ID czujników możesz je zapisać w tablicach:
    
    Ds2(1) =&H28
    Ds2(2) = &H30
    Ds2(3) = &HC5
    Ds2(4) = &HB8
    Ds2(5) = &H00
    Ds2(6) = &H00
    Ds2(7) = &H00
    Ds2(8) = 8e
    

    na "sztywno" i zawsze będą w tym samym miejscu.
  • #22 9049423
    arktik1
    Poziom 27  
    Witam.
    Napotkałem drobny problemik.
    Po wpisaniu id czujnika:
    
    Sid = &H28C2F8A602000098
    

    BASCOM wywala błąd 49.
    zmiana deklaracji zmiennej Sid nic nie daje.
    Cały czas pisze że nie mieści się w zmiennej, BYTE, WORD, LONG...
    Co z tym zrobić?
  • #23 9049724
    zumek
    Poziom 39  
    arktik1 napisał:
    ...Co z tym zrobić?

    Po prostu, ruszyć głową :D
    Jak Ty chcesz wepchnąć 8 bajtów do zmiennej, która może ich pomieścić tylko 1(BYTE), 2(WORD) lub 4(LONG).
    Przecież w Twoim wcześniejszym poście napisałeś prawidłowo, to skąd teraz taka zmiana na ... głupsze :?: :D
  • #24 9050159
    arktik1
    Poziom 27  
    Różnica jest taka że jeśli chcę wpisać ten numer:
    
    Sid = &H28C2F8A602000098 = błąd--rzeczywisty czujnik
    

    ale ten:
    
    Sid = &H2830C5B80000008E = ok.--Symulator 
    

    Natomiast jeśli wpiszę tak:
    
    Ds2(1) =&H28
    Ds2(2) = &H30
    Ds2(3) = &HC5
    Ds2(4) = &HB8
    Ds2(5) = &H00
    Ds2(6) = &H00
    Ds2(7) = &H00
    Ds2(8) = 8e
    

    To działa jeden i drugi.
  • #25 9390019
    KTO_TK
    Poziom 11  
    Witam! Czy mógłby mi ktoś dokładniej wytłumaczyć jak to jest z tą kolejnością ds-ów? W swoim układzie podłączyłem 4 czujniki na jednej linii i za pomocą poleceń

    Dsid1(1) = 1wsearchfirst()
    Dsid2(1) = 1wsearchnext()
    Dsid3(1) = 1wsearchnext()
    Dsid4(1) = 1wsearchnext()

    zapisałem ich id do tablic i teraz wyświetlam je na lcd i uzyskuje:

    1ds: 16 74 168 215 1 8 0 22
    2ds: 16 235 218 215 1 8 0 147
    3ds: 16 183 115 215 1 8 0 0
    4ds: 16 175 210 215 1 8 0 4


    i jak patrzę na te liczby to ni jak mi nie wychodzi aby id układały się w kolejności od najmniejszego do największego, no chyba że coś przeoczyłem. Proszę o podpowiedź.

    EDIT:
    Analizowałem to dalej i w dalszym ciągu nie wiem jak to jest z tą kolejnością, co prawda po dołączeniu kolejnych czujników tym razem 18b20, faktycznie znalazły się one na końcu w kolejności do największego numerem id :

    lecz co do pozostałych 4 nie mogę znaleźć żadnej zależności. Jest ktoś w stanie pomóc? czy dla czujników ds1820 id znajdowane jest inaczej czy to ja mam problem z zauważeniem która liczba jest większa?

    EDIT:
    Zauważyłem jeszcze jedną ciekawą zależność, a mianowicie jeśli odczytuję id pojedynczego czujnika to różni się ono od tego które odczytałem z linii na której znajdowało się kilka czujników i teraz to już w ogóle 'zdzikłem' jest może ktoś na forum kto może mi wytłumaczyć jak to właściwie działa?

    "Skleiłem" trzy kolejne posty. Jeżeli mamy coś do dodania , to edytujemy swój post, a nie "walimy" 3, jeden po drugim. Następnym razem udzielę ostrzeżenia.
    [zumek]
REKLAMA