Skocz do zawartości

PINB i DDRB razem , dlaczego nie działa


multidata314

Pomocna odpowiedź

Witam , wchodzie w temat uC i proszę o pomoc (ATmega8a)

DDRB=0b00001111;// ustawienie pinów 0-3 portu B  jako wyjście
DDRB &= ~(1<<PB7);
PORTB |= (1<<PB7);
DDRD &= ~(1<<PD7);
PORTD |= (1<<PD7);

próbowałem też:

DDRB=0b00001111;// ustawienie pinów 0-3 portu B  jako wyjście
//DDRB &= ~(1<<PB7);
PORTB |= (1<<PB7);
DDRD &= ~(1<<PD7);
PORTD |= (1<<PD7);

Dlaczego nóżka D7 ma wysokie napięcie (H) a nóżka  B7 nie ? 

Edytowano przez Gieneq
Formatowanie kodu programu
Link do komentarza
Share on other sites

Ponad 8 lat nie programowałem samych AVR ale coś pamiętam.

Chcesz ustawić nóżkę jako wyjście ze stanem wysokim - czyli w obu rejestrach mają pojawić się 1 (1 w DDR to wyjście, nie 0).

Nie pamiętam czy te define'y "PD7, PB7" działają poprawnie. Ale będzie to coś takiego:

DDRB |= (1<<7);

DDRD |= (1<<7);

PORTB |= (1<<7);

PORTD |= (1<<7);

 

ddrc.thumb.JPG.973fd0e94de29fb451360db0bd26f93b.JPG

Edytowano przez Gieneq
Link do komentarza
Share on other sites

Robiąc DDRB&=~(1<<PB7) ustawiasz PB7 jako wejście(wstawiasz 0 na odpowiedni bit). Jeśli tak zrobisz i dodatkowo ustawisz na tym samym bicie PORTB jedynkę to podepniesz do wejście przez rezystor pociągający do zasilania. Jeśli chcesz ustawić to jako wyjście to musisz zrobić tak jak napisał Gieneq

Link do komentarza
Share on other sites

Bądź aktywny - zaloguj się lub utwórz konto!

Tylko zarejestrowani użytkownicy mogą komentować zawartość tej strony

Utwórz konto w ~20 sekund!

Zarejestruj nowe konto, to proste!

Zarejestruj się »

Zaloguj się

Posiadasz własne konto? Użyj go!

Zaloguj się »
×
×
  • 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.