Detekce sepnutí tlačítka, které připojuje +5V

Zdravím,
Předem bych chtěl říct že jsem začátečník.
Mám problém s tlačítkem neměl jsem problém detekovat stisknutí tlačítka pomocí bit_is_ clear ale teď se mi dostal do ruky obvod kde je to trochu zvláštně vyřešeno tak že tlačítko spíná 5V které sou potom přivedeny na pin PD3 ale prostě se mi nedaří program nějak zprovoznit.
Zde je nastavení vstupu a zapnutí pull down rezistoru

DDRD &= ~( _BV(PD3)); PORTD |= _BV(PD3);
a smyčka která se má po stisknutí tlačítka ukončit

while (bit_is_clear(PIND, PD3)){}
zkoušel jsem třeba poté aji

while (!bit_is_set(PIND, PD3)){
ale neúspěšně.

:arrow_right: administrator: přejmenováno z "Tlačítko"

Preco si myslis, ze si zapol interny pull-down rezistor?
Ja osobne som na AVR s intergrovanym pull-down rezistorom nepracoval.

Pripoj si externy rezistor, napr 4k7 medzi pin a GND.

Ono je to na plošňáku a já do toho nechcu zbytečně hrabat našel jsem to na jednom webu jinak pod arduinem jsem normálně s pull down rezistory pracoval a bez problém možná se podívu do jejich zdrojáku jak to tam mají vyřešený ale v tom bych se asi nevyznal :smiley:

Pokud to bylo s běžnou megou, tak ta žádné pull-down rezistory nemá. Pouze pull-up.
Právě tím “PORTD |= _BV(PD3)” jsi onen pull-up zapnul (pokud nejsou globálně zakázané). Jaký je to mcu?

atmega 328p na tohle jsem zapomněl omlouvám se :smiley:

Výborně. V datasheetu v kapitole 13(I/O-Ports) se dočteš mnoho zajímavých věcí, uvidíš tam mnoho schémat, ovšem na žádném (ani v textu) nenajdeš zmínku o pull-down :wink:.

Tím jsou vyčerpány všechny (obě :slight_smile:) možnosti pro vstupní piny.

Takze Ti ostava ten pulldown (lebo ten tam musi fakt byt) naletovat medzi pin procesora a GND. Na tom Arduine mozno boli a preto Ti to fungovalo.