I am using atemga16, here is my problem, ok it doestn matter which port, it's an output port, so A or C what difference does it make, My problem is in normal mode i am using timer 0 which is 8 bit register so it over flows after FF and gives interrupt after, in Compare mode i put FF in the compare register "OCR0" so in the same way it would give interrupt also after FF, but that doesnt happen, IN CTC mode it is working a lot much faster, WHY ! and i know that it doesnt make sense to use CTC in that way, but i am new to microcontrollers and trying everything.

Thx a lot, thats Right, I should write to PORT and read from PIN, i tried it and i even made the ISR function the same [ISR(TIMER0_OVF_vect) for over flow operation] and [ISR(TIMER0_COMP_vect) ] but the body is exACTLY THE SAME, still, working differently, is there something wrong with timer initialization in compare mode ?? i want to add that in normal mode its working right, i have 1 Mhz clock and i prescaled /1024 so i have interrupt almost every 250 ms, so multiplying by 4 i have almost 1 sec counter on the port, in ctc mode its a lot faster as if i am not even prescaling.

Warnings are not issued for invalid C statements, errors are. Warnings are for pointing out possible unwanted behavior. The implicit conversion of a boolean result to a value used in a bitwise operation could very well qualify for a warning, though the warning I would expect would be the use of '|' instead of '||' rather than the use of '<' instead of '<<'. I'm wondering that no warning was emitted might be because everything is a compile time constant. We could try making the values variables and see what happens.