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

Komputer pokładowy AVR Bascom - prośba o optymalizacje kodu

konradek26 30 Lip 2006 12:29 2810 2
REKLAMA
  • #1 2863692
    konradek26
    Poziom 17  
    Posty: 274
    Pomógł: 19
    Ocena: 6
    Witam

    Robię ojcu do samochodu taki mini komputer pokładowy :) I mam kilka problemów.

    1. Potrzebuję pomocy w rozszerzeniu obecnego programu do takiego który obsłuży 2 czujniki 1Wire na osobnych pinach.

    $crystal = 4000000
    '$lib "mcsbyte.lib"
    
    Config Lcdbus = 4
    
    Config Lcdpin = Pin , Db4 = Portb.0 , Db5 = Portb.1 , Db6 = Portb.2 , Db7 = Portb.3 , E = Portb.4 , Rs = Portb.5
    
    
    Config 1wire = Portd.0
    Dim I As Integer , Ss As String * 6
    Dim Dsid1(8) As Byte
    
    'Dim S As Single
    Deflcdchar 0 , 7 , 5 , 7 , 32 , 32 , 32 , 32 , 32
    Cursor Off
    Cls
    Do
       1wreset
       Dsid1(1) = 1wsearchfirst()
       Lcd Hex(dsid1(8))
       Wait 2
       1wreset
       1wwrite &HDSID1
       1wwrite &H44
       Waitms 800
       1wreset
       1wwrite &HCC
       1wwrite &HBE
       I = 1wread(2)
       I = I * 10
       I = I / 16
       Ss = Str(i)
       Ss = Format(ss , "  0.0")
       Locate 1 , 1
       Lcd "Temp:" ; Ss ; Chr(0) ; "C"
    
    Loop
    


    2. Jak usunąć dwa zera które pojawiają się za literą "C" na wyświetlaczu ?

    Proszę o pomoc, zależy mi na tym...
  • REKLAMA
  • #2 2864012
    HIOB
    Poziom 17  
    Posty: 222
    Pomógł: 23
    Ocena: 1
    Witam!

    Najpierw zadaj sobie pytanie: jaki to będzie miało sens!

    Magistrale 1-Wire stworzono z myślą, aby za pomocą 1 przewodu komunikować się z wieeeeeeeeeeeeeeeeeeeeeeeeeeeloma urządzeniami... Każde z nich, posiada własny unikalny 48-bitowy numer seryjny oraz 8-bitowy kod rodziny! Dzięki nim, możesz rozpoznawać i sterować urządzeniami podłączonymi do magistrali 1-Wire (1 urządzeniem w danej chwili!).

    Więcej w pdf-ie: http://www.maxim-ic.com/quick_view2.cfm/qv_pk/3021

    Pozdrawiam!
  • #3 2864141
    konradek26
    Poziom 17  
    Posty: 274
    Pomógł: 19
    Ocena: 6
    Dzięki wielkie za pomoc, zrobię na jednym pinie 2 czujniki. Teraz został tylko problem z programem.

    Aha, z tymi dwoma zerami już sobie poradziłem. Powodowala je komenda

    Lcd Hex(dsid1(8))


    Dodano po 2 [godziny] 30 [minuty]:

    $regfile = "2313def.DAT"
    $crystal = 1000000
    '$lib "mcsbyte.lib"
    Config Lcdbus = 4
    Config Lcdpin = Pin , Db4 = Portb.0 , Db5 = Portb.1 , Db6 = Portb.2 , Db7 = Portb.3 , E = Portb.4 , Rs = Portb.5
    
    Config 1wire = Portd.0
    Dim I1 As Integer , Ss As String * 6
    Dim I2 As Integer
    Dim I3 As Integer
    
    Dim Dsid1(8) As Byte
    Dim Dsid2(8) As Byte
    Dim B As Byte
    Dim W As Byte
    
    Deflcdchar 0 , 7 , 5 , 7 , 32 , 32 , 32 , 32 , 32
    Cursor Off
    
    W = 1wirecount()
    Lcd W
    Wait 1
    Cls
    Dsid1(1) = 1wsearchfirst()
    Dsid2(1) = 1wsearchnext()
    
    If Dsid1(8) = Crc8(dsid1(1) , 7) Then
     Locate 1 , 1
     Lcd "CRC OK Sensor 1 ID"
     Wait 1
     Locate 1 , 1
     For B = 1 To 8
     Lcd Hex(dsid1(b))
     Next
    End If
    Wait 2
    
    If Dsid2(8) = Crc8(dsid2(1) , 7) Then
     Locate 2 , 1
     Lcd "CRC OK Sensor 2 ID"
     Wait 1
     Locate 2 , 1
     For B = 1 To 8
     Lcd Hex(dsid2(b))
     Next
    End If
    Wait 2
    Cls
    
    Do
       1wreset
       1wwrite &H55
       1wverify Dsid1(1)
       1wwrite &HBE
       I1 = 1wread(2)
    
       1wreset
       1wwrite &H55
       1wverify Dsid2(1)
       1wwrite &HBE
       I2 = 1wread(2)
    
       1wreset
       1wwrite &HCC
       1wwrite &H44
    Wait 1
    
       I1 = I1 * 10
       I1 = I1 / 16
       Ss = Str(i1)
       Ss = Format(ss , "  0.0")
       Locate 1 , 1
       Lcd "1" ; Ss ; Chr(0) ; "C"
    
       I2 = I2 * 10
       I2 = I2 / 16
       Ss = Str(i2)
       Ss = Format(ss , "  0.0")
       Locate 2 , 1
       Lcd "2" ; Ss ; Chr(0) ; "C"
    
    Loop


    Da rade zoptymalizować to tak aby miało 2KB ?

    Dodano po 1 [godziny] 15 [minuty]:

    Temat zamykam, po problemie ;)
REKLAMA