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

Interrupt pic 16F84A

[es] :: Elektronika :: Mikrokontroleri :: Interrupt pic 16F84A

[ Pregleda: 4426 | Odgovora: 8 ] > FB > Twit

Postavi temu Odgovori

Autor

Pretraga teme: Traži
Markiranje Štampanje RSS

Brelak
Nis

Član broj: 131174
Poruke: 227
*.dynamic.sbb.rs.



+3 Profil

icon Interrupt pic 16F84A03.08.2008. u 00:00 - pre 153 meseci
Molio bih sve koji znaju da programiraju mikrokontrolere (pic 16f84a) da mi ukratko objasne logiku interrupt-a,zasto se preko njega rade problemi,sta dovodi do prekida,kako izgleda glavni program i sta on u sebi mora da ima ako se u interaptu vrsi podprogram???
 
Odgovor na temu

Stojan Trifunovic

Član broj: 15156
Poruke: 366
*.yu
Via: [es] mailing liste



+8 Profil

icon Re: Interrupt pic 16F84A03.08.2008. u 16:03 - pre 153 meseci
U mikrokontroleru postoje dva nacina na koji se moze testirati logicko stanje na pinu. Jedan je poolovanjem (neprestanim ili periodicnim).
Neprekidno poolovanje tastera povezanom na RB0 sa pool-up otpornikom izgleda ovako:
Code:

Test
        btfsc PORTB,0
        goto  Test
        goto  Pritisnut
        ...

Pritisnut
        ...

Periodicno poolovanje sa istom situacijom izgleda ovako:
Code:

Test
        btfsc PORTB,0
        goto  Nije_pritisnut
        goto  Pritisnut
        ...

Pritisnut
        ...

Nije_pritisnut
        ...

Koji ce se nacin koristiti zavisi od konkretne primene.

Ukoliko se sme "blokirati" rad mikrokontrolera dok taster ne bude pritisnut, koristice se prvi nacin.

Ukoliko mikrokontroler treba raditi i nesto drugo, koristice se drugi nacin, sa tim sto ce se morati osigurati da periodicno poziva test. Ovo ne blokira mikrokontroler, ali uvodi potrebu da se softver tako napravi da je omoguceno periodicno testiranje.

Program se interaptima moze napraviti tako da se promenom stanja na RB0 pinu izaziva interapt. Cim se promeni stanje na pinu (pritiskom tastera) setovace se bit INTF u INTCON registru. On se naziva interapt flag. Sta se onda dogadja? Program najpre zavrsava zapocetu instrukciju, a zatim nasilno skace na adresu interapt vektora (0x04). Tu se izvrsava interapt rutina (moze se zamisliti kao potprogram), i na kraju se vraca na tacno adresu sa koje je prekinuto dalje izvrsavanje programa.

Spolja bi to izgledalo kao da u toku voznje automobila vozacu zazvoni mobilni (pritisnut prekidac). Vozac ce se parkirati (skociti na interapt vektor), javiti se (izvrsiti interapt rutinu) i zavrsiti razgovor (vratiti se iz interapta retfie instrukcijom), i onda nastaviti sa voznjom.

Kako se ne sme dozvoliti da se stanje STATUS i W registra u glavnom programu na bilo koji nacin izmeni izvrsavanjem interapt rutine, potrebno je privremeno snimiti njihovo stanje odmah pri ulasku u interapt (na samom interapt vektoru), i vratiti ih pre izlaska (pre retfie instrukcije). Kako ovo shvatiti? Kao da je vozac vozio Jugo, parkirao ga, zavrsio razgovor, a onda pogresio kola pa seo u Mercedes.

Odmah nakon ulaska u intarapt rutinu potrebno je i obrisati interapt flag. Zbog cega? Ukoliko se ne obrise, mikrokontroloer ce se po nailasku na retfie instrukciju vratiti na glavni program, ali ce u njemu neprestano proveravati da li je ijedan od interapt flagova setovan. Ukoliko jeste, izazvace se novi interapt, i tako ce se neprestano pozivati (i pozivati, i pozivati) interapt rutina ne ostavljajuci imalo vremena glavnom programu. Shvatite ovo kao novi poziv, tek sto ste se vratili u kola.

