Re: AVR - vstupy, vystupy
Pavel Hudeček
edizon na seznam.cz
Čtvrtek Červen 16 12:48:22 CEST 2011
Zda je vstupní/výstupní se nastavuje v DDR, to máte správně. Ale děláte to zbytečně krkolomně, nebo používáte hloupý překladač.
Stav nohy procesoru se čte z PIN. Výstup, nebo pull-up se ovládá v PORT.
Příklady:
DDRB=255; // nastaví port B jako výstupní
PORTB.0=1; // bit 0 nastaví na 1
if (PINB.0!=1) .... // error - pin je asi zkratován na GND
PORTB.0=0; // bit 0 nastaví na 0
DDRB.3=0; // nastaví bit 3 jako vstupní
PORTB.3=1; // na bitu 3 zapne pull-up
while (PINB.3==1) cekani(); // čekáme, až někdo stiskne tlačítko, které bit 3 spojí s GND
PORTB.3=0; // na bitu 3 vypne pull-up, od teď je to čistý vstup
PH
> Od: Michal Grunt <michal.grunt na vynet.cz>
> potreboval bych trochu poradit. Ted jsem se do problemu tak zamotal, ze uz ani
> nevim ci jsem :-) Mam trochu zmatek s tim, jak u AVR (WinAVR+GCC) dany port
> (resp. pin napr. PD6) nastavit jako vstupni (a jak z nej cist) nebo jako
> vystupni (a jak na nej zapsat 1 nebo 0)...
>
> Zapnout PD6 jako vystupni port
>
> #define PD6_out DDRD |= (1<<PD6);
>
>
>
> Zapsat log 1
>
> #define PD6_log1 PORTD &= ~(1<<PD6);
>
> Zapsat log 0
>
> #define PD6_log0 PORTD |= (1<<PD6);
>
> Zapnout PD6 jako vstupni port
>
> #define PD6_in DDRD |= (0<<PD6);
>
> Cteni z PD6
>
> #define PD6_read PIND&PD6
>
> Je to tak, nebo uplne jinak?
Další informace o konferenci Hw-list