Rising edge triggers on the changing edge?

I am using interrupts 0/1 on digital pin 2/3 (rising edge) on the Arduino Pro. My input signal is a square wave. However the rising and falling edge are triggering for either interrupts.

The square wave was also ran through a debouncing circuit found from http://www.eetimes.com/discussion/break-point/4024956/Solving-Switch-Bounce-Problems

My code is attached below. Any thoughts would be appreciated.

#include <avr/interrupt.h>  // interrupts library

/*****************************************
// 	Declaration of Variables	//
******************************************/
unsigned long digitalSpeed = 2; 				//Speed bus connected to digital pin 5
unsigned long digitalDirection = 3; 			//Direction bus connected to analog pin 1
volatile byte directionflag=0;
volatile byte speedflag=0;

void setup()
{
Serial.begin(9600); 			// Setup serial with baud rate
attachInterrupt(0, arduino_anemometer, RISING);
attachInterrupt(1, arduino_direction, RISING);
}
 
void loop()
{

    if(speedflag==1)
    {
      Serial.print("Speed time = ");
      Serial.println(millis(), DEC);
      speedflag = 0;
      }
    if(directionflag==1)
    {
      Serial.print("Direction time = ");
      Serial.println(millis(), DEC);
 
       directionflag=0;

    }
}

void arduino_anemometer()
{
   if(speedflag==0)            // Interrupt triggers twice, only ran once
   {
      speedflag=1;
      Serial.print("EICRA ="); //EICRA verify interrupt is configured for rising edge. Noticed 1111 as expected.
      Serial.println(EICRA, BIN);
   }
} 

void arduino_direction()
{
   if(directionflag==0)         // Interrupt triggers twice, only ran once
   {
        directionflag=1;
        Serial.print("EICRA ="); //EICRA verify interrupt is configured for rising edge. Noticed 1111 as expected.
        Serial.println(EICRA, BIN);
   }
}

Unless your device is turning very slowly, and the interrupts are few and far between, you are doing WAY too much in the ISRs. Serial output in an ISR is almost never a good thing.

An interrupt handler should be as fast as possible.

Variables used in the ISR AND in other places in the code need to be declared volatile. None of yours are.

PaulS:
Unless your device is turning very slowly, and the interrupts are few and far between, you are doing WAY too much in the ISRs. Serial output in an ISR is almost never a good thing.

For this example I was just using the print to test and confirm what was coming out of the EICRA register. I was using a push button switch to test it. So I push the button to make the signal go high. It prints from my loop. I release the button to make the signal go low. It prints from my loop again.

PaulS:
Variables used in the ISR AND in other places in the code need to be declared volatile. None of yours are.

Are you referring to the other variables I am using in for my loop?

Are you referring to the other variables I am using in for my loop?

Any variable used in an ISR should be declared volatile, just in case you need to use it elsewhere.