logo elektroda
logo elektroda
X
logo elektroda
REKLAMA
REKLAMA
Adblock/uBlockOrigin/AdGuard mogą powodować znikanie niektórych postów z powodu nowej reguły.

[Rozwiązano] AVR C I/O port ustawiony na wyjście ale można odczytywać jak wejście o co chodzi

slawko0805 22 Sie 2021 10:11 468 10
REKLAMA
  • #1 19574413
    slawko0805
    Poziom 8  
    Cześć,

    Mógłby mi ktoś wyjaśnić dlaczego jak ustawie rejestr DDRA=0xFF (wyjście) PORTA=0xFF lub PORTA=0x00 i na nóżkę PA0 podepnę switch to dalej mogę odczytywać wejście?? TZN mimo że ustawiam port na wyjcie to dalej mogę odczytywać stan portu jakby to było wejście
  • REKLAMA
  • #2 19574443
    excray
    Poziom 41  
    Zawsze możesz czytać stan pinu. Stan rejestru PORT, to to co sobie byś życzył, a stan rejestru PIN to rzeczywisty stan pinu. Jeśli te dwa stany się różnią (przy pinie skonfigurowanym jako wyjście) to oznacza, że coś bardzo jest nie w porządku z Twoim projektem (z drobnym wyjątkiem).
  • REKLAMA
  • #3 19574454
    krzysiek_krm
    Poziom 40  
    slawko0805 napisał:
    Cześć,

    Mógłby mi ktoś wyjaśnić dlaczego jak ustawie rejestr DDRA=0xFF (wyjście) PORTA=0xFF lub PORTA=0x00 i na nóżkę PA0 podepnę switch to dalej mogę odczytywać wejście?? TZN mimo że ustawiam port na wyjcie to dalej mogę odczytywać stan portu jakby to było wejście

    Wygląda na to, że tym przełącznikiem zwierasz wyjście do masy albo do plusa. Wyjście ma niezerową rezystancję wyjściową więc zewrzeć się da ale to nie jest dobry pomysł.
  • REKLAMA
  • #5 19574461
    slawko0805
    Poziom 8  
    excray napisał:
    Zawsze możesz czytać stan pinu. Stan rejestru PORT, to to co sobie byś życzył, a stan rejestru PIN to rzeczywisty stan pinu. Jeśli te dwa stany się różnią (przy pinie skonfigurowanym jako wyjście) to oznacza, że coś bardzo jest nie w porządku z Twoim projektem (z drobnym wyjątkiem).

    To w takim razie po co ustawiać ten rejestr DDR? jeśli domyślnie jest na wejscie(0x00), ale mogę odczytywać wejscie i sterować diodą?
  • #6 19574472
    krzysiek_krm
    Poziom 40  
    slawko0805 napisał:
    To w takim razie po co ustawiać ten rejestr DDR? jeśli domyślnie jest na wejscie(0x00), ale mogę odczytywać wejscie i sterować diodą?

    Kiedy używamy jako wejście wówczas wyłączamy driver wyjściowy.
  • #7 19574483
    slawko0805
    Poziom 8  
    krzysiek_krm napisał:
    slawko0805 napisał:
    To w takim razie po co ustawiać ten rejestr DDR? jeśli domyślnie jest na wejscie(0x00), ale mogę odczytywać wejscie i sterować diodą?

    Kiedy używamy jako wejście wówczas wyłączamy driver wyjściowy.

    Proszę was o cierpliwość xD ale po co wyłączać ten driver wyjściowy skoro i tak to działa
  • REKLAMA
  • Pomocny post
    #8 19574487
    krzysiek_krm
    Poziom 40  
    slawko0805 napisał:
    krzysiek_krm napisał:
    slawko0805 napisał:
    To w takim razie po co ustawiać ten rejestr DDR? jeśli domyślnie jest na wejscie(0x00), ale mogę odczytywać wejscie i sterować diodą?

    Kiedy używamy jako wejście wówczas wyłączamy driver wyjściowy.

    Proszę was o cierpliwość xD ale po co wyłączać ten driver wyjściowy skoro i tak to działa

    Po to, że wejście powinno generalnie mieć możliwie dużą rezystancję bo wówczas mało obciąża układ, który jest do niego podłączony.
  • Pomocny post
    #9 19574488
    excray
    Poziom 41  
    slawko0805 napisał:
    Proszę was o cierpliwość xD ale po co wyłączać ten driver wyjściowy skoro i tak to działa

    Po to aby nie uszkodzić mikrokontrolera. Zwieranie do masy wyjścia ustawionego w stan wysoki to bardzo zły pomysł.
  • #10 19574500
    slawko0805
    Poziom 8  
    Dobra dzięki wszystkim, sorry za głupie pytania ale jak się czegoś uczepie to mi nie daje spokoju ;)
  • #11 19574518
    excray
    Poziom 41  
    slawko0805 napisał:
    Dobra dzięki wszystkim, sorry za głupie pytania ale jak się czegoś uczepie to mi nie daje spokoju

    Coś takiego jak piszesz było i jest w rodzinie 8051. Tam nie ma rejestru kierunku, co powoduje, że wyjścia są bardzo słabe i wymagają zewnętrzego podciągania do plusa. Takie rozwiązanie ma praktycznie same wady - wymaga zewnętrznych elementów, wyjście jest dość słabe i wolno się przełącza, jest nieodporne na zwarcia do plusa, rośnie pobór prądu. Dlatego w nowszych uC stosuje się rejestr kierunku i masz wtedy albo wejście o bardzo dużej impedancji albo silne wyjście - jak sobie ustawisz.
REKLAMA