Arduino Pin-Change Interrupts for Sonar

I had a very hard time figuring out how to use Pin-Change Interrupts. I found AVR documentation hard to follow, and Arduino libraries overly complicated and obfuscating. Here is an example of how to use pin-change interrupts for Arduino (mega). It may help.

Pin-Change Interrupt forum post

Bottom line:

PCICR |= 1; // enable PCI0 pin group interrupt
PCMSK0 |= 0b1100; // enable PC interrupts on arduino pins 50,51, which are in group PCI0
/// Pin-Change interrupt, for group PCI0 (arduino mega pins 13..10, and 50..53)
ISR(PCINT0_vect) {
// do what you need to do when one of the pins in this group changes.
// usually... check to see which pin changed here... then do something.

About Mr.What

Electrical Engineer, working in Software Engineering for 20+ years. Wants to do more low level hardware and embedded work. Also interested in metal work.

Leave a comment