Witam, chciałbym zgłosić problem i prawdopodobną przycznynę problemu występującą w programie Pomocnika lampki nocnej. Układ wykonałem zgodnie z opisem w EdW 06/2008. Program do kontrolera pobrałem ze strony
https://elportal.pl/ftp_05/200806avt2868.zip. Układ zaprogramowałem za pomocą Bascoma i płytki z kitu AVT 3500. Układ uruchomił się bez problemu i działa prawidłowo na czasach ściemniania mniejszych od 20 min i 28 s. Jeżeli czas jest większy okazuje się, że po upływie 20min i 28 s od zaczęcia ściemniania żarówki, żarówka zapala się z pełnym blaskiem i rozpoczyna sie ponownie proces ściemniana do czasu wielokrotności 20min i 28s czyli około 40min i 56s. Po przekroczeniu tej granicy żarówka znów się zapala i cały proces znów sie powtarza aż do 45 min kiedy to zgodnie z oczekiwaniami następuje wygaszenie żarówki. Aby znaleźć przyczynę postanowiłem zanalizowć program i okazało się, że najprawdopodobniejszą przyczyną problemu jest przepełnienie w obliczeniu czasu opóźnienia zapłonu triaka. Jest tam mianowicie takie równianie
Kod: Zaznacz cały
temp = (((T - t_normal) * (L_ZERO - L_OFFSET)) / t_dimmer) + L_OFFSET
przepełninie występuje przy obliczaniu nawiasu
który jest prowadzony na typie unsigned long int więc wynik na żadnym etapie nie może być większy od 2^32, różnica
jest stała i wynosi 35000, jeżeli założyć
to przepełnienie wystąpi dla
. T jest to czas w 10ms co daje około 20 min i 28 s.
Zastanawiam się jakby rozwiązać problem. Narazie nie mam doświadczenia w kompilowaniu programów w C więc nie moge poeksperymentować. Jakby ktoś podesłał mi info jak szybko można zacząć kompilować w C programy byłbym wdzięczny i spróbował rozwiązać problem.