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

Jak ustalić stałą kolejność odczytu czujników DS1820 na 1-Wire?

mariansq 20 Paź 2007 20:30 2006 3
REKLAMA
  • #1 4397440
    mariansq
    Poziom 15  
    Posty: 203
    Pomógł: 11
    Ocena: 12
    Witam

    Mam pytanie do bardziej obeznanych kolegow niz ja:)
    Chodzi mi o kolejność odczytu układów ds 1820 po szynie 1-wire-a konkretnie..:
    Jesli mam załóżmy 2 układy DS1820,które maja odpowiednio swoje numery ID (xxxxxxxx) i (yyyyyyyy) i w mym programie jako pierwszy odczytany układ instrukcja bascoma 1wsearchfirst() jest ds o numerze ID (xxxxxxxx) a kolejny (yyyyyyyy) Ale wyobrazmy sobie sytuacje ze w miejsce DS o ID(xxxxxxxx) wstawiam innego DS o ID (zzzzzzzz) i nagle instrukcja 1wsearchfirst() interpretuje (yyyyyyyy) jako pierwszy czytany układ a przyporządkowane opisy wyswietlania wartosci "biora w łeb" - pytanie brzmi:

    Co nalezy "badać" i od czego zależy kolejność odczytu ds'ów w zaleznosci od ich ID? I jak ustalic warunki w programie by np: tempn zewn1. była zawsze odczytywana z TEGO SAMEGO MIEJSCA NAWET PO ZMIANIE W TYM MIEJSCU CZUJNIKA NA INNY?-wykluczam tu mozliwosc wczesniejszego odczytania ID DS'a i swiadome jego umieszczenie w odpowiednim miejscu-ot moja zagwozdka-Pomożcie,pozdry

    PS Mam kilka ds'ów i zrobilem programik do detekcji dwóch ds'ow na samym poczatku innego programu-program wykrywa ilosc ukladow porownuje zapisany ID w eepromie mega8 z tym co z czyta z ds'a i jesli jest taki sam to niezapisuje do eeproma ponownie a jak inny ID to wpisuje.Ale jak zmieniam ds'y to kolejność pierwszy czujnik z drugim niekiedy mi sie miesza:)

    Temat raportowany,
    proszę nie stosować ozdobników
    w temacie postu.
    Temat zmieniony.
    And!
  • REKLAMA
  • #2 4399805
    gregoorr
    Poziom 18  
    Posty: 229
    Pomógł: 19
    Ocena: 34
    Ten problem był już poruszany na elektrodzie. Nie pamiętam czy było jakieś rozwiązanie. Jeśli chodzi o 1-wire i odczyt id czujników to temat dosyć długi. W skrócie to nie są odczytywane całe numery, ale poszczególne bity i po kolei są eliminowane czujniki. Dlatego jak mamy 2 czujniki i jeden wymienimy, to 1 może być 2, a 2 pierwszy. Przy 3 czyjnikach to już wszystko może się pomieszać. Jest to proces dosyć skomplikowany, załatwiają to polecenia do odczytu pierwszego i następnych numerów ID i nie mamy na to za bardzo wpływu. Ja rozwiązałem to w ten sposób, że odczytuję numery i zapisuję w tablicy, następnie w programie w menu trzeba przyporządkować do wejść. Można jeszcze zrobić jak tu:
    https://www.elektroda.pl/rtvforum/topic661244.html
    " target="_blank" rel="nofollow noopener ugc" class="postlink inline" title="" >
    https://www.elektroda.pl/rtvforum/topic661244.html
  • REKLAMA
  • #3 4460614
    sakohq
    Poziom 2  
    Posty: 4
    Mozna zrobic cos takiego: w programie uzywasz zalozmy 2 zrodel temperatury A i B. Podlaczasz jeden czujnik, wlaczasz urzadzenie, program sprawdza ze jest podlaczony tylko jeden, wiec zapamietuje np w eeprom A=id odczytanego czujnika. Podlaczasz drugi, program sprawdza ze ma w epromie tylko jeden, wiec do B przypisuje id drugiego czujnika. Jesli teraz odlaczysz ktorys czujnik, nic sie nie dzieje (dziala tylko ten podlaczony, wiemy ktory to, bo jest w eeprom), podlaczamy nowy czujnik, program w eepromie zamienia stare id dla tego czujnika na nowe. Algorytm dosyc skomplikowany, ale pozwala na "bezbolesna" wymiane pojedynczego czujnika. Oczywiscie czujnikow mozemy miec wiele
  • #4 4497279
    mariansq
    Poziom 15  
    Posty: 203
    Pomógł: 11
    Ocena: 12
    Witam

    Dzieki za pomoc. Napisalem programik na pozycjonowanie czujnikow. Problem polegał na tym że jeden z czujników jest wykorzystany do pomiaru temperatury wewnątrz urzadzenia (zabezpieczenie twermiczne) a drugi podłączany do urzadzenia w zwiazku z tym głupio by bylo żeby fizycznie czujnik wewnętrzny zamieniał mi sie z innymi czujnikami:) Wykorzystałem do tego celu tablice. po kazdym wlaczeniu układ sprawdza czy zapisany ID w tablicy jest zgodny.Kazdorazowa zmiana czujnika zewnetrznego jest weryfikowana i przyporządkowywana we wlaściwe miejsce. Aha na sanym początku trzeba zrobić wpis ID czujek do pamieci proca (u mnie tego dokonuje się jednym z klawiszy urządzenia-jednorazowo po wgraniu softu i uruchomieniu urzadzenia), potem jak już ma w tablicy ktory jest który to sam robi detekcje jednoczesnie oznajmiajac o tym:) Pozdry
REKLAMA