Strona 1 z 1

Opóźnienie

: 03 sty 2011 14:32
autor: kolarz20
Witam

Mam zagwostkę. W moim programie potrzebuję wykonać opóźnienie czasowe dopóki jest wartuść true tzn. mam na wejściu typ bolean i próbuje zrobić opóźnienie które po kilku sekundach wartościu true na wejściu poda wartość true na wyjście. Problem moim jest to że nie mogę użyć struktury while bo w między czasie wykonywane są inne struktury i po jej użyciu program się zawiesza. Próbowałem użyć struktury case z elementem "elapsed time" jak w załączniku ale mam problem bo program działa tylko za 1 razem. Licznik nie chce mi się resetować. Zależy mi na tym aby przy każdej zmianie case loop elapsed time się resetował. Czy mogę liczyć na jakiś wskazówki z waszej strony?

Pozdrawiam

Obrazek

Re: Opóźnienie

: 03 sty 2011 15:15
autor: Labqu
Licznik będzie się resetował, jeżeli do wejścia Autoreset będzie podpięta wartość TRUE.

Dlaczego nie możesz użyć struktury while ? Możesz mieć dwie lub więcej "niezależnych" pętli while.

Re: Opóźnienie

: 03 sty 2011 15:23
autor: kolarz20
Niestety po podpięciu do wejścia autoreset nic się nie zmienia nadal licznik się nie resetuje. Cały program znajduje się już w jednej pętli while gdzie poza nią jest warunek reset=true. Problem w moim przypadku z pętlami while jest następujący: jeżeli wykorzystywana była by pętla while wszystko poza nią nie działa, dopiero jak zatrzymam ją całość ruszy, a poza tym mam dosyć mocno obciążony procesor i obawiam się że jak użyję w tym przypadku jeszcze jednej to się zapcha.

Działanie wygląda na chwilę obecną w ten sposób, że licznik resetuje się po zmianie głównej struktury case której na obrazku nie widać. Licznik po zmianie struktury case na false zatrzymuje się i po zmianie na true startuje na nowo od wartości ostatno zapamiętanej.

Re: Opóźnienie

: 03 sty 2011 15:31
autor: Labqu
Pętle zapychają Ci całego procka, ponieważ wykonują się z maksymalną możliwą częstotliwością. Ogranicz ją np. do 1 Hz i od razu odczujesz różnicę :)

Przeanalizuj sobie załączony przykład. Jest to VI z mojego projektu, w którym jest zastosowane opóźnienie czasowe, wykorzystujące właśnie Time Elapsed.

Re: Opóźnienie

: 03 sty 2011 16:36
autor: kolarz20
Dzięki za odpowiedzi, lecz niestety nic. Podłączone mam dobrze Time Elapsed. Niestety pętle while mam już ograniczone a mocniej nie mogę gdyż mam do nich podłączony serwo silnik który na na bardzie spowolnionych pętlach nie działa za szybko :P. Mój problem polega na resetowaniu po każdym zmianie z true na false i na odwrót. Szukam rozwiązania jak na jeden cykl wprowadzić true a na resztę false tak aby na samym początku działania był reset (nie zależnie czy wcześniej zegar skończył odliczać czy nie).

Pozdrawiam