Witam.
Chciałbym się zapytać czy można przerwać operację odliczania czasu w języku Bascom.
Chcę wysterować bezprzewodowo(pod RC5) "sterownik" z możliwością ręcznego jak i automatycznego wyłączenia urządzenie po X czasu. Jednak problem pojawia się gdy chcę zresetować sygnał odliczania(WAIT) gdyż nie wiem gdzie i jak można go przerwać.
Takie ustawienie resetu portu jak w CASE 13 nic nie daje, gdyż program wykonuje liczenie. NA googlach czy forum po wpisaniu WAIT (ETC) pojawiają się głównie same programy, chyba że jakoś źle formuję pytania i nie mogę znaleźć odpowiedzi na to pytanie.
Opisy uważam za zbędne, gdyż jest to bardzo prosty program, ale od czegoś się zaczyna.
Jedyne co mi przychodzi na myśl to "twardy" reset Atmegi, ale wolałbym to jakoś zrobić z pilota.
Case 7:
Set Portd.7
Case 9:
Reset Portd.7
Case 11:
Set Portd.0
Wait 60
Reset Portd.0
Case 13 :
Reset Portd.0
Case 15:
Set Portd.0
Wait 600
Reset Portd.0
Pozdrawiam Artur
Odp. Przerwanie operacji Wait
Lepiej byłoby uruchomić jakiś Timer ale jak chcesz to możesz przyjrzeć się takiemu rozwiązaniu.
W Case 15 możesz włączyć lub wylączyć od razu port. Po włączeniu opcję automatycznego wyłączenia po czasie przejmuje zmienna Odmierz. W krótszych odstępach czasu odejmuje co sekunde 1.
Może nie idealny ale co sekunde masz okienko ;) Do wartości Word możesz załadowac 65535, więc możesz do Odmierz załadować np. 60000 i w odmierzaniu ustawić Waitms 10 ;) co przyspieszy petle.
Tu masz przykład przerobionego projektu z tej strony. Dodałem Timer0 który przy 16MHz będzie tam tykał co 10ms więc potrzebny był dzielnik. Gdybyś nie używał do niczego Timer1 to możesz go odkomentować, ale pamietaj że tam już przerwanie jest co 1 sekunde i dzielnik w obsludze przerwania jest niepotrzebny.
Ważna uwaga Tu na stronie jest automatyczne zawijanie tekstu tak by pasował do rozdzielczości w której oglądasz. Konfiguracja Timerów w Bascom musi być w jednej linii do wyrażenia "Clear Timer = 1" włącznie.
BARTek
Moja strona