Jak přepnout mezi logickou nulou a stavem vysoké impendace?

Dobrý den,
potřeboval bych poradit s programováním do ATmegy16. Mám výstup na kterém bych chtěl přepínat hodnotu logické 0 a stav vysoké impedance. Nevím jak by se to dalo udělat tak aby se to dalo překlápět. Na internetu jsem našel návod jak nastavit vystup vysoké impedance, kde se nastaví ten vystup jako vstup a vypínají se tam pull up rezistory. S toho jsem trochu zmatený protože do nastavení pro vstup nejde nahrát ta logická nula.

:arrow_right: administrator: přejmenováno z "Stav vysoké impedance"

Je to jednoduché :

DDRx=0, PORTx=0 => Vstup - Stav vysoké impedance
DDRx=1, PORTx=0 => Výstup - log. 0
DDRx=0, PORTx=1 => Vstup - pull-up zapnutý
DDRx=1, PORTx=1 => Výstup - log. 1

Takže Ti stačí nastavit DDRx=0, PORTx=0 a pak měnit jenom DDRx=0/1. Tím střídáš In HiZ a Out 0.

Ako si ju skusal nastavit ??

DDRD &= ~(1<<PD1); //PD1 ako vstup, tj. vysoka impedancia PORTD &= ~(1<<PD1); // vypnutie pull-up pre PD1
pull-up by mal byt defaultne vypnuty.

Díky moc za pomoc. Zkoušel jsem to jen DDRC=0; PORTC=0; pro ten stav vysoké impedance a nenapadlo mě dát zase zpátky DDRC=1 pro 0.
A to s tou tildou~ to vůbec neznám :slight_smile:

to si pozri, to su uzitocne veci, a povedal by som ze dost zakladne :slight_smile:

AMEN :slight_smile:

:arrow_right: administrator: příspěvek byl upraven
Předchozí příspěvky se necitují.

Koukni sem, tady je to pěkně pohromadě:
svetelektro.com/modules.php?name … VR&x=0&y=0

Děkuju za ten odkaz. Jsem začátečník s AVR takže někdy bojuju i se základama.