na dole tego posta jest edit
kayron pisze:Tzn. nie bardzo wiem po co chcesz na siłę sprawdzać czy napięcie na ADC ci się zmieniło ?
nie chcę bez powodu wywoływać procedury jakieadc (w programie docelowym inaczej będzie się nazywało).
dajmy na to że cały czas na lcd mam coś (nie wiem co, cokolwiek).
jeśli nie zmieni się położenie potencjometru czyli nie zmieni się wartość adc to nie będę musiał wywoływać podprogramu jakieadc, ponieważ w tymże podprogramie zapewne będzie czyszczenie wyświetlacza i wyświetlanie zupełnie innych wartości niż pętli głównej całego softu. do tego mi potrzebne sprawdzanie czy wartość napięcia zmieniła się.
po części rozgryzłem ten kłopot. pisząc:
Kod: Zaznacz cały
gorna_histereza = x + 10
dolna_histereza = x - 10
x = 0
x = getadc(0)
if x > gorna_histereza or x < dolna_histereza then
gosub jakieadc
end if
czyli po prostu zmieniając położenie uzyskiwania histerez i do tego dając w podprogramie jakieadc opóźnienie choćby 1s (wait 1) uzyskam to o co mi chodziło.
kayron pisze:PS. Jak znajdę jutro trochę czasu to spróbuję ci to napisać w BASCOM, ale podaj częstotliwość CPU jaką to chcesz taktować. Zakładam ze 8MHz bo ten RC5 chcesz.
możesz coś nakreślić, a o do częstotliwości to zwykle korzystam właśnie z 8MHz i tak zamierzam zrobić też tutaj.
bardzo powolne zmiany na wejściu adc nie wywołują skoku do podprogramu jakieadc, ale wystarczy przekręcić troszeczkę szybciej potencjometrem i natychmiast program skacze do ww etykiety.
zauważyłem że wielkość stałej jaką odejmuje lub dodaję by uzyskać obie histerezy ma wpływ na to jak szybko mam obrócić potencjometr by zmiany przyniosły skok do etykiety.
EDIT:
optymalnym (chyba) dla mnie okazało się napisanie czegoś takiego:
konfiguracja:
pętla główna:
Kod: Zaznacz cały
gorna_histereza = x + stala_do_adc
dolna_histereza = x - stala_do_adc
x = 0
x = getadc(0)
if x > gorna_histereza or x < dolna_histereza then
gosub jakieadc
end if
podprogram jakieadc:
i dalej to co chcę wyświetlać w tymże podprogramie