datenblatt ist wichtig, ich muss aber gestehen dass ich trotz wiederholtem durchlesen immer noch mühe habe alles so ganz zu verstehen, und wenn ich es paar monate später wieder benötige hab ichs meistens vergessen.

wie SIGINT sagt, gibt es 3 pins, an denen ein hardware-pwm erzeugt werden kann (pins pb1..3). vielleicht hilft folgendes:

Code:
; portb als ausgang und auf 0 setzen
ser   temp
out   DDRB,temp	
clr    temp
out   PORTB,temp

; wgm10 setzen ergibt Phase Correct PWM, 8-bit (mode 1)
; COM1A1 und COM1B1 setzen, dadurch wird OC1A und OC1B beim hochzählen bei einem bestimmten wert LOW, beim runterzählen ab diesem wert HIGH
   ldi    temp,   (1<<COM1A1)|(1<<COM1B1)|(1<<WGM10) 
   out	  TCCR1A, temp

; kein prescaling, pwm frequenz ist somit (Taktfrequenz/256)/2
   ldi    temp,   (1<<CS10) 
   out    TCCR1B, temp

; wgm20 setzen ergibt hier ebenfalls Phase Correct PWM
; COM21 setzen ergibt Clear OC2 on Compare Match
; CS20 gesetzt -> ebenfalls kein prescaling
   ldi    temp,   (1<<WGM20)|(1<<COM21)|(1<<CS20)
   out TCCR2, temp 

; nun OC1A einen pwm wert verpassen (25%):
ldi   temp, 63
out OCR1AL,temp

; nun OC1B einen pwm wert verpassen (50%):
ldi   temp, 127
out OCR1BL,temp

; nun OC2 einen pwm wert verpassen (75%):
ldi   temp, 191
out OCR2L,temp

Main:
nop
rjmp Main
alle angaben ohne versprechen, dass es so klappt. sollte aber.
die pwms laufen dann alle 3 mit gleicher frequenz (*) und unterschiedlichem duty cycle. bei 1MHz taktfrequenz ist PWM-frequenz etwa 2kHz, an OC2 könnten es auch (*) ca 4 sein, da bin ich mir grad nicht ganz sicher.

wenn etwas nicht stimmt, korrigiert mich bitte.

ok, mir fällt auf, dass das eigentlich niemand gefragt hat..
vielleicht ist es trotzdem jemandem nützlich

gruesse von der katz