nochmal atmega8 3x pwm

Gast #882034
Lesenswert?
• ▲
▼
hi.
also ich würde gerne wissen, wie ich am schnellsten
alle 3 pwm ports ansprechen kann.

alles was ich möchte ist 3 pwm kanäle die ich einzeln ansprechen kann.

im endeffekt möchte ich nur eine rgb led ansprechen.

also ich muss ja einmal die ports auf ausgang stellen.

das müsste doch so gehen oder?

  DDRB = (1<<PB1) | (1<<PB2) | (1<<PB3);
  PORTB = ~(1<<PB1) & ~(1<<PB2) & ~(1<<PB3);

dann muss ich pwm einschalten.
wieviel bit brauche ich? ich bruach ja nur von 0-255 für rgb farben.
das müsste dann 8 bit sein oder?
dann müsste ich den pwm ja so einstellen können.
TCCR1A =  (1<<WGM10) | (1<<COM1A1) | (1<<COM1A0) |(1<<COM1B1) | 
(1<<COM1B0);
TCCR1B = (1<<CS11) | (1<<WGM12); // was macht das hier??? brauch ich 
das?

8bit (/510):      7,8KHz, 980Hz, 122,5Hz, 30,6Hz, 7,7Hz
9bit (/1022):      3,9kHz, 488Hz, 61Hz, 15Hz, 3,8Hz
10bit (/2046):       1,95Khz, 244Hz, 30,5Hz, 7,6Hz, 1,9Hz*/

dann kann ich schonmal die ersten 2 ports so ansprechen:

OCR1A = 100;
OCR1B = 200;

aber wie spreche ich den 3. port an?
was wäre wirklich das MINIMUM???

also wirklich nur programmstart, auf pwm einstellen und jedem der 3 
kanäle einen wert zuweisen?

danke schonmal

mfg

lucifer
#882273
Lesenswert?
• ▲
▼
Steht alles im Datenblatt....

1) Nachschauen, welche Werte in den Timer-Registern du für deine 
Funktionen brauchst.
2) Nachschauen, was die Reset-Default-Werte sind.
3) Vergleichen
4) Nur die Abweichenden Werte setzen
=> Minimum...
5) Wenn noch Fragen wie
1
TCCR1B = (1<<CS11) | (1<<WGM12); // was macht das hier??? brauch ich das
 offen sind, die Antworten stehen zufällig auf den selben 
Datenblatt-Seiten.

Sorry, aber das Lesen des Datenblattes können wir dir nicht abnehmen.
Gast #882276
Lesenswert?
• ▲
▼
ok danke schonmal.
habs jex.

//Ports auf an
DDRB = (1<<PB1) | (1<<PB2) | (1<<PB3);
PORTB = ~(1<<PB1) & ~(1<<PB2) & ~(1<<PB3);
//Timer 1 einschalten
TCCR1A =  (1<<WGM10) | (1<<COM1A1) | (1<<COM1A0) |(1<<COM1B1) | 
(1<<COM1B0); //8bit PWM, phase correct
TCCR1B = (1<<CS11) | (1<<WGM12);
//Timer 2 einschalten
TCCR2 = (1 << WGM20) | (1 << WGM21) | (1 << COM20) | (1 << COM21) | (1 
<< CS20);


aber ich werd es mir jex nochmal alles im datenblatt anschauen, was das 
genau ist.
und da ist ja noch ein unterschied zwischen timer 1 und timer 2 und das 
ist der letzte punkt.
naja werd mich mal durchlesen

danke

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren