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 

IOCONFIG registri (MODE1, MODE1_set, MODE1_reset,...)

 
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
71GA
Član
Član



Pridružen-a: Tor 16 Jun 2009 18:53
Prispevkov: 391
Aktiv.: 2.00
Kraj: Ljubljana

PrispevekObjavljeno: Pon Okt 03, 2011 12:47 am    Naslov sporočila:  IOCONFIG registri (MODE1, MODE1_set, MODE1_reset,...) Odgovori s citatom

Lep pozdrav!

Že dolgo nisem nič pisal ampak sem ravno pred tem, da napišem prvi blinker na ARM9 in me zanima sledeče. V LPC3141 user manualu sem na str. 312 v tabeli 322 našel več registrov in namreč:

    MODE1,
    MODE1_set,
    MODE1_reset,
    MODE2,
    MODE2_set,
    MODE2_reset,


Vem, da z nastavljanjem N-tega bita v MODE0 in MODE1 registrih lahko N-temu pinu določim eno izmed štirih vlog: input (high impedance), output s katerim razpolaga določena periferija, gpio output driven low in gpio output driven high. Zanima me, kaj pomeni "driven low" oz. "driven high". Ali to pomeni, da je ob resetu v logični 0 oz logični 1?

Bega me namreč dejstvo, da imam poleg MODE1 in MODE2 registrov še registre MODE0_set, MODE0_reset, MODE1_set in MODE_reset. Kaj vbistvu počnejo ti 4 registri?


Hvala! LP
Nazaj na vrh
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo Pošlji E-sporočilo Obišči avtorjevo spletno stran
Benjamin
Član
Član



Pridružen-a: Tor 10 Jul 2007 11:23
Prispevkov: 116
Aktiv.: 0.53
Kraj: Trebnje, Ljubljana

PrispevekObjavljeno: Pon Okt 03, 2011 9:51 am    Naslov sporočila:   Odgovori s citatom

Živjo,

Iz registra MODEx lahko prebereš trenutno stanje registra,
ko hočeš katerikoli bit postaviti na '1' to storiš z vpisom '1' v MODEx_set,
ko hočeš postaviti bit na '0' to storiš z vpisom '1' v MODEx_reset.

Ob resetu so vsi GPIO pini definirani kot vhodi.
Ko nastaviš MODEx registre kot "driven low", to pomeni da je tisti pin definiran kot izhod in postavljen na '0'.
Ko nastaviš MODEx registre kot "driven high", to pomeni da je tisti pin definiran kot izhod in postavljen na '1'.

Vsak bit v registru MODEx predstavlja en GPIO pin.

Primer kako Linux postavi GPIO pin na '0' ali '1' (value) na LPC3152:
Koda:
GPIO_M1_SET(port) = pin;
if(value) {
   GPIO_M0_SET(port) = pin;
} else {
   GPIO_M0_RESET(port) = pin;
}

_________________
Cessna 152: "Flight Level Three Thousand, Seven Hundred"
Controller: "Roger, contact Houston Space Center"
Nazaj na vrh
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo
71GA
Član
Član



Pridružen-a: Tor 16 Jun 2009 18:53
Prispevkov: 391
Aktiv.: 2.00
Kraj: Ljubljana

PrispevekObjavljeno: Pon Okt 03, 2011 3:47 pm    Naslov sporočila:   Odgovori s citatom

Benjamin je napisal/a:

Ko nastaviš MODEx registre kot "driven low", to pomeni da je tisti pin definiran kot izhod in postavljen na '0'.
Ko nastaviš MODEx registre kot "driven high", to pomeni da je tisti pin definiran kot izhod in postavljen na '1'.

Ali to pomeni, da je default vrednost pri "driven low" izhodih 0, pri "driven high" izhodih pa 1?
Predvidevam, da si ti opisoval "driven low" izhode, ko si rekel:
Benjamin je napisal/a:

ko hočeš katerikoli bit postaviti na '1' to storiš z vpisom '1' v MODEx_set,
ko hočeš postaviti bit na '0' to storiš z vpisom '1' v MODEx_reset.

Predvidevam tudi, da bi za "driven high" izhode registra MODEx_set in MODEx_reset delovala takole:

    ko hočem katerikoli bit postaviti na '1' to storim z vpisom '1' v MODEx_reset,
    ko hočeš postaviti bit na '0' to storiš z vpisom '1' v MODEx_set.


Mi lahko prosim poveš, če pravilno razmišljam, ali se motim?
Nazaj na vrh
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo Pošlji E-sporočilo Obišči avtorjevo spletno stran
Benjamin
Član
Član



Pridružen-a: Tor 10 Jul 2007 11:23
Prispevkov: 116
Aktiv.: 0.53
Kraj: Trebnje, Ljubljana

PrispevekObjavljeno: Tor Okt 04, 2011 9:05 am    Naslov sporočila:   Odgovori s citatom

71GA je napisal/a:

Ali to pomeni, da je default vrednost pri "driven low" izhodih 0, pri "driven high" izhodih pa 1?

Tako je. Default vrednost in edina možna.

Citiram:

Predvidevam, da si ti opisoval "driven low" izhode, ko si rekel:
Benjamin je napisal/a:

ko hočeš katerikoli bit v registru MODEx postaviti na '1' to storiš z vpisom '1' v MODEx_set,
ko hočeš katerikoli bit v registru MODEx postaviti na '0' to storiš z vpisom '1' v MODEx_reset.


To sem govoril na splošno.
Citiram:

Predvidevam tudi, da bi za "driven high" izhode registra MODEx_set in MODEx_reset delovala takole:

    ko hočem katerikoli bit postaviti na '1' to storim z vpisom '1' v MODEx_reset,
    ko hočeš postaviti bit na '0' to storiš z vpisom '1' v MODEx_set.

Ravno obratno, zamenjal si registra _set in _reset, ter kot sem rekel, je to na splošno in ne samo za "driven high".

Ko hočeš nek GPIO pin imeti kot izhod in ga postaviti na '0',
to narediš npr. takole (v User Manualu si poglej če je pravilno):

reg_GPIO_MODE1_set = pin;
reg_GPIO_MODE0_set = pin;

Ko hočeš nek GPIO pin imeti kot izhod, in ga postaviti na '1':

reg_GPIO_MODE1_set = pin;
reg_GPIO_MODE0_reset = pin;

Ko hočeš nek GPIO pin imeti kot vhod:
reg_GPIO_MODE1_reset = pin;
reg_GPIO_MODE0_reset = pin;


LP

_________________
Cessna 152: "Flight Level Three Thousand, Seven Hundred"
Controller: "Roger, contact Houston Space Center"
Nazaj na vrh
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo
71GA
Član
Član



Pridružen-a: Tor 16 Jun 2009 18:53
Prispevkov: 391
Aktiv.: 2.00
Kraj: Ljubljana

PrispevekObjavljeno: Tor Okt 04, 2011 1:11 pm    Naslov sporočila:   Odgovori s citatom

Hvala.

LP Žiga
Nazaj na vrh
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo Pošlji E-sporočilo Obišči avtorjevo spletno stran
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