![](templates/subSilver/images/CCSLogo.jpg) |
![CCS C Software and Maintenance Offers](templates/subSilver/images/forumAd6.jpg) |
View previous topic :: View next topic |
Author |
Message |
alexz
Joined: 17 Sep 2004 Posts: 133 Location: UK
|
Interrupt types |
Posted: Tue Nov 02, 2004 2:32 am |
|
|
Does anybody know the difference between the Open drain Interrupt and Push-Pull Interrupt?
Thanks _________________ Alex |
|
![](templates/subSilver/images/spacer.gif) |
Ttelmah Guest
|
Re: Interrupt types |
Posted: Tue Nov 02, 2004 3:19 am |
|
|
alexz wrote: | Does anybody know the difference between the Open drain Interrupt and Push-Pull Interrupt?
Thanks |
The difference, doesn't just apply to interrupt signals. A 'push-pull' _output_, drives the signal involved, high, and low as needed. On 'open drain' output, only pulls the signal 'low', and relies on an external pull-up resistor, to pull the signal high when not driven. Open drain signals, allow several outputs (assuming -ve logic is used), to be 'wire ored' together, with the signal going low, when any one of the drivers comes on.
The difference, applies in the context of interrupts, where some devices have an interrupt output that is a push-pull type, while others have an open drain type, allowing several devices to share a single interrupt input to the processor.
There is also another 'difference', that is tied to this, with regards to interrupt _inputs_. For the wire 'oring' to work, the interrupt input used, should support 'level sensitive' interrupts (ie., if the interrupt is is low, the interrupt will keep triggering), rather than 'edge sensitive' interrupts (which only trigger when the signal transitions from high-low). With the latter, if a second device interrupts, while another device is already holding the line low, only one interrupt event will occur, potentially missing the second interrupt. With level sensitive interrupts, once the first event has been handled, and the global interrupt is re-enabled, the second device will still be holding the line low, triggering a second interrupt event.
In the case of a chip using 'edge sensitive' interrupts, it is possible to use code to simulate the level sensitive behaviour, by clearing the incoming interrupt source, then 'polling' the interrupt line, to see if something else requires servicing, and if so, looping, and testing for this. To wire or interrupt inputs onto the PIC lines, requires this approach.
Best Wishes |
|
![](templates/subSilver/images/spacer.gif) |
alexz
Joined: 17 Sep 2004 Posts: 133 Location: UK
|
|
Posted: Tue Nov 02, 2004 3:42 am |
|
|
So, I do not need the pull up resistor when using push-pull type?
If the device I am working with(USBN9603) is configured as push-pull Low,
how can I configure the PIC16F877 to interrupt on the level and not on the edge?
Basically, if I am using only 1 device on the interrupt line, should I use the push-pull type? _________________ Alex |
|
![](templates/subSilver/images/spacer.gif) |
|
|
You cannot post new topics in this forum You cannot reply to topics in this forum You cannot edit your posts in this forum You cannot delete your posts in this forum You cannot vote in polls in this forum
|
Powered by phpBB © 2001, 2005 phpBB Group
|