Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.

Picbasic pitanja za sve sto mi nije jasno

[es] :: Elektronika :: Mikrokontroleri :: Picbasic pitanja za sve sto mi nije jasno

Strane: << < .. 12 13 14 15 16 17 18 19 20 21 ... Dalje > >>

[ Pregleda: 109537 | Odgovora: 530 ] > FB > Twit

Postavi temu Odgovori

Autor

Pretraga teme: Traži
Markiranje Štampanje RSS

ZAS011
Uzgajivač šargarepe izakuće
Vanuatu

Član broj: 288510
Poruke: 4543

ICQ: 8713400
Sajt: www.justfuckinggoogleit.c..


+530 Profil

icon Re: Picbasic pitanja za sve sto mi nije jasno17.06.2012. u 20:36 - pre 144 meseci
Nece Jovancho da turi katance na ovo, nije postalo "opasno".
--
Make no mistake between my personality and my attitude.
My personality is who I am.
My attitude depends on who you are.
 
Odgovor na temu

MILANAN
MILAN ANDRIC
OPERATRER,PCRACUNARA
SVRLJIG,SRBIJA

Član broj: 257039
Poruke: 876
*.dynamic.isp.telekom.rs.



+10 Profil

icon Re: Picbasic pitanja za sve sto mi nije jasno17.06.2012. u 20:37 - pre 144 meseci
Razumem da mi to pisete iz najbolje namere i hvala vam na svakoj pomoci ali za ovo sto sam ja do sada naucio ( IF THEN FOR ELSE WHILE WEND RETURN GOSUB LOOKUP UPOTREBA DISPLEJA I SL.) zavrsio mi je i 16F84. Nekoliko lc i frekvencmetra sam prodao ostali mi jos 2 16f84 i 1 16f628 a videcu kad stigne knjiga koji se pic obradjuje pa cu nadalje sa njim.Fabricki frek bi i kupio samo ne onaj victor mada i ovaj sto imam je odlican,ako nekog zanima postavicu adresu.MIKIKG mi je dao ideju za osc pa je sad dosta stabilniji i zavrsava poso.Ako hocete napisite mi ono za odbrojavanje inpulsa i paljenje leda ubi se od kucanja.Darko je sigurno lepo napisao sustinu toga ali ja neumem dalje.Iako ja mozda ne znam ali poslusajte me i nebacajte nake stvari,uvek ima mesta gde da se stave,malopre sam ubacio kaskadu u ei tv i to PETICU , za crvenu,a sasija tva za delive mi na tavanu nije trazila sto kazu ni leba ni vodu.
MILAN ANDRIC
 
Odgovor na temu

rsinisa
Siniša Radanočević
Smederevo

Član broj: 2716
Poruke: 1586
*.dynamic.isp.telekom.rs.



+321 Profil

icon Re: Picbasic pitanja za sve sto mi nije jasno18.06.2012. u 08:32 - pre 144 meseci
Milane, ja te razumem potpuno, radiš sa onim sa čime raspolažeš. Ja sam pristalica teorije da čovek treba da uči na onome što će i da koristi - šta će meni učenje na dsPIC-u kada mi on verovatno nikada neće biti potreban.
Obzirom da je kod tebe 16F628 najjeftiniji, predlažem da ostaneš na njemu ako ti je dovoljan za tvoje potrebe. Ja sam nedavno prešao na 16F1827 jer je on u COMET-u najjeftiniji od 18-pinaca, a meni su oni najčešće potrebni, plus što ima jako puno novog hardvera u sebi. Na 10 kom. je cena oko 190 din + PDV, ako se dobro sećam. Ako hoćeš da predješ na tu novu seriju sa proširenim 14-bitnin jezgrom, potreban ti je PBP3 (a nije loše i da se svakako prebaciš na PBP3) i neki programator koji može da ih programira. Pošto radiš pod WINDOWS-ima, PicKit2 je sasvim dovoljan s tim da mora da se skine fajl sa novim definicijama, tj. novi .dat fajl sa Microchip sajta.

