Interrupts getting ignored

Why are you doing this multiplication in your ISR

if((long)(micros() - last_micros) >= debouncing_time * 1000)

just change debouncing_time from 400 to 400000 or do the calculation once in setup()

...R