View Single Post
  #1   Spotlight this post!  
Unread 17-02-2005, 22:20
devicenull devicenull is offline
Robot? We need a robot?
no team
 
Join Date: Sep 2004
Rookie Year: 1234
Location: n/a
Posts: 359
devicenull is just really nicedevicenull is just really nicedevicenull is just really nicedevicenull is just really nicedevicenull is just really nice
Interrupt not occuring.

I've spent a couple days looking at this.. and I can't figure out why the one interrupt will not fire. We have 2 of the hall effect sensors being used as wheel encoders. The hardware on both is working fine, thats not the problem. (I swapped the cables around, and got values). The problem I'm having is one of the interrupts will not fire at all.

Code:
void InterruptHandlerLow()
{
	unsigned char int_byte;
	if (INTCON3.bitsINT2IF && INTCON3bits.INT2IE) {
		INTCON3bits.INT2IF = 0;
		right_enc++;
	}
	if (INTCON3bits.INT3IF && INTCON3bits.INT3IE) {
		INTCON3bits.INT3IF = 0;
		left_enc++;
	}
}


void Initialze_Encoders(void) {
	TRISBbits.TRISB2 = 1;
	INTCON3bits.IN2IP = 0;
	INTCON2bits.INTEDG2 = 1;
	INTCON3bits.INT2IE = 1;
	
	TRISBbits.TRISB3 = 1;
	INTCON2bits.INT3IP = 0;
	INTCON2bits.INTEDG3 = 1;
	INTCON3bits.INT3IE = 1;
}
The interrupt on digital IO 1 will not fire. They are both set as inputs.. the second one works, but not the first. I'm certain its not the RC or the encoder, as I've tried on the 2004 and 2005 RC, and swapping which input they are in makes whichever is on port 2 work.

I'm out of ideas.. can't see why one works and not the other.

(Yes, I know increasing the variable there is probably not a good idea.. but once I get it working, I'm going back to the other encoder functions)