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

[ATmega8][MikroC] Błędne wyświetlanie temperatury z DS1820

elektor18 23 Gru 2012 13:41 1671 5
REKLAMA
  • #1 11687733
    elektor18
    Poziom 18  
    Witam
    Poniżej przedstawiam kod w C (gotowy przykład) jednak po jego wgraniu na mega8, wyświetla błędnie temperaturę, a mianowicie liczby z zakresu 0 do 255 po podgrzaniu przechodzi przez 255 i liczy od zera. Gdzie tu tkwi problem?


    Kod: text
    Zaloguj się, aby zobaczyć kod

    Proszę na przyszłość używać tagu [syntax=C] do wklejania kodu w C...[/syntax].
    Poprawiłem to oraz tytuł na bardziej oddający istotę zagadnienia (słowo "problem" niezbyt dobrze świadczy o zasobie znanych słów), LordBlick
  • REKLAMA
  • #2 11688044
    BlueDraco
    Specjalista - Mikrokontrolery
    Kilka problemów:
    - przy czytaniu temperatury pierwszy odczytany bajt jest mniej znaczącym, czyli czytanie trzeba zmienić na:
    Kod: C / C++
    Zaloguj się, aby zobaczyć kod

    - o ile pamiętam, temeperatura w DS18B20 jest wyrażona w jednostkach 1/16 stopnia. Aby uzyskać temperaturę w stopniach, trzeba ją przesunąć w prawo o 4. Przed przesuwaniem warto dodać 7, by uzyskać zaokrąglenie zamiast obcięcia. Prawdopodobnie RES_SHIFT powinno mieć wartość 4.
    - Twoje stałe niepotrzebnie zajmują miejsce w pamięci RAM (i ROM też zresztą). Zastąp deklaracje definicjami preprocesora (tylko wcześniej zweryfikuj ich wartości, bo oabwiam się, że są one błędne):
    Kod: C / C++
    Zaloguj się, aby zobaczyć kod
  • REKLAMA
  • #3 11688486
    ZbeeGin
    Poziom 39  
    elektor18 napisał:
    Gdzie tu tkwi problem?

    Zrewiduj czasy przy wydawaniu poleceń czujnikowi i jego odczycie. Zajrzyj do noty katalogowej i sprawdź w jakim czasie czujnik wykonuje CONVERT_T, i jakie są zalecenia przy wykonywaniu tego polecenia (strona 16).
  • REKLAMA
  • #4 11689299
    elektor18
    Poziom 18  
    To niestety nie pomogło :/ No nic, będę szukał dalej. W razie ktoś by miał pomysł to proszę o podpowiedź
  • REKLAMA
  • #5 11689581
    BlueDraco
    Specjalista - Mikrokontrolery
    Czegoś nie rozumiem - miałeś błąd w czytaniu temperatury, poprawiłeś odczyt i jest to samo?
  • #6 11691056
    elektor18
    Poziom 18  
    Nie to samo, teraz się wynik nie wyświetla
REKLAMA