Hi!

Ich weiß, dass das hier sicher schon öfter Thema war, aber ich kriegs mit den Beiträgen trotzdem nicht hin.

Ich habe eine Evaluierungsplatine mit einem ATmega16 drauf. An dessen PortC sind 8 LEDs fest angeschlossen (jeweils eine LED pro Pin).
Ich möchte das alle LEDs, wenn ich sie anschalte, gleichzeitig gedimmt sind. Da ich ja mit einem Timer den ich im PWM-Betrieb nutze nur einen Pin steuern kann, muss ich das mit SoftPWM machen. Ist das richtig?

Unten ist mein Code, wie ich das versucht habe mit SoftPWM zu realisieren. Problem ist, dass die LEDs scheinbar überhaupt nicht gedimmt werden, egal welchen Wert ich für OCR0 einstelle. Bei der Code-Version unten leuchten die LEDs noch nicht einmal. Geht das so gar nicht wie ich das versuche?

Code:
#include <avr/io.h>
#include <avr/interrupt.h>

int main()
{
	//LED-Port als Ausgang
	DDRC = 255;
	//LEDs an
	PORTC = 0;
	//Timer0 auf CTC-Betrieb setzen
	TCCR0 |= (1 << WGM01) | (0 << WGM00);
	//Vorteiler auf 1024 setzen
	TCCR0 |= (1 << CS02) | (0 << CS01) | (1 << CS00);
	//Vergleichswert für CTC-Betrieb setzen
	OCR0 = 200;
	//Compare-Match-Interrupt und Overflow-Interrupt für Timer0 aktivieren
	TIMSK|= (1 << OCIE0) | (1 << TOIE0);
	//Globale Interrupts aktivieren
	sei();

	while(1)
	{

	}

	return 0;
}

//LEDs sind an von 255 bis OCR0:
//Funktion die aufgerufen wird, wenn TCCR0 = OCR0
ISR(TIMER0_COMP_vect)
{
	//LEDs aus
	PORTC = 255;
}


//Funktion die aufgerufen wird wenn Timer 0 wieder bei 0 anfängt
ISR(TIMER0_OVF_vect)
{
	//LEDs an
	PORTC = 0;
}
Vielen Dank!

Gruß
.patrick