Kanał - ATNEL tech-forum
Wszystkie działy
Najnowsze wątki



Teraz jest 19 wrz 2021, o 09:18


Strefa czasowa: UTC + 1





Utwórz nowy wątek Odpowiedz w wątku  [ Posty: 14 ] 
Autor Wiadomość
PostNapisane: 4 sie 2021, o 20:16 
Offline
Użytkownik

Dołączył(a): 03 lut 2016
Posty: 126
Pomógł: 0

Witam. Czytałem dziś na blogu Mirka artykuł o drganiu styków http://mirekk36.blogspot.com/2012/10/obsuga-klawiszy-drgania-stykow-cd2.html. Jest tam jeden taki kod
Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.

Zwolnienie przycisku ma zmieniać stan diody LED. Wybaczcie mi proszę, nie jestem w stanie zrozumieć tej pętli
Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.

Dla mnie to wygląda tak: w pierwszym ifie sprawdzam czy przycisk jest wciśnięty, jeżeli jest to
Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.
jeżeli nie jest to wychodzi program z pętli. Jeżeli jest wciśnięty i trzymany to też program wychodzi z pętli.
Ale jeżeli był wciśnięty i jest puszczony to: to jest sprawdzany drugi if ten po else. W nim warunek zwraca TRUE bo key_lock po wciśnięciu przycisku przycisku przyjął wartość 1 a skoro jest puszczony to
Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.
też daje 1, w związku z tym przechodzimy do kolejnego ifa. A w jego warunku
Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.
key_kock miał wartość 1 po wciśnięciu przycisku i dodatkowo jest preinkrementowany czyli ma wartość 2 ale po zanegowaniu ma wartość 0. I z mojego myślenia wychodzi żeby warunek był spełniony to key_kock w drugim ifie musiał by mieć wartość -1 wtedy po inkrementacji i zanegowaniu miał by wartość 1. Proszę wytłumaczcie mi jak to działa bo najwyraźniej źle myślę.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 4 sie 2021, o 23:15 
Offline
Moderator
Avatar użytkownika

Dołączył(a): 03 paź 2011
Posty: 26651
Lokalizacja: Szczecin
Pomógł: 1014

11jacekj napisał(a):
Wybaczcie mi proszę, nie jestem w stanie zrozumieć tej pętli

Spokojnie ;) wybaczamy - ale przede wszystkim TO nie jest pętla tylko WARUNEK IF ... a to spora róznica - także dla ciebie w myśleniu

11jacekj napisał(a):
Dla mnie to wygląda tak: w pierwszym ifie sprawdzam czy przycisk jest wciśnięty, jeżeli jest to

tu dobrze myślisz

11jacekj napisał(a):
jeżeli nie jest to wychodzi program z pętli.

No a tu już mieszasz sobie i plączesz że aż strach ...

z jakiej pętli wychodzi ? Z głównej pętli programu while(1) { } ... ???? zobacz jak to opisałeś i pomyśl

nie, tu nie wychodzi z żadnej pętli tylko po else - zwiększa się key o JEDEN i jednocześnie jest sprawdzane czy nie jest równe zero !++key_lock w czasie gdy key_lock ma wartość pomiędzy 1 a 255 i gdy przycisk jest już zwolniony else if( key_lock && (PINC & KEY1 ) ) {

_________________
zapraszam na blog: http://www.mirekk36.blogspot.com (mój nick Skype: mirekk36 ) [ obejrzyj Kurs EAGLE ] [ mój kanał YT TV www.youtube.com/mirekk36 ]



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 5 sie 2021, o 05:09 
Offline
Użytkownik

Dołączył(a): 03 lut 2016
Posty: 126
Pomógł: 0

Oczywiście że warunek nie pętla, nie wiem dlaczego tak napisałem. Przepraszam za to. W takim razie źle zrozumiałem ten warunek po else:
Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.

Ja to co jest w nawiasie rozumiem jako key_lock zwiększ o JEDEN i zaneguj. A z tego co Mirku piszesz powinienem to odczytać jako: "zwiększ o JEDEN i sprawdź czy jest różne od ZERA"?



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 5 sie 2021, o 08:51 
Offline
Moderator
Avatar użytkownika

Dołączył(a): 03 paź 2011
Posty: 26651
Lokalizacja: Szczecin
Pomógł: 1014

11jacekj napisał(a):
A z tego co Mirku piszesz powinienem to odczytać jako: "zwiększ o JEDEN i sprawdź czy jest różne od ZERA"?

Bo DOKŁADNIE tak jest ;) pewnie zapomniało ci się o tym jak działają dwuczłonowe operatory ++ albo -- w PRE-INKREMENTACJI albo PRE-DEKREMENTACJI ... co masz opisane w Bluebooku ... więc krótko przypomnę ale sięgnij do BB żeby więcej doczytać

Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.


Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.