Da se vratim tvom problemu. Darko ti je dao pola rešenja (ili malo manje, zavisi šta je izvor impulsa), tj. njegovo rešenje će da ti uvećava brojač sve dok traje impuls. Napisaću ti program uz pretpostavke da je ulaz na RB0, a izlaz na RB1, da je aktivno stanje logička jedinica, i da PIC može da se vrti u petlji dok broji, tj. da ne mora da radi ništa drugo dok se ne dostigne zadati broj:

Code:

cekaj_log1:
  if PORTB.0=0 then cekaj_log1                   ; čekamo da se pojavi log. 1
  brojac=brojac + 1                                   ; kad se pojavi, uvećamo brojač
  if brojac=zadata_vrednost then upali_led    ; dostignuta zadata, idemo dalje, palimo LED
cekaj_log0:
  if PORTB.0=1 then cekaj_log0                   ; čekamo da ulaz padne na log.0 kako ne bi imali lažno brojanje
  goto cekaj_log1  
upali_led:
  PORTB.1=1


E sad, ovo ovako može da prodje ako je impuls koji brojiš čist, tj. ako je iz nekog elektronskog brojača ili sl (i to bi bilo tih pola rešenja od Darka). Ako je iz tastera, mikroprekidača ili nekog drugog mehaničkog elementa, 99,9% da će doći do treperenja kontakata i do lažnog brojanja (u zavisnosti od kvaliteta izrade prekidača). Treperenje se na engleskom naziva baunsing (bouncing - poskakivanje), a metod za eliminisanje tog treperenja debaunsing (debouncing). Postoje softverske i hadrverske metode, a pošto već radimo sa mikrokontrolerima, softversko je uglavnom prihvatljivo pošto je dovoljno da detekcija treperenja traje 5 do 20 ms, što u većini aplikacija ne predstavlja problem.
Softverskih rešenja ima nekoliko, od prostog testiranja ulaza, tzv poling (polling) pa do rešenja sa upotrebom interapta. U 99% mojih aplikacija koristim ovo prvo rešenje i to u trajanju od 5 do 10 ms. To moje rešenje je takvo da pored eliminisanja treperenja ujedno detektuje samo momenat pritiska na taster, nebitno koliko dugo je taster pritisnut tako da se jednim udarcem ubiju dve muve. U prevodu, to znači da u gornjem primeru nije potrebno čekati da ulaz padne na logičku nulu. Taj potprogram je pisan u ASM-u pa ga neću dati ovde (napisao sam ga još kad nije postojalo ništa sem ASM-a za PIC) i tako ga i dan-danas koristim (dao sam ga pre godinu-dve u nekoj od tema), ali ako ti treba, napisaću ga u PBP-u.

A ako je potrebno da kontroler radi još nešto dok se ne pojavi logičko 1 na ulazu, umesto da se vrti u petlji može da ide da radi nešto drugo pod uslovom da to što radi ne traje duže od trajanja impulsa, kako se ne bi neki impuls preskočio.

Pozdrav.
Sinisha
 
Odgovor na temu

MILANAN
MILAN ANDRIC
OPERATRER,PCRACUNARA
SVRLJIG,SRBIJA

Član broj: 257039
Poruke: 876
*.dynamic.isp.telekom.rs.



+10 Profil

icon Re: Picbasic pitanja za sve sto mi nije jasno18.06.2012. u 12:50 - pre 144 meseci
Da ti zahvalim rsinisa pre svega na razumevanju pa na programu.Ja sam poceo da radim kad se jos uvek ponegde kotistio TV lampas i dugo sam radio TV ,mreze bezicni tel r stanice video pravio pojacala i sl. kasnije dekodiranje ark dvd i td.Drugim recima radio sam sa stvarima od kojih vecina sada ide u djubre.Za programiranje sam poceo da se interesujem oko nove gotine i naravno da su mi mnoge stvari strane i jasno je kao dan da se programiranje ne uci za nekoliko meseci vec i po nekoliko godina a drugo sve sto sam ucio bilo je srazumevanjem inace mehanicki nista.Kad sam poceo vidjao sam cesto taj 16f84 pa ajde da kupim njega i tako je pocelo.Imam veliku zelju da idem dalje ali nema se uvek vremena i para a tu su i druge obaveze pa moram polako i dokle stignem inace sam zadovoljan sa ovim do sada,imam cak napravljen i vec ugradjen da ga nazovem vrlo vrlo prost plc za masinu za eksere.Sto se tice programa on treba da broji do dvadesetak inpulsa pa da upali diodu,inpulsi mislim da ce biti cisti.Nekad sam pravio slico nisto i secam se da su imala kola valjda bese u ttl verziji za
ciscenje treperenje sa releja.


