Elektroda.pl
Elektroda.pl
X
Proszę, dodaj wyjątek dla www.elektroda.pl do Adblock.
Dzięki temu, że oglądasz reklamy, wspierasz portal i użytkowników.

Jak odczytac numer seryjny DS1820

24 Lut 2007 17:52 2759 13
  • Poziom 19  
    Panowie jak odczytac numer seryjny DS1820,uzywam czegos takiego:
    1 wwrite &h33
    for x=1 to 8
    numer(x)=1wread()
    lcd numer()
    next x
    wait 3
    Wszystko działa na lcd wyskakuje numer w postaci"1623616137180125" czy to jest numer seryjny czy trzeba cos z tego wyliczyć bo gdy na sztywno chce wywołac DS1820 nic z tego nie wychodzi:
    1 wreset
    1 wwrite &h55
    ????????? i co dalej
  • Poziom 39  
    Code:

    1 wwrite &h33
    for x=1 to 8
    numer(x)=1wread()
    Lcd  Hex(numer(x));  ' dla bascom8051 LcdHex  numer(x);
    next x
    wait 3

    1 wreset
    1 wwrite &h55
    '????????? i co dalej
    1wwrite  numer(1) , 8         

    I dalej nie pytaj , tylko szukaj , czytaj , ... ;)

    Piotrek
  • Poziom 19  
    Pytam czytam i nic,czy ten numer to faktyczny numer seryjny czy sa w nim zawarta suma kontrolna,powoli te układy zaczynają mnie denerwowac :)
  • Poziom 34  
    Code:
    Do
    
    Cls
    Lcd " ODCZYT ADRESU"
    Wait 1
    Cls
    1wreset
    1wwrite &H33
    For X = 1 To 8
    Adres(x) = 1wread()
    Next X
    1wreset
    Cls

    Lcd "  PODAJE ADRES"
    For X = 1 To 8
    Locate 2 , 5
    Lcd X ; " - " ; Adres(x) ; "   "
    Wait 1
    Next X

    Loop
    End
  • Poziom 39  
    W dokumentacji jest napisane ,
    8-BIT CRC 48-BIT SERIAL NUMBER 8-BIT FAMILY CODE

    Chyba nie kłamia ;)

    Piotrek
  • Poziom 19  
    Dla kogos kto siedzi w tym pare lat to pestka a dla mnie niestety nie takie to proste ale sie staram ,chce wywołąć dsy z magistrali na sztywno coś w stylu:
    1wwrite &H55
    1wwrite=tu numer seryjny16cyfrowy????
  • Poziom 19  
    Po pszesiedzeniu prawie całej nocy i usilnych starań aby ten numer seryjny wyciągnąć i wpisać na sztywno do programu który by go identyfikował nadal wielka d....tyle wiem że x(1)=16,x(2)=236,x(3)=161,x(4)=37,x(5)=1,x(6)=8,x(7)=0,x(8)=125, co daje w sumie numer:1623616137180125, według podpowiedzi kolegi M.S adres tego układu to 125 tak pokazuje wyswietlacz ale na logike biorąc jest za mały,widze ze nic z tego nie bedzie a szkoda myslałem ze mi ktos pomoże.
  • Poziom 15  
    Tylko ze ten "z sumowany" nr jest błedny powinno byc tak w HEX: 10ECA1250108007D czyli jakby nie patrzec 64 bitów czyli cały adres jak na dłoni.
  • Poziom 19  
    Powoli zaczynam czaic baze,czyli chcac na sztywno wywołać ten układ musze cały numer rozbić na 8 bajtów i pokolei je wysyłac czy moge cały odrazu ???
  • Poziom 19  
    Juz wiem numer musi byc rozbity na 8 bajtó ale mam kolejny problem robie w bascomie cos takiego:
    Dim adres(8) as byte

    adres(1)=&h10
    adres(2)=&Hec
    adres(3)=&ha1
    adres(4)=&h25
    adres(5)=&h01
    adres(6)=&h08
    adres(7)=&h00
    adres(8)=&h7d

    1wwrite adres(1),8

    tu ładnie wysyła numer do czujnika ale gdy chce dodać drugi czujnik i deklaruje zmienne :
    Dim adres(8) as byte
    dim adres1(8) as byte
    adres(1)=&h10
    adres(2)=&Hec
    adres(3)=&ha1
    adres(4)=&h25
    adres(5)=&h01
    adres(6)=&h08
    adres(7)=&h00
    adres(8)=&h7d

    adres1(1)=&h15
    adres1(2)=&Hcc
    adres1(3)=&ha1
    adres1(4)=&h25
    adres1(5)=&h01
    adres1(6)=&h28
    adres1(7)=&h01
    adres1(8)=&h4d

    to wtedy kompilator w lini:
    dim adres1(8) as byte
    wywala mi błąd kompilacji co robie zle????????
  • Poziom 39  
    Każdy błąd w Bascomie , ma numer i ewentualnie opis , więc jak to DOKŁADNIE wygląda :?:
    Piotrek

    PS
    Jeśli numery przypisujesz "na sztywno" , to pozostaw je tylko w pamięci programu , bo szkoda RAM-u.
    Code:

    Adres1:
    Data &H10,...
    Adres2:
    Data &H10, ...
  • Poziom 19  
    wywala mi cos takiego:
    out of internal memory in file: c\windows\pulpit\aplikacje\ds.bas,line :13
  • Poziom 39  
    scal12 napisał:
    wywala mi cos takiego:
    out of internal memory in file: c\windows\pulpit\aplikacje\ds.bas,line :13

    Oj jak słabo znasz narzędzie (Bascom8051) , którym sie posługujesz :D
    Przydzieliłeś kompilatorowi za mało RAM-u.
    Wybierz:
    Menu->Compiler->Misc i Byte End(hex) ustaw na maksymalną wartość (chyba 7F)

    Piotrek
  • Poziom 19  
    Owszem przyznaje sie do tego ze słabo znam a własciwie dopiero sie ucze programowac ale dzieki takim osobom jak Ty wychodzi mi to coraz lepiej i robie małe postepy :)