Kto mnie oświeci. Podstawy obsługi portów

To forum jest dla wszystkich pasjonatów mikrokontrolerów AVR Atmela. Wymiana doświadczeń i pomoc dla początkujących w pisaniu programów zarówno w C, Asemblerze jak i BASCOM. Zapraszam znawców tematu, aby pomogli wszystkim początkującym!
ODPOWIEDZ
dexter1515
-
Posty: 5
Rejestracja: 04 sty 2009, 21:56
Lokalizacja: z przyszłości :)

Kto mnie oświeci. Podstawy obsługi portów

Post autor: dexter1515 » 04 sty 2009, 22:01

Witam

Niewiem czy każdy początkujący miał takie problemy z opanowaniem
budowy mikoprocesora bo ja niestety tak.

I w żaden sposób nie moge zrozumieć jednego

Jest taki przykład :
Obrazek


Wcisnięcie S1 Zapala lampkę a S2 ją gasi

Konfiguruje porty:
Config PortB=&B11111111 - wszystkie jako wyjścia
PortB=&B11111111 - stan spoczynkowy
Config PortD=&B1111100 - Dwa najmłodsze to wejścia ( Guziki S1 i S2)
PortD=&B1111011 - Włączony T2 Wejścia podciągnięte


To jest przykład z edw

I nie mogę pojąć tych stanów spoczynkowych

Rozumiem że najpierw ustalam czy port to wejście czy wyjście. I to jest jane

Ale wszędzie czytam że stan niski to logiczne zero. Czyli brak przepływu prądu
Więc dlaczego tu:
PortD=&B1111011 - Włączony T2 Wejścia podciągnięte
Jest wpisane zero przy stanie początkowym. Rozumiem że to zero to ustawienie staniu niskiego na nużce pd.3 gdzie jest podpięty tranzystor.

Wiec jak on ma zostać pobudzony ?? Skoro 0 to brak napięcia.

i tu to samo:

Ta komenda niby zapala lampke przy wcisnięciu przycisku s1

if pind.0 = 0 then then portb.7 = 0

ja to rozumiem że jeżeli na pinie 0 w porcie d niema napięcia to ustaw brak napięcia na pinie 7 w porcie b.
Ale to bez sensu. Bo na porcie b.7 jest dioda i tam ma się właśnie pojawiać napięcie.

W opisie pisze że umozliwiamy pracę tranzystora wpisując logiczne zero do wyjścia pd.3 I znowu przecież 0 to bak napięcia. Czyli wyjście pływajace .
A wg mnie powinno być podciągnięte ?!


Krótko mówiąc We i Wy rozumiem.

Ale stanów początkowych juz nie :((
I nie bardzo trybię co to jest to wyjście pływające i podciągnięcie wejścia.

Z góry dzięki za pomoc

_____________________________
edit:
Wycięte z tytułu "Stawiam piwko!!!", co to ma być? Za to można postawić ostrzeżenie...
i to za darmo... kończy się na upomnieniu...
spark
Ostatnio zmieniony 05 sty 2009, 12:05 przez dexter1515, łącznie zmieniany 1 raz.

valbios
-
Posty: 5
Rejestracja: 06 kwie 2008, 12:51
Lokalizacja: katowice

Post autor: valbios » 04 sty 2009, 22:57

Stan 0 na wyjściu to nie jest brak przepływu prądu to jest tak jakby na tej nóżce pojawiła się masa (tak jakby bo tak na prawdę gdyby zmierzyć napięcie to będzie gdzieś pomiędzy 0,4 a 0,8V). Dla tranzystora typu PNP taki "stan" na bazie jest stanem aktywnym czyli tranzystor jest włączony w przeciwieństwie do tranzystorów NPN dla których stan wysoki jest stanem aktywnym.
W przypadku tego układu pin PD.3 i PB.7 musi być w stanie niskim żeby dioda działała w takim przypadku tranzystor jest "włączony" a na pinie PB.7 też panuje stan niski dzięki czemu dioda świeci (jest podłączona do zasilania poprzez rezystor i tranzystor a stan na pinie jest niższym potencjałem prawie masą dzięki czemu dioda świeci). W przypadku gdy pin PB.7 będzie w stanie wysokim a PD.3 w stanie niskim to dioda nie zaświeci ponieważ nie ma różnicy potencjałów ( nie ma masy i plusa). Nie wiem jak to prościej wytłumaczyć ;)

K_o_n_r_a_d
Użytkownik
Posty: 123
Rejestracja: 29 lip 2005, 10:21
Lokalizacja: Lublin

Post autor: K_o_n_r_a_d » 04 sty 2009, 22:58

Podstawowa rzecz którą źle rozumiesz:

Kod: Zaznacz cały

portb.7 = 0

ustawia na nóżce PB7 napięcie 0V a nie jak piszesz:
ja to rozumiem że jeżeli na pinie 0 w porcie d niema napięcia to ustaw brak napięcia na pinie 7 w porcie b.
Co wg. Ciebie oznacza "brak napięcia"?
Ja za "brak napięcia" bardziej rozumiałbym stan wysokiej impedancji.

Podsumowując (zakładamy, że PORTx.y - wyjście): PORTx.y=0 ustawi na Px.y napięcie=GND a PORTx.y=1 ustawi napięcie=VCC.

dexter1515
-
Posty: 5
Rejestracja: 04 sty 2009, 21:56
Lokalizacja: z przyszłości :)

