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

2xds18b20 c potrzebna pomoc

Piotr Kania 14 Lis 2009 14:29 1750 4
REKLAMA
  • #1 7259046
    Piotr Kania
    Poziom 15  
    Witam posiadam procedurę obsługi ds18b20 ale teraz na tej samej magistrali potrzebuje zrobić 2 czujnik. Czy ktoś może mi wyjaśnić jak to działa (algorytm działania 2 czujników na jednej lini) albo podać jakiś przykład. Znalazłem https://www.elektroda.pl/rtvforum/topic318723.html ale mało mi to mówi jestem początkujący w c. Dzięki
  • REKLAMA
  • #2 7259728
    tmf
    VIP Zasłużony dla elektroda
    Musisz znac ROM codes twoich czujnikow i przed odczytem wywolywac albo SearchROM, albo MatchROM. Dokladny opis jest w pdfie czujnika. Mozesz tez poszukac w sieci, sa setki gotowych rozwiazan.
  • REKLAMA
  • REKLAMA
  • #4 7272614
    flapo213
    Poziom 21  
    Witaj

    Jest coś takiego jak automatyczne przeszukiwanie urządzeń one wire na jednej magistrali, czyli szukanie numeru seryjnego każdego z układów
  • #5 7274345
    Piotr Kania
    Poziom 15  
    odczytałem numer id i teraz po nich chce się odwoływać do poszczególnych czujników jak zaranie do jednego oto mój kod coś to nie chce działać czy ktoś wie w czym problem ?

    
    ow_reset();
    
    ow_write_byte(0x55);    //match rom
    
    ow_write_byte(0x13);    //odczytany wcześniej adres
    ow_write_byte(0x00);
    ow_write_byte(0x00);
    ow_write_byte(0x01);
    ow_write_byte(0xef);
    ow_write_byte(0xcf);
    ow_write_byte(0xfd);
    ow_write_byte(0x28);
    
    ow_write_byte(0x44);  // start konwersji
    _delay_ms(1000);
    
    ow_write_byte(0x55); //ponowne wybranie układu
    
    ow_write_byte(0x13); 
    ow_write_byte(0x00);
    ow_write_byte(0x00);
    ow_write_byte(0x01);
    ow_write_byte(0xef);
    ow_write_byte(0xcf);
    ow_write_byte(0xfd);
    ow_write_byte(0x28);
    
    ow_write_byte(0xBE); // odczyt temp
    lsb = ow_read_byte();
    msb = ow_read_byte();
    ow_reset();
    


    Dodano po 3 [godziny] 8 [minuty]:

    rozwiązałem problem podaje swoje rozwiązanie

    
    ow_reset();
    ow_write_byte(0xCC);
    ow_write_byte(0x44); 
    _delay_ms(100);
    ow_reset();
    ow_write_byte(0x55);
    ow_write_byte(0x28);
    ow_write_byte(0xfd);
    ow_write_byte(0xcf);
    ow_write_byte(0xef);
    ow_write_byte(0x01);
    ow_write_byte(0x00);
    ow_write_byte(0x00);
    ow_write_byte(0x13);
    ow_write_byte(0xBE);
    lsb = ow_read_byte();
    msb = ow_read_byte();
    ow_reset();
    
    ow_write_byte(0x55);
    ow_write_byte(0x28);
    ow_write_byte(0xdc);
    ow_write_byte(0xd5);
    ow_write_byte(0x5b);
    ow_write_byte(0x01);
    ow_write_byte(0x00);
    ow_write_byte(0x00);
    ow_write_byte(0xcc);
    ow_write_byte(0xBE);
    lsb1 = ow_read_byte();
    msb1 = ow_read_byte();
    ow_reset();
    
REKLAMA