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

Atmega88 i DS1820 już brakuje mi pomysłów...

Tsfjacek 14 Gru 2009 17:59 2224 8
  • #1 7388645
    Tsfjacek
    Poziom 11  
    Witam.
    Od jakiegoś czasu zajmuję się mikrokontrolerami i posiadam już pewne doświadczenie w tym kierunku.
    Ostatnio miałem jednak sporą przerwę... aż do teraz - trafił mi się termometr do zmontowania.
    Zbudowałem więc prosty układ: Atmega88+DS1820 jak na foto poniżej:

    Atmega88 i DS1820 już brakuje mi pomysłów...

    (Czarne przewody to plus i minus zasilania podłączone odpowiednio do wejść zasilających atmegi, natomiast linia danych czujnika podłączona jest do pierwszego pinu procka powyżej wejść zasilających.)
    W procku znajduje się następujący program:
    
    $regfile = "m88def.dat"
    $crystal = 7372800
    
    Config Pinb.2 = Output
    
    Config 1wire = Portd.4
    'Config 1wire = Portb.0
    
    Config Lcd = 16 * 2
    Config Lcdpin = Pin , Db4 = Portc.0 , Db5 = Portc.1 , Db6 = Portc.2 , Db7 = Portc.3 , E = Portc.4 , Rs = Portc.5
    
    Swiatelko Alias Portb.2
    
    Dim Reg_no(8) As Byte
    Dim I As Byte , W As Word
    
    Set Swiatelko 		'podświetlanie lcd
    
    Pocz:
          Cls
          Reg_no(1) = 1wsearchfirst()
    
          Locate 2 , 1
    
          For I = 1 To 8
    
          Lcd Hex(reg_no(i)) ;
    
          Next I
    
    
          Locate 1 , 1
    
           Lcd "ile.ukl="
    
          W = 1wirecount()
    
          Lcd W ; " bld?="
    
          Reg_no(1) = 1wsearchfirst()
          1wverify Reg_no(1)
          Lcd Err
    
          Waitms 500
    Goto Pocz:
    
    End
    

    No i teraz najistotniejsze. Dlaczego nie działa??
    Wg. mnie powinno przynajmniej znaleźć układ i odczytać nr seryjny.

    Już brakuje mi pomysły co jest nie tak:/.
    Za odpowiedzi z góry dziękuję.
    Ps. To pewnie jakaś drobna rzecz o której zapomniałem, ale za nic nie mogę wykombinować co to jest...:/
  • #2 7389023
    Wojtek75
    Poziom 24  
    Kod działa, więc szukaj błędu w układzie. Zamiast zdjęcia wrzuć lepiej schemat.
  • #3 7389627
    Tsfjacek
    Poziom 11  
    W zasadzie cały schemat dotyczący DS1820 widoczny jest na zdjęciu.
    DS łączy się z płytką procesora poprzez 5 goldpin'ow od dołu GND, Vcc, PD.4÷PD.2. Pomarańczowy przewód to Vcc. Pomiędzy Vcc, a DQ włączone są szeregowo dwa rezystory 1,5k+3,3k (dzisiaj wlutowałem pojedynczy 4,7k i dalej nic). środkowe wyjście z DS podłączone jest do PD.4, czyli pierwszy pin nad Vcc procesora. Jeżeli w dalszym ciągu jest potrzeba zamieszczenia schematu to narysuje.
  • #4 7389973
    dawid512
    Poziom 32  
    Skoro program ok to sprawdź połączenia x razy i rezystor obowiązkowo 4k7. Jeżeli te dwie rzeczy są ok to pewnie fuse bity.
  • #5 7390197
    Logan
    Poziom 30  
    A te dwa czarne kable to co to ?
  • #6 7390457
    Logi
    Poziom 19  
    A co pisze dokładnie na czujniku? DS1820, DS18S20 czy może DS18B20?
  • Pomocny post
    #7 7390595
    Konto nie istnieje
    Poziom 1  
  • #8 7390836
    Wojtek75
    Poziom 24  
    Logi napisał:
    A co pisze dokładnie na czujniku? DS1820, DS18S20 czy może DS18B20?
    To akurat nie ma żadnego znaczenia bo w kodzie kolegi ani nie ma bezpośredniego adresowania ani konwersji temperatur. To jest tylko przeszukiwanie magistrali pod kątem podłączonych urządzeń. Na zdjęciu (trochę ciemnawe więc musisz mi uwierzyć na słowo) masz przykład. W płytkę stykową wcisnąłem i DS18B i DS18S i oba czujniki są wykrywane.
    Jeżeli autor tematu jest pewny, że nie ma przerw lub zwarć i czujnik jest sprawny to może faktycznie coś nie teges z ustawieniami fuse.

    Atmega88 i DS1820 już brakuje mi pomysłów...
  • #9 7393211
    Tsfjacek
    Poziom 11  
    Zgadza się. Wszystko sprawdziłem po 10 razy... oprócz fusebitów.

    Wyłączenie podziału przez 8 załatwiło sprawę. :))

    Dzięki bardzo wszystkim, którzy się włączyli do dyskusji za pomoc.

    Ps. Widok numeru seryjnego scalak na wyświetlaczu działa baaardzo uspakajająco, oj bardzo ;].
REKLAMA