Hi, I was thinking of having and interrupt for the rising and falling edges from the geartooth sensors on each of two wheels as well as have a timer interrupt for each of three SONAR sensors. How do you program different interrupt handlers so that each one responds to a different interrupt from each device?
You only have one interrupt handler for your entire program. To handle multiple interrupts, you put a large amount of if-else statements in your interrupt handler to check for which particular interrupt you’re handling at the moment, then you do whatever you need to inside that particular if-else statement.
Kevin would definitely be the one to ask, but i think that might work, if you also disabled the interrupt, then made the INTEDG2 change, and then reenabled it.
Alternatively, if you want rising and falling edges, just use the PORTB ones (Int3-6).
I have been trying to get Interrupts 2 and 3 working that would be on pins 1 and 2 of the Digital Inputs. I have the code and I seem to get in an infinite loop on the left gear tooth sensor. . . The interrupt keeps going and makes both the right and left gear boxes go full 254 forward.
Right GTS doesn’t work at all. (yes we have tested the GTS after we fixed the resistors problem and it works fine)
Can someone see where I messed up??? Copied the code from Kevin Watson’s Encoder Code.
I can’t really make out what’s going on, but I did see that you were calling printf() in your interrupt service routine, which can cause problems. A much better quick-and-dirty way to signal the outside world is to just send a single character using Write_Serial_Port_One(), which executes much faster. It’s as simple as this:
Team Update #6 explains it. There are a bunch of discussion here on ChiefDelphi about it also. . . Pretty much they switched R3 and R4 on one of the Gear Tooth Sensors