Poglej prejšnjo temo :: Poglej naslednjo temo |
Avtor |
Sporočilo |
Domenius Član



Pridružen-a: Sre 30 Nov 2005 14:15 Prispevkov: 1188 Aktiv.: 5.01 Kraj: Medvode
|
Objavljeno: Ned Feb 04, 2007 9:18 pm Naslov sporočila: Input in Output na enem pinu |
|
|
Pozdravjeni!
Nekaj se igram z LPC2103 (v uVision3), pa me zanima kako se da na najlažji (optimalnejši) način uporabit nek pin kot vhodi in izhodni. Nekako tako kot 1Wire. Ali je treba vedno uporabit IODIR register ali obstaja kakšen trik? _________________ It's electric! |
|
Nazaj na vrh |
|
 |
Glitch Član

Pridružen-a: Pet 07 Apr 2006 11:40 Prispevkov: 1477 Aktiv.: 6.32
|
Objavljeno: Ned Feb 04, 2007 11:58 pm Naslov sporočila: |
|
|
Stanje pina lahko vedno preberes pa naj bo izhod ali vhod.
Kar pa ti rabis je open-drain pin vedno nastavljen kot izhod. I2C pini so open-drain. |
|
Nazaj na vrh |
|
 |
NeoTO Član


Pridružen-a: Pon 28 Mar 2005 19:19 Prispevkov: 2752 Aktiv.: 11.61 Kraj: Trzic
|
Objavljeno: Pon Feb 05, 2007 12:08 am Naslov sporočila: |
|
|
Misliš uporabljat pin hkrati kot vhod in izhod (a ni to malo čudno?) ali izmenično? _________________ Lp,
Matevž |
|
Nazaj na vrh |
|
 |
Domenius Član



Pridružen-a: Sre 30 Nov 2005 14:15 Prispevkov: 1188 Aktiv.: 5.01 Kraj: Medvode
|
Objavljeno: Pon Feb 05, 2007 12:29 am Naslov sporočila: |
|
|
Glitch hvala. NeoTO: uporabljat mislim izmenično. _________________ It's electric! |
|
Nazaj na vrh |
|
 |
Domenius Član



Pridružen-a: Sre 30 Nov 2005 14:15 Prispevkov: 1188 Aktiv.: 5.01 Kraj: Medvode
|
Objavljeno: Pon Feb 05, 2007 12:42 am Naslov sporočila: |
|
|
Kaj pa brez pull-up uporov bi se dalo to rešit? _________________ It's electric! |
|
Nazaj na vrh |
|
 |
Glitch Član

Pridružen-a: Pet 07 Apr 2006 11:40 Prispevkov: 1477 Aktiv.: 6.32
|
Objavljeno: Pon Feb 05, 2007 1:24 am Naslov sporočila: |
|
|
Kako pa mislis definirat izhod open-drain tranzistorju, ce ni pull-upa? Lahko, da ima kaksna 1-wire interni pull-up, potem ne potrebujes zunanjega. |
|
Nazaj na vrh |
|
 |
aly Član



Pridružen-a: Tor 28 Sep 2004 14:51 Prispevkov: 9407 Aktiv.: 39.70 Kraj: Kranj - struževo
|
Objavljeno: Pon Feb 05, 2007 2:25 pm Naslov sporočila: |
|
|
Izhodni podatek mu nastaviš, da je stalno 0. Potem pa samo z DIR bitom spreminjaš med "0" (izhod) in "HiZ"(vhod). HiZ = logična 1 z zunanjim pull-upom. Tako je pravilna nastavitev za 1-Wire in I2C. _________________ I'm going to stand outside, so if anyone asks, I'm outstanding  |
|
Nazaj na vrh |
|
 |
Glitch Član

Pridružen-a: Pet 07 Apr 2006 11:40 Prispevkov: 1477 Aktiv.: 6.32
|
Objavljeno: Pon Feb 05, 2007 3:07 pm Naslov sporočila: |
|
|
Aly, na cigavo sporocilo se nanasa tvoj komentar?
V konkretnem primeru je resitev mozna tudi brez spreminjanja smeri. |
|
Nazaj na vrh |
|
 |
aly Član



