Cytuj:
Tytuł wiadomości: do sterowania silnikami
Od: kaazik89
Wysłano: dzisiaj, o 00:10
Do: majster
Witam,
Sorry ze dopiero teraz sie odzywam ale od piątku nie miałem dostepu do komputera...
pisze odnośnie kodu programu z tego tematu -> topic3868-30.html
Jedyne co udało mi się zrobić to ustawić działanie dla jednego przycisku.
Kod wygląda tak:
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.
Teraz mam kilka pytań...
1) Dlaczego wykonane to jest na timerach?? czy jeden timer odpowiada ze jeden przycisk?? Spełniają one role przełącznika między sekwencjami?
2) Wszystkie sekwencje przypisane są do jednego przycisku, w którym miejscu zdefiniować teraz sekwencje do drugiego przycisku??
3) odnosnie sekcji opisanej przez Ciebie "funkcje klawiszy" - czy rozwiązanie które ja zaproponowałem nie jest poprawne ?
czyli :
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.
4) i czy ogólnie to co ja dodałem do twojego kodu jest propawne? tzn... po zaprogramowaniu procesora działa ale czy zapis sam w sobie jest poprawny?
Opowiadam tutaj by pozostało to dla potomnych. Jeżeli walnąłem gdzieś babola to chłopaki na pewno mnie zaraz wyprostują.Więc tak na pierwszy rzut oka nie przeczytałeś mojego kodu ani opisów ponieważ robisz wielką głupotę że przy timerach wykorzystujesz delay.
1. Jest zrobione na timerach aby cały program działał nie blokująco ... w twoim wykonaniu praca na delay blokuje mikroklocka a ten nie może wykonać innej opcji (programu) puki nie zakończy pierwszego.
Tutaj że tak powiem ustawiliśmy wcześniej Timer sprzętowy na jeden "tik" to 1ms
A timer programowy (zadeklarowałem dwa aż prosi się użyć drugiego albo dodać kolejne) program = 1 a nie 0 ...
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.
Timer programowy liczy tiki od 1000 do 0 i na nowo od 1000 do 0 daje ci to 1 sek. więc po co delay dodaj timer2 zadelkarowany już wcześniej i masz np 5 sek o tak:
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.
Teraz gdy program 4 będzie na 1 to sekwencja będzie działała co 5 sekund.
Natomiast gdy program 1 będzie na 1 to sekwencja 1 będzie działała co 1 sekundę.
Więc po co ci delaye w kodzie ? po co walić z pały mikroklocka ? i go ogłuszać jak może działać płynnie i nie blokująco ?
2.Ależ jak pisałem wyżej nie czytałeś w ogóle kodu ...
tutaj masz sprawdzanie wciśniętego klawisza:
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.
co oznacza że pętla for będzie sprawdzała 4 razy czy jest wciśnięty klawisz w twoim wypadku 2 klawisze i 2 krańcówki które też są wejściami więc traktuje się je jako przycisk.
Natomiast tutaj masz funkcję klawiszy na krótkie i długie przytrzymanie (wciśnięcie, zadziałanie) co u ciebie odpowiada to temu samemu programowi na krótkie i długie wciśnięcie:
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.
Jak widzisz masz 4 przyciski np przycisk polowa ma program1 a kolejny program1 to długie wciśnięcie klawisza.
3. Jest poprawne ale blokujące a nie tędy droga.
4. Nie jest poprawne po co do timerów dodajesz delay, i wg mnie nie ma prawa działać poprawnie więc sądzę że nie wpompowałeś programu do klocka a jedziesz na sposób gotowego rozwiązanie bez trenowania i próbowania własnymi siłami. Też często pytam chłopaków co i jak dlaczego tak a nie inaczej ale mam już jakieś swoje założenia swój kod który ma bubla i wtedy mnie prostują ty nawet nie starasz się przeczytać tego co jest w opisach kodu.
Przeczytaj link który ci podałem wcześniej to zrozumiesz .... te działanie ... nie czytaj tylko pierwszych 3 postów przeczytaj cały temat a będziesz wiedział o co chodzi.
Tutaj też nie patrz tylko na kod przeczytaj go krok po kroku a zapewne zrozumiesz ...
Polecam książkę mirka która również mnie dużo pomaga.