U praksi nije sve toliko jednostavno zbog neizbeznih varnicenja kontakata (debouncing), ali to je vec pitanje za neku drugu temu.

U cemu je ovde glavna prednost interapta nad obicnim poolovanjem? U tome sto program uopste ne mora da vodi racuna, niti da gubi vreme za poolovanje. Zamislite to kao da krenete i dodjete na cilj, a da Vam mobilni uopste ne zazvoni, a ukoliko bas zazvoni, da se javite i razgovarate za vreme voznje (sto Vam ne bih preporucio).

Kako je interapte potrebno prethodno dozvoliti, za to se koristi INTE bit. Mozete ga najlakse shvatiti kao ukljucen/iskljucen mobilni.


Osim interapta na RB0 pinu, PIC16F84 ima jos par izvora interapta. Na primer interapt na promenu stanja RB4 do RB7 pinova. Kako se on koristi?

Da bi se izazvao interapt RB0 pinom potrebno je prethodno definisati okolnosti pri kojima ce se on izazvati. Te okolnosti obuhvataju da li ce se interapt izazvati pri prelasku sa logicke 0 na 1, ili sa logicke 1 na 0. Interapri na pinovima RB4 do RB7 bice izazvani ukoliko se stanje na bilo kom od pinova RB7, RB5, RB6 ili RB7 promeni. Znaci, u slucaju da je povezan prekidac na jedan od ovih pinova, interapt ce se izazvati i pri njegovom pritisku, i pri njegovom otpustu. Naravnop, i ovaj izvor interapta ima svoj interapt flag (RBIF), kao i svoj bit dozvole (RBIE).


Jos jedan izuzetno vazan (cak, rekao bih najvazniji) izvor interapta nastaje prekoracenjem tajmera. Naime PIC16F84 u semi ima tajmer. On se nalazi u registru TMR0, i njegova je funkcija da neprekidno broji. Od 0 do 255, pa ispocetka (kao izgreban CD). Prilikom svakog prekoracenja (pri prelasku sa 255 na 0) njegov interapt flag ce se setovati, tako da je moguce prilikom svakog prekoracenja izazvati interapt. Zasto je ovo toliko bitno? Zato sto je tajmer potpuno nezavistan od programa, pa je njim moguce generisati izuzetno precizne vremenske intervale. Moguce je, svakako, to uraditi i obicnim brojanjem instrukcija, ali skokovi ovaj nacin cine izuzetno nepredvidljivim i komplikovanim.

Uz kristal od 4MHz PIC ce menjati stanje na tajmeru svake mikrosekunde, pa se bi se interapt morao izazivati na svakih 256 mikrosekundi. Da bi se ovo vreme uopste moglo produziti, tajmeru je dodeljen preskaler koji omogucuje da se TMR0 registar ne inkrementuje svake, vec svake druge (cetvrte, osme, sesnaeste...) mikrosekunde, odnosno da se takt tajmera deli sa 2, 4, 8...

Interapti izazvani tajmerom, takodje imaju svoj interapt flag (T0IF) i svoj bit ukljucenja (T0IE).


Zadnji izvor interapta u PIC16F84 su interapti izazvani zavrsetkom snimanja u EEPROM. Mozda i postoji neka situacija gde bi to bilo od znacaja, ali u praksi i ne znaci mnogo.


Da bi ijedan od ovih interapta uopste mogao biti izazvan, bez obzira na pojedinacne dozvole, potrebno je dozvoliti ih jednim centralnim bitom (GIE). Zamislite ga kao skidanje baterije iz mobilnog. Mozete probati da ukljucite mobilni pojedinacnim dozvolama, ali bez baterije necete uspeti.
 
Odgovor na temu

Brelak
Nis

Član broj: 131174
Poruke: 227
*.dynamic.sbb.rs.



+3 Profil

