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

Jak połączyć dwa bajty z czujnika TMP100 w jedną zmienną w BASCOM?

filip_gd 30 Gru 2006 09:39 1822 5
REKLAMA
  • #1 3385890
    filip_gd
    Poziom 12  
    Posty: 103
    Pomógł: 1
    Ocena: 2
    Witam
    Napisałem sobie program pod czujnik TMP100
    Jednak mam problem z formatowaniem wyników.

    Przesyłam tabelkę w jakiej formie dostaję dane.
    Ponieważ tmp100 ma rozdzielczość od 9 do 12 bitów
    dostaję dwa bajty i nie wiem jak zrobić z nich jedną zmienną.
    Używałem makeint ale niestety nie udało się.

    Dołączam kod
    $regfile = "m8def.dat"
    $crystal = 8000000
    $baud = 9600
    Config Lcdpin = Pin , Db4 = Portc.4 , Db5 = Portc.5 , Db6 = Portb.0 , Db7 = Portb.1 , E = Portb.3 , Rs = Portb.4
    Config Lcd = 16 * 2
    Config Scl = Portc.0
    Config Sda = Portc.1
    Dim A As Byte
    Dim B As Byte
    Deflcdchar 0 , 7 , 5 , 7 , 32 , 32 , 32 , 32 , 32
    Cursor Off
    
    Do
    
    I2cstart
    I2cwbyte &B10010000
    I2cwbyte &B00000000
    I2cstart
    I2cwbyte &B10010001
    I2crbyte A , Ack
    I2crbyte B , Nack
    I2cstop
    
    Waitms 1000
    Loop
    
    Załączniki:
    • Jak połączyć dwa bajty z czujnika TMP100 w jedną zmienną w BASCOM? tmp.jpg (41.97 KB) Musisz być zalogowany, aby pobrać ten załącznik.
  • REKLAMA
  • #2 3385967
    cadafi
    Poziom 12  
    Posty: 30
    Ocena: 2
    Brak wyników jakie uzyskałeś nie pomoże...
    Jezeli pierwszy bajt dostajesz w A, ro drugi bajt musisz przesunąć o 4 bity w prawo i dopiero wtedy robić z nich liczbę - makeint. Pozatym bit 12 to znak. Pięknie to pokazano w tablece. Powodzenia
  • REKLAMA
  • #3 3385997
    M. S.
    Poziom 34  
    Posty: 2107
    Pomógł: 259
    Ocena: 680
    Jeśli 1 bajt to A a 2 to B to trzeba je "skleić" poprzez MAKEINIT i następnie przesunąć o 4 bity w prawo.

    Dim Zmienna as Integer
    Zmienna = MAKEINT(B , A)
    Shift Zmienna, Right , 4


    (Mam nadzieję, że nie pomyliłem zmiennych)
  • REKLAMA
  • #4 3386853
    zumek
    Poziom 39  
    Posty: 3352
    Pomógł: 695
    Ocena: 52
    M. S. napisał:
    Jeśli 1 bajt to A a 2 to B to trzeba je "skleić" poprzez MAKEINIT i następnie przesunąć o 4 bity w prawo...

    Nie przesunąć , tylko podzielić przez 16 , bo przy ujemnych wyjdą cyrki ;)

    Piotrek
  • REKLAMA
  • #5 3395240
    filip_gd
    Poziom 12  
    Posty: 103
    Pomógł: 1
    Ocena: 2
    
    Zmienna = Makeint(b , A)
    Zmienna = Zmienna / 16
    Lowerline
    Lcd Zmienna
    


    Przy temp. pokojowej otrzymuję wynik 505
    Więc dalej nic
    pozdr
  • #6 5192900
    wader_669
    Poziom 28  
    Posty: 1512
    Pomógł: 93
    Ocena: 15
    moze odnowie troche temat bo chcialem wlasnie pobawic sie czujnikiem tmp100 i mam podobny problem. Rozwiazanie problemu jest to albo inny czujnik (komunikacja obojetna) na min. 2,7V i tez wazne zeby byla opcja powerdown czyli jak czujnik nie jest uzywany to pobor pradu prawie rowny 0
REKLAMA