Czy kiedy ustawie np DDRA na odczyt to mogę i wysyłać i przyjmować dane a jak na wysyl to tylko wysylac ?
Co sie dzieje gdy czytam z wejscia ustawionego na wysył ?
ustawienie DDR
Popatrz sobie do datasheet'u. Generalnie:
- jeżeli ustawisz DDRA jako wyjście, to stan nóżki zależy od wartości zapisanej do PORTA. Odczytując wtedy PINA otrzymasz wartość na nóżce, czyli tę samą co w PORTA.
- jeżeli ustawisz DDRA jako wejście, to ustawienie PORTA powoduje podciągnięcie nóżki do plusa zasilania (poprzez wew. rezystancję). Wyzerowanie PORTA pozostawia nóżkę pływającą (wysoka impedancja). Odczytując PINA odczytujesz stan nóżki.
- jeżeli ustawisz DDRA jako wyjście, to stan nóżki zależy od wartości zapisanej do PORTA. Odczytując wtedy PINA otrzymasz wartość na nóżce, czyli tę samą co w PORTA.
- jeżeli ustawisz DDRA jako wejście, to ustawienie PORTA powoduje podciągnięcie nóżki do plusa zasilania (poprzez wew. rezystancję). Wyzerowanie PORTA pozostawia nóżkę pływającą (wysoka impedancja). Odczytując PINA odczytujesz stan nóżki.
-
keruseykaryu
Wyraźnie napisałem, że jest tak w momencie pracy PORTA jako wyjście. W trakcie pracy portu jako wyjście, wymuszenie z zewnątrz innego stanu nóżki(zwarcie do GND lub Vcc) może uszkodzić AVR, więc nie jest to praktykowane.keruseykaryu pisze:Hola. Nie rozpędzaj się kolego. Odczytując PINA otrzymasz rzeczywisty stan na nóżce i na Twoje nieszczęście wcale nie musi to być stan taki sam jak w PORTA.maxzwp pisze:Odczytując wtedy PINA otrzymasz wartość na nóżce, czyli tę samą co w PORTA.
Korzystając z PINA mamy zawsze możliwość odczytania rzeczywistego stanu portu (nóżki, końcówki danego portu).
PORTA w zależność od stanu w rejestrze DDA wymusza stan na wyjściu albo podciąga wejście.
Dla DDA = 0 dana nóżka pracuje jako wejście
I tak dla stanu 0 w PORTA wejście jest "pływające" dla 1 wejście podciągane jest do plusa.
Wpisując stan wysoki (1) do DDA ustawiamy dany port do pracy jako wyjście.
I wtedy niski stan w PORTA oznacza wymuszenie stanu niskiego na wyjściu.
A wpisane stanu wysokiego do PORTA wymusza stan wysoki na wyjściu.
Tu nie chodzi o wymuszenie, a o prąd jak i wpływa lub wypływa z portu pracującego w roli wyjścia i o spadek napięcia na tranzystorze wyjściowym.
Czyli o parametry elektryczne, takie jak output low voltage i output high voltage.
Mówiąc obrazowo, pobór prąd jest na tyle duży, że rzeczywisty stan napięcia na danej końcówce ma się nijak do stanu wpisanego do PORTA.
PORTA w zależność od stanu w rejestrze DDA wymusza stan na wyjściu albo podciąga wejście.
Dla DDA = 0 dana nóżka pracuje jako wejście
I tak dla stanu 0 w PORTA wejście jest "pływające" dla 1 wejście podciągane jest do plusa.
Wpisując stan wysoki (1) do DDA ustawiamy dany port do pracy jako wyjście.
I wtedy niski stan w PORTA oznacza wymuszenie stanu niskiego na wyjściu.
A wpisane stanu wysokiego do PORTA wymusza stan wysoki na wyjściu.
maxzwp pisze:wymuszenie z zewnątrz innego stanu nóżki(zwarcie do GND lub Vcc) może uszkodzić AVR, więc nie jest to praktykowane.
Tu nie chodzi o wymuszenie, a o prąd jak i wpływa lub wypływa z portu pracującego w roli wyjścia i o spadek napięcia na tranzystorze wyjściowym.
Czyli o parametry elektryczne, takie jak output low voltage i output high voltage.
Mówiąc obrazowo, pobór prąd jest na tyle duży, że rzeczywisty stan napięcia na danej końcówce ma się nijak do stanu wpisanego do PORTA.