cekaj_log1:
if PORTB.0=0 then cekaj_log1 ; čekamo da se pojavi log. 1
brojac=brojac + 1 ; kad se pojavi, uvećamo brojač
if brojac=zadata_vrednost then upali_led ; dostignuta zadata, idemo dalje, palimo LED
cekaj_log0:
if PORTB.0=1 then cekaj_log0 ; čekamo da ulaz padne na log.0 kako ne bi imali lažno brojanje
goto cekaj_log1
upali_led:
PORTB.1=1


Sad samo da pitam jos i ovo: ako je port B na nulu onda ... znaci port B je na tasteru za pocetak programa
portb.1 pali diodu posle zadati br inpulsa
Na kom pinu uvodim inpulse ? kako da ga definisem ili sobzirom da je 16f84 pa da se podrazumeva da ide na RB3
Na kraju znam ide ENDIF END ali na pocetku ne znam ovo za ulaz inpulsa.
Pokusavam da idem jedno po jedno i prosto receno nisam jos stigao da pregledam sve u vezi brojaca,znam da ga vezem da briji u zadato vreme i to pokaze na displej ali ovo jos nisam proucio.Jos sam na poslu pa nemogu da probam.
MILAN ANDRIC
 
Odgovor na temu

veselinovic
Jovan Veselinovic
Ist. Sarajevo

Moderator
Član broj: 7761
Poruke: 3871
adsl-45-211.teol.net.



+334 Profil

icon Re: Picbasic pitanja za sve sto mi nije jasno18.06.2012. u 13:33 - pre 144 meseci
Procitaj jos jednom Sinisinu poruku.
Kazace ti se "samo" poslije pazljivog citanja.
 
Odgovor na temu

rsinisa
Siniša Radanočević
Smederevo

Član broj: 2716
Poruke: 1586
*.dynamic.isp.telekom.rs.



+321 Profil

icon Re: Picbasic pitanja za sve sto mi nije jasno18.06.2012. u 13:43 - pre 144 meseci
Ja sam napisao koje su pretpostavke, a ti sad moraš da znaš tačno gde šta ide.
Citat:
rsinisa:Napisaću ti program uz pretpostavke da je ulaz na RB0, a izlaz na RB1, da je aktivno stanje logička jedinica

To znači da je ulaz za impulse na RB0, da je izlaz za diodu na RB1, da je na davaču logička jedinica u trenutku kada da impuls, u protivnom je logička nula.
Ti sad prilagodi to prema tvojoj shemi, a ako je aktivno stanje davača obrnuto, samo zameni 0 i 1 u naredbama gde se isputuje stanje RB0.

Nadam se da je sada jasnije. Ako nije, daj šemu pa ćemo da rešimo konkretno.

Pozdrav.
Sinisha

P.S. RB0 je isto što i PORTB.0 i tako redom.
 
Odgovor na temu

MILANAN
MILAN ANDRIC
OPERATRER,PCRACUNARA
SVRLJIG,SRBIJA

Član broj: 257039
Poruke: 876
*.dynamic.isp.telekom.rs.



+10 Profil

icon Re: Picbasic pitanja za sve sto mi nije jasno18.06.2012. u 14:07 - pre 144 meseci
Da sad je jasnije samo sto jos nemogu nista da radim jer ceo dan sam na poso,do 20h pa cim stignem kuci pocinjem sa radom.Hvala vam
MILAN ANDRIC
 
Odgovor na temu

MILANAN
MILAN ANDRIC
OPERATRER,PCRACUNARA
SVRLJIG,SRBIJA

Član broj: 257039
Poruke: 876
*.dynamic.isp.telekom.rs.



+10 Profil

