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

ATmega32 + ds18b20. Kod z książki, Brak układu, Temp 0.0C.

krzysiekk_20 22 Maj 2008 15:39 1856 12
  • #1 22 Maj 2008 15:39
    krzysiekk_20
    Poziom 12  

    Temat jest podobny do:

    https://www.elektroda.pl/rtvforum/viewtopic.ph...=ds18b20&sid=d9db1d5cd246f71f3e3f33cbffa997c7

    Próbowałem ten kod z książki o którym mowa i ten poniżej co jest oraz zmieniałem na 1MHz i nic
    Mam albo Brak układu albo Temp:0.0C w zależności od kodu. Napięcie na ds jest a układ jest dobrze podłączony.

    Poniżej mój kod

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


    Config Lcdbus = 4
    Config Lcd = 24 * 2
    Config Lcdpin = Pin , Db4 = Portb.4 , Db5 = Portb.5 , Db6 = Portb.6 , Db7 = Portb.7 , E = Portb.3 , Rs = Portb.2
    Config 1wire = Porta.2                                      ' termometr ds18b20
    Dim I As Integer                                            'zmienne do odczytu temp.
    Dim S As Single
    Dim T As String * 4

    Deflcdchar 0 , 6 , 9 , 6 , 32 , 32 , 32 , 32 , 32           ' znak stopnia

    Cursor Off
    Cls
                                                       'pomiar temp. na termometrze ds18b20
    Do

       1wreset
       1wwrite &HCC
       1wwrite &H44
       Waitms 750

       1wreset
       1wwrite &HCC
       1wwrite &HBE

       I = 1wread(2)
       S = I / 16
       T = Fusing(s , "##.#")

       Locate 1 , 1
       Lcd "Temp:" ; T ; Chr(0) ; "C"

    Loop


    1wire mam podłączone pod pina.2 czyli pod A/C ale to chyba nie robi różnicy gdzie się podłączy.

    0 12
  • #3 22 Maj 2008 18:25
    dawid512
    Poziom 32  

    Na początek spróbuj podłączyć czujnik do innego portu np. PB.0, port przetwornika lubi czasem wariować. Potem sprawdź czy aby na pewno posiadasz DS18B20 a nie DS1820. Jeśli masz procek nowy to w programie zadeklaruj rezonator na 1MHz.

    0
  • #4 23 Maj 2008 11:48
    krzysiekk_20
    Poziom 12  

    Czujnik to na pewno DS18b20. Podłączyłem go jak mówiłeś pod inny port PC.7(TOSC2) i zmieniłem na 1MHz i działa, odczytuje temp. Jak zmieniłem na 16 MHz to pokazuje mi -0.1 C. Problem w tym że ja muszę używać 16 MHz bo oprócz tego czujnika będą jeszcze inne elementy np czujnik wilgotności SMTH10 ( pomiar częstotl na atmega32) czujnik lm335, przekażniki, klawiatura.

    Da się jakoś ustawić tylko na ten port 1 Mhz. Czytałem coś o tych fusebitach ale nie rozumiem tego za bardzo do czego to jest i nie chce nic uszkodzić.

    0
  • #5 23 Maj 2008 12:08
    Freddy
    Poziom 43  

    Nie da się zrobić zmiany "tylko na ten port". 1MHz jest dla całego procesora. Musisz zrobić zmiany w fuse bit. !

    0
  • #6 23 Maj 2008 12:12
    krzysiekk_20
    Poziom 12  

    A wiesz może jak to zrobić bo tak jak mówiłem nie znam się na fusebitach?!

    0
  • #7 23 Maj 2008 12:15
    Freddy
    Poziom 43  

    Jeśli używasz BAscom, to po wejściu w "programator" masz tam opcje "FUSE" zaczekaj chwilę aż odczyta i zrób "print screen" powiemy co przestawić.

    0
  • #8 23 Maj 2008 12:29
    krzysiekk_20
    Poziom 12  

    Chyba o to chodzi. Zrobiłem to na 1MHz

    ATmega32 + ds18b20. Kod z książki, Brak układu, Temp 0.0C.[/url]

    0
  • #9 23 Maj 2008 12:35
    dawid512
    Poziom 32  

    Jak wrzucasz program przez bascoma do procka to pojawia Ci sie nowe okienko. Przejdz na zakladke "Lock and duse bits" potem na Fusebit A987 i teraz z listy wybierasz : 001111:Ext. Crystal/Resonator High Freq. ; Start-up time: 1K CK +64ms; [CKSEL=1111 SUT=00]. Potem tylko write FSH. Pamiętaj żeby kwarc był podłączony kondensatorami ok. 33pF do masy.

    0
  • #10 23 Maj 2008 12:49
    krzysiekk_20
    Poziom 12  

    Nie mam czegoś takiego. Oto rozwinięcie

    ATmega32 + ds18b20. Kod z książki, Brak układu, Temp 0.0C.

    Na wejściu uC mam kondensatory 27 pF.

    Aha czy zmiany na fusebitach trzeba zmienić na $crystal = 16000000 czy 1MHz

    0
  • #12 23 Maj 2008 12:59
    dawid512
    Poziom 32  

    $Crystal = 16000000 to tylko informacja dla kompilatora jakiego kwarcu używasz jesli nie zmienisz tego w fuse bitach to nic ci to nie da. Ta lista to jest z Bascoma?

    0
  • #13 23 Maj 2008 13:00
    krzysiekk_20
    Poziom 12  

    Tak z bascoma. I nie mogę tego co napisałeś znaleźć.

    0