Witam. Dawno nie pisałem w BASCOM-ie a zdecydowałem się na niego bo myślałem, że tak będzie szybciej i prościej. Nic bardziej błędnego. Do napisania był dwu-trybowy program uśredniający do nieco przerobionego radiometru SOSNA. Ale nie w tym rzecz. O ile kod który zamieszczam powstał w miarę szybko o tyle błędu nie potrafię wyeliminować 3 dzień. Po krótce...program ma co 4 sekundy uzupełniać bufor kołowy (tablica 10 lub 100 elementowa w zależności od trybu) wykonywać odpowiednie przeliczenia i zapisywać do zatrzasków CD4056 sterujących wyświetlacz LCD 4 znakowy. W pewnym etapie programu tryb pierwszy (10 elementów) działał poprawnie, pod dopisaniu dalszej części zaczął szwankować. Docelowo licznik ma zliczać impulsy pochodzące z 2 tub Geigera, do testów jest podłączony do generatora na DDS-ie. Do częstotliwości 63Hz wynik jest obliczany prawidłowo, stabilizuje się na około 12,60. Powyżej od 64Hz w górę....magia....wynik zaczyna rosnąć, zamiast ustabilizować się na poziomie ~12,80 wskakuje 12,80, 19,60 po kolejnych 4 sekundach ~25 po następnych i tak rośnie do 99,99 kiedy to buzer sygnalizuje przepełnienie. Myślałem nad konfliktem zmiennych ale Word dla tablicy i Long dla wyniku są wystarczające. Ich zmiany nic nie poprawiają. Wyłączałem też przerwania na czas obliczeń, bez skutku. Co mogę od razu nasunąć....wynik psuje się gdy Timer1 ma "użyteczny" wynik na dwóch bajtach (64imp/s * 4s > 255), póki wynik można odczytać z jednego bajtu wszystko jest ok, nie wiem czy to ma jakiś związek. Proszę o porady.
Zamieszczam cały kod programu:
[/code]
Zamieszczam cały kod programu:
Kod: text