icon Re: Picbasic pitanja za sve sto mi nije jasno18.06.2012. u 19:09 - pre 144 meseci
INPUT PORTB.0
OUTPUT PORTB.1
cekaj_log1:
if PORTB.0=0 then cekaj_log1 ; cekamo da se pojavi log. 1
brojac=brojac + 1 ; kad se pojavi, uvecamo brojac
if brojac = 15 then upali_led ; dostignuta zadata, idemo dalje, palimo LED
cekaj_log0:
if PORTB.0=1 then cekaj_log0 ; cekamo da ulaz padne na log.0 kako ne bi imali lažno brojanje
goto cekaj_log1
upali_led:
PORTB.1=1
ENDIF
END

Probao sam ovako iz MicroCode Studio i pocrveni - brojac=brojac+1 - a kad sklonim crtice izmedju cekaj lo1 i 0 onda pocrveni u prvom redu cekaj log1 . stavio sam za probu 15 inpulsa da izbroji pa da upali led.
MILAN ANDRIC
 
Odgovor na temu

veselinovic
Jovan Veselinovic
Ist. Sarajevo

Moderator
Član broj: 7761
Poruke: 3871
adsl-101-162.teol.net.



+334 Profil

icon Re: Picbasic pitanja za sve sto mi nije jasno18.06.2012. u 20:08 - pre 144 meseci
Prije upotrbe promenljive ( u tvom slucaju brojac) istu moras deklarisati, koliko se sjecam ide
brojac var int
 
Odgovor na temu

rsinisa
Siniša Radanočević
Smederevo

Član broj: 2716
Poruke: 1586
*.dynamic.isp.telekom.rs.



+321 Profil

icon Re: Picbasic pitanja za sve sto mi nije jasno18.06.2012. u 20:10 - pre 144 meseci
Jesi definisao promenljivu 'brojac'? Sve mi se nekako čini da nisi savladao definisanje promenljivih i podešavanje registara, a to je neophodno. Kod 16F84 ih i nema mnogo, ali kod 16F1827 ih ima mnooogo više. Doduše, dobra stvar je što nije potrebno sve podešavati jer kod većine je početna vrednost po uključenu odgovarajuća za obične I/O operacije.

Za onaj primer bi podešavanje, koje ide pre programa, izgledalo otprilike ovako:
Code:

brojac var byte

TRISB=%11111101
PORTB=0
brojac=0


Probaj pa javi.

Što se tiče crtica, nisam shvatio koje i zašto ih sklanjaš? Crtice u nazivu labele? Ako je tako, čemu to?

Ako sam u pravu da nisi još savladao osnovne stvari, onda pročitaj ovo na mom sajtu, mislim da će da ti pomogne.
http://sinel.freehostia.com/pic/pic_kontroleri.htm

A što se tiče PBP prpgrama, on treba na početku da ima konfiguracione podatke (za CONIG registar), DEFINE pseudonaredbe ako su potrebne, zatim definisanje promenljivih, konstanti, podataka za EEPROM, zatim inicijalizaciju pa tek onda glavni program sa eventualnim potprogramima.
Evo primer iz jednog mog PBP3 programa za 16F627:

Code:

#config
  __config _XT_OSC & _WDT_OFF & _PWRTE_ON & _LVP_OFF & _CP_ON & _MCLRE_OFF
#endconfig

define osc 3
define NO_CLRWDT 1
define INTHAND myint

same        con 1
led_crv     var PORTA.0
led_zel     var PORTA.1
statusc     var STATUS.0

wsave       var byte $70 system
ssave       var byte bank0 system
psave       var byte bank0 system

stoti       var byte    ; stotinke
sekunde     var word    ; sekunde

...

    data  @0, word 0, word 0, 0  
    data  @5, word 7, word 300, 1
    data @10, word 7, word 3, 5

...
    goto inic
...
asm
; pocetak interapt rutine, ako postoji        
myint
; Snimamo W, STATUS i PCLATH registar

    movwf   wsave
    swapf   STATUS, W
    clrf    STATUS
    movwf   ssave
    movf    PCLATH, W
    movwf   psave
...
   retfie
endasm        

...

; inicijalizacija
;----------------
inic:
    TRISB=%00000000
    TRISA=%11111100
    PORTB=255
    PORTA=0
    CMCON=7
    OPTION_REG = %10000100
    INTCON = %10100000 

    rezim=0
    tasteri=0
...

glavni:

; i odavde ide glavni deo programa

  END


