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

Pridružen-a: Pet 02 Mar 2007 12:01 Prispevkov: 20 Aktiv.: 0.09 Kraj: Ljubljana
|
Objavljeno: Pet Mar 02, 2007 12:56 pm Naslov sporočila: pic klicanje posameznih izhodov |
|
|
Pzdravljeni,
kot prvo sem zacetnik pri programiranju pic, ki nekaj malega ve, veliko pa ne!
Se ze nekaj casa ubadam z programom, ki bi mi na 16f84a prizgal ledico glede na to katero tipko pritisnem. vem kako brat tipke pa tudi ldice prizgem , ampak ne vem pa, kako bi same tipke naredo neodvisne, zihr je neki lep trik, bi prosil ce mi kdo pomaga.
LP
goran |
|
Nazaj na vrh |
|
 |
bungee Član


Pridružen-a: Pon 07 Mar 2005 18:49 Prispevkov: 1479 Aktiv.: 6.24 Kraj: Ljubljana
|
Objavljeno: Pet Mar 02, 2007 1:32 pm Naslov sporočila: |
|
|
Najprej povej še kako imaš povezane tipke in kje imaš LED-ice. Pa seveda opiši svoj problem bolj podrobno. Recimo želiš, da se na ekrat prižge samo ena LED ali tudi več na enkrat ... Rešitev je mnogo, zato je dobro če bolj definiraš vprašanje. |
|
Nazaj na vrh |
|
 |
gl83 Član

Pridružen-a: Pet 02 Mar 2007 12:01 Prispevkov: 20 Aktiv.: 0.09 Kraj: Ljubljana
|
Objavljeno: Pet Mar 02, 2007 2:11 pm Naslov sporočila: |
|
|
vhodi so ra1...ra4, izhodi so rb1...rb4, zelim, da bi moj program prizgal ledico, npr. pritisnem ra1...se prizge rb1, in jo pusti prizgano, tudi ko jaz prizgem katerokoli naslednjo. Uspelo mi je napisati program ki jih priziga, vendar jih moram prizigati zapoted!!! najpre ra1..rb1, ra2..rb2, ne morem pa katerokoli prizgati prvo, drugo itd!
Programiram v asemblerju.
najlepsa hvala za odgovore
lp
Goran |
|
Nazaj na vrh |
|
 |
bungee Član


Pridružen-a: Pon 07 Mar 2005 18:49 Prispevkov: 1479 Aktiv.: 6.24 Kraj: Ljubljana
|
Objavljeno: Pet Mar 02, 2007 2:59 pm Naslov sporočila: |
|
|
Evo košček kode ... ni uporablen debounce, amapk to lahko tudi kasneje popraviš
Koda: |
Ponovi: BTFSS PORTA.0 //Ali je pritisnjena prva tipka
GOTO Naprej1 //Ni pojdi naprej
MOVLW 01 // Zamenjaj stanje na izhodu. Če je prižgana ugasni in obratno
XORWF PORTB,F
Naprej1: BTFSS PORTA.1 //Ali je pritisnjena druga tipka
GOTO Naprej2 //Ni pojdi naprej
MOVLW 02 //Zamenjaj stanje na izhodu
XORWF PORTB,F
Naprej2: BTFSS PORTA.2
GOTO Naprej3
MOVLW 04
XORWF PORTB,F
Naprej3: BTFSS PORTA.3
GOTO Ponovi
MOVLW 08
XORWF PORTB,F
GOTO Ponovi
|
4 tipke 4 ledice ... kaj več? To je ideja, upam da ti pomaga  |
|
Nazaj na vrh |
|
 |
gl83 Član

