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

pytanie zupełnie początkującego - o portach

vcppp_p 03 Maj 2009 12:15 3112 4
REKLAMA
  • #1 6484170
    vcppp_p
    Poziom 12  
    Witam,
    czytam sobie kurs wprowadzający do AVR
    i nasuwają mi się pytania ...

    1. jeśli dany port skonfigurujemy jako wejście [DDR na 0], to PORT.. decyduje o "kierunku" płynącego prądu, tak? Przykładowo, jeśli chciałbym podłączyć LED do portu ustawionego jako wejście, to właśnie PORT będzie decydować o "kierunku" podłączenia diody, tak? I jeśli dobrze rozumiem - dioda będzie świecić cały czas w tej sytuacji?

    2. Ustawiając port jako wyjście i nadając mu stan wysoki, na porcie tym mamy VCC... a czy jest możliwość ustawić port tak by był on GND? I rejstr PORT.. decydowałby o zwarciu/rozwarciu?

    pozdrawiam i z góry dziękuję ...
  • REKLAMA
  • #2 6484223
    BoskiDialer
    Poziom 34  
    ad 1/ Jeśli pin jest skonfigurowany jako wejście, to pin albo jest typu otwarty-kolektor[OC] (odpowiedni bit w port ustawiony na 0) albo posiada podciąganie[PU] (odpowiedni bit w port ustawiony na 1; podciąganie przez wbudowany rezystor 20 do 50kOhm do VCC).

    Nie ma tu nic z kierunkiem podłączenia diody. Diodę podłącza się albo anodą do VCC, katodą przez rezystor do pinu będącego wyjściem, albo katodą do GND a anodą przez rezystor do pinu lub w inne sposoby.

    ad 2/ Jeśli pin jest wyjściem (odpowiedni bit w ddr na 1), to portem wymuszasz napięcie na wyjsciu: port=0 to połączenie z GND[LO]; port=1 to połączenie z VCC[HI].

    Jeśli chcesz, aby port przełączał się pomiędzy OC a LO, to możesz wpisać do port 0 po czym sterować ddr'em, wpisując 0 masz OC, a 1-LO.
  • REKLAMA
  • #3 6484276
    vcppp_p
    Poziom 12  
    BoskiDialer napisał:
    ad 1/ Jeśli pin jest skonfigurowany jako wejście, to pin albo jest typu otwarty-kolektor[OC] (odpowiedni bit w port ustawiony na 0) albo posiada podciąganie[PU] (odpowiedni bit w port ustawiony na 1; podciąganie przez wbudowany rezysto

    mógłbyś mi to wyjaśnić? Bo nie bardzo rozumiem co się dzieje jeśli mamy podciągnięcie ... znaczy że na pinie jest +, jeśli zrobimy "zwarcie" z GND to w rejestrze PINx właściwy bit będzie 1, jeśli nie będzie "zwarcia" to będzie 0?
    i analogicznie, jeśli PORT na 0 to "zwarcie" pinu z VCC da nam PINx 1?

    Cytat:

    ad 2/ Jeśli pin jest wyjściem (odpowiedni bit w ddr na 1), to portem wymuszasz napięcie na wyjsciu: port=0 to połączenie z GND[LO]; port=1 to połączenie z VCC[HI].

    dzięki, myślałem że stan 0 to po prostu rozwarty ... czyli (znów moje głupie pytania, ale jakoś łatwiej mi to zrozumieć) jeśli podłączymy dwie diody szeregowo (katoda diody1 do anody diody1) i takie "coś" podłączymy do pinu (DDR 1) to niezależnie od PORT [0 czy 1] i tak całość będzie świecić? [albo jedna, albo druga dioda, tak? ]

    pozdrawiam
  • REKLAMA
  • Pomocny post
    #4 6484367
    BoskiDialer
    Poziom 34  
    vcppp_p napisał:
    mógłbyś mi to wyjaśnić? Bo nie bardzo rozumiem co się dzieje jeśli mamy podciągnięcie ... znaczy że na pinie jest +, jeśli zrobimy "zwarcie" z GND to w rejestrze PINx właściwy bit będzie 1, jeśli nie będzie "zwarcia" to będzie 0?

    Mówiąc łopatologicznie: jeśli masz podciąganie, to jeśli nic nie wymusza stanu, to na pinie będzie panować napięcie bliskie VCC a odczyt z PINx będzie miał w odpowiednim miejscu jedynkę. Ściągnięcie pinu do masy przez inny układ, przycisk lub cokolwiek spowoduje, że odczyt z PINx da w odpowiednim miejscu 0 (odczytano stan niski). Jedyna różnica pomiędzy PU a OC jest taka, że jeśli nic nie wymusza stanu na pinie, to w OC będzie panować tam stan nieustalony (możliwy odczyt jako 0 lub 1), w przypadku PU podciąganie będzie jednak w słaby sposób, ale jednak wymuszać stan wysoki.

    vcppp_p napisał:
    i analogicznie, jeśli PORT na 0 to "zwarcie" pinu z VCC da nam PINx 1?

    Nie rozumiem do końca. Jeśli na pinie jest stan niski (od -0.5V do 0.2*Vcc) to odczyt z PINx da wartość 0. Jeśli jest stan wysoki (od 0.6*Vcc do Vcc+0.5V) to odczyt da wartość 1.

    vcppp_p napisał:
    dzięki, myślałem że stan 0 to po prostu rozwarty ... czyli (znów moje głupie pytania, ale jakoś łatwiej mi to zrozumieć) jeśli podłączymy dwie diody szeregowo (katoda diody1 do anody diody1) i takie "coś" podłączymy do pinu (DDR 1) to niezależnie od PORT [0 czy 1] i tak całość będzie świecić? [albo jedna, albo druga dioda, tak? ]

    Strasznie dziwne rozumowanie. Prąd płynie kiedy jest różnica potencjałów a nie kiedy dany potencjał jest wymuszany. Jeśli diody podłączysz szeregowo (+mam nadzieję oczywisty opornik) oraz podłączysz całość pomiędzy pin a (np)VCC, to całość będzie świecić jeśli wymusisz stan niski na pinie (różnica potencjałów). Przy PU nie będzie różnicy potencjałów, przy OC nie będzie wymuszenia potencjału, przy HI nie będzie różnicy potencjałów, więc diody się nie zaświecą.
  • #5 6484474
    vcppp_p
    Poziom 12  
    dzięki, tego mi było trzeba (łopatologicznego). jeszcze raz dzięki :D
REKLAMA