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

Układ DS18b20 - czas pomiędzy poleceniami 1Wire [bascom]

monokrysztal12 12 Wrz 2011 19:03 2519 10
REKLAMA
  • #1 9920205
    monokrysztal12
    Poziom 13  
    Posty: 127
    Ocena: 3
    Witam
    Obsługuję czujnik DS18B20 w Bascomie. Procedura odczytu wygląda tak:

    
    1wreset                       'reset
    
    1wwrite &H55                  
    1wwrite &HCC
    
    1wwrite &H44                  'dokonaj konwersji
    Waitms 750                    'przeczekaj czas konwersji
    1wreset                       'reset
    
    1wwrite &H55                 
    1wwrite &HCC
    
    1wwrite &HBE                 
    Temperatura(1) = 1wread(2)    'odczytaj dwa pierwsze bajty
    'DALSZA OBRÓBKA DANYCH....
    


    Czy czas pomiędzy kolejnymi poleceniami, tj. 1wreset , potem 1wwrite &H55 , potem 1wwrite &HCC ... itd. może być dowolnie długi, przykładowo -np 6 minut; 5 godzin; 10godzin czy też 10dni .... ? Oczywiście wysyła 1 polecenie, czeka, wysyła drugie itd. do końca... Czy są ograniczenia? Oczywiście będzie to pracowało w konfiguracji 2-Wire [zasilanie, masa, linia danych], bo 1Wire to kondensator trzymający energię w układzie się rozładuje.
    Dziękuję za odpowiedź.
  • REKLAMA
  • #2 9920285
    Press
    Poziom 24  
    Posty: 566
    Pomógł: 69
    Ocena: 40
    monokrysztal12 napisał:
    Witam
    Oczywiście będzie to pracowało w konfiguracji 2-Wire [zasilanie, masa, linia danych], bo 1Wire to kondensator trzymający energię w układzie się rozładuje.
    Dziękuję za odpowiedź.


    Nie wiem jak z tymi ograniczeniami czasowymi o które pytasz, ale kondensator Ci się nie rozładuje, bo linia danych 1-wire w czasie bezczynności jest utrzymywana w stanie wysokim i cały czas zasila układ slave.
  • REKLAMA
  • #3 9920296
    monokrysztal12
    Poziom 13  
    Posty: 127
    Ocena: 3
    No tak, ale i tak będzie konfiguracja z 3 przewodami...
  • REKLAMA
  • #4 9928500
    monokrysztal12
    Poziom 13  
    Posty: 127
    Ocena: 3
    Czy ten czas ma jakieś znaczenie, czy jednak nie?
  • Pomocny post
    #5 9928670
    Konto nie istnieje
    Poziom 1  
  • #6 9934434
    monokrysztal12
    Poziom 13  
    Posty: 127
    Ocena: 3
    czyli jak przykładowo dam:
    Kod: text
    Zaloguj się, aby zobaczyć kod

    czyli flaga zmienia stan co ok. 1s, czyli zapytanie [1s] odczyt [1s] itd..
    to powinno odczytywać ok? Powinno się wyrobić przed kolejnym przerwaniem wysłać/odebrać dane, żeby nie przerwało odczytu - ogółem komunikacji 1wire? Bo są to czas jak patrzyłem - rzędu us... oczywiście nie mówię o czasie konwersji, tylko zapis zapytań/odczyt przetw. danych z układu.
  • Pomocny post
    #7 9935095
    Konto nie istnieje
    Poziom 1  
  • #8 9935418
    monokrysztal12
    Poziom 13  
    Posty: 127
    Ocena: 3
    Przerwań nie mogę wyłączyć, flaga jest bajtowa, albowiem inkrementując ją, aktywuję inne warunki w programie. Może coś takiego ze sprawdzaniem crc? Wtedy po prostu nie wyświetli wyniku, jak nie będzie prawidłowe... Tylko niestety nie może zdarzać się to za często. Przerwania zaś są obecnie tylko od. 1 timera... [0]. Czy ten odczyt 9 bajtów będzie trwał mniej niż 4ms, czy jakoś jeszcze to podzielić?



    Kod: Bash
    Zaloguj się, aby zobaczyć kod
  • REKLAMA
  • #9 9937502
    monokrysztal12
    Poziom 13  
    Posty: 127
    Ocena: 3
    Czy tak może być?
  • Pomocny post
    #10 9939424
    Konto nie istnieje
    Poziom 1  
  • #11 9940891
    monokrysztal12
    Poziom 13  
    Posty: 127
    Ocena: 3
    czyli np. tak


    Kod: text
    Zaloguj się, aby zobaczyć kod

Podsumowanie tematu

✨ Dyskusja dotyczy obsługi czujnika DS18B20 w języku Bascom oraz pytania o czas pomiędzy poleceniami w protokole 1-Wire. Użytkownik zastanawia się, czy czas oczekiwania pomiędzy komendami może być dowolnie długi. Odpowiedzi wskazują, że czasy są ściśle określone w dokumentacji technicznej, a komunikacja musi mieścić się w określonych "time slots". Użytkownicy sugerują, aby unikać długich przerw w komunikacji, ponieważ układ DS przechodzi w tryb bezczynności, a także zalecają stosowanie oddzielnych flag do obsługi różnych operacji, aby uniknąć błędów w odczycie danych. Wskazówki dotyczą również poprawnej obsługi przerwań oraz zarządzania flagami w kodzie.
Podsumowanie wygenerowane przez AI na podstawie treści dyskusji.
REKLAMA