ATNEL tech-forum https://forum.atnel.pl/ |
|
Pętla while - warunek https://forum.atnel.pl/topic21880.html |
Strona 1 z 1 |
Autor: | tokirium [ 16 sty 2019, o 01:03 ] |
Tytuł: | Pętla while - warunek |
Mam małą zagwozdkę z funkcją while, program nie działa mi tak jak bym tego oczekiwał i trochę się pogubiłem, bo nie jestem pewien gdzie jest błąd. Jedna pętla while ma się zakończyć, gdy na pinach PA0 i PA1 mikrokontrolera Attiny2313 będzie stan niski, natomiast druga odwrotnie - gdy na obu pinach będzie stan wysoki. Wykombinowałem coś takiego, chyba coś za bardzo namieszałem? Oczywiście to nie cały program, tylko wycinki kodu. Te warunki będą użyte w funkcjach do sterowania mechanizmem wysuwu tacki - wysuwanie/wsuwanie do osiągnięcia skrajnego położenia. |
Autor: | andrews [ 16 sty 2019, o 06:45 ] |
Tytuł: | Re: Pętla while - warunek |
język c Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod. Poczytaj o algebrze Boola, o upraszczaniu funkcji boolowskich (w szczególności prawo de Morgana). |
Autor: | Daro69 [ 16 sty 2019, o 18:18 ] |
Tytuł: | Re: Pętla while - warunek |
albo- skoro masz wybrane PA0 i PA1, to może. język c Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod. może? |
Autor: | andrews [ 16 sty 2019, o 19:37 ] |
Tytuł: | Re: Pętla while - warunek |
Daro69 napisał(a): albo- skoro masz wybrane PA0 i PA1, to może. język c Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod. może? Tak też zapewne zadziała. Zwróć tylko uwagę, że w przypadku konieczności zmiany portu lub pinu w dalszej fazie programu trzeba będzie pamiętać, żeby odnaleźć ten fragment kodu i ręcznie zmienić liczbę 3 lub w ogóle zmienić ten fragment kodu w przypadku, gdy trzeba przenieść się z przyciskiem na inny port. A co jeśli trzeba by było (przy bardziej rozbudowanym programie) zmienić to w kilku miejscach? A jeśli wrócisz do modyfikacji kodu po dłuższej przerwie? Pewnie już nie będziesz pamiętał, gdzie właściwie kod trzeba będzie zmienić. Lepszym rozwiązaniem byłoby przykładowo: język c Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod. Wtedy w razie potrzeby wystarczy zmienić PINA np. na PINB i/lub zmienić numer bitu, a kod sam się zmodyfikuje. Ewentualnie (przy założeniu, że piny będą na pewno na tym samym porcie) rozwiązanie kolegi Daro69: język c Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod. Być może wygląda to nieco bardziej skomplikowanie i trzeba się więcej napisać (ewentualnie nazwy makr można skrócić), ale jeśli w miarę rozwoju projektu trzeba będzie coś zmienić, to taki sposób pisania naprawdę procentuje. Oczywiście nie ma takiego przymusu, będzie działać też z wpisaną "na sztywno" wartością 3, ale styl jaki przedstawiłem to taka "dobra praktyka". I proszę nie traktować moich uwag jako złośliwość czy wymądrzanie się Moim zdaniem dobrze jest od początku uczyć się dobrych nawyków |
Autor: | Daro69 [ 16 sty 2019, o 20:01 ] |
Tytuł: | Re: Pętla while - warunek |
Tak, masz rację @andrews. Poprawiłem w między czasie logikę w drugim "while", bo niepotrzebnie umieściłem tam '!'. Nie ma adnotacji "edytowano", bo skorygowałem to zanim umieściłeś post. (było - póki oba są w stanie niskim !( PINA & 3), zamiast póki nie są oba w stanie niskim ( PINA & 3).) sorka |
Autor: | tokirium [ 17 sty 2019, o 19:55 ] |
Tytuł: | Re: Pętla while - warunek |
Też przychylam się do pierwszej propozycji, bo dla mnie jest bardziej przejrzysta, ale wszystkim dziękuję za pomoc. Od razu zadziałało tak jak powinno |
Strona 1 z 1 | Strefa czasowa: UTC + 1 |
Powered by phpBB® Forum Software © phpBB Group https://www.phpbb.com/ |