Zitat Zitat von orko512
verstehe ich das richtig:
wenn an den pins OC0 steht dann sind die für Timer0?
entsprechend für die anderen TimerX.
Genau.

Zitat Zitat von orko512
danach hätte ich einen
timer0 mit einen ausgang (oc0)
timer1 mit drei ausgängen (oc1a, oc1b, oc1c)
timer2 mit einem ausgang (oc2)
timer3 mit drei ausgängen (oc3a, oc3b, oc3c)

also insgesamt 4 timer.
Genau, deshalb steht im Datenblatt auch 8 PWM-Channels.

Zitat Zitat von orko512
wenn ich das richtig verstehe ist das nun abhängig vom modus.
modus 5 = 8bit = 256
modus 6 = 9bit = 512
modus 7 = 10bit = 1024

in der tabelle61 auf seite 135 steht nun welche bits ich in den timer laden muss damit ich den entsprechenden modus setze.
richtig??????

für modus 7:
WGMn3 = 0
WGMn2(CTCn) = 1
WGMn1(PWMn1) = 1
WGMn0(PWMn0) = 1

das bedeutet = Fast PWM, 10-bit

wie sieht das jetzt softwaretechnisch aus??
ich möcht timer1 benutzen.
er soll in modus 7 betrieben werden.
Zitat Zitat von orko512
nun gleich noch ne frage:
wenn ich mir so einige beispiele anschaue finde ich dort zum setzen des modus folgendes:
TCCR1A|= (1<<WGM10);
TCCR1A|= (1<<WGM11);
TCCR1B|= (1<<WGM12);
TCCR1B|= (1<<WGM13);
Genau so gehts. Man kann es allerdings kompakter schreiben:
TCCR1A = (1<<WGM11) | (1<<WGM10);
TCCR1B = (1<<WGM12);

Zitat Zitat von orko512
warum werden wgm10 und wgm 11 in TCCR1A gesetzt und
wgm12 und wgm13 in TCCR1B ?????
im datenblatt kann ich dazu nichts finden.
Warum? Keine Ahnung. Wo du was setzten muss, findest du aber im Datenblatt (Seite 133 und 136).
Es gibt auch noch eine Übersicht auf Seite 365ff.

Zitat Zitat von orko512
>>Wenn der Counter1 auf einen Zahl = einem der 3 Register kommt, wird >>ein Ausgang gesetzt oder gelöscht,
Ist das dann immer der ausgang der zu dem timer gehört???
in meinem fall (OC3A/AIN1) = PE3??
Genau. Das passiert natürlich nur, wenn die Register so eingestellt sind, dass die Pins gesetzt werden sollen.
Vielleicht möchte man ja auch nur einen Interrupt auslösen und den PWM garnicht nutzen.
Was mit den Pins passiert, kann man für OC1A über COM1A1 und COM1A0 einstellen (siehe seite 134).
Das werden wir auch noch machen müssen.

Zitat Zitat von orko512
ich schaue in das datenblatt und komme nicht weter.
ich finde Timer/Counter1 Control und
Timer/Counter3 Control
gibt es denn mehrere??
Timer1 und Timer3 werden quasi genau gleich angesteuert.
Das kleine n ist dann durch 1 oder 3 zu ersetzen.

Zitat Zitat von orko512
>>Bei welcher Frequenz betreibst du den AVR eigentlich?
mit 4 mhz;start-up time: 6 ck + 64ms
schon kommt die nächte frage:
wo ist der unterschied zwischen 6ck +0ms, 6ck +4ms und 6ck +64ms??
Ich weiß leider nicht, was mit 6ck + 64ms gemeint ist. ck steht für cycles, aber sonst...
4Mhz ist das Entscheidende.

OK, wenn ich nichts übersehen habe, sollte das hier zur Initialisierung des Timers reichen:

TCCR1A = (1<<WGM11) | (1<<WGM10) | (1<<COM1A1) | (1<<COM1B1) | (1<<COM1A0) | (1<<COM1B0);
TCCR1B = (1<<WGM12) | (1<<CS11);

OCR1AH = 0;
OCR1AL = 128;
OCR1BH = 0;
OCR1BL = 128;

WGM setzt den entsprechenden Modus (10-Bit Fast-PWM), COM regelt das Setzen/Löschen der Pins:
"Set OCnA/OCnB/OCnC on compare match, clear OCnA/OCnB/OCnC at BOTTOM, (inverting mode)"

CS regelt den Prescaler. Hier ist nur CS11 gesetzt. Aus der Tabelle auf Seite 137 entnehmen mir nun,
dass CS11 bedeutet, dass der Takt durch 8 geteilt wird.
==> 4 Mhz / 8 = 500 kHz
Der Timer wird allso alle 1/500k s erhöht.
Da der Timer auf 10 Bit (1024) gesetzt ist, ergibt sich eine Frequenz von 500k/1024 Hz (=488,28... Hz).

Mit welcher Frequenz du einen Motor am besten ansteuert weiß ich leider nicht.

OCR setzt den Wert an dem der Ausgang gesetzt wird. Der "inverting mode" eignet sich eignetlich nicht so gut für deinen Zweck,
war aber einfacher als Erklärung.

OK, soweit alles klar?

@Bene: Ich hoffe, dass das was ich oben geschrieben hat dir weiterhilft.