Forum: Compiler & IDEs 2 PWM Kanäle mit MEGA8


von Dominik (Gast)


Lesenswert?

Hallo,

ich möchte gerne 2 PWM Kanäle mit dem Mega 8 nutzen.

Bisher nutze ich einen, und mache es so:
1
void init_pwm()
2
{
3
  // OCR2 als ausgang setzen
4
  DDRB |= _BV(PB3);
5
  
6
  // set phase correct PWM mode
7
  TCCR2 = _BV(WGM20);
8
9
  
10
  //Vorteiler 
11
  
12
  TCCR2 |= _BV(CS21);
13
14
  
15
  //Compare Output Mode, Phase Correct PWM Mode
16
  TCCR2 |= _BV(COM21) ; //|_BV(COM20);
17
}

in das OCR2 Register schreibe ich dann mein compare wert.

Wie kann ich jetzt einen 2. Ausgang nutzen mit einem anderen compare 
wert?
Den 16Bit timer verwende ich schon als "Uhr"!

Ich hab das datenblatt studiert, werde aber nicht wirklich schlau 
daraus!

Ich bitte um Hilfe!
Vielen Dank im Voraus.

Gruß Dominik

von Johannes M. (johnny-m)


Lesenswert?

Der ATMega8 hat zwei Compare-Einheiten am 16-Bit-Timer 1 (OC1A und OC1B) 
und eine am 8-Bit-Timer 2 (OC2), den du ja offensichtlich benutzt. 
Wenn Du zusätzlich zu OC2 ein weiteres Hardware-PWM-Signal erzeugen 
willst, dann musst Du dafür Timer 1 benutzen.

von Dominik (Gast)


Lesenswert?

Hallo Johannes,

danke für deine Antwort.

Ich denke dann werde ich es per Software PWM lösen. Falls jemand auf die 
schnelle gute links dazu parat hat würde ich mich freuenm. Andernfalls 
begebe ich mich jetzt mal auf die Suche nach ein paar SW-PWM lösungen

Danke!

Gruß Dominik

von Falk B. (falk)


Lesenswert?

Warum in der Ferne schweifen, wenn das Gute liegt so nah.

Soft-PWM

von Dominik (Gast)


Lesenswert?

:)

Vielen dank, das hat mir sehr weitergeholfen!

Gruß Dominik

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.