www.elektronik.si Seznam forumov www.elektronik.si
Forum o elektrotehniki in računalništvu
 
 PomočPomoč  IščiIšči  Seznam članovSeznam članov  SkupineSkupine  StatisticsStatistika  AlbumAlbum  DatotekeFilemanager DokumentacijaDocDB LinksPovezave   Registriraj seRegistriraj se 
  PravilaPravila  LinksBolha  PriponkePriponke  KoledarKoledar  ZapiskiZapiski Tvoj profilTvoj profil Prijava za pregled zasebnih sporočilPrijava za pregled zasebnih sporočil PrijavaPrijava 

LPC2378 - IOxPIN

 
Objavi novo temo   Odgovori na to temo   Printer-friendly version    www.elektronik.si Seznam forumov -> ARM arhitektura
Poglej prejšnjo temo :: Poglej naslednjo temo  
Avtor Sporočilo
Olaf
Član
Član



Pridružen-a: Tor 14 Nov 2006 20:09
Prispevkov: 127
Aktiv.: 0.56
Kraj: Ljubljana

PrispevekObjavljeno: Pet Feb 29, 2008 4:28 pm    Naslov sporočila:  LPC2378 - IOxPIN Odgovori s citatom

Živjo

Malo se igram z LPC2378, pa imam probleme z branjem tipk. Namreč - tipke mi prebere normalno, če uporabim standardni IOPIN1, medtem ko mi za FIO1PIN ne dela!

Uporabljam ga pa tako:

Koda:
   
/* Dolocimo se registre za tipke */
   PINSEL3 = 0x00000000;               // pini imajo funkcijo GPIO
   PINMODE3 = 0x000020A0;            // na bite 5-4, 7-6 in 13-12 (tipke) zapisemo vrednost 01 -ni pull up/down uporov
   FIO1DIR = 0x00000000;              // pine P1.x postavimo kot vhodne
   FIO1MASK = 0x00000000;            // z masko dolocimo do katerih pinov lahko dostopamo
/* Zdaj pa tipke lahko beremo prek FIO1PIN, na bitih 18, 19 in 22 */

   
   if ( !(FIO1PIN & (1<<18)) )         // gledamo ali je pritisnjena tipka LEFT; uporabimo masko, da gledamo samo ta bit
   {....}


Nastavil sem PINSEL, PINMODE, FIODIR in FIOMASK - zakaj mi noče prebrati? Pull up/down upori so izklopljeni, saj je stanje vedno definirano ("1" če ni pritisnjena in "0", če je pritisnjena). Vem da bi lahko izpustil te registre, vendar hočem nastavit vse "po regelcih", da bom vedel za naprej.

Hvala

_________________
To mi deli!
Nazaj na vrh
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo
Olaf
Član
Član



Pridružen-a: Tor 14 Nov 2006 20:09
Prispevkov: 127
Aktiv.: 0.56
Kraj: Ljubljana

PrispevekObjavljeno: Pet Feb 29, 2008 6:29 pm    Naslov sporočila:   Odgovori s citatom

Sem že našel!!

Vsej LPC2000 družini sta skupna porta 0 in 1. LPC2378 pa ima več portov, ki omogočajo delovanje tudi v t.i. "High speed GPIO" načinu. Ker "fabrka" želi obdržati kompatibilnost v vsej LPC2000 družini, je potrebno ta način za porta 0 in 1 posebej vklopiti.
V registru SCS (System control and Status register), moraš zato postavit bit 0 na 1. In to je to! Se počutim kar malo d'oh!
Seveda pa bi lahko to napisali tudi v User-Manualu, na mestu kjer razlagajo FIOxPIN in ostale "fast" registre...

BTW - Kako lahko spreminjam samo nek določen bit v registru, pri tem pa ne spremenim ostalih? Je edini način maskiranje?

_________________
To mi deli!
Nazaj na vrh
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo
NeoTO
Član
Član



Pridružen-a: Pon 28 Mar 2005 19:19
Prispevkov: 2752
Aktiv.: 11.59
Kraj: Trzic

PrispevekObjavljeno: Pet Feb 29, 2008 7:00 pm    Naslov sporočila:   Odgovori s citatom

Nastavitev bita: register |= (1<<15);
Brisanje bita: register &= ~(1<<15);

Drugega kot maskiranje nisem videl. Razen pri FIO portih, kjer imaš FIOSET in FIOCLR registre.

_________________
Lp,
Matevž
Nazaj na vrh
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo MSN Messenger - naslov
Pokaži sporočila:   
Objavi novo temo   Odgovori na to temo   Printer-friendly version    www.elektronik.si Seznam forumov -> ARM arhitektura Časovni pas GMT + 2 uri, srednjeevropski - poletni čas
Stran 1 od 1

 
Pojdi na:  
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: 6 dni


Powered by phpBB © 2001, 2005 phpBB Group