icon Re: Interrupt pic 16F84A04.08.2008. u 23:21 - pre 153 meseci
Ostao sam bez teksta,moram da kazem da mi je mnogo jasnije,tj ne znam da li trenutno postoji nesto sto mi ne bi bilo jasno.Ovaj tekst cu sacuvati definitivno jer mnogo objasnjava.Ostaje na meni da vezbam sintaksu,logika mi nije problem.

HVALA...
 
Odgovor na temu

johnny_hush
Belgrade, Serbia

Član broj: 112918
Poruke: 528
89.216.66.*

Sajt: johnnyhush.com


+1 Profil

icon Re: Interrupt pic 16F84A05.08.2008. u 04:12 - pre 153 meseci
Pogledaj celu knjigu na temu 16f84 od Stojana, za sva 'buduca' pitanja http://trifunovic.johnnyhush.com/PIC16F84.pdf

pozz
http://johnnyhush.com - Electronics
 
Odgovor na temu

Brelak
Nis

Član broj: 131174
Poruke: 227
*.dynamic.sbb.rs.



+3 Profil

icon Re: Interrupt pic 16F84A07.08.2008. u 14:42 - pre 153 meseci
Toplo preporucujem da svi koji se bave programiranjem mikrokontrolera da skinu knjisku sa sajta koji je dat u prethodnom odgovoru.To je majka Mara medju knjigama.
 
Odgovor na temu

Odin D.
Mlađi referent za automatizaciju
samoupravljanja

Član broj: 37292
Poruke: 2549



+8368 Profil

icon Re: Interrupt pic 16F84A07.08.2008. u 18:58 - pre 153 meseci
Vjerovatno ce biti brzo obrisano (a mozda i nece posto mi se cini da su moderatori smugnuli na ljetovanje), pa ko stigne stigne.
Moja preporuka je:

http://www.freebookspot.com/Comments.aspx?Element_ID=3440

U ovoj knjizi je 90% odgovoara za PIC problematiku koja se srece na ovom forumu.
Izvinjavam se na ovom RobinHudovskom potezu, ali nadam se da mi se nece uzeti za veliko zlo i da eventualno necu zaraditi nesto gore od neke opomene. Ako nekog citaoca bas bude grizla savjest moze u svako doba poslati 50-tak evrica na adresu autora.

Pozdrav!

 
Odgovor na temu

vladabajic
novi sad

Član broj: 63168
Poruke: 146



Profil

icon Re: Interrupt pic 16F84A08.08.2008. u 11:01 - pre 153 meseci
nema smisla brisati.
bas ima zanimljivih izdanja
Hvala Odin.D
stranicu sam oznacio kao bookmarks

PS.kad raspakujem fajl, dobijem prazan folder! u cemu je fora? koristim peazip i do sada nidam imao ovakav slucaj...

[Ovu poruku je menjao vladabajic dana 08.08.2008. u 12:20 GMT+1]
A mozda je zemlja ipak ravna ploca...
 
Odgovor na temu

Odin D.
Mlađi referent za automatizaciju
samoupravljanja

Član broj: 37292
Poruke: 2549



+8368 Profil

icon Re: Interrupt pic 16F84A08.08.2008. u 19:28 - pre 153 meseci
Ja raspakivam sa winrar i nemam problema.
Obicno je naveden i password za raspakivanje, pa vidi da ti tu nesto ne promice.
 
Odgovor na temu

Brelak
Nis

Član broj: 131174
Poruke: 227
*.dynamic.sbb.rs.



+3 Profil

icon Re: Interrupt pic 16F84A11.08.2008. u 21:53 - pre 152 meseci
ja cisto da kazem da sam toliko odusevljen materijalom da sam izstampao ceo dokument pic 16f84.

ps: ostao sam bez teksta
 
Odgovor na temu

[es] :: Elektronika :: Mikrokontroleri :: Interrupt pic 16F84A

[ Pregleda: 4426 | Odgovora: 8 ] > FB > Twit

Postavi temu Odgovori

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