Pridružen-a: Pet 02 Mar 2007 12:01 Prispevkov: 20 Aktiv.: 0.09 Kraj: Ljubljana
|
Objavljeno: Pet Mar 02, 2007 3:13 pm Naslov sporočila: |
|
|
to je del moje kode, a se da s tem kaj nardit, ali sem cist zasel , tvoja ideja mi ni najbolj jasna, mislim ukazi so, sam mi ni jasno katere naslove klices. aja, mam obrnjene tipke, 1-izklop, 0-vklop.
Koda: |
beri1
btfsc PORTA,1
goto beri2
call zakasnitev
spust1
btfss PORTA,1
goto spust1
call zakasnitev
bsf PORTB,1
beri2
btfsc PORTA,2
goto beri3
call zakasnitev
spust2
btfss PORTA,2
goto spust2
call zakasnitev
bsf PORTB,2
beri3
btfsc PORTA,3
goto beri1
call zakasnitev
spust3
btfss PORTA,3
goto spust3
call zakasnitev
bsf PORTB,3
[/scroll] |
|
|
Nazaj na vrh |
|
 |
Highlag Član


Pridružen-a: Pet 23 Jan 2004 20:42 Prispevkov: 4034 Aktiv.: 17.03 Kraj: Črnuče
|
Objavljeno: Pet Mar 02, 2007 3:32 pm Naslov sporočila: |
|
|
Prvo, kar mi pade v oči je, da PortB nikoli ne zbrišeš.
Ko bi pritisnil stikalo se bi lučka prižgala nikoli pa ne ugasnila
Drugo kar mi pade v oči je, da nimaš nikjer "Debounce" kode.
Stikalo, ki ga pritisneš ne preklopi trenutno ampak ob preklopu kontakt odskakuje. To povzroči, da procesor to interpretira kot množico pritiskov. Ponavadi se to rešuje takole:
Zanka
Je tipka pritisnjena?
Da - počakaj 20ms - je tipka pritisnjena? Da -naprej Ne - GOTO Zanka
NE naprej _________________ If at first you don't succeed, destroy all evidence that you tried. |
|
Nazaj na vrh |
|
 |
gl83 Član

Pridružen-a: Pet 02 Mar 2007 12:01 Prispevkov: 20 Aktiv.: 0.09 Kraj: Ljubljana
|
Objavljeno: Pet Mar 02, 2007 3:37 pm Naslov sporočila: |
|
|
ni treba odgovarjat, mi je tvoja koda zelo pomagala, ugotovil sem kam moram skociti, in to je bilo neprecenljivo:D. res hvala. zdaj vem da tukaj lahko vedno poiscem odgovore!
se enkrat hvala..
LP
GORAN |
|
Nazaj na vrh |
|
 |
gl83 Član

Pridružen-a: Pet 02 Mar 2007 12:01 Prispevkov: 20 Aktiv.: 0.09 Kraj: Ljubljana
|
Objavljeno: Pet Mar 02, 2007 3:40 pm Naslov sporočila: |
|
|
hvala, debounce je zakasnitev:D. Sem resil tezavo...aja, vhod bo opticno stikalo, tu ni tezav z odskakovanjm!
sedaj dela super...tudi na cipu, sem probo:D
lp
GORAN |
|
Nazaj na vrh |
|
 |
Sokrat Član


Pridružen-a: Čet 25 Avg 2005 11:00 Prispevkov: 5584 Aktiv.: 23.58
|
Objavljeno: Pet Mar 02, 2007 3:52 pm Naslov sporočila: |
|
|
Ce prav razumem naj bi bila pripadajoca LEDica prizgana samo toliko casa, kolikor je tipka sklenjena + malenkostna zakasnitev; zakaj bi sploh potreboval mikrokontroler za tako stvar ? Tipka + upor + kondenzator + LEDica, vse skupaj krat stiri. Po potrebi se en tranzistor, ce bi bil kondenzator neprakticno velik. _________________ Ka ti bo pa torba ce si kupu kolo ? |
|
Nazaj na vrh |
|
 |
gl83 Član

Pridružen-a: Pet 02 Mar 2007 12:01 Prispevkov: 20 Aktiv.: 0.09 Kraj: Ljubljana
|
Objavljeno: Pet Mar 02, 2007 3:56 pm Naslov sporočila: |
|
|
to je samo del programa, drugace je res brez veze imeti kontroler:D! |
|
Nazaj na vrh |
|
 |
