Sta bre samnom?
Ja samo preneo emajl sto mi je Vladimir poslao i uz njegovu saglasnost uturio njegov broj telefona.
(vidis da sam moj zbog zecova izbriso is potpisa).
H most upravljan PIC-om
Zaključano
Zakačeno
Code:
pik:
INTCON.7=0
INTCON.4=0
if INTCON.1 THEN brojac=brojac+1
INTCON.1=0
INTCON.7=1
INTCON.4=1
RESUME
pik:
INTCON.7=0
INTCON.4=0
if INTCON.1 THEN brojac=brojac+1
INTCON.1=0
INTCON.7=1
INTCON.4=1
RESUME
Nisam nesto na ti sa basicom ali koliko vidim ovo ukljucivanje-iskljucivanje globalnog interapta i eksternog interapta u interapt rutini je nepotrebno.
Code:
pik:
if INTCON.1 THEN brojac=brojac+1
INTCON.1=0
RESUME
pik:
if INTCON.1 THEN brojac=brojac+1
INTCON.1=0
RESUME
Ovo bi trebalo da radi, globalni interapt se iskljucuje recimo upisujes u eeprom ili slicno, neki spori proces koji ne bi trebalo prekidati.
ili ako koristis samo taj jedan interapt mozes i if da izbacis
Code:
pik:
brojac=brojac+1
INTCON.1=0
RESUME
pik:
brojac=brojac+1
INTCON.1=0
RESUME
Ostali kod koji jos koristis u picu da li je provjeren?
Kazes da kod vece brzine se ne desava nista, da li imas dobar kristal i preporucenu velicinu kondenzatora za tu frekvenciju. Moguce da motor pravi smetnje i pic se zaglupi. Kako ti je pic spojen, kolika je duzina vodova napajanja?
Takodje sa enkodera bi trebala cista cetvrtka da dolazi na ulaz, recimo kod pritiska na mehanicki prekidac imas u trajanju od nekoliko ms i nekoliko desetaka ili cak i vise impulsa.
dok nisam imao interapt, samo if, kristal 20 MHz je bez problema radio
kako sam ubacio int. neće ni da mrdne
napajanje pica, siguran sam da je dobro, maksimalno kratki kablobi, imam jedan blok 100n što bliže nožicama VDD i VSS
ali kao što rekoh bogdanu,meni i nije toliko bitna velika rezolucija tako da zadovoljava niža frek. pa nebih u ovom trenutku da patim piconju
a evo koda koji trenutno fercera,..
kako sam ubacio int. neće ni da mrdne
napajanje pica, siguran sam da je dobro, maksimalno kratki kablobi, imam jedan blok 100n što bliže nožicama VDD i VSS
ali kao što rekoh bogdanu,meni i nije toliko bitna velika rezolucija tako da zadovoljava niža frek. pa nebih u ovom trenutku da patim piconju
a evo koda koji trenutno fercera,..
Code:
on interrupt goto pik 'pik je labela
DEFINE OSC 12 'kristal 12 MHz
INTCON.7=1 'dozvola za sve prekide
INTCON.4=1 'dozvola za prekid na RB.0
OPTION_REG.6 = 1 'rastuća ivica
trisb.0=1
Sp var byte 'promenljiva za PWM
brojac var word 'promenljiva za brojac impolsa sa enkodera
ns var bit 'novo stanje tastera Up 'velicina promenljive
ss var bit 'staro stanje tastera Up
nnss var bit 'novo stanje tastera Down
ssss var bit 'staro stanje tastera Down
'******************** imenovanje pinova **********************
SYMBOL and2=portb.6 'and2
symbol h1=portb.4 'izlaz pwm
symbol and1=portb.5 'and1
symbol br=portb.0 'interapt
symbol Tp=porta.2 'taster plus
symbol Tm=porta.3 'taster minus
'******************* ***********************
INPUT br
input tp
input tm
output and2
output h1
output and1
'***********************************************************
ss=tp 'taster nije stisnut pa ce ss biti 1
ssss=tm 'taster nije stisnut pa ce ssss biti 1
sp=5 'promenljiva sa 5 polazno stanje
brojac=0
and1=1
and2=0
'********************* glavni program ******************************************
pocetak: 'labela
ns=tp 'moguce novo stanje tastera
nnss=tm 'moguce novo stanje tastera
if ns<ss and sp<250 then 'ispituje stanje tastera i velicinu promenljive
sp=sp+5 'ukoliko su uslovi ispunjeni uvecava promenljivu za 5
endif
if nnss<ssss and sp>5 then 'isto kao prethodno
sp=sp-5 'isto,..
endif
pwm h1,sp,10 'PWM rutina.......h1 pin na kom je signal
'Sp je promenljiva
'10 je broj ciklusa,..
'*********************** brojac ******************************************
if brojac=100 then 'ako je dostigao 100 skok na vrh
goto vrh
endif
ss=ns 'za sada ignorisem
ssss=nnss 'za sada ignorisem
goto pocetak
'******** potprogram **************************************
vrh:
toggle and1 'promena stanja pina
toggle and2
brojac=0
'vracanje brojaca na nulu
goto pocetak
DISABLE
pik:
INTCON.7=0 'zabrana svih prekida dok se trenutni obradi
'ako je detektovana promena na pinu RB.0
if INTCON.1=1 THEN brojac=brojac+1 'uvecaj brojac za 1
INTCON.1=0 'obrisan fleg
INTCON.7=1 'omoguceni svi prekidi
INTCON.4=1 'omogucen prekid na RB.0
'izlaz iz interapta
RESUME
end
on interrupt goto pik 'pik je labela
DEFINE OSC 12 'kristal 12 MHz
INTCON.7=1 'dozvola za sve prekide
INTCON.4=1 'dozvola za prekid na RB.0
OPTION_REG.6 = 1 'rastuća ivica
trisb.0=1
Sp var byte 'promenljiva za PWM
brojac var word 'promenljiva za brojac impolsa sa enkodera
ns var bit 'novo stanje tastera Up 'velicina promenljive
ss var bit 'staro stanje tastera Up
nnss var bit 'novo stanje tastera Down
ssss var bit 'staro stanje tastera Down
'******************** imenovanje pinova **********************
SYMBOL and2=portb.6 'and2
symbol h1=portb.4 'izlaz pwm
symbol and1=portb.5 'and1
symbol br=portb.0 'interapt
symbol Tp=porta.2 'taster plus
symbol Tm=porta.3 'taster minus
'******************* ***********************
INPUT br
input tp
input tm
output and2
output h1
output and1
'***********************************************************
ss=tp 'taster nije stisnut pa ce ss biti 1
ssss=tm 'taster nije stisnut pa ce ssss biti 1
sp=5 'promenljiva sa 5 polazno stanje
brojac=0
and1=1
and2=0
'********************* glavni program ******************************************
pocetak: 'labela
ns=tp 'moguce novo stanje tastera
nnss=tm 'moguce novo stanje tastera
if ns<ss and sp<250 then 'ispituje stanje tastera i velicinu promenljive
sp=sp+5 'ukoliko su uslovi ispunjeni uvecava promenljivu za 5
endif
if nnss<ssss and sp>5 then 'isto kao prethodno
sp=sp-5 'isto,..
endif
pwm h1,sp,10 'PWM rutina.......h1 pin na kom je signal
'Sp je promenljiva
'10 je broj ciklusa,..
'*********************** brojac ******************************************
if brojac=100 then 'ako je dostigao 100 skok na vrh
goto vrh
endif
ss=ns 'za sada ignorisem
ssss=nnss 'za sada ignorisem
goto pocetak
'******** potprogram **************************************
vrh:
toggle and1 'promena stanja pina
toggle and2
brojac=0
'vracanje brojaca na nulu
goto pocetak
DISABLE
pik:
INTCON.7=0 'zabrana svih prekida dok se trenutni obradi
'ako je detektovana promena na pinu RB.0
if INTCON.1=1 THEN brojac=brojac+1 'uvecaj brojac za 1
INTCON.1=0 'obrisan fleg
INTCON.7=1 'omoguceni svi prekidi
INTCON.4=1 'omogucen prekid na RB.0
'izlaz iz interapta
RESUME
end
Potpis
1. Ko zna više, bog mu je dalje
2. Ko zna manje, bog mu je bliže
3. Ko ništa ne zna, njemu bog može biti svako
2. Ko zna manje, bog mu je bliže
3. Ko ništa ne zna, njemu bog može biti svako
grabik ti je dao vrlo bitan info - za cistu cetvrku sa enkodera. el imas osciloskop da pogledas sta je na ulazu b0? '84 ima "obicne" ulaze (nisu schmitt trigger) tako da moras da koristis hw debounce ili externi schmitt trigger (ja volem 74HCT14 schmitt trigger invertor na primer) tako da izbacis to kao problem. mozes i drugacije da odradis debounce. zakacio sam ti kako to ja radim (ne znaci uopste da je idealno resenje - verovatno ce grabik ili scepa moci da daju neko bolje resenje :D )
Potpis
Citat:
lm741: dok nisam imao interapt, samo if, kristal 20 MHz je bez problema radio
kako sam ubacio int. neće ni da mrdne
kako sam ubacio int. neće ni da mrdne
Code:
on interrupt goto pik 'pik je labela
DEFINE OSC 12 'kristal 12 MHz
symbol br=portb.0 'interapt
INPUT br
if brojac=100 then 'ako je dostigao 100 skok na vrh
end
on interrupt goto pik 'pik je labela
DEFINE OSC 12 'kristal 12 MHz
symbol br=portb.0 'interapt
INPUT br
if brojac=100 then 'ako je dostigao 100 skok na vrh
end
Kod koji sam ostavio a koji je sporan, nemas delay ili nesto slicno zasto ti treba definiranje kristala?
***************************
symbol br=portb.0 'interapt
INPUT br
***************************
Za interapt ti to ne treba, on radi hardverski, znaci pin je ulazni ukljucis interapt i to treba da radi.
Ono prije sto sam rekao za interapt, ne iskljucujes interapt dok je u interapt rutini to moguce vodi isto problemima.
Takodje ovakvi djelovi koda mogu biti problematicni "if brojac=100 then" , ovo trosi vise procesorskog vremena od recimo if brojac>99 then
Tvoj interapt radi to vrlo brzo a glavna rutina to radi sporije i sta se desava, ti recimo provjeravas brojac kod vrjednosti od 95 pa 102 i sta se desava tvoj program se nikad ne izvrsava.
Znaci ovakve linije prepravljas u if brojac>99 then , ucinak je isti ali se sada izvrsava kod u glavnoj petlji.
Takodje kod ukljucenja interapta moguce da imas interapte zbog smetnji i PIC se smrzne jer prakticno stalno ulazi i izlazi iz interapta.
Probaj prepraviti ove linije pa javi sta se desava.
> '84 ima "obicne" ulaze (nisu schmitt trigger) tako da moras da koristis hw debounce ili externi schmitt trigger
Ne mora. RB0 ulaz kod '84 je schmitt trigger SAMO kada se koristi kao interapt. RA4 je to uvek, pa je bolje njega koristiti za proveru bez interapta.
Ne mora. RB0 ulaz kod '84 je schmitt trigger SAMO kada se koristi kao interapt. RA4 je to uvek, pa je bolje njega koristiti za proveru bez interapta.
tačno je tako,...
uradio sam kako si rekao i sad mi i pri max. broju obrtaja registruje inpulse sa enkodera sa 400 proreza tj 80 inpulsa po krugu,...ooooo bogo moj,...
ovo je sada ono pravo i sada mi je mnogo draži zato što znam da radi ok.
a za brzine koje mi trebaju radiće i više no odlično
@bogdane ja sam prilikom pravljenja tablice istine posmatrao izlazni signal na enkoderu i čista je četvrtka
nešto me sećanje možda vara ali ovih dana puno tog sam pročitao i mislim da se spominje da RB.0 kada se konfiguriše kao ulaz da ima osobine šmit okidača
moram proveriti
pa ljudi, ovo je kanda sa ovim delom oko interapta za sada završeno ali ne i krej pisanja mog programa i sigurno da nije kraj mojim problemima kada ću vam se sigurno i obratiti,....hvala vam jako,jako puno
uradio sam kako si rekao i sad mi i pri max. broju obrtaja registruje inpulse sa enkodera sa 400 proreza tj 80 inpulsa po krugu,...ooooo bogo moj,...
ovo je sada ono pravo i sada mi je mnogo draži zato što znam da radi ok.
a za brzine koje mi trebaju radiće i više no odlično
@bogdane ja sam prilikom pravljenja tablice istine posmatrao izlazni signal na enkoderu i čista je četvrtka
nešto me sećanje možda vara ali ovih dana puno tog sam pročitao i mislim da se spominje da RB.0 kada se konfiguriše kao ulaz da ima osobine šmit okidača
moram proveriti
pa ljudi, ovo je kanda sa ovim delom oko interapta za sada završeno ali ne i krej pisanja mog programa i sigurno da nije kraj mojim problemima kada ću vam se sigurno i obratiti,....hvala vam jako,jako puno
Potpis
1. Ko zna više, bog mu je dalje
2. Ko zna manje, bog mu je bliže
3. Ko ništa ne zna, njemu bog može biti svako
2. Ko zna manje, bog mu je bliže
3. Ko ništa ne zna, njemu bog može biti svako
@stojan, hm, mozda na ovom "novom nabudzenom" ... ako se ja dobro secam, original nije imao schmitt nigde ... mada, toliko sam davno prestao doticni da koristim da sam mozda pomesao
@lm .. da da .. evo sad gledam datasheet .. kaze da je schmitt kada se koristi kao interrupt ... gotovo sam siguran da nije tako bilo, al uopste nije bitno .. bitno da je ovaj novi schmitt sto znaci da imas osnovni nivo debouce-a
@grabik, odlican ulov za =100 :)
@lm .. da da .. evo sad gledam datasheet .. kaze da je schmitt kada se koristi kao interrupt ... gotovo sam siguran da nije tako bilo, al uopste nije bitno .. bitno da je ovaj novi schmitt sto znaci da imas osnovni nivo debouce-a
@grabik, odlican ulov za =100 :)
Potpis
zdravo Stojane
da i u tvom uputstvu za pic 16f84 , pročitao sam tako nešto, jeste
da i u tvom uputstvu za pic 16f84 , pročitao sam tako nešto, jeste
Potpis
1. Ko zna više, bog mu je dalje
2. Ko zna manje, bog mu je bliže
3. Ko ništa ne zna, njemu bog može biti svako
2. Ko zna manje, bog mu je bliže
3. Ko ništa ne zna, njemu bog može biti svako
@bogdane pa kažem ja tebi da je ovaj piconja ažbaha,..ha
@grabik,..zaboravih da kažem da je takt ostao na 12 MHz,..probaću i to,..
@grabik,..zaboravih da kažem da je takt ostao na 12 MHz,..probaću i to,..
Potpis
1. Ko zna više, bog mu je dalje
2. Ko zna manje, bog mu je bliže
3. Ko ništa ne zna, njemu bog može biti svako
2. Ko zna manje, bog mu je bliže
3. Ko ništa ne zna, njemu bog može biti svako
jok, neće da radi kristal od 20 MHz, možda je krepo a nemam drugi, ali ko_ga šiša, može piconja lagano i na 12-tici,....mi lale nežurimo nigdi,...
Potpis
1. Ko zna više, bog mu je dalje
2. Ko zna manje, bog mu je bliže
3. Ko ništa ne zna, njemu bog može biti svako
2. Ko zna manje, bog mu je bliže
3. Ko ništa ne zna, njemu bog može biti svako
@ lm741
Ovih dana sam u velikoj gužvi pa ne stižem da se uključim niit da pratim pažljivo, ali jedna stvar mi je zapela za oko, a to je ovaj deo programa, tj. interapt rutina koju si napisao:
Kao prvo, nema potrebe za prvom naredbom jer to PIC automatski odradi kada nastupi interapt.
Kao drugo, ne vidim da na početku interapt rutine čuvaš, a na kraju vraćaš sadržaj bitnih registara.
Kao treće, izlaz iz interapt rutine je OBAVEZNO sa ASM naredom retfie (a ne RESUME) jer ona, pored povratka ujedno setuje GIE bit. To sam ti već rekao u ovom postu:
http://www.elitesecurity.org/p2484774
Znači, ovo što sam ti rekao je VEOMA VAŽNO za ispravan rad interapta i to što ti rutina radi kako treba u ovom slučaju je čista sreća, a radi kako treba jer se u njoj ne menja sadržaj ni W ni STATUS registra, a ti sam vodiš računa o GIE bitu. Da se ne menja W registar to je sasvim jasno, a status registar jedino bi mogla da promeni naredba uvećanja promenljive "brojac" kada predje sa 255 na 0, ali to se nikada ne dešava jer se u glavnom programu ne dozvoljava da ona predje 100. Kada bi se iz te rutine izbacile neke nepotrebne naredbe, izgledala bi kao da ju je pisao neko ko je svestan da se važni registri ne menjaju i zato ih ne čuva (lalo, bez uvrede :) ). Znači, u ovom slučaju int. rutina bi mogla da se napiše ovako:
Ispitivanje intcon.1 bita ti ne treba ako su ti ostali izvori interapta isključeni jer je tada samo taj bit setovan, a čini mi se da ne koristiš drugi izvor.
Pozdrav.
Sinisha
Ovih dana sam u velikoj gužvi pa ne stižem da se uključim niit da pratim pažljivo, ali jedna stvar mi je zapela za oko, a to je ovaj deo programa, tj. interapt rutina koju si napisao:
Code:
pik:
INTCON.7=0 'zabrana svih prekida dok se trenutni obradi
'ako je detektovana promena na pinu RB.0
if INTCON.1=1 THEN brojac=brojac+1 'uvecaj brojac za 1
INTCON.1=0 'obrisan fleg
INTCON.7=1 'omoguceni svi prekidi
INTCON.4=1 'omogucen prekid na RB.0
'izlaz iz interapta
RESUME
pik:
INTCON.7=0 'zabrana svih prekida dok se trenutni obradi
'ako je detektovana promena na pinu RB.0
if INTCON.1=1 THEN brojac=brojac+1 'uvecaj brojac za 1
INTCON.1=0 'obrisan fleg
INTCON.7=1 'omoguceni svi prekidi
INTCON.4=1 'omogucen prekid na RB.0
'izlaz iz interapta
RESUME
Kao prvo, nema potrebe za prvom naredbom jer to PIC automatski odradi kada nastupi interapt.
Kao drugo, ne vidim da na početku interapt rutine čuvaš, a na kraju vraćaš sadržaj bitnih registara.
Kao treće, izlaz iz interapt rutine je OBAVEZNO sa ASM naredom retfie (a ne RESUME) jer ona, pored povratka ujedno setuje GIE bit. To sam ti već rekao u ovom postu:
http://www.elitesecurity.org/p2484774
Znači, ovo što sam ti rekao je VEOMA VAŽNO za ispravan rad interapta i to što ti rutina radi kako treba u ovom slučaju je čista sreća, a radi kako treba jer se u njoj ne menja sadržaj ni W ni STATUS registra, a ti sam vodiš računa o GIE bitu. Da se ne menja W registar to je sasvim jasno, a status registar jedino bi mogla da promeni naredba uvećanja promenljive "brojac" kada predje sa 255 na 0, ali to se nikada ne dešava jer se u glavnom programu ne dozvoljava da ona predje 100. Kada bi se iz te rutine izbacile neke nepotrebne naredbe, izgledala bi kao da ju je pisao neko ko je svestan da se važni registri ne menjaju i zato ih ne čuva (lalo, bez uvrede :) ). Znači, u ovom slučaju int. rutina bi mogla da se napiše ovako:
Code:
pik:
brojac=brojac + 1
intcon.1=0
@ retfie
pik:
brojac=brojac + 1
intcon.1=0
@ retfie
Ispitivanje intcon.1 bita ti ne treba ako su ti ostali izvori interapta isključeni jer je tada samo taj bit setovan, a čini mi se da ne koristiš drugi izvor.
Pozdrav.
Sinisha
Citat:
lm741: jok, neće da radi kristal od 20 MHz, možda je krepo a nemam drugi, ali ko_ga šiša, može piconja lagano i na 12-tici,....mi lale nežurimo nigdi,...
F84 je fabrički deklarisan do 10 MHz i sve preko toga kada radi stabilno je čist ćar :).
Pozdrav.
Sinisha
Citat:
lm741: tačno je tako,...
uradio sam kako si rekao i sad mi i pri max. broju obrtaja registruje inpulse sa enkodera sa 400 proreza tj 80 inpulsa po krugu,...ooooo bogo moj,...
ovo je sada ono pravo i sada mi je mnogo draži zato što znam da radi ok.
a za brzine koje mi trebaju radiće i više no odlično
@bogdane ja sam prilikom pravljenja tablice istine posmatrao izlazni signal na enkoderu i čista je četvrtka
nešto me sećanje možda vara ali ovih dana puno tog sam pročitao i mislim da se spominje da RB.0 kada se konfiguriše kao ulaz da ima osobine šmit okidača
moram proveriti
pa ljudi, ovo je kanda sa ovim delom oko interapta za sada završeno ali ne i krej pisanja mog programa i sigurno da nije kraj mojim problemima kada ću vam se sigurno i obratiti,....hvala vam jako,jako puno
uradio sam kako si rekao i sad mi i pri max. broju obrtaja registruje inpulse sa enkodera sa 400 proreza tj 80 inpulsa po krugu,...ooooo bogo moj,...
ovo je sada ono pravo i sada mi je mnogo draži zato što znam da radi ok.
a za brzine koje mi trebaju radiće i više no odlično
@bogdane ja sam prilikom pravljenja tablice istine posmatrao izlazni signal na enkoderu i čista je četvrtka
nešto me sećanje možda vara ali ovih dana puno tog sam pročitao i mislim da se spominje da RB.0 kada se konfiguriše kao ulaz da ima osobine šmit okidača
moram proveriti
pa ljudi, ovo je kanda sa ovim delom oko interapta za sada završeno ali ne i krej pisanja mog programa i sigurno da nije kraj mojim problemima kada ću vam se sigurno i obratiti,....hvala vam jako,jako puno
Malo popravi program kako su ti ljudi koji pisu u basicu rekli.
I sad samo upotrebi PAUSE ili DELAY ili kako se vec zove u basicu i dodji da se zalis da ne radi kako treba , onda cu te usranom motkom:)
Kako ne radim sa basicom ne znam tocno kako on obradjuje interapt, C programi sa kojima sam radio rade pamcenje W, STATUS registra itd. Onaj koji pise program treba samo da izbrise zastavicu interapta ili ako ima vise izvora interapta da odredi koji interapt je aktivan.
Ovih dana pokusavam nesto sa atmelima i u njihovom avr gcc ne treba brisati cak ni zastavicu interapta, kompajler to sam odradi.
Ako ovaj basic ne cuva sadrzaj registara kod interapta mislim da ne vrijedi sa njim ni da pocinju raditi oni koji se uce programiranju u nekom visem programskom jeziku, kao alternativu imaju puno boljih kompajlera i laksih kompajlera za ucenje.
Ovih dana pokusavam nesto sa atmelima i u njihovom avr gcc ne treba brisati cak ni zastavicu interapta, kompajler to sam odradi.
Ako ovaj basic ne cuva sadrzaj registara kod interapta mislim da ne vrijedi sa njim ni da pocinju raditi oni koji se uce programiranju u nekom visem programskom jeziku, kao alternativu imaju puno boljih kompajlera i laksih kompajlera za ucenje.
Citat:
grabik:Ako ovaj basic ne cuva sadrzaj registara kod interapta mislim da ne vrijedi sa njim ni da pocinju raditi oni koji se uce programiranju u nekom visem programskom jeziku, kao alternativu imaju puno boljih kompajlera i laksih kompajlera za ucenje.
Čuva sadržaj registra ako PIC ima preko 2K programske memorije, ali je opet potrebno "peške" vratiti njihov sadžaj pre povratka. Čuva W, STATUS i PCLATH, ali je neophodno definisati te promenljive i to na adekvatan način koji je, kao i sve što sam do sada rekao na tu temu, detaljno objašnjeno u uputstvu.
@ lm741
Poželjno je da interapt rutina bude na početku programa, odmah posle deklaracije promenljivih i DEFINE naredbi.
Pozdrav.
Sinisha
uf,...evo me,zaglavio sam na nekom silosu,..
čitam vaše odgovore i kontam sve i da napomenem da ako i nisam prokomentarisao svaki vaš odgovor to neznači da sam ga ignorisao a i nebi imalo smisla ali zato se na mnoge vaše odgovore vraćam više puta, i svaki put mi je jasnija slika i priča o interaptu,...
da se ne zahvaljujem pojedinačno,...dugačka je lista
hvala vam puno, puno na volji i strpljenju da mi pomognete
da potsetim da ću kad sve bude gotovo, sve okačiti da se vidi
čitam vaše odgovore i kontam sve i da napomenem da ako i nisam prokomentarisao svaki vaš odgovor to neznači da sam ga ignorisao a i nebi imalo smisla ali zato se na mnoge vaše odgovore vraćam više puta, i svaki put mi je jasnija slika i priča o interaptu,...
da se ne zahvaljujem pojedinačno,...dugačka je lista
hvala vam puno, puno na volji i strpljenju da mi pomognete
da potsetim da ću kad sve bude gotovo, sve okačiti da se vidi
Potpis
1. Ko zna više, bog mu je dalje
2. Ko zna manje, bog mu je bliže
3. Ko ništa ne zna, njemu bog može biti svako
2. Ko zna manje, bog mu je bliže
3. Ko ništa ne zna, njemu bog može biti svako
Code:
DISABLE
pik:
brojac=brojac+1 'uvecaj brojac za 1
INTCON.1=0 'obrisan fleg
@ retfie ;izlaz iz interapta
DISABLE
pik:
brojac=brojac+1 'uvecaj brojac za 1
INTCON.1=0 'obrisan fleg
@ retfie ;izlaz iz interapta
@rsiniša
probao sam kako si rekao
Citat:
@ lm741
Poželjno je da interapt rutina bude na početku programa, odmah posle deklaracije promenljivih i DEFINE naredbi.
Poželjno je da interapt rutina bude na početku programa, odmah posle deklaracije promenljivih i DEFINE naredbi.
zaglavi mi fetove, ampermetar zakuca,obori napon
kada vratim dole gde je i bio radi ok. ali nevidim nikakvu promenu za razliku od napisanog kako mi je grabik rekao
Code:
DISABLE
pik:
'ako je detektovana promena na pinu RB.0
if INTCON.1=1 THEN brojac=brojac+1 'uvecaj brojac za 1
INTCON.1=0 'obrisan fleg
RESUME
DISABLE
pik:
'ako je detektovana promena na pinu RB.0
if INTCON.1=1 THEN brojac=brojac+1 'uvecaj brojac za 1
INTCON.1=0 'obrisan fleg
RESUME
Potpis
1. Ko zna više, bog mu je dalje
2. Ko zna manje, bog mu je bliže
3. Ko ništa ne zna, njemu bog može biti svako
2. Ko zna manje, bog mu je bliže
3. Ko ništa ne zna, njemu bog može biti svako
Citat:
grabik:
Ovih dana pokusavam nesto sa atmelima i u njihovom avr gcc ne treba brisati cak ni zastavicu interapta, kompajler to sam odradi.
Ovih dana pokusavam nesto sa atmelima i u njihovom avr gcc ne treba brisati cak ni zastavicu interapta, kompajler to sam odradi.
na pic-u zavisi od kompajlera do kompajlera ... (pricam o c-u, ove basic-e ne trosim) .. negde moras da ocistis fleg sam, negde ne, u nekima (npr CSC C) kompajler sam "simulira" da imas za svaki interapt zaseban vektor tako da ti pravis posebno funkciju za tmr0, posebno za tmr1, posebno za ext a kompajler odradi "najbrzi moguci kod" pretpostavljajuci sta si radio, pritom na 16F koji ima samo jedan vektor ce da radi to sa branch-om a na nekom vecem picu sa vise interapt vektora ce ako moze da podesi tako da se rokaju direkt funkcije .. svejedno - ti ne moras ni o cemu da brines .. na csc c ne moras na primer da brises flag, na microchip c-u moras ...
Citat:
Ako ovaj basic ne cuva sadrzaj registara kod interapta mislim da ne vrijedi sa njim ni da pocinju raditi oni koji se uce programiranju u nekom visem programskom jeziku, kao alternativu imaju puno boljih kompajlera i laksih kompajlera za ucenje.
nikad nisam skapirao zasto iko koristi basic, al se trudim da to precutim :)
Potpis
Na atmelu (avr) se hardverski iskljuci interapt u statusnom registru pri izvrsenju skoka i na kraju pri izlasku se automatski setuje, dakle nevezano za vrstu kompajlera.
Ni ja ne kapiram zasto iko koristi pic kontrolere ;)
Citat:
bogdan.kecman: nikad nisam skapirao zasto iko koristi basic, al se trudim da to precutim :)
Ni ja ne kapiram zasto iko koristi pic kontrolere ;)
Potpis
__*__
*___*
*___*