Witam.
Dostałem zadanie napisania termometru(termostatu) na LEDowych wyświetlaczach.
Ot po prostu rodzinie się nie odmawia. Ale mniejsza z tym...
Zadanie raczej banalne, odczyt temperatury z Dallasa i wyświetlenie jej na LEDach. Wprawdzie dochodzi tam jeszcze opcja termostatu i ustawień alarmu i itd. Ale to nie problem działa dobrze.
Utknąłem na jednej sprawie, a raczej nie wiem dlaczego tak się dzieje. I nie wiem czy ja coś robię nie tak, czy po prostu Bascom tak ma...
W chwili odczytu z 1wire multipleksowanie wyświetlaczy ma czkawkę - objawia się to mignięciem wyświetlaczy.
Nie jest to duże utrudnienie, po prostu mignięcie wyświetlaczy, ale jak by się dało wyeliminować ten efekt to było by fajnie.
Procedury przerwań nie są jakieś wyrafinowane, albo super rozbudowane. Timer0 generuje przerwanie dla multipleksowania LEDÓW, a Timer1 generuje przerwanie do odczytu temperatury.
Gdy z procedury odczytu temperatury wywalę wszystkie polecenia odczytu
1wire i do zmiennych przypiszę na sztywno wartości, migotania nie ma. Więc mniemam iż problemem jest tu sam odczyt z
1wire.
Główne bloki programu wyglądają tak:
- konfiguracja
1wire i zegarów:
język basic4gl
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.
- przerwanie odczytu dallasa:
język basic4gl
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.
- przerwanie multipleksowania wyświetlaczy:
język basic4gl
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.
Pętla główna to oczekiwanie na przyciski i cykliczny skoki do podprocedur podziału temperatury i komunikatów na poszczególne składowe znaków, porównanie temperatury, alarm itd. Nic ingerującego w Timery, czy przerwania.
Próbowałem obsługę Dallasa przenieść do pętli głównej, zmieniać Timery. Nic to nie daje. Gdy tylko pojawiają się instrukcje
1wire wyświetlacz zaczyna migać w chwili odczytu. Nawet jak wywalę praktyczne wszystko inne z programu.
Wiem, że pierwsze stwierdzenie to przesiąść się na "C". Ale z tym dopiero zaczynam, a sprawa jest raczej na wczoraj.
Gdy się tego nie da wyeliminować, to trudno, da się z tym żyć. Ale jest tu tyle mądrych głów że może ktoś coś będzie potrafił powiedzieć co partolę...