Elektroda.pl
Elektroda.pl
X
Proszę, dodaj wyjątek www.elektroda.pl do Adblock.
Dzięki temu, że oglądasz reklamy, wspierasz portal i użytkowników.

Atmega8 - Błąd w kodzie, lub podłączeniu, potrzebna rada.

Lesiomariu 10 Paź 2014 20:13 654 6
  • #1 10 Paź 2014 20:13
    Lesiomariu
    Poziom 9  

    Witam, w ramach nauki programowania uC, znalazłem kod pozwalający na wyświetlanie temperatury z DS18B20, na wyświetlaczu 1602A. Jako że na samym przeklejeniu kodu pewnie zbyt wiele bym się nie nauczył, użyłem nieco innego termometru(dokładność nie 0,1, a 0,5*C), zmieniłem układ w jakim ma się wszystko wyświetlać, zastąpiłem float przez int zmieniane na str, oraz dodałem instrukcję warunkową if mającą w zamiarze w zależności od temperatury wyświetlać "HOT" lub "LOW" , a także gasić/zapalać diodę.

    Próbowałem podłączać leda na wszystkie możliwe sposoby...
    -Anoda do masy, katoda do PB0.
    -Anoda do +5, katoda do PB0 - jedyna sytuacja gdy się zapaliła.
    -Katoda do masy, anoda do PB0.
    -Katoda do +5, anoda do PB0.

    Problem tkwi w tym że dioda świeci się niezależnie od wskazań temperatury. Równie dobrze mogą ją wetknąć np. do nieużywanej PD7...

    Poniżej podaję kod, pliki ds18b20.c, hd44780.c, ds18b20.h, hd44780.h,

    Kod: c
    Zaloguj się, aby zobaczyć kod
    [/code]

    0 6
  • Pomocny post
    #2 10 Paź 2014 20:24
    witoldwitoldowicz
    Poziom 28  

    Czemu masz ifa w ifie.

    0
  • #3 10 Paź 2014 20:29
    Lesiomariu
    Poziom 9  

    W moim wyobrażeniu ma to działać następująco:

    Kod: c
    Zaloguj się, aby zobaczyć kod

    Wcześniej wartoś pierwszego IF była 240, a drugie 270, lecz do czasu wyjaśnienia dlaczego LED się nie świeci jakbym tego oczekiwał, ustawiłem i tu i tu 265.

    0
  • Pomocny post
    #4 10 Paź 2014 20:37
    witoldwitoldowicz
    Poziom 28  

    { PORTB |= _BV(1); } Nigdy sie nie wykona. sformatuj kod( wciecia,klamry) to bedziesz widział dlaczego( pierwszy if juz jest >256).

    0
  • #5 10 Paź 2014 20:47
    Lesiomariu
    Poziom 9  

    Zmieniłem kod tak by nie było if, w if.

    Kod: c
    Zaloguj się, aby zobaczyć kod

    LOW i HOT bez problemu się zmienia. Dioda się świeci ciągle, lub wcale w zależności od tego jak ją podłącze. Nie reaguje na PB0.

    0
  • Pomocny post
    #6 10 Paź 2014 20:54
    witoldwitoldowicz
    Poziom 28  

    Niewiem co to BV ale czemu raz jest (0) a raz (1)?

    0
  • #7 10 Paź 2014 21:05
    Lesiomariu
    Poziom 9  

    To był właśnie problem... Gdy dałem dwa razy (0), wszystko zaczeło działać. Nie wiem czemu popełniłem tak oczywisty błąd, może dlatego że napisałem kod 2 tyg temu i czekałem na programator, tak czy siak bardzo dziękuję witoldwitoldowicz.

    0