Skocz do zawartości

Obsługa przycisku


Pomocna odpowiedź

Niżej zamieszczam temat pod tyczący obsługi przycisku. Chciałem zapytać o makrodefinicję typu bit_is_clear oraz bit_is_set dotyczącą obsługi przycisku wg. rys.1 oraz rys.2.

Pierwszy program (rys.1) czy dobrze rozumuję jeżeli nie proszę mnie poprawić.

Mianowicie linie portu D zostają ustawione jako wejściowe z ustawieniem PD0 na 1 (pull up) związku z czym rejestr PIND przyjmuje wartości PORTD, a zatem przycisk S1 ustawiony jest w wysoki stan logiczny 1 na PD0 i teraz jeżeli przycisk zostanie wciśnięty czyli musi być niski stan napięcia na przycisku S1, niski stan logiczny 0, to jeżeli rejestr funkcyjny PIND odczyta że bit 0 linii portu PD0 będzie miał wartość 0 to zapali nam wtedy diodę. Ale sytuacja taka będzie tylko w przypadku gdy przycisk S1 nie jest podpięty bezpośrednio do zasilania 5V.

Czy tak mam rozumieć wykorzystanie makrodefinicji bit_is_clear wtedy gdy przycisk S1 nie jest podpięty bezpośrednio do zasilania 5V?

Oraz drugi przypadek (rys.2) w tej sytuacji mamy tak że przycisk S1 podpięty jest pod linie PD7 oraz bezpośrednio pod zasilanie 5V związku z czym muszę go ustawić w niski stan logiczny 0 jako przycisk NO a w momencie zwarcia NC będzie miał stan logicznej 1 czyli w tym przypadku wykorzystamy makrodefinicję typu bit_is_set, czyli jeżeli rejestr PIND odczyta że bit 7 portu D ma stan wysoki to zapali nam diodę?

Podsumowując można powiedzieć że makrodefinicja typu bit_is_set będzie wykorzystywana gdy przycisk S1 będzie zwarty NC gdy będzie reagował na wysoki stan logiczny gdy będzie zasilany bezpośrednio zasilany ze źródła zasilania 5V. Natomiast makrodefinicja typu bit_is_clear będzie wykorzystywana gdy przycisk S1 w stanie zwarcia NC będzie miał stan logicznego 0 czyli w momencie gdy nie jest bezpośrednio podpięty do zasilania, aby w ogóle zaobserwować przepływ prądu na tej linii (rys.1) musimy wymusić na linii do której podpięty jest przycisk wysoki stan logiczny 1 aby w momencie wciśnięcia zaobserwować ucieczkę ładunku elektrycznego do masy.

Proszę mnie poprawić jeżeli źle myślę bądź może potraficie to prościej wytłumaczyć, będę wdzięczny za odpowiedź.

rys.1.jpg.0f0ec7a5e781c080712c9d13835a1ad7.jpg

rys.2.jpg.7a67e1e77c8aea23bc12b33dd6187462.jpg

Link to post
Share on other sites

Chyba nie zamierzasz podłączyć tego tak jak to jest na rysunku?

Bo bez rezystora ograniczającego prąd dla diody, spalisz port (pin) i być może cały uC (ale nie jestem pewien z tym całym uC).

Link to post
Share on other sites
Zarejestruj się lub zaloguj, aby ukryć tę reklamę.
Zarejestruj się lub zaloguj, aby ukryć tę reklamę.

jlcpcb.jpg

jlcpcb.jpg

Produkcja i montaż PCB - wybierz sprawdzone PCBWay!
   • Darmowe płytki dla studentów i projektów non-profit
   • Tylko 5$ za 10 prototypów PCB w 24 godziny
   • Usługa projektowania PCB na zlecenie
   • Montaż PCB od 30$ + bezpłatna dostawa i szablony
   • Darmowe narzędzie do podglądu plików Gerber
Zobacz również » Film z fabryki PCBWay

Chciałem zapytać o makrodefinicję typu bit_is_clear oraz bit_is_set dotyczącą obsługi przycisku wg. rys.1 oraz rys.2.

Więc tak.

- bit_is_clear(P, b) – zwróci wartość prawda (a w zasadzie zwraca wartość 1) jeśli bit o numerze b w rejestrze funkcyjnym P jest wyzerowany;

- bit_is_set(P, b) – zwróci wartość prawda (a w zasadzie zwraca wartość 1) jeśli bit o numerze bP w rejestrze funkcyjnym jest ustawiony (ma wartość 1).

cytat ze strony: http://www.glk.edu.pl/kel/programowanie_avr_w_asemblerze_i_w_c.html

Więc jeśli masz przycisk podpięty pod GND, i włączony pull-up, to możesz sprawdzić czy jest wciśnięty makrodefinicją bit_is_clear(PIND, 0). Wtedy będzie to prawda, jeżeli bit 0 w rejestrze PIND ma wartość 0, czyli jeśli nastąpiło zwarcie do masy.

Analogicznie jest z bit_is_set i przyciskiem pod VCC. Jeżeli jest wciśnięty, to na tym pinie występuje stan wysoki, więc makrodefinicja zwróci 1 (czyli prawdę).

Link to post
Share on other sites

Dołącz do dyskusji, napisz odpowiedź!

Jeśli masz już konto to zaloguj się teraz, aby opublikować wiadomość jako Ty. Możesz też napisać teraz i zarejestrować się później.
Uwaga: wgrywanie zdjęć i załączników dostępne jest po zalogowaniu!

Anonim
Dołącz do dyskusji! Kliknij i zacznij pisać...

×   Wklejony jako tekst z formatowaniem.   Przywróć formatowanie

  Dozwolonych jest tylko 75 emoji.

×   Twój link będzie automatycznie osadzony.   Wyświetlać jako link

×   Twoja poprzednia zawartość została przywrócona.   Wyczyść edytor

×   Nie możesz wkleić zdjęć bezpośrednio. Prześlij lub wstaw obrazy z adresu URL.

×
×
  • Utwórz nowe...

Ważne informacje

Ta strona używa ciasteczek (cookies), dzięki którym może działać lepiej. Więcej na ten temat znajdziesz w Polityce Prywatności.