Skocz do zawartości

PINB i DDRB razem , dlaczego nie działa


Pomocna odpowiedź

Napisano (edytowany)

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
(edytowany)

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

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

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...