Pozdrav.
Siniha

 
Odgovor na temu

MILANAN
MILAN ANDRIC
OPERATRER,PCRACUNARA
SVRLJIG,SRBIJA

Član broj: 257039
Poruke: 876
*.dynamic.isp.telekom.rs.



+10 Profil

icon Re: Picbasic pitanja za sve sto mi nije jasno18.06.2012. u 21:53 - pre 144 meseci
Ovako radi samo sto se led upali posle 6. nekad 7. put ali nije problem to je sigurno zbog tastera na ispitnoj plocici.

brojac var byte

TRISB=%11111101
PORTB=0
brojac=0
cekaj_log1:
if PORTB.0=0 then cekaj_log1 ; cekamo da se pojavi log. 1
brojac=brojac + 1 ; kad se pojavi, uvecamo brojac
if brojac=10 then upali_led ; dostignuta zadata, idemo dalje, palimo LED
cekaj_log0:
if PORTB.0=1 then cekaj_log0 ; cekamo da ulaz padne na log.0 kako ne bi imali lažno brojanje
goto cekaj_log1
upali_led:
PORTB.1=1
end

Crtice sam sklanjao jer vise nisam znao sta cu iako su u nazivu i znam da nesmeta a brojac var byte sam jednostavno zaboravio da stavim,moja greska neiskustvo ili neznanje,sta se moze.
Ovaj duzi ( vidim ima i deo asemblera ) kod sam probao nabrzinu ali nece jer odmah na pocetku pocrveni #config mada nije bitno jer ovaj kraci ce sigurno da radi kad sredim plocicu a ovaj duzi cu malo radi sebe da probam da napravim.Najiskrenije vam hvala za pomoc i na razumevanju.
MILAN ANDRIC
 
Odgovor na temu

rsinisa
Siniša Radanočević
Smederevo

Član broj: 2716
Poruke: 1586
*.dynamic.isp.telekom.rs.



+321 Profil

icon Re: Picbasic pitanja za sve sto mi nije jasno18.06.2012. u 22:42 - pre 144 meseci
Citat:
MILANAN: Ovako radi samo sto se led upali posle 6. nekad 7. put ali nije problem to je sigurno zbog tastera na ispitnoj plocici.

Kao što sam rekao, skoro svi elektro-mehanički elementi (kao što je taster) imaju treperenje, zato se i dešava da se LED upali posle 6 ili 7 pritisaka umesto posle 10. Mada, brojač radi ispravno, on je izbrojao tačno 10 promena. Zato je potrebno eliminisati to treperenje, a kao što rekoh, u ovom slučaju je to najoptimalnije rešiti softverski.

Citat:
Crtice sam sklanjao jer vise nisam znao sta cu iako su u nazivu i znam da nesmeta

U redu je to što znaš da ne smeta, ali moraš da priznaš da "nabadanje" može da napravi velike probleme u praksi.

Citat:
Ovaj duzi ( vidim ima i deo asemblera ) kod sam probao nabrzinu ali nece jer odmah na pocetku pocrveni #config mada nije bitno jer ovaj kraci ce sigurno da radi kad sredim plocicu a ovaj duzi cu malo radi sebe da probam da napravim.

Ja sam jasno napisao da je to primer kako se piše program za PBP, da je pisan u PBP3 i da je za 16F627. Verujem da zbog umora, tj. celodnevnog rada, ne čitaš pažljivo, u protivnom ne bi ni pokušao da kompajliraš taj drugi deo pošto to nije nikakav program, samo izvadjeni delovi iz jednog mog gotovog programa koji nema veze sa tvojim pitanjem, plus što ti nemaš instaliran PBP3 već PBP (verovatno neka verzija 2.x).
Budi pažljivi u čitanju, ne "nabadaj" napamet, slobodno pitaj sve što te zanima, ali se seti uvek moje izreke koja glasi:
"Čitati, čitati i samo čitati".

Pozdrav.
Sinisha
 
Odgovor na temu

MILANAN
MILAN ANDRIC
OPERATRER,PCRACUNARA
SVRLJIG,SRBIJA

Član broj: 257039
Poruke: 876
*.dynamic.isp.telekom.rs.



+10 Profil

