Forum: Mikrocontroller und Digitale Elektronik nochmal atmega8 3x pwm


von lucifer (Gast)


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

von ... (Gast)


Lesenswert?

moep

von lucifer (Gast)


Lesenswert?

weiß das denn niemand?
das kann doch nicht so schwer sein den 3. pwm ausgang anzusprechen :/

von crazy horse (Gast)


Lesenswert?

tja, schau dir den Timer2 an, konfiguriere ihn, starte ihn und schreibe 
den Wert nach OCR2.

von lucifer (Gast)


Lesenswert?

ok also ich muss schonmal timer1 und timer2 aktivieren.
was ist denn das MINIMUM um einen timer zu aktivieren.
und brauch ich 8bit? ist das richtig?

von crazy horse (Gast)


Lesenswert?

mein Gott, wo ist denn dein Problem mit dem Minimum?

von lucifer (Gast)


Lesenswert?

ich will erst einmal wissen was überhaupt alles rein MUSS für das was 
ich vorhabe...und das habe ich ja schon geschrieben.

wo ist dein problem dass ich nur das nötigste drinhaben will?

von Εrnst B. (ernst)


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.

von lucifer (Gast)


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

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.