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 

Še en univerzalni menu
Pojdi na stran 1, 2  Naslednja
 
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
.
Član
Član



Pridružen-a: Pon 23 Avg 2004 16:16
Prispevkov: 16777190
Aktiv.: 70799.74

PrispevekObjavljeno: Tor Apr 11, 2006 3:16 pm    Naslov sporočila:  Še en univerzalni menu Odgovori s citatom

Brisana vsebina odstranjenega uporabnika.
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.61
Kraj: Trzic

PrispevekObjavljeno: Tor Apr 11, 2006 7:57 pm    Naslov sporočila:   Odgovori s citatom

Lepo napisano! Mislim da je tole precej uporabna zadevca.
Nazaj na vrh
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo MSN Messenger - naslov
snoopy
Član
Član



Pridružen-a: Ned 11 Maj 2003 1:17
Prispevkov: 230
Aktiv.: 0.97
Kraj: Radovljica

PrispevekObjavljeno: Sre Apr 19, 2006 5:21 pm    Naslov sporočila:   Odgovori s citatom

Mare kot začetniku , bi te prosil ,da mi še malce razložiš kako se časovno osvežuje LCD. Vem da ga enkrat vpišeš in zadrži napis dokler ima napajanje, oziroma ga ponovno vpišeš.

Kako pa v praksi osvežuješ LCD ali ob spremembi za njega ali po nastavljenem času (timerju).

Recimo imamo štiri tipke , vsaka predstavlja svoj napis na LCD-ju.
Kako realizirat v praksi.

Snoopy
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.61
Kraj: Trzic

PrispevekObjavljeno: Sre Apr 19, 2006 6:29 pm    Naslov sporočila:   Odgovori s citatom

Ponavadi imajo tile LCD moduli še svoj kontroler, kateremu preneseš podatke za prikaz. Za osveževanje zaslona skrbi on. Torej, ko želiš, da se vsebina LCD-ja spremeni, pač pošlješ nove podatke.
Nazaj na vrh
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo MSN Messenger - naslov
snoopy
Član
Član



Pridružen-a: Ned 11 Maj 2003 1:17
Prispevkov: 230
Aktiv.: 0.97
Kraj: Radovljica

PrispevekObjavljeno: Sre Apr 19, 2006 7:10 pm    Naslov sporočila:   Odgovori s citatom

To poznam , kot sem že omenil v prejšnem mailu.

Če vzamem primer tipka in LCD displey. Tipko beremo vsake 10ms (recimo s timerjem) Če je tipka pritisnjena sledi vpis v LCD.
Kako se reši v praksi ,da se displey vpiše samo enkrat, takoj ko se zazna tipka in ne stalno ob kontroli stisnjene tipke.



Težko razložit, upam ,da sem uspel.
Nazaj na vrh
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo
Sokrat
Član
Član



Pridružen-a: Čet 25 Avg 2005 11:00
Prispevkov: 5584
Aktiv.: 23.56

PrispevekObjavljeno: Sre Apr 19, 2006 7:18 pm    Naslov sporočila:   Odgovori s citatom

Tako, da zaznavas prehod med stanjema - ali v hardveru (uporabis recimo edge-triggered interrupt), ali pa v softveru (odcitas stanje tipke, gres v zanko, v kateri preverjas stanje tipke in ko zaznas spremembo glede na prejsnje stanje, npr. logicno "1" namesto prejsnje vrednosti "0", ustrezno ukrepas). Preverjas lahko oba prehoda, ali pa samo enega (npr. iz "0" v "1", v nasprotno smer pa ne reagiras).
Nazaj na vrh
Skrit Poglej uporabnikov profil Pošlji zasebno sporočilo
snoopy
Član
Član



Pridružen-a: Ned 11 Maj 2003 1:17
Prispevkov: 230
Aktiv.: 0.97
Kraj: Radovljica

PrispevekObjavljeno: Sre Apr 19, 2006 8:09 pm    Naslov sporočila:   Odgovori s citatom