icon Re: Picbasic pitanja za sve sto mi nije jasno19.06.2012. u 06:49 - pre 144 meseci
Pa iskreno nisam stigao ni slovo da procitam od onog drugog programa,samo sam u brzini probao copy-paste video nece i gotovo a sad tek vidim ovo - ; i odavde ide glavni deo programa.Ako imate vremena bar ukratko me usmerite kako softverski da eliminisem treperenje da radim to zbog sebe inace kad sklopim to sto hocu neverujem da ce se treperenje pojaviti iz optokaplera jer odatle ce ici inpulsi.Valjda cu da savladam i to trperenje ako ne onda cu ako se pojavi da to resim hardverski.Mozda gresim ali mislim da nisam izabrao los nacin ucenja da savladavam komada po komandu,da savaku proucim koliko mogu i da sa svakom eksperimentisem i videm kako se ponasa.Bas me cudi da se na ovoj temi samo ja javljam za savete valjda bi trebalo da ima jos ljudi zainteresovani za basic.Svakom ko radi elektroniku mnogo moze da olaksa pravljenje sklopova koji ce se lakse i braze i jeftinije napraviti i biti precizniji a i zanimljiviji.

MILAN ANDRIC
 
Odgovor na temu

ZAS011
Uzgajivač šargarepe izakuće
Vanuatu

Član broj: 288510
Poruke: 4543

ICQ: 8713400
Sajt: www.justfuckinggoogleit.c..


+530 Profil

icon Re: Picbasic pitanja za sve sto mi nije jasno19.06.2012. u 07:30 - pre 144 meseci
Poznavaoca Basic-a ima kol'ko hoces, samo je nacin pristupa problematici programiranja taj koji odredjuje kako ce ko da se postavi prema postavljenim pitanjima.
Lepo ti je sinisa napisao, a i ja cesto koristim isto: Citati, citati i samo citati.
PBP ima dobar Help, u njemu je svaka komanda objasnjena. Tvoje je da slozis "kockice".
Kao sto sam i ranije napisao, pocni od najosnovnijih programcica, tipa treptalje LED, pa nastavi sa kompleksnijima, uz pokusaj RAZUMEVANJA sta koji progeam radi.
Samo copy/paste pa onda kompajliranje ti nece nista pomoci u daljem usavrsavanju sebe kao programera.
--
Make no mistake between my personality and my attitude.
My personality is who I am.
My attitude depends on who you are.
 
Odgovor na temu

MILANAN
MILAN ANDRIC
OPERATRER,PCRACUNARA
SVRLJIG,SRBIJA

Član broj: 257039
Poruke: 876
*.dynamic.isp.telekom.rs.



+10 Profil

icon Re: Picbasic pitanja za sve sto mi nije jasno19.06.2012. u 09:46 - pre 144 meseci
' Count # of pulses on Pin1 in 100 milliseconds
COUNT PORTB.1, 100, W1

' Determine frequency on a pin
COUNT PORTA.2, 1000, W1 ' Count for 1 second
SEROUT PORTB.0, N2400, [W1]

Ovo je sve sto sam nasao za count i helpu sto je savrseno jasno a ono brojac=brojac+1 nisam nigde mogao da nadjem neko objasnjenje pa da pocnem odatle.Kako sad da nadjem da upisem trajanje inpulsa da bih izbegao treperenje tastera ili na pr releja ?
MILAN ANDRIC
 
Odgovor na temu

rsinisa
Siniša Radanočević
Smederevo

Član broj: 2716
Poruke: 1586
*.dynamic.isp.telekom.rs.



+321 Profil

icon Re: Picbasic pitanja za sve sto mi nije jasno19.06.2012. u 11:18 - pre 144 meseci
Citat:
ZAS011:Samo copy/paste pa onda kompajliranje ti nece nista pomoci u daljem usavrsavanju sebe kao programera.

Apsolutno se slažem sa ovim.

Kažeš da učiš sa razumevanjem, a onda odradiš copy/paste bez čitanja; moraš da priznaš da su to suprotne stvari, zar ne?

Što se tiče debaunsinga, evo da probam iz glave, bez testiranja, ali trebalo bi da radi:

Code:

