Arduino Uno CTC mode interrupt is not tiggering
There are a few issues with your code:

First, you should completely overwrite the timer control registers
rather than changing single bits. For example, when you write

TCCR0A = TCCR0A | (1&lt;&lt;WGM01); // Clear counter on compare match mode


You end up with a timer mode that results from the combination of the
bits that were already set there and the ones you are setting. Judging
from the comment, you assume that this will be CTC mode, but this is not
granted, because the Arduino initialization routine has already set some
bits in this register. Since you are taking the timer for your own
usage, just overwrite all the control registers:

TCCR0A = (1&lt;&lt;WGM01); // Clear counter on compare match mode


and same for TCCR0B and TIMSK0.

The second problem is that you misread the “Clock Select Bit
Description” table from the datasheet. Your timer is being clocked from
an external clock source on T0 pin. Presumably you have nothing
connected there, so the timer does not increment. You probably meant

TCCR0B = (1&lt;&lt;CS00) | (1&lt;&lt;CS02);  // Prescaling by 1024


A smaller issue is your delay loop. The program would be easier to
understand if you instead use a proper delay function. The Arduino
delay() will not work, as you have reconfigured Timer 0, but you can
use _delay_ms() from the avr-libc if you #include &lt;util/delay.h&gt;.