Sokrat je napisal/a:
Preverjas lahko oba prehoda, ali pa samo enega (npr. iz "0" v "1", v nasprotno smer pa ne reagiras).


Lahko pokažeš na primeru, ker je moje znanje Confused .
Nazaj na vrh
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo
LoLek
Član
Član



Pridružen-a: Sre 25 Feb 2004 12:46
Prispevkov: 343
Aktiv.: 1.45

PrispevekObjavljeno: Sre Apr 19, 2006 8:25 pm    Naslov sporočila:   Odgovori s citatom

Ne razumem kje je problem, ko preverjaš tipko imaš sigurno neki pogoj npr. if stavek in če je tipka pritisnjena skoči program v if stavek in pač tam "pohendlaš" zadevo okrog LCD-ja, če pa ni pritisnjena pa program preskoči if stavek.
Res ne vem v čem je problem...
Nazaj na vrh
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo
snoopy
Član
Član



Pridružen-a: Ned 11 Maj 2003 1:17
Prispevkov: 230
Aktiv.: 0.97
Kraj: Radovljica

PrispevekObjavljeno: Sre Apr 19, 2006 9:23 pm    Naslov sporočila:   Odgovori s citatom

LoLek je napisal/a:
Ne razumem kje je problem, ko preverjaš tipko imaš sigurno neki pogoj npr. if stavek in če je tipka pritisnjena skoči program v if stavek in pač tam "pohendlaš" zadevo okrog LCD-ja, če pa ni pritisnjena pa program preskoči if stavek.
Res ne vem v čem je problem...


Program se stalno izvaja in vsakič , ko prideš do tega IF stavka se izvede vpis v LCD. Pomeni, tipka se pregleda vsake 10ms, vsakič je pogoj izpolnjen in vedno se izvede vpis v LCD. Kar pa ni OK.
Potrebujem ,da se izvede samo enkrat čeprav je tipka še kar stisnjena.
Nazaj na vrh
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo
Sokrat
Član
Član



Pridružen-a: Čet 25 Avg 2005 11:00
Prispevkov: 5584
Aktiv.: 23.56

PrispevekObjavljeno: Sre Apr 19, 2006 9:24 pm    Naslov sporočila:   Odgovori s citatom

snoopy je napisal/a:
Sokrat je napisal/a:
Preverjas lahko oba prehoda, ali pa samo enega (npr. iz "0" v "1", v nasprotno smer pa ne reagiras).


Lahko pokažeš na primeru, ker je moje znanje Confused .


Hm, tezka bo - seveda lahko napisem povsem trivialen primer, a ce zgornje razlage nisi razumel, potem ti tudi primer ne bo prav veliko pomagal.

Recimo, da v spremenljivki "stanje" hranis prejsnje stanje tipk (recimo da gre kar za stanje dolocenega 8-bitnega porta, na katerega so tipke prikljucene, izbrana tipka pa je na najnizjem pinu in posledicno v bitu stevilka 1), beri_IO_port() je funkcija, ki vrne trenutno stanje porta, na katerem so obesene tipke, naredi_nekaj_z_LCDjem() pa je stvar, ki naredi zeljeno. Predpostavljam tudi, da naj bi ta del (preverjanje tipk in izvajanje ukrepov glede na pritisk tipk) tekel v neskoncnost, torej ves cas, dokler je naprava prizgana.

Koda:

...
char stanje;
#define MOJA_TIPKA 1

stanje = beri_IO_port();

while (1)
{
if ((beri_IO_port() & 0x01 << MOJA_TIPKA) != (stanje & 0x01))
naredi_nekaj_z_LCDjem();

stanje = beri_IO_port();
}
...


