logo elektroda
logo elektroda
X
logo elektroda
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 2468 10
  • #1 9920205
    monokrysztal12
    Poziom 13  
    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ź.
  • #2 9920285
    Press
    Poziom 24  
    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.
  • #3 9920296
    monokrysztal12
    Poziom 13  
    No tak, ale i tak będzie konfiguracja z 3 przewodami...
  • #4 9928500
    monokrysztal12
    Poziom 13  
    Czy ten czas ma jakieś znaczenie, czy jednak nie?
  • Pomocny post
    #5 9928670
    Konto nie istnieje
    Poziom 1  
  • #6 9934434
    monokrysztal12
    Poziom 13  
    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  
    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
  • #9 9937502
    monokrysztal12
    Poziom 13  
    Czy tak może być?
  • Pomocny post
    #10 9939424
    Konto nie istnieje
    Poziom 1  
  • #11 9940891
    monokrysztal12
    Poziom 13  
    czyli np. tak


    Kod: text
    Zaloguj się, aby zobaczyć kod
REKLAMA