# PIC mikrokontrolleri >  Pārtraukumi

## DanillaD

Labdien visiem.
Man tāds jautājums par PIC-iem, izskaidrojiet priekš kam ir vajadzīgi tie pārtaukumi, ko viņi dod, kad izmanto? (INTCON registrs)

----------


## next

Paartraukums ir lets un izdeviigs mehaanisms reagjeeshanai uz aarpasaules notikumiem.
Veel var programiski vakteet, kas uz portiem daraas, bet tad citiem darbiem laika nepaliek.
Veel procesoru pasaulee lieto DMA, bet pie PICiem tas nav realizeets.

----------


## DanillaD

Kā tas darbojas, varbūt uz kāda maza vienkārša piemēra apskaidrotu?

----------


## Delfins

http://www.hobbyprojects.com/pic_tutori ... ial11.html

----------


## 0xDEAD BEEF

Piemeram, tev ir pieslegts kaut kads sledzis pie kadas iejas kajas un tu esi uzstadijis partraukumu uz to kaju. Tada gadijuma tev var but while(1) {blinl_led();} cikls, un atseviski uzrakstita pogas apstrade apstrade() {izslegt_leduskapi();}.

Tad, kad nospiedis pogu, tad procesors pats izsauks tavu kodu. Tev, tjipa, nebus galvenaja cikla par to jadoma. Prakse gan tik vinekarshi tas nenotiek, bet ideju saprati...

To izmanto, ja ir svarigi laicigi reaget uz arpasaules notikumu.

Velviens piemers - tu uzraksti kodu, kas ik pec 1sekundes iesledz un izsledz lampinu (izmanto delay) un tad parbaudi, vai tev nav atsutiti kadi dati pa USART. Ja dati saks strauji nakt ieksha, bet tu sedesi sava delay koda, tad datiem nebus vieta un tie kritis zeme, jo tu busi uzkodejis, ka parbaude uz ienakoshajiem datiem notiek pec delay. Toties, ja izmanto partraukumu, tad, tiklidz ienak dati, ta no jebkuras vietas koda tiek partraukts kods un tiek izsaukta partraukuma funkcija, kura tu parbaudi, kas ir noticis, un atgriezies atpaklj uz programu.
Beefs

----------


## DanillaD

Liels paldies,  ::  Vismaz ir priekštats kas tas ir, vajadzēs mēgināt. Paldies visiem.

----------


## Slowmo

Vēl viens piemērs ar diodes mirkšķināšanu:
Tā vietā, lai ar programmas koda palīdzību (cikli ar nop operācijām) gaidītu, kamēr pienāk laiks ieslēgt vai izslēgt diodi, var izmantot taimera pārtraukumu. Kad taimeris izskaita līdz maksimālajai vērtībai, ja nokonfigurēts pārtraukums, tiks izsaukts pārtraukuma appstrādes kods, kurā Tu tad arī vari ieslēgt vai izslēgt diodi. Tanī laikā, kamēr taimeris skaita, var daīt kaut ko citu noderīgu.
Bez pārtraukuma būtu visu laiku jāpārbauda, vai taimeris nav sasniedzis max. vērtību, kas nozīmētu, ka neko citu tikmēr darīt nevar.

----------

