AVR ATmega32 - C - Gets stuck in function call
Have you considered the warnings in your compiler (if any) ?

Your problem seems to me like there is an issue with function decleration, perhaps. Can you try to declare the function first on top of main and put function body at the bottom of main.c? Does the issue persists?

Also, have you tried debugger of atmel studio? If you haven't yet, please try and execute step by step. Observe the registers and see how they change.

One more question, can you do a simple error checking/tracking? For example, 

#define F_CPU 8000000

#include &lt;avr/io.h&gt;
#include &lt;util/delay.h&gt;

uint8_t PROG_STATE = 0;
void Send_to_PC(uint8_t DATA);

void pulse_init(void)
{   
   PROG_STATE = 3;
   Send_to_PC(PROG_STATE);
   DDRD |= 0x30;    // PD4..5 OUT
   TCCR1A = 0xE2;   //0b11100010 (Set OC1A + Clear OC1B on compare match, )
   TCCR1B = 0x19;   //0b00011001 (WGM13:10 = 0b1110 =&gt; Fast PWM Mode, TOP = ICR1, CS12:0 = 001 =&gt; Use IO clock, no prescaling)
   OCR1A = 18;
   OCR1B = 18;      //  18 / 8000000 =  2.25 us (Output compare match value (OC1A-&gt;HIGH, OC1B-&gt;LOW)
   ICR1 = 757;      // 757 / 8000000 = 94.625us (TOP value for timer1)
}


int main(void)
{   
   PROG_STATE = 1;
   Send_to_PC(PROG_STATE);
   // LEDs - initial setting
   DDRC |= 0x03;                // LEDs on pins PC0 and PC1 
   PORTC &amp;= ~(1&lt;&lt;0);            // LED0 OFF
   PORTC |= (1&lt;&lt;1);         // LED1 ON
   PROG_STATE = 2;
   Send_to_PC(PROG_STATE);
   pulse_init();
   PROG_STATE = 4;
   Send_to_PC(PROG_STATE);
   // Loop blinks LED0..1 alternately
   while(1)
   {
       PROG_STATE = 5;
       Send_to_PC(PROG_STATE);
       PORTC = PORTC ^ 0x03;
       _delay_ms(250);
       PROG_STATE = 6;
       Send_to_PC(PROG_STATE);
   }
}

void Send_to_PC(uint8 DATA){
//RS232 OR I2C etc
}


You get the idea. If you do something like this, then you can observe the state of your program live (apart from the debugger).

Edit:

Added Atmega32/32L internal block diagram