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

Wyświetlanie temperatury z DS18B20 na wyświetlaczu 7-segmentowym 4-cyfrowym

Soberro 05 Lip 2017 13:55 1692 4
REKLAMA
  • #1 16569866
    Soberro
    Poziom 7  
    Witam.
    Programuje uC AtTiny48. Czujnik DS18B20 podpiąłem na trzech kablach i odczyt jest na pewno dobry. Problem polega na wyświetlaniu wyniku. Dokładnie chodzi o moment wywołania funkcji pomiaru temperatury. W czasie jej wykonywania na ekranie wyświetlana wartość znika i natychmiast się pojawia. Jest to spowodowane opóźnieniami które muszą się wykonać w czasie pomiaru. Funkcje wywołuję w przerwaniu i właśnie to jest powodem "mignięcia". Problemu tego mignięcia nie było gdy funkcje pomiaru wywoływałem w pętli nieskończonej, lecz powodowało to błąd wyświetlania. Na zmianę z odczytaną temperaturą pojawiały się różne wartości takie jak zera często 85 lub nie wyświetlało się nic. Ciekawym faktem było to że gdy wywoływałem funkcje pomiaru temperatury w głównej pętli to te różne wartości zmieniały się w czasie innym niż miał się dokonywać pomiar. Głowię się nad tym już długo i nie daje mi to spać więc postanowiłem zwrócić się do was. Jest jakiś sposób żeby funkcja wywoływała się w tle lub jakoś zastąpić delay na przykład counterem z timera?
    W programie jest też kod do zegarka od którego zacząłem pracę.
    Dołączam kod w C z przypadkiem kiedy wywołuje funkcje w przerwaniu.

    Kod: C / C++
    Zaloguj się, aby zobaczyć kod
  • REKLAMA
  • Pomocny post
    #2 16570064
    BlueDraco
    Specjalista - Mikrokontrolery
    Tu potrzebna jest zmiana koncepcji rozwiązania. Zacznij od skrócenia przerwania obsługi wyświetlacza do jakichś max. 10..12 linii. Co sekundę w obsłudze wyświetlacza inicjuj start pomiaru temperatury, a po np. 800 ms inicjuj odczyt temperatury z czujnika. Całą obsługę DS18B20 zrób w postaci automatu w przerwaniu drugiego timera. Wtedy obsługa DS nie będzie wprowadzać żadnych opóźnień.
  • REKLAMA
  • Pomocny post
    #3 16575510
    Konto nie istnieje
    Konto nie istnieje  
  • REKLAMA
  • #5 16594254
    Soberro
    Poziom 7  
    Dziękuję za pomoc. Problem rozwiązany. Błędy były powodowane przerwaniami obsługi wyświetlacza. Po kilku zasugerowanych modyfikacjach wszystko działa bez zarzutu.
    Pozdrawiam,
    Łukasz
REKLAMA