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 

pic klicanje posameznih izhodov
Pojdi na stran 1, 2  Naslednja
 
Objavi novo temo   Odgovori na to temo   Printer-friendly version    www.elektronik.si Seznam forumov -> Osnove programiranja PIC-a v Assembler-ju
Poglej prejšnjo temo :: Poglej naslednjo temo  
Avtor Sporočilo
gl83
Član
Član



Pridružen-a: Pet 02 Mar 2007 12:01
Prispevkov: 20
Aktiv.: 0.09
Kraj: Ljubljana

PrispevekObjavljeno: Pet Mar 02, 2007 12:56 pm    Naslov sporočila:  pic klicanje posameznih izhodov Odgovori s citatom

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 Very Happy , 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
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo
bungee
Član
Član



Pridružen-a: Pon 07 Mar 2005 18:49
Prispevkov: 1479
Aktiv.: 6.24
Kraj: Ljubljana

PrispevekObjavljeno: Pet Mar 02, 2007 1:32 pm    Naslov sporočila:   Odgovori s citatom

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
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo Pošlji E-sporočilo
gl83
Član
Član



Pridružen-a: Pet 02 Mar 2007 12:01
Prispevkov: 20
Aktiv.: 0.09
Kraj: Ljubljana

PrispevekObjavljeno: Pet Mar 02, 2007 2:11 pm    Naslov sporočila:   Odgovori s citatom

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
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo
bungee
Član
Član



Pridružen-a: Pon 07 Mar 2005 18:49
Prispevkov: 1479
Aktiv.: 6.24
Kraj: Ljubljana

PrispevekObjavljeno: Pet Mar 02, 2007 2:59 pm    Naslov sporočila:   Odgovori s citatom

Evo košček kode ... ni uporablen debounce, amapk to lahko tudi kasneje popraviš Smile

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 Very Happy
Nazaj na vrh
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo Pošlji E-sporočilo
gl83
Član
Član



Pridružen-a: Pet 02 Mar 2007 12:01
Prispevkov: 20
Aktiv.: 0.09
Kraj: Ljubljana

PrispevekObjavljeno: Pet Mar 02, 2007 3:13 pm    Naslov sporočila:   Odgovori s citatom

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
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo
Highlag
Član
Član



Pridružen-a: Pet 23 Jan 2004 20:42
Prispevkov: 4034
Aktiv.: 17.03
Kraj: Črnuče

PrispevekObjavljeno: Pet Mar 02, 2007 3:32 pm    Naslov sporočila:   Odgovori s citatom

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
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo Obišči avtorjevo spletno stran
gl83
Član
Član



Pridružen-a: Pet 02 Mar 2007 12:01
Prispevkov: 20
Aktiv.: 0.09
Kraj: Ljubljana

PrispevekObjavljeno: Pet Mar 02, 2007 3:37 pm    Naslov sporočila:   Odgovori s citatom

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
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo
gl83
Član
Član



Pridružen-a: Pet 02 Mar 2007 12:01
Prispevkov: 20
Aktiv.: 0.09
Kraj: Ljubljana

PrispevekObjavljeno: Pet Mar 02, 2007 3:40 pm    Naslov sporočila:   Odgovori s citatom

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
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.58

PrispevekObjavljeno: Pet Mar 02, 2007 3:52 pm    Naslov sporočila:   Odgovori s citatom

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
Skrit Poglej uporabnikov profil Pošlji zasebno sporočilo
gl83
Član
Član



Pridružen-a: Pet 02 Mar 2007 12:01
Prispevkov: 20
Aktiv.: 0.09
Kraj: Ljubljana

PrispevekObjavljeno: Pet Mar 02, 2007 3:56 pm    Naslov sporočila:   Odgovori s citatom

to je samo del programa, drugace je res brez veze imeti kontroler:D!
Nazaj na vrh
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo
gl83
Član
Član



Pridružen-a: Pet 02 Mar 2007 12:01
Prispevkov: 20
Aktiv.: 0.09
Kraj: Ljubljana

PrispevekObjavljeno: Pet Mar 02, 2007 5:06 pm    Naslov sporočila:   Odgovori s citatom

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
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo
igo
Član
Član



Pridružen-a: Sre 11 Okt 2006 19:11
Prispevkov: 3641
Aktiv.: 16.01

PrispevekObjavljeno: Pet Mar 02, 2007 6:50 pm    Naslov sporočila:   Odgovori s citatom

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
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo Pošlji E-sporočilo
gl83
Član
Član



Pridružen-a: Pet 02 Mar 2007 12:01
Prispevkov: 20
Aktiv.: 0.09
Kraj: Ljubljana

PrispevekObjavljeno: Pet Mar 02, 2007 9:13 pm    Naslov sporočila:   Odgovori s citatom

To pomeni, da se ob prozenju prekinitve ohrani stanje pina, kjer je bila prekinitev prožena! Shocked
Bom poizkusal..

HVALA

LP

Goran
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.58

PrispevekObjavljeno: Sob Mar 03, 2007 12:43 am    Naslov sporočila:   Odgovori s citatom

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
Skrit Poglej uporabnikov profil Pošlji zasebno sporočilo
gl83
Član
Član



Pridružen-a: Pet 02 Mar 2007 12:01
Prispevkov: 20
Aktiv.: 0.09
Kraj: Ljubljana

PrispevekObjavljeno: Sob Mar 03, 2007 1:44 pm    Naslov sporočila:   Odgovori s citatom

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 1mis, torej 5 ciklov 5 mi s.? IN, v cem je bistvena razlika med klicanjem podprogramov, in klicanjem prekinitve. Vem da, v nacinu Cool . Kje so prednosti in slabosti ene, oziroma druge metode.

Hvala za odgovor
Nazaj na vrh
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo
Pokaži sporočila:   
Objavi novo temo   Odgovori na to temo   Printer-friendly version    www.elektronik.si Seznam forumov -> Osnove programiranja PIC-a v Assembler-ju Č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: 492 dni


Powered by phpBB © 2001, 2005 phpBB Group