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.
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++