Tole bi odreagiralo na oba prehoda (0 v 1 in 1 v 0). Ce tega ne zelis, pogoj ustrezno popravis tako, da se bo tisti klic izvedel samo ob prehodu iz izbranega v drugo stanje (spodnji primer bi poklical funkcijo naredi_nekaj_z_LCDjem() samo ob prehodu iz 0 v 1, ob prehodu iz 1 v 0 ali dokler je stanje ves cas 1 ali 0 pa ne bi naredil nicesar):

Koda:

...
if ((beri_IO_port() & 0x01 << MOJA_TIPKA) != (stanje & 0x01 >> MOJA_TIPKA) & ((stanje & 0x01 << MOJA_TIPKA) == 0))
...


Se ena opomba: primer je namenoma napisan suboptimalno, da je lazje razumljiv. V praksi bi najbrz uporabil ekskluzivni ali nad izbranima bitoma, kar je en ukaz, namesto zgornjega pogoja, ki je precej bolj obsezen.
Nazaj na vrh
Skrit Poglej uporabnikov profil Pošlji zasebno sporočilo
.
Član
Član



Pridružen-a: Pon 23 Avg 2004 16:16
Prispevkov: 16777190
Aktiv.: 70799.74

PrispevekObjavljeno: Sre Apr 19, 2006 10:09 pm    Naslov sporočila:   Odgovori s citatom

Brisana vsebina odstranjenega uporabnika.
Nazaj na vrh
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo
Sokrat
Član
Član



Pridružen-a: Čet 25 Avg 2005 11:00
Prispevkov: 5584
Aktiv.: 23.56

PrispevekObjavljeno: Sre Apr 19, 2006 10:18 pm    Naslov sporočila:   Odgovori s citatom

Ups, v mojem primeru je tipkarska napaka: operatorji za pomik so cisto v vseh primerih za levi pmik in ne v desno, kot je vsaj enkrat napacno zapisano. Pozna ura in koda od katere nimam nic, pa sem manj pozoren Confused
Nazaj na vrh
Skrit Poglej uporabnikov profil Pošlji zasebno sporočilo
snoopy
Član
Član



Pridružen-a: Ned 11 Maj 2003 1:17
Prispevkov: 230
Aktiv.: 0.97
Kraj: Radovljica

PrispevekObjavljeno: Čet Apr 20, 2006 12:10 pm    Naslov sporočila:   Odgovori s citatom

Hvala Maretu in Sokratu , za posredovano rešitev. Trenutno obdelujem Sokratov predlog.

Sokrat ni mi jasno zakaj se v If stavku potrebuje levi shift ?

Bom popoldan probal kako dela.

Lp
Bojan
Nazaj na vrh
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo
Sokrat
Član
Član



Pridružen-a: Čet 25 Avg 2005 11:00
Prispevkov: 5584
Aktiv.: 23.56

PrispevekObjavljeno: Čet Apr 20, 2006 3:49 pm    Naslov sporočila:   Odgovori s citatom

Zato, da ustrezno nastavis masko izbrane tipke - ce je I/O port recimo 8-bitni, tipka pa je obesena na 5. pinu (torej jo ponazarja 5. bit vrednosti, prebrane iz izbranega porta), potem bo (1 << 5) maska za doticni pin.

Pa se to: predspotavljam seveda, da je arhitektura, za katero to pises, low-endian.
Nazaj na vrh
Skrit Poglej uporabnikov profil Pošlji zasebno sporočilo
Glitch
Član
Član



Pridružen-a: Pet 07 Apr 2006 11:40
Prispevkov: 1477
Aktiv.: 6.32

PrispevekObjavljeno: Čet Apr 20, 2006 6:04 pm    Naslov sporočila:   Odgovori s citatom

[offtopic]

reče se little-endian

little-endian in big-endian probleme rešiš z makroj

[/offtopic]

Anxious
Nazaj na vrh
Skrit Poglej uporabnikov profil Pošlji zasebno sporočilo Pošlji E-sporočilo
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
Pojdi na stran 1, 2  Naslednja
Stran 1 od 2

 
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: 495 dni


Powered by phpBB © 2001, 2005 phpBB Group