Pridružen-a: Tor 28 Sep 2004 14:51 Prispevkov: 9407 Aktiv.: 39.70 Kraj: Kranj - struževo
|
Objavljeno: Tor Feb 06, 2007 9:53 am Naslov sporočila: |
|
|
Glitch je napisal/a: |
Aly, na cigavo sporocilo se nanasa tvoj komentar? |
Na to sporočilo:
Domenius je napisal/a: |
kako se da na najlažji (optimalnejši) način uporabit nek pin kot vhodi in izhodni. Nekako tako kot 1Wire. |
Hm.. Tole mi ni všeč:
Glitch je napisal/a: |
V konkretnem primeru je resitev mozna tudi brez spreminjanja smeri. |
Če ne spreminjaš smeri, je vedno aktiven eden od izhodnih tranzistorjev. In če hočeš spremeniti nivo na pinu, da bi prebral drugo logično vrednost, moraš potegnit ven iz pina 20mA ali še več... Sicer nima smisla uporaba kot vhod...
Sicer pa sem TUKAJ (v odstavku: "Tipke za izbiro strani") že podrobno opisal, kako se da en sam pin uporabiti kot vhod za tipko in izhod za LED. Na shemi je uporabljen signal "T" = Tristate = pin na procesorju definiran kot vhod.
LP _________________ I'm going to stand outside, so if anyone asks, I'm outstanding  |
|
Nazaj na vrh |
|
 |
NeoTO Član


Pridružen-a: Pon 28 Mar 2005 19:19 Prispevkov: 2752 Aktiv.: 11.61 Kraj: Trzic
|
Objavljeno: Tor Feb 06, 2007 10:13 am Naslov sporočila: |
|
|
Aly, kaj pa če je samo en izhodni tranzistor na pinu ??? (open-drain...)
Imaš pač source tranzistor, ki vleče izhod na logično 0 (vsiljena niča) in imaš pull-up upor, ki nadomesti drain tranzistor in omogoča, da priključena naprava vsili ničlo.
Torej imaš pin definiran ves čas kot izhod, ob ničli vsiliš 0 na vodilo, ob enki pa lahko ali pošiljaš enko ali pa gledaš vrednost vodila. _________________ Lp,
Matevž |
|
Nazaj na vrh |
|
 |
aly Član



Pridružen-a: Tor 28 Sep 2004 14:51 Prispevkov: 9407 Aktiv.: 39.70 Kraj: Kranj - struževo
|
Objavljeno: Tor Feb 06, 2007 12:46 pm Naslov sporočila: |
|
|
NeoTO je napisal/a: |
Aly, kaj pa če je samo en izhodni tranzistor na pinu ??? (open-drain...) |
To je pa čisto druga zadeva.. Ampak v prvem postu ni omenjena
Če pa so I2C pini samo open-drain, potem pa se strinjam. Kar pa me čudi - ponavadi so isti pini lahko tudi general-purpose push-pull... _________________ I'm going to stand outside, so if anyone asks, I'm outstanding  |
|
Nazaj na vrh |
|
 |
Glitch Član

Pridružen-a: Pet 07 Apr 2006 11:40 Prispevkov: 1477 Aktiv.: 6.32
|
Objavljeno: Tor Feb 06, 2007 4:25 pm Naslov sporočila: |
|
|
Mogoce bi moral napisati bolj podrobno: smer ne spremenis, spremenis samo stanje pina na katerem zelis prebrati vrednost na 1. Tipicna wired-or vezava.
Ni mi jasno od kod 20mA tukaj? Verjetno mislis, da je izhod definiran kot push-pull in ne kot open-drain? To, da mora biti open drain sem povedal takoj na zacetku. |
|
Nazaj na vrh |
|
 |
aly Član



Pridružen-a: Tor 28 Sep 2004 14:51 Prispevkov: 9407 Aktiv.: 39.70 Kraj: Kranj - struževo
|
Objavljeno: Tor Feb 06, 2007 4:30 pm Naslov sporočila: |
|
|
Glitch je napisal/a: |
Ni mi jasno od kod 20mA tukaj? Verjetno mislis, da je izhod definiran kot push-pull in ne kot open-drain? To, da mora biti open drain sem povedal takoj na zacetku. |
To že, ampak pri večini mikrokontrolerjev so vsi pini push-pull.
Tudi če enega od hardverskih I2C pinov uporabiš kot GPIO, je v večini primerov push-pull. _________________ I'm going to stand outside, so if anyone asks, I'm outstanding  |
|
Nazaj na vrh |
|
 |
Glitch Član

Pridružen-a: Pet 07 Apr 2006 11:40 Prispevkov: 1477 Aktiv.: 6.32
|
Objavljeno: Tor Feb 06, 2007 4:55 pm Naslov sporočila: |
|
|
aly je napisal/a: |
To že, ampak pri večini mikrokontrolerjev so vsi pini push-pull.
Tudi če enega od hardverskih I2C pinov uporabiš kot GPIO, je v večini primerov push-pull. |
Vprašanje je bilo zelo konkretno (kar je bolj redko na tem forumu): LPC2103 in mozna resitev brez spreminjanja smeri. Ocitno je bil tukaj "nesporazum" (ki to v resnici ni bil)
Konkretno so pini kjer je I2C pini vedno open-drain, tudi ko so GPIO. LPC2000 je precej trapasto narejen kar se tice IO. |
|
Nazaj na vrh |
|
 |
|