![]() |
Reading interupt pin as Standard IO
I am trying to generate code that reads the pulswidth of a signal. I am avoiding use of Interupt pins 1 and 2 for later use. As my code is set up, I am trying to read the pulsewidth on pin 3. (BTW this is the Vex controller, I don't think it should make a difference though)
The code: Code:
#define accel_x rc_dig_int3Code:
0n 0n .... I then press the switch 0n 0n 0n ....................... (Ons for about another second) Off Off It is the same for the 0ff to On transition. I thought maybe for some reason my ISR was consuming to much time, explaining the delay, and so I took all of my code out an left the default: Code:
... |
Re: Reading interupt pin as Standard IO
The delay may be the USART waiting for the transmit buffer to clear of "On"s before the "Off"s are being sent. Try setting a pin high/low and reading that, it is a much faster response time.
|
Re: Reading interupt pin as Standard IO
I second Mike's comment. I know the IFI loader's terminal window introduces a significant delay when there is continuous data coming in. Hyperterminal is much better.
I don't know how the Vex serial communication is implemented. It's likely that you're sending "on" and "off" messages faster than they can be transmitted, and that they're being buffered. |
Re: Reading interupt pin as Standard IO
Quote:
|
Re: Reading interupt pin as Standard IO
Quote:
Now I'm trying to do it with interrupts, and I have the code in the ISR as so: Code:
else if (INTCONbits.RBIF && INTCONbits.RBIE){ /* Ints 3-6 (RB4, RB5, RB6, or RB7) changed. */[EDIT]-Stupid mistake... I never enabled interrupts by setting bit : INTCONbits.RBIE :-p |
Re: Reading interupt pin as Standard IO
As a general rule, using printf in an interrupt service routine is a Bad Idea. The serial communication library routines might handle it without causing issues...or they might not.
ISRs should be reserved for things which take approximately no time to perform. Make a comparison, set a flag, store a value, maybe compute a delta or a sum. But try not to start something which will require waiting for something else to happen. |
Re: Reading interupt pin as Standard IO
Quote:
My actual code is Code:
else if (INTCONbits.RBIF && INTCONbits.RBIE){ /* Ints 3-6 (RB4, RB5, RB6, or RB7) changed. */Does anyone have code that does frequency/duty cycle measurement? |
Re: Reading interupt pin as Standard IO
Quote:
|
Re: Reading interupt pin as Standard IO
Quote:
|
| All times are GMT -5. The time now is 03:18. |
Powered by vBulletin® Version 3.6.4
Copyright ©2000 - 2017, Jelsoft Enterprises Ltd.
Copyright © Chief Delphi