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

DS18B20+Atmega16+Bascom problem - początkujący

marrog 07 Sty 2009 17:40 1881 4
  • #1 5964636
    marrog
    Poziom 22  
    Witam serdecznie !!!

    Mam taki problem z DS18b20 i ATmega16. Programuje w BASCOMie i wykorzystuję funkcję 1wirecount tak jak w programie poniżej i ciągle mi wyświetla że ilość podpiętych urządzeń to 0, nie wiem w czym tkwi problem.

    Podpiąłem zgodnie z nota katalogową tzn 1 do gnd 2 do uP i do tego 4,7k rezystor oraz 5v pod Vdd.

    oto
    
    'Termometr DS18B20 z LCD
    
    $regfile = "m16def.dat"
    $crystal = 14745600
    
    'parametry magistrali 1wire
    Config 1wire = Portd.6
    1wreset                                                     'reset magistrali
    
    'parametry LCD
    Config Lcdpin = Pin , Db4 = Portb.4 , Db5 = Portb.5 , Db6 = Portb.6 , Db7 = Portb.7 , E = Portb.3 , Rs = Portb.2
    Config Lcd = 16 * 2
    
    'deklaracja zmiennych
    Dim Ile_urz_1wire As Byte
    
    Do
    Cls
    1wreset
    Wait 1
       While Ile_urz_1wire < 5
          Ile_urz_1wire = 1wirecount()
          Waitms 500
          Lcd "Liczba urz to:" ; Ile_urz_1wire
          Waitms 100
          Cls
          Wend
    Loop
    End                                                         'end program
    


    z góry dzięki za pomoc.
    -=pozdrawiam=-
  • Pomocny post
    #2 5965095
    dawid512
    Poziom 32  
    $crystal = 14745600 
    Czy oprócz podłączenia takiego kwarcu ustawiłeś odpowiednie fuse bity? Następna rzecz to nie musisz robić resetu 1wire. Największy błąd polega na tym że nie czytałeś helpa bo gdybyś to zrobił to dowiedziałbyś się że zmienna do której zapisujesz ilość urządzeń koniecznie musi być typu WORD lub INTEGER. Na koniec radzę ci skorzystać z pętli for i nie używać tej samej zmiennej do pętli i do 1wirecount().
  • #3 5965162
    marrog
    Poziom 22  
    Witam

    Co do czytania helpa - czytałem i wiem, że jest napisane, że ma być typu Word lub Int, zmieniłem na Byte sugerując się zamieszczonym na elektrodzie kodem, gdzie ktoś też tak deklarował tą zmienną, skompilowałem i nadal to samo. Na początku miałem typu Int później Word i nadal to samo.
    Co do fuse bitów - nic takiego nie ustawiałem, a mógłby kolega przybliżyć temat? Lub dać namiar na jakiś pdf?

    Zmieniłem pętle na for i nadal to samo.
    A może Ds jest uwalony?
  • #5 5965221
    marrog
    Poziom 22  
    Wielkie dzięki - działa po zmianie częstotliwości generatora. :-)

    Dodam, że przeszedłem cały rozdział pocżwszy od 1wirecount poprzez ...search itd i nic a problem tkwił w generatorze.
    Tak mam na pewno podpięty 4k7 do vcc i pod nogę środkową.

    Teraz działa.

    A możesz mi napisać gdzie się zmienia fuse bity, żeby wykorzystywał zewn generator?

    Z petlą jak na początku tez działa tzn while itd.

    -=pozdrawiam=-
REKLAMA