Elektroda.pl
Elektroda.pl
X

Search our partners

Find the latest content on electronic components. Datasheets.com
Elektroda.pl
Please add exception to AdBlock for elektroda.pl.
If you watch the ads, you support portal and users.

Termometr Atmega8, DS18B20. Brak wskazań temperatury na wyświetlaczu 2x16 LCD

fotoraj 17 Mar 2013 16:18 2682 4
  • #1
    fotoraj
    Level 11  
    To są moje pierwsze kroki z mikrokontrolerami. Uczę się i próbuję uruchomić już kolejny program ze strony: http://hobby.abxyz.bplaced.net/index.php?pid=4&aid=8
    Przykład trzeci - termometr cyfrowy.

    Wszystko do tej pory uruchamiałem w Eclipse bez konieczności modyfikacji makefile. Działało. Teraz muszę wykonać polecenie: "Tak jak pisałem wcześniej, domyślnie funkcje printf i sprintf nie obsługują liczb zmiennopozycyjnych. Zatem trzeba też w menu "Makefile->printf() options" zaznaczyć opcję "floating point"."

    Otworzyłem plik makefile przez Mfile, a w menu brakuje rozwijanego okna:
    Termometr Atmega8, DS18B20. Brak wskazań temperatury na wyświetlaczu 2x16 LCD



    Powinno wyglądać tak:
    Termometr Atmega8, DS18B20. Brak wskazań temperatury na wyświetlaczu 2x16 LCD

    Tak to wygląda na wyświetlaczu:
    Termometr Atmega8, DS18B20. Brak wskazań temperatury na wyświetlaczu 2x16 LCD

    DS18B20 jest podłaczony do pinu PD7 nóżka 13 w ten sposób:
    Termometr Atmega8, DS18B20. Brak wskazań temperatury na wyświetlaczu 2x16 LCD

    Proszę o pomoc. Można to zmienić w Eclipse?
    [28-30.06.2022, targi] PowerUP EXPO 2022 - zasilanie w elektronice. Zarejestruj się za darmo
  • #2
    dondu
    Moderator on vacation ...
    fotoraj wrote:
    Teraz muszę wykonać polecenie: "Tak jak pisałem wcześniej, domyślnie funkcje printf i sprintf nie obsługują liczb zmiennopozycyjnych. Zatem trzeba też w menu "Makefile->printf() options" zaznaczyć opcję "floating point"."

    ???

    Do tak prostych obliczeń nie potrzeba używać liczb zmiennoprzecinkowych:
    http://mikrokontrolery.blogspot.com/2011/04/temperatura-wyswietlacz-konwersja.html
    i nagle program wynikowy staję się króciutki.
  • #3
    yokoon
    Level 29  
    dondu wrote:
    fotoraj wrote:
    Teraz muszę wykonać polecenie: "Tak jak pisałem wcześniej, domyślnie funkcje printf i sprintf nie obsługują liczb zmiennopozycyjnych. Zatem trzeba też w menu "Makefile->printf() options" zaznaczyć opcję "floating point"."

    ???

    Do tak prostych obliczeń nie potrzeba używać liczb zmiennoprzecinkowych:
    http://mikrokontrolery.blogspot.com/2011/04/temperatura-wyswietlacz-konwersja.html
    i nagle program wynikowy staję się króciutki.


    Odczytany pomiar = 0x0191 = 0b0000 0001 1001 0001

    Dodajemy wartości (wagi) bitów zawierających jedynkę:

    T = bit8 + bit7+ bit4 + bit0 = 16 + 8 + 1 + 0,0625 = 25,0625°C

    Który to jest bit 7 = 1 (dec 8)
  • #4
    fotoraj
    Level 11  
    Dzięki za odpowiedź. Niewiele z tego rozumiem. Co mam zrobić, żeby to zadziałało?
    Tak wygląda mój main.c:
    Code: csharp
    Log in, to see the code


    gdzie mam wkleić, zamienić kod:
    Code: csharp
    Log in, to see the code