Elektroda.pl
Elektroda.pl
X

Search our partners

Find the latest content on electronic components. Datasheets.com
Elektroda.pl
Please add exception to AdBlock for elektroda.pl.
If you watch the ads, you support portal and users.

[ATMega16][Bascom]Termostat z DS18B20-sprawdzenie kodu

17 Jan 2010 23:19 2497 6
  • Level 14  
    Witam!
    Mam taki problem:
    Skleciłem oto taki kod i nie bardzo działa

    Code:
    $regfile = "m16def.dat"
    
    $crystal = 16000000

    Config Lcd = 16 * 2
    Config Lcdpin = Pin , Db4 = Portd.4 , Db5 = Portd.5 , Db6 = Portd.6 , Db7 = Portd.7 , E = Portd.3 , Rs = Portd.2

    Config Porta = Input : Porta = &B11111111
    Config Portb = Output : Portb = &B11111111

    S1 Alias Pina.0
    S2 Alias Pina.1
    Grzalka Alias Portb.0

    Config 1wire = Portc.0

    Dim I1 As Integer
    Dim Ss As String * 6
    Dim Dsid1(8) As Byte
    Dim A As Byte

    Deflcdchar 0 , 8 , 20 , 11 , 4 , 4 , 4 , 3 , 32             'znak stopnia Celsjusza

    Cursor Off
    Cls
    Locate 1 , 1
    Lcd "Zadana: " ; A

    Do

    If S2 = 0 Then
    A = A + 1
    Waitms 15
    Cls
    Locate 1 , 1
    Lcd "Zadana: " ; A
    End If

    If S1 = 0 Then
    A = A - 1
    Waitms 15
    Cls
    Locate 1 , 1
    Lcd "Zadana: " ; A
    End If

    If A > Ss Then
    Waitms 100
    Grzalka = 0
    Else
    Grzalka = 1
    End If

       1wreset
       1wwrite &H55
       1wverify Dsid1(1)
       1wwrite &HBE
       I1 = 1wread(2)

       1wreset
       1wwrite &HCC
       1wwrite &H44
    Waitms 100

       I1 = I1 * 10
       I1 = I1 / 16
       Ss = Str(i1)
       Ss = Format(ss , " 0.0")
       Locate 2 , 1
       Lcd "Odczytana: " ; Ss ; Chr(0)

    Loop
    End


    Chodzi o to że
    -gdy ustawiam temp. zadaną to miga odczytywana
    -grzałka nie załącza się jak należy
    Cały czas się uczę więc proszę o wyrozumiałość

    Poprawiłem tytuł i błędy w pisowni.
    [zumek]
  • Level 42  
    Nie wspomnę już o innych błędach ale jak ty chcesz żeby było dobrze skoro w warunku

    Code:
    If A > Ss Then 


    próbujesz dokonać porównania pomiędzy zmienną typu Byte a zmienną typu String??

    Może by tak najpierw o typach troszkę poczytać?
  • Level 14  
    mirekk36 wrote:
    Nie wspomnę już o innych błędach...

    Więc proszę wspomnij o tych błędach a nie tylko się mądrzycie
    Napisałem chyba że się dopiero uczę
  • Level 42  
    No i jak takiemu mądrali pomagać - przecież napisałem ci w czym rzecz - to też źle ????
  • Level 14  
    Przepraszam poniosło mnie
    A czy mógłbyś poprawic mi inne błędy?
  • Level 42  
    po pierwsze nie wiem dokładnie jakiego czujnika używasz ale zakładając że jest to DS18B20 to za mały czas dajesz na konwersję 100ms

    po drugie - dokonujesz weryfikacji

    Code:
    1wverify Dsid1(1) 


    tzn chcesz odpytać konkretny czujnik na magistrali więc podajesz do sprawdzenia jego numer Dsid(1) - a skąd on się u ciebie miał niby tam wcześniej znaleźć?

    jeśli nie masz więcej czujników na magistrali to pomiń sobie przynajmniej na razie do testów takie odpytywanie

    kolejna rzecz - sprawdzasz przyciski ale w ogóle nie bierzesz pod uwagę tzw "drgań styków" - poczytaj co to jest i jak się to obsługuje - albo zapoznaj się z poleceniem Bascomowym, które zrobi to za ciebie DEBOUNCE
  • Level 14  
    Mam tylko jeden czujnik na magistrali
    Ale gdy pozbywam się
    1wverify Dsid1(1)
    to układ nie wyświetla temp.
pcbway logo