hallo muat, here we go:

das programm ist in assembler geschrieben, für den atmega8. ich hatte gerade keinen anderen controller da. ich denke, man muss nicht viel ändern für den atmega32.

es macht ein 800Hz PWM an OC1A bei 16MHz-Takt.

Code:
   .NOLIST                
   .INCLUDE <m8def.inc> 
   .LIST                    

   .def temp = r20 

   .CSEG                    
   .org 0 

   ; Interupt Vektoren 
   rjmp    init             ; Reset Handler 
   reti                   ; IRQ0 Handler 
   reti                   ; IRQ1 Handler 
   reti                   ; Timer2 Compare Handler 
   reti                   ; Timer2 Overflow Handler 
   reti                   ; Timer1 Capture Handler 
   reti                   ; Timer1 CompareA Handler 
   reti                   ; Timer1 CompareB Handler 
   rjmp overflow          ; Timer1 Overflow Handler 
   reti                   ; Timer0 Overflow Handler 
   reti                   ; SPI Transfer Complete Handler 
   reti                   ; USART RX Complete Handler 
   reti                   ; UDR Empty Handler 
   reti                   ; USART TX Complete Handler 
   reti                   ; ADC Conversion Complete Handler 
   reti                   ; EEPROM Ready Handler 
   reti                   ; Analog Comparator Handler 
   reti                   ; Two-wire Serial Interface Handler 
   reti                   ; Store Program Memory Ready Handler

init: 
;Stackpointer 
   ldi temp, LOW(RAMEND) 
   out SPL, temp 
   ldi temp, HIGH(RAMEND) 
   out SPH, temp 
;Aus/Eingänge 

   ldi temp, 2
   out DDRB, temp                  ; Ausgang


   ldi    temp,   (1<<COM1A0)|(1<<COM1A1)|(1<<COM1B1)|(1<<WGM10) ; set PWM mode (phase correct)
   out	  TCCR1A, temp

   ldi    temp,   (1<<CS10)|(1<<CS11) 
   out    TCCR1B, temp 

   ldi    temp,  (1<<TOIE1)
   out    TIMSK, temp 

   sei                           ; Generelle Interruptfreigabe 

   ldi   temp, 50 ; <--- hier PWM duty cycle. Achtung! 255 bedeutet 0% duty! kleinerer wert -> grösserer duty-cycle
   out   OCR1AL, temp


Main: ;----------------------------- Einsprungspunkt Main
nop
rjmp Main

overflow:
   ldi   temp, 200
   out   TCNT1L, temp
reti
man braucht den interrupt, um die 800Hz frequenz zu bekommen. vielleicht hilft es dir weiter.

dein deutsch ist gar nicht so schlecht, dafür dass du in der türkei wohnst.

gruesse von der katz

edit: ach so, du wolltest es in c. ist aber nicht schwer zu portieren.