petlja      var byte    ; brojač za FOR petlju
taster_uk  var bit    ; indikator (fleg u programerskom žargonu od eng. reči "flag" - zastava, zastavica) da je taster pritisnut

...

; potprogram za proveru stanja tastera, smetiš ga npr. na kraj programa
proveri_ulaz:
    taster_uk=0
    for petlja=0 to 100
      if PORTB.0=0 then return
      pauseus 100
    next petlja
    taster_uk=1
    return


Kako radi ovaj potprogram? Prvo se postavi fleg za taster na 0, tj. indikuje se da taster nije pritisnut. Zatim se proverava 100 puta da li je taster pritisnut sa 100 mikrosekundi pauze izmedju testiranja. Ako samo jednom od tih 100 puta stanje na ulazu bude 0, izlazi se odmah iz potprograma i ostaje indikacija da taster nije pritisnut. Ako svih 100 puta stanje na ulazu bude 1 (ukupno oko 10 ms), setuje se flag čime se indikuje da je taster sigurno pritisnut. Onda bi ceo program izgledao ovako:

Code:

brojac     var byte
petlja     var byte    ; brojač za FOR petlju
taster_uk  var bit     ; indikator (fleg u programerskom žargonu od eng. reči "flag" - zastava, zastavica) da je taster pritisnut

TRISB=%11111101
PORTB=0
brojac=0

cekaj_log1:
    gosub proveri_ulaz ; cekamo da se pojavi log. 1
    if taster_uk=0 then cekaj_log1
    brojac=brojac + 1 ; kad se pojavi, uvecamo brojac
    if brojac=10 then upali_led ; dostignuta zadata, idemo dalje, palimo LED
cekaj_log0:
    gosub proveri_ulaz ; cekamo da ulaz padne na log.0 kako ne bi imali lažno brojanje
    if taster_uk=1 then cekaj_log0
    goto cekaj_log1
upali_led:
    PORTB.1=1    ; upali LED
    pause 3000    ; pauziraj 3 sekunde
    PORTB.1=0    ; ugasi LED
    goto cekaj_log1    ; sve ispočetka

proveri_ulaz:
    taster_uk=0
    for petlja=0 to 100
      if PORTB.0=0 then return
      pauseus 100
    next petlja
    taster_uk=1
    return

end


Analiziraj program dobro pa ga tek onda kompajliraj i probaj. Ja ga nisam testirao, ali trebalo bi da radi.

Pozdrav.
Sinisha


[Ovu poruku je menjao rsinisa dana 19.06.2012. u 12:34 GMT+1]

[Ovu poruku je menjao rsinisa dana 19.06.2012. u 12:34 GMT+1]

[Ovu poruku je menjao rsinisa dana 19.06.2012. u 12:39 GMT+1]
 
Odgovor na temu

rsinisa
Siniša Radanočević
Smederevo

Član broj: 2716
Poruke: 1586
*.dynamic.isp.telekom.rs.



+321 Profil

icon Re: Picbasic pitanja za sve sto mi nije jasno19.06.2012. u 11:27 - pre 144 meseci
Evo ti slika sa osciloskopa gde se vidi kako izgleda signal zbog poskakivanja tastera, jedino što je ovde obrnut slučaj u odnosu na tvoj, dok taster nije pritisnut stanje je logičko 1, a kad se pritisne, stanje je logička 0, samo što vidiš da ima nekoliko promena pre stabilnog stanja.
http://www.labbookpages.co.uk/...nics/files/debounce/bounce.png

I praksa je da je aktivno stanje nula, tj. da se na ulaz veže pull-up (onaj koji podiže) otpornik, a taster ide na masu. Evo, pogledaj ovde prvu sliku:
http://www.labbookpages.co.uk/electronics/debounce.html
Ako je signal iz nekog davača, senzora ili sl., onda zavisi kako je u konkretnom slučaju.
Pozdrav.
Sinisha
 
Odgovor na temu

MILANAN
MILAN ANDRIC
OPERATRER,PCRACUNARA
SVRLJIG,SRBIJA

Član broj: 257039
Poruke: 876
*.dynamic.isp.telekom.rs.



+10 Profil

