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

Atmega 8 i 1-Wire: brak komunikacji z DS1820/1990, err=1, co sprawdzić?

Gieha 02 Paź 2005 22:07 1935 6
REKLAMA
  • #1 1868210
    Gieha
    Poziom 11  
    Posty: 29
    Witam , wymyśliłem sobie urządzonko w teorii ale w praktyce mam taki problem: podłączam do ATMEGA 8 po 1wire Ds 1820 lub 1990 i nie mam nawet zmiennej err=0 tylko ciągle 1 . Jest rezystor 3.3kom od + do DQ (uruchomieniówka od BTC) , schemat podłączenia jest tak banalny że nie wiem co może być nie tak .
    $regfile = "m8def.dat"
    $crystal = 8000000
    Config Lcd = 16 * 2
    Config Lcdpin = Pin , Db4 = Portc.3 , Db5 = Portc.2 , Db6 = Portc.1 , Db7 = Portc.0 , E = Portc.4 , Rs = Portc.5
    Config 1wire = Portb.0
    Declare Sub Odcz_temp
    Dim Temperatura(2) As Byte
    Dim A As Byte
    Deflcdchar 0 , 7 , 5 , 7 , 32 , 32 , 32 , 32 , 32

    Do
    Cls
    For A = 1 To 8
    Waitms 100
    1wreset
    Lcd A
    Lowerline
    Lcd Err
    Upperline
    Next
    Loop
    End
  • REKLAMA
  • #2 1868417
    migod
    Poziom 21  
    Posty: 462
    Pomógł: 29
    Ocena: 8
    hej,

    pracuje na wewn. czy zewnetrzym oscylatorze..?
    a poza wszystkim, czemu 8 razy resetujesz uklad?

    pozdro,
    --
    migod
  • REKLAMA
  • #3 1870245
    Gieha
    Poziom 11  
    Posty: 29
    Ma zewnętrzny oscylator 8Mhz. Z resetem to chciałem do prób zrobić tak żeby na lcd w górnym wierszu leciały kolejne próby a w dolnym wynik err , a ja w tym czasie podłączam do 1wire "pastylki" licząc że zadziała :-).
  • #4 1870793
    soft.sc
    Poziom 17  
    Posty: 142
    Pomógł: 15
    Ocena: 4
    A czy przestawiłeś "fusy" dla zewnętrznego kwarcu?. Bo jeśli nie procesor pracuje z oscylatorem wewnętrznym 1MHz i mogą być złe czasy obsługi Ds'a. Pozdrawiam.
    PS. Dziwnie podchodzisz do tego programu.
  • REKLAMA
  • #5 1870905
    migod
    Poziom 21  
    Posty: 462
    Pomógł: 29
    Ocena: 8
    Gieha napisał:
    Ma zewnętrzny oscylator 8Mhz. Z resetem to chciałem do prób zrobić tak żeby na lcd w górnym wierszu leciały kolejne próby a w dolnym wynik err , a ja w tym czasie podłączam do 1wire "pastylki" licząc że zadziała :-).

    na tym forum znajdziesz niejeden fragment kodu do obslugi 1wire, w tym do pastylek 1990A, w wiekszosci pod Bascom-a. (szukaj np. po iButton)
    co do kwarza - nie wystarczy go podlaczyc fizycznie do procesora, trzeba jeszcze ustawic odpowiednio fuse-y. szczegoly w nocie katalogowej atmela.

    pozdro,
    --
    migod
  • REKLAMA
  • #6 1884320
    Gieha
    Poziom 11  
    Posty: 29
    Dzięki działa. Jednak procek nie chce dzałać na 8 Mhz może to , wina kwarcu tak że chodzi na wewn 1Mhz .A dyiwnie podchoedye do programu bo dopiero sie ucze.
  • #7 1887077
    migod
    Poziom 21  
    Posty: 462
    Pomógł: 29
    Ocena: 8
    przestaw fusy (opis w nocie katalogowej atmela), zacznie działać na zewn. kwarcu

    pozdro,
    --
    migod

Podsumowanie tematu

✨ Problem dotyczył braku komunikacji między mikrokontrolerem Atmega8 a czujnikami temperatury DS1820 i DS1990 podłączonymi interfejsem 1-Wire, gdzie zmienna błędu err pozostawała stale równa 1. Użytkownik stosował rezystor podciągający 3,3 kΩ na linii DQ oraz zewnętrzny oscylator 8 MHz. Przyczyną problemu okazało się nieprawidłowe ustawienie fuse'ów mikrokontrolera, które domyślnie powodowały pracę na wewnętrznym oscylatorze 1 MHz, co skutkowało błędnymi czasami komunikacji z czujnikami 1-Wire. Po poprawnym skonfigurowaniu fuse'ów dla zewnętrznego kwarcu 8 MHz komunikacja z DS1820/1990 została nawiązana. Dyskusja zawierała także sugestie dotyczące testowania i debugowania programu wyświetlającego wyniki na LCD oraz przypomnienie o konieczności odpowiedniego ustawienia fuse'ów zgodnie z dokumentacją Atmegi.
Podsumowanie wygenerowane przez AI na podstawie treści dyskusji.
REKLAMA