 |
www.elektronik.si Forum o elektrotehniki in računalništvu
|
Poglej prejšnjo temo :: Poglej naslednjo temo |
Avtor |
Sporočilo |
urosg1 Neznanec

Pridružen-a: Pet 07 Dec 2007 19:29 Prispevkov: 7 Aktiv.: 0.03
|
Objavljeno: Ned Jan 25, 2009 4:19 pm Naslov sporočila: Priklop na šarma |
|
|
Pozdravljeni!
Zanima me kako priklopiti kako napravo na s-arm. Npr. led diodo.
Če dam v programu _setpindir(3,1), in dam na sponko 0.3 in gnd diodo pa nič.
Hvala |
|
Nazaj na vrh |
|
 |
Benjamin Član

Pridružen-a: Tor 10 Jul 2007 11:23 Prispevkov: 116 Aktiv.: 0.53 Kraj: Trebnje, Ljubljana
|
Objavljeno: Ned Jan 25, 2009 5:14 pm Naslov sporočila: |
|
|
Živjo!
Sicer ne vem točno kaj naredi funkcija _setpindir(), vendar že po samem imenu sklepam da samo nastavi določen pin (morda cel port?) kot izhoden. Potrebno pa je še postaviti vrednost na tem pinu na '1' (IO0SET = 0x03;), če boš vezal diodo proti masi (zaporedno vezan upor tudi ne bi škodoval).
LP _________________ Cessna 152: "Flight Level Three Thousand, Seven Hundred"
Controller: "Roger, contact Houston Space Center" |
|
Nazaj na vrh |
|
 |
dojc Član


Pridružen-a: Sre 05 Dec 2007 12:10 Prispevkov: 30 Aktiv.: 0.14 Kraj: Šentjernej
|
Objavljeno: Ned Jan 25, 2009 6:46 pm Naslov sporočila: |
|
|
s funkcijo setpindir() določiš direction (ali je pin input ali output)
s funkcijo outportp() pa nastaviš pin na logično 1 oz. 0, seveda če je definiran kot output.
drugače pa imaš tukaj razloženo kaj katera funkcija počne
http://fides.fe.uni-lj.si/~lrnv/racunalnistvo2/
LP |
|
Nazaj na vrh |
|
 |
dpavli Član

Pridružen-a: Čet 25 Jan 2007 9:19 Prispevkov: 121 Aktiv.: 0.54
|
Objavljeno: Ned Jan 25, 2009 11:01 pm Naslov sporočila: |
|
|
Pa glej, da ne boš priklopil diode direktno med VCC in ground.  |
|
Nazaj na vrh |
|
 |
xay Član

Pridružen-a: Tor 03 Jun 2008 9:24 Prispevkov: 41 Aktiv.: 0.20
|
Objavljeno: Pon Jan 26, 2009 1:11 am Naslov sporočila: |
|
|
Pazi, šarm zdrži samo 4mA konstantnega toka! Tako da ne smeš vezati navadne led diode direktno na izhod, ampak preko tranzistorja. Lahko pa vežeš LC (low current) diodo. Vsekakor pa ti svetujem, da najprej probaš vkolpiti ni izklopiti tiste štiri diode, ki so že na šarmu. Pa veliko sreče...  |
|
Nazaj na vrh |
|
 |
urosg1 Neznanec

Pridružen-a: Pet 07 Dec 2007 19:29 Prispevkov: 7 Aktiv.: 0.03
|
Objavljeno: Pon Jan 26, 2009 12:09 pm Naslov sporočila: |
|
|
Te 4 diode ze znam izklopiti pa vklopiti. Enkrat sem vezal direkt na gnd pa vcc pa je dioda crknla. Je lahko se kaj drugega? Mislil se zaporedno z diodo se en upor. |
|
Nazaj na vrh |
|
 |
dojc Član


Pridružen-a: Sre 05 Dec 2007 12:10 Prispevkov: 30 Aktiv.: 0.14 Kraj: Šentjernej
|
Objavljeno: Pon Jan 26, 2009 1:46 pm Naslov sporočila: |
|
|
če ima dioda I current 4mA ali manj, lahko z zaporednim uporom omejiš tok po enačbi 3,3V = I*R + Ud.
Če pa je tok diode večji, pa moraš, kot je bilo že prej povedano, diodo krmiliti prek tranzistorja.
LP |
|
Nazaj na vrh |
|
 |
urosg1 Neznanec

Pridružen-a: Pet 07 Dec 2007 19:29 Prispevkov: 7 Aktiv.: 0.03
|
Objavljeno: Tor Jan 27, 2009 11:18 am Naslov sporočila: |
|
|
še vedno ne gre. najprej dam setpindir(3,1), potem še outportp(3,1) pa ne gre. Kateri priključek je ta 3? 0.30 ali 0.3 |
|
Nazaj na vrh |
|
 |
Mihec Član


Pridružen-a: Pet 24 Mar 2006 20:10 Prispevkov: 415 Aktiv.: 1.77 Kraj: Mengeš
|
Objavljeno: Tor Jan 27, 2009 5:12 pm Naslov sporočila: |
|
|
Funkcija _setpindir:
Koda: |
void _setpindir(unsigned int pinid, int dir)
//pinid je med 0 in 15 in ustreza pinom P0.0 do P0.15
//dir = 0: vhod, dir = 1, izhod
{
unsigned int tmp;
unsigned int dirmask;
unsigned int selectpinmask;
if (pinid > 15) return;
dirmask = 0x1 << pinid;
selectpinmask = ~(0x3 << (pinid * 2));
PINSEL0 &= selectpinmask; //pin postane GPIO port
if (dir == 0)
{
IO0DIR = IO0DIR & ~dirmask;
}
else
{
IO0DIR = IO0DIR | dirmask;
}
} |
Torej, izbereš vhodne parametre v funkcij...npr. Pin2 postaviš na izhod:
Koda: |
void _setpindir(3, 1); |
S funkcijo "void outportp();" postaviš Pin2 na visoko stanje:
Koda: |
void outportp(3, 1); |
Za ledice katere so že integrirane v šarmu imaš tudi že spisane funkcije:
Najprej iniciliziraš ledice:
Koda: |
void _LEDInit(void); |
Potem prižgeš 1. ledico
Koda: |
void _setleds(0x01); |
tako pa jo izključiš:
Koda: |
void _clrleds(0x01); |
|
|
Nazaj na vrh |
|
 |
|
|
Ne, ne moreš dodajati novih tem v tem forumu Ne, ne moreš odgovarjati na teme v tem forumu Ne, ne moreš urejati svojih prispevkov v tem forumu Ne, ne moreš brisati svojih prispevkov v tem forumu Ne ne moreš glasovati v anketi v tem forumu Ne, ne moreš pripeti datotek v tem forumu Ne, ne moreš povleči datotek v tem forumu
|
Uptime: 7 dni
Powered by phpBB © 2001, 2005 phpBB Group
|