icon Re: Picbasic pitanja za sve sto mi nije jasno19.06.2012. u 12:11 - pre 144 meseci
Tako sam i ja pravio plocicu,znaci 5v idu preko R i to je log1 kad stosnem taster 5v iz R idu na masu i to je log 0 Nisam mogao da cekam pa sam na brzinu pobego sposla i dosao kuci da probam ovaj program i ovako:

proveri_ulaz:
taster_uk=0
for petlja=0 to 100
if PORTB.0=then return
pauseus 100
next petlja
taster_uk=1
return

Sad malo nesigurno ali mislim da je nedostajala nula ispred then pa sam je dopisao ( vidim da je menjana poruka pa sam mislio namerno postavljena zamka da li cu da vidim ) i pali se posle devetog pritiska tastera,po meni,nisam siguran,broji i sam pocetak dok ceka,znaci cekanje 1 i plus 9 pritiskanja pa sa zamenio mesta ,prvo uk=1 a dole uk=0 i sad rari tacno na 10. put

cekaj_log1:
gosub proveri_ulaz ; cekamo da se pojavi log. 1
if taster_uk=1 then cekaj_log1
brojac=brojac + 1 ; kad se pojavi, uvecamo brojac
if brojac=10 then upali_led ; dostignuta zadata, idemo dalje, palimo LED
cekaj_log0:
gosub proveri_ulaz ; cekamo da ulaz padne na log.0 kako ne bi imali lažno brojanje
if taster_uk=0 then cekaj_log0
goto cekaj_log1

Ma pravi sam programer a? Kao kad corava kokosta pogodi zrno.
MILAN ANDRIC
 
Odgovor na temu

rsinisa
Siniša Radanočević
Smederevo

Član broj: 2716
Poruke: 1586
*.dynamic.isp.telekom.rs.



+321 Profil

icon Re: Picbasic pitanja za sve sto mi nije jasno19.06.2012. u 12:29 - pre 144 meseci
Citat:
MILANAN: Tako sam i ja pravio plocicu,znaci 5v idu preko R i to je log1 kad stosnem taster 5v iz R idu na masu i to je log 0

He, pa sve vreme pretpostavljamo da je aktivno stanje log.1, a ti ne pričaš da je obrnuto. Nebitno, bitno da si se snašao.

Citat:
Sad malo nesigurno ali mislim da je nedostajala nula ispred then pa sam je dopisao ( vidim da je menjana poruka pa sam mislio namerno postavljena zamka da li cu da vidim ) i pali se posle devetog pritiska tastera,po meni,nisam siguran,broji i sam pocetak dok ceka,znaci cekanje 1 i plus 9 pritiskanja pa sa zamenio mesta ,prvo uk=1 a dole uk=0 i sad rari tacno na 10. put

Ma nije namerno, omaklo se pa sam promenio kad sam video.
Da, brojalo je do 9 jer je početno stanje kod tebe bila log.1, a ne 0 kakva je bila pretpostavka. Bitno da si shvatio gde je problem i promenio program.

Citat:
Ma pravi sam programer a? Kao kad corava kokosta pogodi zrno.

Samo polako i sa razumevanjem i bićeš super programer, ali treba dosta i veoma pažljivo da čitaš.

Pozdrav.
Sinisha
 
Odgovor na temu

MILANAN
MILAN ANDRIC
OPERATRER,PCRACUNARA
SVRLJIG,SRBIJA

Član broj: 257039
Poruke: 876
*.dynamic.isp.telekom.rs.



+10 Profil

icon Re: Picbasic pitanja za sve sto mi nije jasno19.06.2012. u 12:47 - pre 144 meseci
Hvala rsinisa sad imam debeo domaci zadatak da ovo razumem pa ako neka sledeca komanda neide eto mene opet da dosadjujem.Moglo bi se reci da zamenom 0 i 1 u programu mozemo da se prilagodimo na pr tasteru,da li vodi kad je stisnut ili kad nije.Hvala jos jednom.
MILAN ANDRIC
 
Odgovor na temu

[es] :: Elektronika :: Mikrokontroleri :: Picbasic pitanja za sve sto mi nije jasno

Strane: << < .. 12 13 14 15 16 17 18 19 20 21 ... Dalje > >>

[ Pregleda: 109537 | Odgovora: 530 ] > FB > Twit

Postavi temu Odgovori

Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.