w związku z powyższym chyba już widzisz, że w warunku

Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.


masz do czynienia z PRE-INKREMENTACJĄ a nie POST-INKREMENTACJĄ, a zatem NAJPIERW zmienna key_lock zostanie zwiększona o JEDEN, następnie zostanie zanegowana za pomocą wykrzyknika i dopiero to wyrażenie (ta wartość) będzie brana pod uwagę w IF()

_________________
zapraszam na blog: http://www.mirekk36.blogspot.com (mój nick Skype: mirekk36 ) [ obejrzyj Kurs EAGLE ] [ mój kanał YT TV www.youtube.com/mirekk36 ]



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 5 sie 2021, o 09:10 
Offline
Użytkownik

Dołączył(a): 03 lut 2016
Posty: 126
Pomógł: 0

mirekk36 napisał(a):
a zatem NAJPIERW zmienna key_lock zostanie zwiększona o JEDEN, następnie zostanie zanegowana za pomocą wykrzyknika i dopiero to wyrażenie (ta wartość) będzie brana pod uwagę w IF()

:| Już mi się chyba cos z głową dzieje, bo w związku z powyższym rozumiem to tak: jeżeli key_lock zostaje zwiększone o JEDEN to zawsze będzie TRUE. jeżeli w kolejnym kroku zostanie zanegowane to otrzymamy FALSE. Czyli warunek nie zostanie spełniony.
Za chwilę wyrwę sobie ostatniego włosa. Albo jestem jakiś ostatni matoł.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 5 sie 2021, o 11:16 
Offline
Moderator
Avatar użytkownika

Dołączył(a): 03 paź 2011
Posty: 26651
Lokalizacja: Szczecin
Pomógł: 1014

11jacekj napisał(a):
Za chwilę wyrwę sobie ostatniego włosa. Albo jestem jakiś ostatni matoł.

a przestań ;) czasem się człowiek zatnie i co zrobić - ja też tak mam - szczególnie teraz gdy po raz pierwszy piszę softy do ESP ;)

11jacekj napisał(a):
bo w związku z powyższym rozumiem to tak: jeżeli key_lock zostaje zwiększone o JEDEN to zawsze będzie TRUE.

Tu ci zabrakło już tylko "jednego patyczka" :lol: ... Pomyśl, key_lock będzie wciąż zwiększany o JEDEN .. i wg ciebie ZAWSZE będzie większy od zera ? ;) ... a co się stanie wg ciebie gdy już dojdzie do wartości 255 ( a PAMIĘTAJ że to zmienna 8-bitowa!) ... i zwiększy się jej wartość o JEDEN - to ILE BĘDZIE panie kochany ? no ile ?

;) .... TAK! w końcu będzie upragnione ZERO które po zanegowaniu da oczekiwane TRUE !!! ;)

_________________
zapraszam na blog: http://www.mirekk36.blogspot.com (mój nick Skype: mirekk36 ) [ obejrzyj Kurs EAGLE ] [ mój kanał YT TV www.youtube.com/mirekk36 ]



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 5 sie 2021, o 11:45 
Offline
Użytkownik

Dołączył(a): 03 lut 2016
Posty: 126
Pomógł: 0