gl83 Član

Pridružen-a: Pet 02 Mar 2007 12:01 Prispevkov: 20 Aktiv.: 0.09 Kraj: Ljubljana
|
Objavljeno: Pet Mar 02, 2007 5:06 pm Naslov sporočila: |
|
|
Se ena tezava, ce prozim prekinitev na rb4-rb7, ne gledo kje se pojavi se mi izvrsi prekinitvena rutina, ali se da preverit na katerem pinu je bila prozena prekinitvena rutina! |
|
Nazaj na vrh |
|
 |
igo Član

Pridružen-a: Sre 11 Okt 2006 19:11 Prispevkov: 3641 Aktiv.: 16.01
|
Objavljeno: Pet Mar 02, 2007 6:50 pm Naslov sporočila: |
|
|
Na začetku prekinitve boš moral preveriti stanja na pinih RB4...RB7 z
btfsc PortB,4
goto
btfsc PortB,5
goto
...
da ugotoviš če je prekinitev upravičena.
Pazi, da ne boš prebral Izhodnega pina. Med preverjanjem morajo biti pini RB4...RB7 Vhodni in imeti definirano stanje.
LP,
Igor _________________ Teoretično je praksa posledica teorije, praktično je pa ravno obratno. (igo 2001)
LP, Igor |
|
Nazaj na vrh |
|
 |
gl83 Član

Pridružen-a: Pet 02 Mar 2007 12:01 Prispevkov: 20 Aktiv.: 0.09 Kraj: Ljubljana
|
Objavljeno: Pet Mar 02, 2007 9:13 pm Naslov sporočila: |
|
|
To pomeni, da se ob prozenju prekinitve ohrani stanje pina, kjer je bila prekinitev prožena!
Bom poizkusal..
HVALA
LP
Goran |
|
Nazaj na vrh |
|
 |
Sokrat Član


Pridružen-a: Čet 25 Avg 2005 11:00 Prispevkov: 5584 Aktiv.: 23.58
|
Objavljeno: Sob Mar 03, 2007 12:43 am Naslov sporočila: |
|
|
Ne, ne shrani se, zato ima predlagana resitev potencialno luknjo v delovanju, kakrsnim se je dobro izogniti ze pri nacrtovanju. Predlagana resitev bni bila razlicno obcutljiva na dolzino pritiska stirih tipk in ce bi bilo tipk se vec, bi bila razlika se vecja - pri "zadnjih" tipkah bi bil tako potreben precej daljzi impulz, da bi ga MCU registriral in ustrezno ukrepal. Pri samo stirih tipkah se niti ne pozna veliko, je pa tako malomarno programiranje slaba ideja.
Ce namesto tega prepises stanje vhoda nekam in potem operiras na shranjenem stanju, bo edini dogodek, katerega bos izpustil, pritisk katerekoli tipke za manj kot 4 oz. 5 ciklov; temu se ni mogoce izogniti zaradi nacina delovanja mikrokontrolerja. _________________ Ka ti bo pa torba ce si kupu kolo ? |
|
Nazaj na vrh |
|
 |
gl83 Član

Pridružen-a: Pet 02 Mar 2007 12:01 Prispevkov: 20 Aktiv.: 0.09 Kraj: Ljubljana
|
Objavljeno: Sob Mar 03, 2007 1:44 pm Naslov sporočila: |
|
|
Aha, se mi je zdelo da je tu nekje finta. Torj ce shranim stanje, tipk kjer je bila prozena prekinitev, bi stvar morala delovati. Kje pa moram shranjevati, pred ali v prekinitvi. Sori ker tecnarim, sam nocem nekih "komaj" resitev. Aja 4Mhz, en cikel je 1 s, torej 5 ciklov 5 s.? IN, v cem je bistvena razlika med klicanjem podprogramov, in klicanjem prekinitve. Vem da, v nacinu . Kje so prednosti in slabosti ene, oziroma druge metode.
Hvala za odgovor |
|
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: 492 dni
Powered by phpBB © 2001, 2005 phpBB Group
|