170 likes | 249 Views
Katkestused 1. PIC KATKESTUSED. KATKESTUS. CALL0x04. KATKESTUS. CALL 0x04. BIOS Interrupts. Katkestuste loogika. Saab keelata ära iga katkestust eraldi või kõiki ühekorraga. Katkestuste loogika. GIE – General Interrupt Enable. xxxIF – I nterrupt F LAG (Tekitab katkestav seade)
E N D
Katkestused 1 PIC KATKESTUSED
KATKESTUS CALL0x04
KATKESTUS CALL 0x04
Katkestuste loogika Saab keelata ära iga katkestust eraldi või kõiki ühekorraga
Katkestuste loogika GIE – General Interrupt Enable xxxIF –Interrupt FLAG (Tekitab katkestav seade) xxxIE –Interrupt Enable (Programm lubab)
Katkestuste loogika PEIE – Peripheral Interrupt Enable xxxIF –Interrupt FLAG (Tekitab katkestav seade) xxxIE –Interrupt Enable (Programm lubab)
Katkestuste loogika EE – EEPROM Write completeAD – A/D ConverterRC – USART ReceiveTX – USART TransmitSSP – Synchronous Serial PortCCP1, CCP2 – Capture/Compare/PWMTMR1, TMR2 – TimerBCL – SSP I2C mode Bus CollisionCM - Comparator xxxIF –Interrupt FLAG (Tekitab katkestav seade) xxxIE –Interrupt Enable (Programm lubab)
Katkestuste registrid INTerrupt CONtrol register xxxE = 1 – katkestus lubatudxxxE = 0 – katkestus keelatud xxxF = 1 – sündmus olixxxF = 0 – sündmust ei olnud
Katkestuste registrid xxxF = 1 – sündmus olixxxF = 0 – sündmust ei olnud xxxE = 1 – katkestus lubatudxxxE = 0 – katkestus keelatud
Loeb käsu kohal PCTäidab käsu kohal PC-1 INTF läheb ise 1 -ks Loeb käsu kohal PC+1Täidab käsu kohal PC PC+1 kirjutatakse Stacki,GIE bitt läheb ise 0 -ks Loeb käsu kohal 0004h Täidab katkestuse programmi Katkestuse programm peab lõppema käsuga RETFIE Stackist loetakse PC+1,GIE bitt läheb ise 1 -ks PC PC+1 Loeb käsu kohal PC+1ja põhiprogramm jätkub
Loeb käsu kohal PCTäidab käsu kohal PC-1 INTF läheb ise 1 -ks Loeb käsu kohal PC+1Täidab käsu kohal PC PC+1 kirjutatakse Stacki,GIE bitt läheb ise 0 -ks Loeb käsu kohal 0004h Täidab katkestuse programmi Midagi on puudu ????? Katkestuse programm peab lõppema käsuga RETFIE Stackist loetakse PC+1,GIE bitt läheb ise 1 -ks Loeb käsu kohal PC+1ja põhiprogramm jätkub
Loeb käsu kohal PCTäidab käsu kohal PC-1 INTF läheb ise 1 -ks Loeb käsu kohal PC+1Täidab käsu kohal PC PC+1 kirjutatakse Stacki,GIE bitt läheb ise 0 -ks Loeb käsu kohal 0004h Täidab katkestuse programmi Mis juhtub, kui RETFIE ajal on INTF 1 ? Otsekohe tekib uus katkestus!! Katkestuse programm peab seadma INTF 0 -ks Katkestuse programm peab lõppema käsuga RETFIE Stackist loetakse PC+1,GIE bitt läheb ise 1 -ks Loeb käsu kohal PC+1ja põhiprogramm jätkub
Ükski asi ei toimu otsekohe Katkestuste latentsus GIE bitt läheb nulliks tühja käsutsükli ajal 3 – 4 tsüklit4 MHz – tsükkel 1 μs ingl. k. late - hilja Loetakse katkestuse vektorist käsk Täidetaksekatkestuse vektori käsk INTF seatakse järgmise OSC1 frondiga aga protsessor saab sellest aru alles järgmise Q1 ajal
Millal kasutada katkestust ja millal mitte? Saab ka ilma katkestuseta – kontrollida pidevalt biti olekut.
Millal kasutada katkestust ja millal mitte? Kui katkestused toimuvad suht. harva ja protsessor peab pidevalt tegelema millegi muuga, näiteks arvutustega või millegi lülitamisega. Katkestused ei tohi tekkida liiga sageli.Uus katkestus ei tohi tulla enne kui eelmise katkestuse teenindamise programm on lõpetanud.
On võimalus, et katkestus tekib samal ajal kui ma tahan katkestust keelata Loop BCF INTCON,GIE ; Disable BTFSC INTCON,GIE ; Kas 0 ? GOTO Loop ; Ei ...... ; Jah BSF INTCON,GIE ; Enable