No tak, to oczywiste, zdałem sobie sprawę przy analizowaniu tego programu że po 255 będzie 0. ale nie dopuszczałem do głowy że to o to chodzi, coś mnie przyblokowało i nie zrobiłem kolejnego kroku do przodu. Przepraszam. Mózg zamknąłem w Mrokach Średniowiecza, dziś zapomniałem logi i hasło do najważniejszego programu u mnie w pracy.
Wiem że szykujesz rewelację w ESP, może nie wiele się udzielam na forum ale czytam na bieżąco :D.
A jeszcze wtrącę pytanie o ESP. Od jakiegoś czasu chodzi za mną żeby kupić do potestowania, pobawienia się, trochę już poczytałem. Którą wersję polecił byś mi kupić, tak żeby była kompatybilna z tym co planujesz?
Obrazek ta chyba jest najbardziej wypasiona przynajmniej w wyglądu i opisu pinów ale nie wiem czy się nadaje do czegokolwiek.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 5 sie 2021, o 12:11 
Offline
Moderator
Avatar użytkownika

Dołączył(a): 03 paź 2011
Posty: 26651
Lokalizacja: Szczecin
Pomógł: 1014

11jacekj napisał(a):
Którą wersję polecił byś mi kupić, tak żeby była kompatybilna z tym co planujesz?


Proponuję przed zakupem poczekać na start tej akcji - bo już w pierwszym poradniku wideo będę przede wszystkim wyjaśniał cały ten mętlik z ogromną ilością i różnorakich modułów ESP - że człowiek jak ma zacząć to nie wie co wybrać i w co ręce włożyć no nie ? ;) Ja też tak miałem 2-3 miesiące temu - że aż kociej mordy dostałem :lol: .... dlatego szkoda że nie mogłem trafić nigdzie na taki poradnik wideo czy pisany - jaki ja teraz zrobię - bo MNÓSTWO ci się wyjaśni - zobaczysz - więc spokojnie czekaj - proponuję śmiało

_________________
zapraszam na blog: http://www.mirekk36.blogspot.com (mój nick Skype: mirekk36 ) [ obejrzyj Kurs EAGLE ] [ mój kanał YT TV www.youtube.com/mirekk36 ]



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 5 sie 2021, o 12:26 
Offline
Użytkownik

Dołączył(a): 03 lut 2016
Posty: 126
Pomógł: 0

To powiedz chociaż czy dasz listę komend AT z polskim opisem. I na tym kończę moje pytanie o ESP w tym temacie, bo to nie to miejsce.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 5 sie 2021, o 13:02 
Offline
Moderator
Avatar użytkownika

Dołączył(a): 03 paź 2011
Posty: 26651
Lokalizacja: Szczecin
Pomógł: 1014

11jacekj napisał(a):
To powiedz chociaż czy dasz listę komend AT z polskim opisem.

No a jak może być inaczej ? ;) Do ATNEL WIFI232-T nie było w wersji PL ? Było - tak i tu będzie ! ;) .... ale to pikuś w porównaniu do opisu w PL ;) w porównaniu do tego co będzie poza tym ... na razie tylko tak mogę powiedzieć ;)

_________________
zapraszam na blog: http://www.mirekk36.blogspot.com (mój nick Skype: mirekk36 ) [ obejrzyj Kurs EAGLE ] [ mój kanał YT TV www.youtube.com/mirekk36 ]



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 18 sie 2021, o 22:34 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 26 sty 2016
Posty: 1007
Lokalizacja: Kraków
Pomógł: 87

11jacekj napisał(a):
Ja to co jest w nawiasie rozumiem jako key_lock zwiększ o JEDEN i zaneguj
Ja się jeszcze do tego odniosę. To nie do końca jest "zwiększ o 1 i zaneguj". To jest "zwiększ o 1 i sprawdź, czy nie jest FALSE". Operator '!' nie neguje zmiennej (od negacji jest '~')



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 19 sie 2021, o 09:21 
Offline
Moderator
Avatar użytkownika

Dołączył(a): 03 paź 2011
Posty: 26651
Lokalizacja: Szczecin
Pomógł: 1014

Marhef napisał(a):
11jacekj napisał(a):
Ja to co jest w nawiasie rozumiem jako key_lock zwiększ o JEDEN i zaneguj
Ja się jeszcze do tego odniosę. To nie do końca jest "zwiększ o 1 i zaneguj". To jest "zwiększ o 1 i sprawdź, czy nie jest FALSE". Operator '!' nie neguje zmiennej (od negacji jest '~')


