Forum: Mikrocontroller und Digitale Elektronik PWM an OCR2 funktioniert nicht.


von dubdidub (Gast)


Lesenswert?

Guten Tag;

Ich würde gerne alle drei Kanäle des ATMega8 nutzen, aber ich bekommen 
nur an OCRA1 und OCRB1 ein Signal, OCR2 bleibt tot... wodran liegt's? So 
sieht mein Code bislang aus
1
int main(void)
2
{
3
4
  
5
  // OC1A, OC1B, OC2 auf Ausgang
6
  DDRB = (1 << PB1 ) | (1 << PB2 ) | (1 << PB3 );
7
  
8
 
9
  TCCR1A = (1<<COM1A1) | (1<<WGM10);     // PWM Phase correct, 8Bit
10
                                   // Clear OCR1A/B on Compare Match when up-counting.
11
                          // Set OCR1A/B on Compare Match when downcounting.
12
  TCCR1B = (1<<CS10);            // keinen Vorteiler
13
  
14
  TCCR2 = (1<<WGM20) | (1<<COM21) | (1<<CS20);  // PWM Phase correct, 8Bit
15
                                   // Clear OC2 on Compare Match when up-counting.
16
                          // Set OC2 on Compare Match when downcounting.
17
                            // keinen Vorteiler
18
19
20
    
21
    OCR1A = 0x0080;  //  der Zähler zählt bis zu diesen Werten
22
    OCR1B = 0x0040;
23
    OCR2 = 0x20;
24
    
25
   while (1){
26
   ;
27
   };
28
 }


Bin für jeden Tipp dankbar...

von spess53 (Gast)


Lesenswert?

Hi

Programmer noch dran?

MfG Spess

von dubdidub (Gast)


Lesenswert?

Nein...

von MWS (Gast)


Lesenswert?

Denke Du vertust Dich um einen Pin, denn es gibt in der Tat einen Kanal 
der laut Deinem Code nicht arbeiten dürfte:

Das ist der OC1B, da Du COM1B1:0 vergisst zu setzen.

von dubdidub (Gast)


Lesenswert?

Danke MWS, war so, habe mich tatsächlich um einen Pin "vergriffen"... 
geht jetzt alles...

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.