PIC Interrupts

N

neoaspilet11

Guest
Hallo allemaal,

Gelieve dit geval:

1.) Stel programma is momenteel klantenserviceovereenkomsten een interrupt veroorzaakt door TMR0 Overloop, GIE bit wordt gewist.

2.) Tijdens TMR0 Overflow Interrupt service, een externe Onderbreek op RB0 opgetreden, is dat een stijgende rand plaatsvond en RB0 nu HOGE - dit zal ertoe leiden dat de INTCON, INTF beetje te hoog.

3.) De TMR0 Overflow Interrupt dienst is voltooid, TMR0IF gewist en GIE is SET opnieuw.Na het programma controle uitgangen de Interrupt service routine, zal de externe interrupt worden onderhouden?Neem er nota van dat de oplopende rand RB0 op zich reeds voorgedaan en INTF is HOGE al na retfie van TMR0 overflow interrupt service.

Bedankt voor alle ideeën.

 
Hoi,

Van de PIC16F877A datablad, pagina 153:
Citaat:

wereldwijde onderbreken zodat bit, GIE (INTCON <7>),

maakt het mogelijk (indien ingesteld) alle ontmaskerd interrupts of uitschakelen (indiengewist) alle interrupts. Wanneer bits GIE is ingeschakeld en een

onderbreken s flag bits en masker bits zijn ingesteld,
wordt het onderbreken zalvector onmiddellijk.
 
Ik denk dat zodra de GIE is ingesteld weer, krijg je in de interrupt service routine again ...

 
Bedankt voor de ideeën jongens,

Mijn toepassing zal gebruik maken van twee onderbreken bronnen, een van de externe - een oplopende rand in RB0 en TMR0 overflow.De TMR0 niet vooraf geschaald zodat deze verhogingen op elke instructie cyclus en de PIC877A ik gebruikt wordt uitgevoerd bij 20 MHz.Dus daarom is het zeer waarschijnlijk dat een interrupt werd veroorzaakt door het TMR0 overflow en de externe interrupt heeft weinig kans om te worden triggred.

Ik doelbewust Cleared GIE aan het begin van de Interrupt weersomstandigheden veroorzaakt door TMR0 overflow of externe Interrupt te simflipy programma flow en codering.Ik dacht de oplossing gisteravond.En dat is wanneer een interrupt wordt hetzij uit TMR0 overflow of Externe Trigger op RB0 moet ik poll eerste INTCON, INTF te zien is INFT hoog is.Indien het is dan niet de dienst TMR0 overflow.Daarna heb ik gemerkt dat wanneer een externe trigger gebeurd tijdens TMR0 Overflow onderhoud, INTCON, INTF vlag zal hoog.Dus toen na klantenserviceovereenkomsten TMR0 overflow, zelfs als de MPU geen dienst RB0 onderbreken, op de volgende TMR0 overflow, interrupt service routine zal worden gedwongen uit te voeren RB0 onderbreken, omdat INTCON, INTF is HOGE dus omzeilen TMR0 Interrupt service!

Nogmaals,
ik dank u voor de ideeën
Jack

 

Welcome to EDABoard.com

Sponsor

Back
Top