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

[ATMEGA8][BASCOM] ds18b20 i dziwne wyniki

sopelek48 11 Lip 2008 01:36 3107 9
  • #1 5332354
    sopelek48
    Poziom 10  
    Witammój problem polega na tym że
    podłączyłem do megi termometr i po wywołaniu tego kodu
    
    im T1 As Single
    Dim T2 As Single
    Dim B1 As Byte , B2 As Byte , R As Byte
    Dim Tmp As String * 6
    Dim Znak As String * 1
    
    Sub Temp
    1wr                                                         'podprogram 1wr
    1wwrite &HCC                                                'komenda skip ROM
    1wwrite &H33                                                'komenda convert T
    Waitms 250
    Waitms 250
    1wr                                                         'podprogram 1wr
    1wwrite &HCC                                                'komenda skip ROM
    1wwrite &HBE                                                'komenda read
    
    B1 = 1wread()                                               'odczyt z termometru
    B2 = 1wread()
    
    1wr                                                         'podprogram 1wr
    '
    If B2 >= 255 Then                                           'w przypadku temperatur ujemnych
    B1 = R - B1                                                 'Od 255 Odejmujemy B1
    B2 = R - B2                                                 'od 255 odejmujemy B2
    Znak = "-"
    Else
    Znak = "+"
    End If
    T1 = B1 / 16                                                'Przesuniecie w pawo o 4 bajty
    T2 = B2 * 16                                                'przesuniecie w lewo o 4 bajty
    T1 = T1 + T2
    Tmp = Fusing(t1 , "###.&&")
    End Sub
    Sub 1wr                                                     'podprogram resetujacy magistrale
    1wreset
    End Sub
    

    w zmiennej TMP zawsze jest temperatura 85'C
    co jest chyba dziwne :D

    oczywiście linia danych jest podpieta przez rezystor 4,7k do VCC

    proszę o pomoc bo siędzę nad tym od paru godzin i nie moge znaleźć przyczyny tego błędu
  • #2 5332359
    Balu
    Poziom 38  
    Oczywiście szukałeś na forum...Oczywiście czytałeś datasheet i masz chociaż pomysł, czemu akurat 85*:)
    Prawda?
    No tak myślałem, więc zrób powyższe punkty a potem zapytaj jeszcze raz...

    Ps a to się w ogóle kompiluje? bo nie wygląda...
  • #3 5332372
    JmL(TM)
    Poziom 24  
    Codziennie w tym dziale ktos zadaje pytanie dotyczace termometru na DS18B20. Moze jak Dallas przestalby wysylac darmowe probki to moze w koncu te pytania by sie skonczyly :D

    Poszukaj na forum bo takich zrodel i to w dodatku w Bascom'ie jest tyle, ze jakbys je wszystkie wydrukowal to spokojnie mozesz sobie nimi pokoj wytapetowac :D

    Ponawiam pytanie Balu: czy Twoj kod w ogole sie kompiluje? Bo patrzac na to nie wyglada. Kup sobie jakas ksiazke i/lub poszukaj kursow Bascom'a w necie bo jak narazie to slabo to widze...

    https://www.elektroda.pl/rtvforum/topic922985.html
  • #4 5333039
    sopelek48
    Poziom 10  
    Niestety sprzeszukałem Internet i czytałem dadatasheet (od tego zazwyczaj się zaczyna współpraca z czym kolwiek :D) kod który zamieściłem wyżej się odziwo kompiluje bez problemu (z tąd wiem ze po wgraniu do uC jest taki wynik)Zresztą jest skopiowany z elektrody jako jeden z przykładowych, Zresztą Wszystkie kody które sam pisałem lub kopiowałem z internetu pokazują tę temperaturę która nigdy się nie zmienia więc zastanawiam się czy sam DS nie jest uszkodzony ale nie mam jak tego narazie sprawdzić dlatego proszę o pomoc

    ps Wszystkie problemy z którymi się spotkałem w necie polegały raczej na złej konwersji a u mnie jest jedna stała temperatura dlatego postnowiłem się tu zapytac
  • #6 5333112
    zumek
    Poziom 39  
    sopelek48 napisał:
    Niestety sprzeszukałem Internet i czytałem dadatasheet ...

    Nie wiem czemu , ale jakoś Ci nie wierzę :P
    
    1wwrite &H33                                                'komenda convert T
    

    W/g dokumentacji , Convert T [44h] - i co Ty na to :?:

    Piotrek
  • #7 5333463
    JmL(TM)
    Poziom 24  
    JmL(TM) napisał:
    https://www.elektroda.pl/rtvforum/topic922985.html]

    Jeszcze nigdy nie cytowalem sam siebie ale widocznie czasem zachodzi taka potrzeba! :D
    A porownales kod z tym spod tego linku chociazby? Widzisz jakies podobienstwo do wypowiedzi mentora zumka?
  • #8 5333696
    sopelek48
    Poziom 10  
    Oczywiscie ze porównałe zresztą tak jak z innymi z elektrody i zawsze jak by nie kombinować wychodzi 85,
    chyba ze zczytuje inną liczbe bitów no ale chyba nie o to chodzi :D
    W sumie to biorac pod uwage ze ta temp jest zawsze w karzdym ds na poczatku to moze on sie poprostu caly czas resetuje ??
  • #9 5333805
    zumek
    Poziom 39  
    sopelek48 napisał:
    ... to moze on sie poprostu caly czas resetuje ??

    Kochasiu :!:
    Żeby zresetować rejestry temperatury w scratchpad , to musiałbyś odłączyć zasilanie od DS-a lub jeśli masz zasilanie pasożytnicze(linią DQ) , to musiałbyś na tej linii utrzymać stan niski , przez >960uS.
    Spróbuj zwiększyć czas konwersji , do 850ms.

    Piotrek
REKLAMA