Post autor: dexter1515 » 05 sty 2009, 19:24

dzięki panowie za pomoc. Teraz to rozumiem . Ale musze zabrać wam jeszcze chwilkę jak moge żeby to do końca zrozumiał

jakie ustawienia portów pd.3 i pb.7 musi byc zeby dioda się palila w tym przypadku:



Obrazek

K_o_n_r_a_d
Użytkownik
Posty: 123
Rejestracja: 29 lip 2005, 10:21
Lokalizacja: Lublin

Post autor: K_o_n_r_a_d » 05 sty 2009, 19:29

PORTD.3=1
PORTB.7=0

dexter1515
-
Posty: 5
Rejestracja: 04 sty 2009, 21:56
Lokalizacja: z przyszłości :)

Post autor: dexter1515 » 05 sty 2009, 19:31

dzięki wielkie . Jakkbym mógł to postawił bym piwko.

I jak tak dokładnie wczytam sie w Twój post wcześniej :
PORTx.y=1 ustawi napięcie=VCC to dopiero teraz ro zrozumiałen że to to samo co PORTD.3=1
Ale jakoś dopiero teraz jak napisałeś post to to pojołem

Jeszcze raz dzięki

K_o_n_r_a_d
Użytkownik
Posty: 123
Rejestracja: 29 lip 2005, 10:21
Lokalizacja: Lublin

Post autor: K_o_n_r_a_d » 05 sty 2009, 19:41

A dlaczego podłączasz diodę pomiędzy dwa piny? Takie rozwiązanie jest nieekonomiczne.
Jesteś świadomy tego, że można podłączyć diodę pod pin AVRa i pod VCC lub GND a efekt uzyskasz ten sam?

Awatar użytkownika
radzio
Użytkownik
Posty: 573
Rejestracja: 07 gru 2004, 23:06
Lokalizacja: Sosnowiec
Kontakt:

Post autor: radzio » 05 sty 2009, 20:58

K_o_n_r_a_d pisze:A dlaczego podłączasz diodę pomiędzy dwa piny? Takie rozwiązanie jest nieekonomiczne.
Jesteś świadomy tego, że można podłączyć diodę pod pin AVRa i pod VCC lub GND a efekt uzyskasz ten sam?
Wynika to z budowy płytki AVT-3500. Tak jest podłączony wyświetlacz i nie bardzo można to zmienić.

dexter1515
-
Posty: 5
Rejestracja: 04 sty 2009, 21:56
Lokalizacja: z przyszłości :)

Post autor: dexter1515 » 06 sty 2009, 19:12

podałem tylko taki przyklad zebym pojoł te porty we/wy
a taraz jak to rozumiem to napszyszłość jedna nózka diody do procka a druga bezpośrednio pod zasilanko

pozdrawiam

Awatar użytkownika
RcTomek
Moderator
Posty: 243
Rejestracja: 27 wrz 2007, 21:15
Lokalizacja: Głogów / Wrocław

Post autor: RcTomek » 06 sty 2009, 21:31

dexter1515 pisze:podałem tylko taki przyklad zebym pojoł te porty we/wy
a taraz jak to rozumiem to napszyszłość jedna nózka diody do procka a druga bezpośrednio pod zasilanko
przez rezystor i dopiero pod zasilanko. W obwód trzeba dać rezystor ograniczający prąd.

dexter1515
-
Posty: 5
Rejestracja: 04 sty 2009, 21:56
Lokalizacja: z przyszłości :)

Post autor: dexter1515 » 07 sty 2009, 0:00

rozumiem że bez rezystorka się przepali ?

K_o_n_r_a_d
Użytkownik
Posty: 123
Rejestracja: 29 lip 2005, 10:21
Lokalizacja: Lublin

Post autor: K_o_n_r_a_d » 07 sty 2009, 9:42

Przepali się i dioda, i port.
Zawsze w szereg z diodą rezystor.

adaki
-
Posty: 1
Rejestracja: 07 lis 2008, 6:04
Lokalizacja: Chojnice

Post autor: adaki » 08 sty 2009, 6:54

Cześć:)
Temat jest o portach więc się zapytam. Próbuję zrobić termometr z dwukolorowym wyświetlaczem, przy przejsciu przez 0 stopni nastepuję zmiana koloru. Jak w takim przypadku ustawić stany początkowe portów procesora?[/fade]
Załączniki
t1.jpg
Schemat

ODPOWIEDZ