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 

Programiranje ARM mikrokontrolerjev v C-ju

 
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
bostjan007
Neznanec
Neznanec



Pridružen-a: Pet 11 Feb 2011 12:24
Prispevkov: 2
Aktiv.: 0.01

PrispevekObjavljeno: Pet Feb 11, 2011 12:49 pm    Naslov sporočila:  Programiranje ARM mikrokontrolerjev v C-ju Odgovori s citatom

Pozdravljeni

Pred kratkim sem se začel učiti kako uporabljati in programirati ARM mikrokontrolerje v C-ju. V glavnem se učim na ta način, da preverim kako so narejeni "exampli" in nato poskusim enako funkcionalnost narediti še v mojih programih. Sedaj pa imam problem, ker ne znam spremeniti stanja enega samega bita registra. Vsi primeri in vse kar sem našel na internetu je narejeno z masko.

Primer: LPC_GPIO1->DATA |= 0x001 (če hočem LSB stanje postavit na "1") in LPC_GPIO1->DATA &= 0xFFE (če hočem LSB stanje postavit na "0")

Sedaj me zanima ali obstaja še kakšna druga variant za direktno spreminjanje posameznih bitov registrov brez dela z maskami? Je to sploh mogoče narediti?

Za programiranje uporabljam uVision 4 razvojno okolje, delam pa programe za LPC1111 mikrokontroler.

lep pozdrav
Boštjan
Nazaj na vrh
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo
trot
Član
Član



Pridružen-a: Čet 18 Jan 2007 20:25
Prispevkov: 1282
Aktiv.: 5.70
Kraj: glej fogl

PrispevekObjavljeno: Pet Feb 11, 2011 1:50 pm    Naslov sporočila:   Odgovori s citatom

Če hočeš spremeniti en bit in pustiti ostale nedotaknjene, potem ne. Kaj pa te moti pri te tem načinu?
_________________
lp, Klemen
Nazaj na vrh
Skrit Poglej uporabnikov profil Pošlji zasebno sporočilo
bostjan007
Neznanec
Neznanec



Pridružen-a: Pet 11 Feb 2011 12:24
Prispevkov: 2
Aktiv.: 0.01

PrispevekObjavljeno: Pet Feb 11, 2011 2:58 pm    Naslov sporočila:   Odgovori s citatom

Zdravo

V osnovi me moti to da imaš potem dva različna načina glede na to ali želiš bit nastaviti na vrednost "0" ali "1" (&= ali |=). To pomeni, da moram sedaj v programu najprej preveriti kaj želim narediti in nato šele lahko izvedem operacijo.

Pri programiranju PIC kontrolerja se en bit spremeni takole:
PORTBbits.RB0=GetOutputValue() // fukcija vrača "1" ali "0"

Za ARM pa potem ne vidim druge variante kot da napišem naslednje:
if(GetOutputValue()){
LPC_GPIO1->DATA |= 0x001;
}else{
LPC_GPIO1->DATA &= 0xFFE;
}

Bom preveril kako to zgleda v asemblerju in kako je z hitrostjo.

Če pa kdo ve za kakšno boljšo možnost, naj prosim sporoči.

LP
Boštjan
Nazaj na vrh
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo
domen_puncer
Član
Član



Pridružen-a: Čet 01 Maj 2008 13:30
Prispevkov: 78
Aktiv.: 0.37
Kraj: Ljubljana, Mozirje

PrispevekObjavljeno: Sob Feb 12, 2011 10:54 am    Naslov sporočila:   Odgovori s citatom

cortex-m3 cipi imajo "bit banding", mogoce si poglej se to.

Dosti cipov ima tudi posebne registre za GPIO, kjer pisanje v en register nastavi bite, pisanje v drugi, pa pobrise (ni treba brati, pa maskirati).

Drugace pa izgleda, kot da si delas problem, kjer ga ni. Smile

_________________
Tiskanje sudoku
Nazaj na vrh
Odsoten Poglej uporabnikov profil Pošlji zasebno 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: 7 dni


Powered by phpBB © 2001, 2005 phpBB Group