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



Teraz jest 27 gru 2024, o 11:48


Strefa czasowa: UTC + 1





Utwórz nowy wątek Odpowiedz w wątku  [ Posty: 18 ] 
Autor Wiadomość
PostNapisane: 1 mar 2014, o 23:20 
Offline
Użytkownik

Dołączył(a): 14 gru 2013
Posty: 41
Pomógł: 0

Głupia sprawa, logicznie wiem o co chodzi, jednakże męczę się z wykonaniem praktycznym. Mam przycisk typu microswitch, wciskany bez przytrzymania, gdy jest nie wcisnięty - na wejściu logiczne jeden, gdy wcisnięty na wejściu logiczne 0. Realizuję plan: przyciskam klawisz - na LCD pojawia mi się OFF i zmienia się dopiero wtedy gdy znów wcisnę przycisk. Za każdym razem gdy wciskam przycisk pojawa mi się OFF, jednakże nie wraca do ON gdy ponownie wcisnę. Jest to zapewne logiczna pierdoła, proszę mnie za bardzo nie zjechać :) poniżej mój kod:
Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 1 mar 2014, o 23:36 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 03 lut 2013
Posty: 84
Pomógł: 8

Sprawdź coś takiego w 8 linijce:
if(bit_is_clear(PINB, 0)&& ( ( (Pressed ==0) || (Pressed == 1) ) ) )

Zastanów się co robi taki fragent "Pressed ==0||Pressed == 1" ;)

Poza tym, naciśnięcie przycisku wykrywa się niskim poziomem logicznym (port ustawiony jako wejściowy i pull-up, microswitch zwiera to do masy), czyli bit is clear, tylko czemu wtedy wyświetlasz OFF ?

Nie masz też obsługi drgania styków.



Ostatnio edytowano 2 mar 2014, o 00:00 przez fredek, łącznie edytowano 2 razy

Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 1 mar 2014, o 23:58 
Offline
Użytkownik

Dołączył(a): 14 gru 2013
Posty: 41
Pomógł: 0

Jeżeli pressed = 0 lub pressed = 1 wcisnij OFF, włącz ON dopiero wtedy gdy pressed jest równe 2 czyli gdy za drugim razem wciskam przycisk i chę uzyskać na LCD wynik ON, dobrze myślę?



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 2 mar 2014, o 00:06 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 03 lut 2013
Posty: 84
Pomógł: 8

Ok, to sprawdź to:

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



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 2 mar 2014, o 00:14 
Offline
Użytkownik

Dołączył(a): 14 gru 2013
Posty: 41
Pomógł: 0

tak samo jak moje. gdyby to było tak chop siup to bym się nie pytał



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 2 mar 2014, o 00:22 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 03 lut 2013
Posty: 84
Pomógł: 8

Hehe, faktycznie, no to spróbujmy tak:

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


:D



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 2 mar 2014, o 00:25 
Offline
Użytkownik

Dołączył(a): 14 gru 2013
Posty: 41
Pomógł: 0

++Pressed&=3;????? chyba coś nie tak



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 2 mar 2014, o 00:26 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 03 lut 2013
Posty: 84
Pomógł: 8

takten napisał(a):
++Pressed&=3;????? chyba coś nie tak


Sprawdź ;)



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 2 mar 2014, o 00:32 
Offline
Użytkownik

Dołączył(a): 14 gru 2013
Posty: 41
Pomógł: 0

sprawdziłem i pluje błędem w eclipse



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 2 mar 2014, o 00:43 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 03 lut 2013
Posty: 84
Pomógł: 8

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


Autor postu otrzymał pochwałę


Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 2 mar 2014, o 00:46 
Offline
Użytkownik

Dołączył(a): 14 gru 2013
Posty: 41
Pomógł: 0

fuck, działa, na jaki adres mam wysłać zimne piwko?

------------------------ [ Dodano po: 1 minucie ]

ale nie rozumiem tej instrukcji - Pressed%=4;, wyjaśniłbyś?



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 2 mar 2014, o 00:53 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 03 lut 2013
Posty: 84
Pomógł: 8

takten napisał(a):
fuck, działa, na jaki adres mam wysłać zimne piwko?

------------------------ [ Dodano po: 1 minucie ]

ale nie rozumiem tej instrukcji - Pressed%=4;, wyjaśniłbyś?


Pressed = Pressed % 4
% - reszta z dzielenia,
czyli zerowanie Pressed gdy jest 4 :)



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 2 mar 2014, o 00:55 
Offline
Użytkownik

Dołączył(a): 14 gru 2013
Posty: 41
Pomógł: 0

4? czemu 4? chce zmiany gdy wciskam przycisk za drugim razem, chyba jestem debilem i nie kumam



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 2 mar 2014, o 01:05 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 03 lut 2013
Posty: 84
Pomógł: 8

takten napisał(a):
4? czemu 4? chce zmiany gdy wciskam przycisk za drugim razem, chyba jestem debilem i nie kumam

Bit is clear && (!Pressed) czyli równe 0 => Pressed = 1 na wyświetlaczu OFF
Bit is set i bitowe & Pressed => Pressed++ czyli 2
Bit is clear i Pressed == 2 => Pressed++ czyli 3 na wyświetlaczu ON
Bit is set i bitowe & Pressed => Pressed++ czyli 4, dalej jest Pressed%=4 czyli zerowanie.


Autor postu otrzymał pochwałę


Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 2 mar 2014, o 01:12 
Offline
Użytkownik

Dołączył(a): 14 gru 2013
Posty: 41
Pomógł: 0

faktycznie, temat zamnikęty dzieki!



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 3 mar 2014, o 22:35 
Offline
Użytkownik

Dołączył(a): 14 gru 2013
Posty: 41
Pomógł: 0

Kurczę, głupio mi znów ten temat poruszać, ale trudno, zaryzykuję...

Obsługuję w przerwaniu pomiar ADC i przesył do komputera, po dodaniu obsługi przycisków ON oraz OFF, pomiary wysyłane są pojedyńczo, po wciśnięciu przycisku, nie zaś sekwencyjnie jak wcześniej. Chcę uzyskać efekt -> włączam ON -> wysyłane są cały czas pomiary z ADC, włączam OFF, wysyłane są cały czas zera. Jakieś słowo naprowadzenia jak to zrealizować? Próbowałem już wielu rzeczy, ale za każdym razem ten sam efekt.

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


------------------------ [ Dodano po: 3 minutach ]

deklaracja int Pressed = 0; jest globalna



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 3 mar 2014, o 23:59 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 03 lut 2013
Posty: 84
Pomógł: 8

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


lub tak:

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


Możesz też do deklaracji Pressed dodać volatile i wtedy to wysyłanie na PC wywalić z przerwań i przenieść do głównej pętli programu jak kod, który tam masz jest nieblokujący ;)


Autor postu otrzymał pochwałę


Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 6 mar 2014, o 18:44 
Offline
Użytkownik

Dołączył(a): 30 lis 2013
Posty: 29
Pomógł: 0

aby te powyższe zaprezentowane przez was działało, to w funkcji main trzeba jeszcze dodać coś w stylu:

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


chyba, nie?

a co w przypadku gdy mamy do czynienia np. z 4 przyciskami? bo w sumie podobny problem mam



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: 18 ] 

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:  
cron
Sitemap
Technologię dostarcza phpBB® Forum Software © phpBB Group phpBB3.PL
phpBB SEO