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

Jak odczytać dane z 2xDS18B20 na ATmega 8 w C? Szukam procedur i wskazówek

czech_w 05 Maj 2008 21:07 2477 6
REKLAMA
  • #1 5109195
    czech_w
    Poziom 13  
    Posty: 80
    Pomógł: 1
    Ocena: 12
    Witam :)

    Tak na wstępie brakuje mi działu dla piszących w C i ASM (będzie łatwiej coś znaleźć np szukam 2 DS18B20 i 99.9% wyników to bascom).

    Potrzebuję odczytać dane z co najmniej 2szt. DS18B20, problem polega na tym że jak adaptuje kod do odczytu 1 DS (z jednego portu) na odczyt 2 DS (z dwóch portów) to zamotałem się w funkcje zmieniające nr portu DQ (Po co pisać 2 razy te same procedury dla dwóch DS) ; więc wpadłem na pomysł by czytać DS'y z jednego portu wiem że mam odczytać id wpisać w eeprom potem je przypisać do nazw sczytać temperatury i dalej bla ba... wszystkie przykłady są w bascomie (wiem że łatwiej ale się chcę czegoś nauczyć). W c jakoś sobie radze ale to mnie przerasta. Ma może ktoś jakieś procedury do odczytu temperatury z 2-3 DS. Marzę o odczycie z zasilaniem na pasożyta ale to nie moje progi.
    PS. Wiem co mam zrobić tylko nie wiem jak, C na AVR to moje początki.

    A i nie piszcie że było wiem że było raz znalazłem ( miało nawet sprawdzanie CRC) tylko jakoś nie mogę namierzyć tym razem.
  • REKLAMA
  • REKLAMA
  • #3 5173413
    czech_w
    Poziom 13  
    Posty: 80
    Pomógł: 1
    Ocena: 12
    zumek napisał:


    Dzięki zumek już chyba łapie tylko popraw mnie jeśli się mylę w linku co mi podałeś LeChuck napisał coś takiego "następnie w każdej pętli while(1) wykonuje ...." to na mój gust pętla while(1) jest nieskończona to jak on chce wykonać ją 2 razy??. Po mojemu ten kod powinien wykonywać się w jednej pętli (może nie dokładnie ten kod). Dobrze myślę czy nie??
  • REKLAMA
  • #4 5182913
    timtom
    Poziom 10  
    Posty: 15
    Witam,
    Mam pytanie zwiazane z podlaczeniem czujnikow do 1 portu. Nie jestem pewien czy dobrze zrozumiualem DataSheeta, takze narysowalem 2 schematy jak sobie wyobrazam ze on powinien byc podlaczony. Prosze powiedziec ktora idea podlaczenia czujnikow jest dobra:

    Pierwszy schemat:
    Jak odczytać dane z 2xDS18B20 na ATmega 8 w C? Szukam procedur i wskazówek

    Drugi schemat:
    Jak odczytać dane z 2xDS18B20 na ATmega 8 w C? Szukam procedur i wskazówek


    Dziekuje :)
  • REKLAMA
  • #5 5183862
    czech_w
    Poziom 13  
    Posty: 80
    Pomógł: 1
    Ocena: 12
    timtom napisał:
    Witam,
    Mam pytanie zwiazane z podlaczeniem czujnikow do 1 portu. Nie jestem pewien czy dobrze zrozumiualem DataSheeta, takze narysowalem 2 schematy jak sobie wyobrazam ze on powinien byc podlaczony. Prosze powiedziec ktora idea podlaczenia czujnikow jest dobra:

    Pierwszy schemat:
    Jak odczytać dane z 2xDS18B20 na ATmega 8 w C? Szukam procedur i wskazówek

    Drugi schemat:
    Jak odczytać dane z 2xDS18B20 na ATmega 8 w C? Szukam procedur i wskazówek


    Dziekuje :)


    Ten pierwszy sposób bo podciągasz linię a nie konkretny czujnik (standardowo ten rezystor to 4,7kΩ). Drugi sposób w przypadku podłączenia do 2 różnych portów(na rys. jest do jednego).
  • #6 5187357
    avr_elektronik
    Poziom 14  
    Posty: 171
    Pomógł: 1
    Ocena: 1
    moim zdaniem drugi schemat jest zły bo rezystor podciągający będzie miał 2k5 Ω
  • #7 5192613
    czech_w
    Poziom 13  
    Posty: 80
    Pomógł: 1
    Ocena: 12
    avr_elektronik napisał:
    moim zdaniem drugi schemat jest zły bo rezystor podciągający będzie miał 2k5 Ω


    Tak jak pisałem pierwszy jest ok w przypadku odczytu kilku czujników na jednym porcie µC a drugi też ok pod warunkiem że linie DQ z każdego czujnika będą podłączona do dwóch portów µC .

    PS.
    Odnośnie pytania to ten pierwszy jest dobry.

Podsumowanie tematu

LABEL_AI_GENERATED
Dyskusja dotyczy odczytu temperatury z co najmniej dwóch czujników DS18B20 podłączonych do mikrokontrolera ATmega8 programowanego w języku C. Autor poszukuje procedur i wskazówek do obsługi wielu czujników na jednym lub dwóch portach, unikając powielania kodu. Wskazano, że najlepszym rozwiązaniem jest podłączenie kilku DS18B20 do jednej linii danych (portu) z rezystorem podciągającym 4,7 kΩ, co umożliwia odczyt wielu czujników na jednej magistrali 1-Wire. Dyskutowano również o poprawności schematów podłączenia czujników, gdzie pierwszy schemat z jednym rezystorem podciągającym na linię danych jest prawidłowy dla wielu czujników na jednym porcie, natomiast drugi schemat, z rezystorem podciągającym na każdym czujniku i podłączeniem do różnych portów, jest mniej optymalny i może powodować błędy (rezystancja podciągająca może się sumować). Poruszono także kwestie implementacji pętli w kodzie C oraz zarządzania identyfikatorami czujników i ich zapisem w EEPROM. Autor otrzymał link do przykładowego rozwiązania oraz wyjaśnienia dotyczące działania pętli while(1) w kontekście odczytu wielokrotnego. Wskazano, że odczyt z zasilaniem pasożytniczym jest możliwy, ale bardziej zaawansowany.
Podsumowanie AI na podstawie dyskusji. Może zawierać błędy.
REKLAMA