No nie do końca tak jak piszesz ... dlaczego?

Pomyśl sobie - warunek IF( wyrażenie ) ...

sprawdza ZAWSZE CAŁE WYRAŻENIE, czy jest ono TRUE czy FALSE, a więc jeśli wyrażeniem jest jakieś działanie, to najpierw trzeba je zrealizować, a zatem

1. zwiększ wartość zmiennej o JEDEN
2. ZANEGUJ tę wartość po zwiększeniu

3. WYNIK wyrażenia będzie wzięty pod uwagę przez IF

Wykrzyknik to operator negacji ale LOGICZNEJ a nie bitowej, dlatego nie ważne czy w zmiennej masz liczbę 1, 4 czy 237 to po zanegowaniu przyjmie wartość FALSE, a TYLKO w jednym przypadku przyjmie wartość TRUE, gdy zmienna osiągnie wartość zero.

_________________
zapraszam na blog: http://www.mirekk36.blogspot.com (mój nick Skype: mirekk36 ) [ obejrzyj Kurs EAGLE ] [ mój kanał YT TV www.youtube.com/mirekk36 ]



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 24 sie 2021, o 17:19 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 26 sty 2016
Posty: 1007
Lokalizacja: Kraków
Pomógł: 87

Masz rację, Mirku, źle to sformułowałem. Może ja źle zrozumiałem autora wątku, ale to miało być odniesienie do tego fragmentu:
11jacekj napisał(a):
key_kock miał wartość 1 po wciśnięciu przycisku i dodatkowo jest preinkrementowany czyli ma wartość 2 ale po zanegowaniu ma wartość 0. I z mojego myślenia wychodzi żeby warunek był spełniony to key_kock w drugim ifie musiał by mieć wartość -1 wtedy po inkrementacji i zanegowaniu miał by wartość 1. Proszę wytłumaczcie mi jak to działa bo najwyraźniej źle myślę.
I jeszcze do wypowiedzi w jednym z kolejnych wpisów:
11jacekj napisał(a):
jeżeli key_lock zostaje zwiększone o JEDEN to zawsze będzie TRUE. jeżeli w kolejnym kroku zostanie zanegowane to otrzymamy FALSE. Czyli warunek nie zostanie spełniony.
Zrozumiałem to tak, że autor (11jacekj) zrozumiał, że wynik negacji jest przypisany do zmiennej key_lock, co nie jest prawdą. Bo, tak jak piszesz, zmienna jest inkrementowana i wynik inkrementacji jest przypisany do zmiennej, natomiast negacja zmiennej key_lock nie jest przypisana do zmiennej, ten wynik jest brany pod uwagę tylko w ifie (dokładnie tak, jak wyjaśniłeś).
Mam nadzieję, że nie namieszałem tym wpisem?



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 24 sie 2021, o 19:47 
Offline
Moderator
Avatar użytkownika

Dołączył(a): 03 paź 2011
Posty: 26651
Lokalizacja: Szczecin
Pomógł: 1014

Cytuj:
Mam nadzieję, że nie namieszałem tym wpisem?

Ale dlaczego miałeś namieszać ? Po to jest forum żeby sobie podyskutować i czasem zwrócić uwagę na inne rozwiązanie czy podejście ;)

_________________
zapraszam na blog: http://www.mirekk36.blogspot.com (mój nick Skype: mirekk36 ) [ obejrzyj Kurs EAGLE ] [ mój kanał YT TV www.youtube.com/mirekk36 ]



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
Wyświetl posty nie starsze niż:  Sortuj wg  
Utwórz nowy wątek Odpowiedz w wątku  [ Posty: 14 ] 

Strefa czasowa: UTC + 1


Kto przegląda forum

Użytkownicy przeglądający ten dział: Brak zidentyfikowanych użytkowników i 2 gości


Nie możesz rozpoczynać nowych wątków
Nie możesz odpowiadać w wątkach
Nie możesz edytować swoich postów
Nie możesz usuwać swoich postów
Nie możesz dodawać załączników

Szukaj:
Skocz do:  
Sitemap
Technologię dostarcza phpBB® Forum Software © phpBB Group phpBB3.PL
phpBB SEO