Forum: Compiler & IDEs PWM mit Timer2


von Birgit (Gast)


Lesenswert?

Hallo ihr!

Möchte mit dem Timer1 (µP --> ATmega8) eine PWM generieren, die mir 
einen Motor ansteuert. Leider ist Timer1 anderer
Meinung und zeigt sich nicht kooperativ mir gegenüber ;-) .

Mit dem Setzen der beiden COM1B0/1 Bits müsste doch sichergestellt sein, 
dass OC2B beim Comparematch von OCR1B (TCNT = 0x45)
auf high geht. Da ich vorher OCR1A als TOP definiert habe (TCCR1B, 
TCCR1A), müsste dann beim Erreichen von TCNT = 0x97 doch
ein low am Ausgang erscheinen, oder?
Kann mir jemand sagen, wo ich da einen Denkfehler habe?

Ursprünglich wollte ich für die PWM Timer2 verwenden, doch dann hat sich 
herausgestellt, dass sich der TOP-Wert vom Timer2
nicht ändern lässt (oder doch??). Den TOP-Wert möchte ich deswegen 
ändern, weil meine PWM eine Frequenz von ca. 20kHz haben
soll und mein µP eine interne Oszillator-f von 1MHz hat. 1MHz/255=3.9kHz 
--> Lösung: Auflösung auf 5Bit herunterdrehen.
Schaff ich das auch irgendwie mit dem Timer2?

Danke für eure Hilfe,
LG Birgit
1
 
2
#include <inttypes.h>
3
#include <avr/io.h>
4
#include <avr/interrupt.h>
5
#include <avr/signal.h>
6
#include <util/delay.h>
7
8
9
10
void init_Timer1()
11
{
12
  TCCR1A|= (1<<COM1B0) | (1<<COM1B1) | (1<<WGM10) | (1<<WGM11); //COM1B0:1 ... set OC1B on Compare Match, clear at TOP
13
    TCCR1B |= (1<<WGM12) | (1<<WGM13) | (1<<CS10); //Prescaler:1, Fast PWM (top = OC1A)
14
  TCNT2=0;
15
  OCR1A=0x97;
16
  OCR1B=0x45; 
17
  
18
  sei();
19
}
20
21
22
23
int main(void)
24
{    
25
  PORTB &= ~(1<<PB2);
26
  DDRB |= (1<<PB2);
27
  
28
  init_Timer1();
29
30
    for(;;);
31
 
32
}

von Birgit (Gast)


Lesenswert?

 b

von Karl H. (kbuchegg)


Lesenswert?

Ich weiss nicht was du hast.
Wenn ich dein Pgm in meinen Mega16 brenne, PB2 auf PD4 anpasse
weil OCR1B beim Mega 16 am PortD Pin 4 liegt, dann funktioniert
die PWM wie sie soll. (Getestet mit einer LED)
Ich sehe auch keinen Grund warum das auf einem Mega8 nicht
gehen sollte. Es sein denn natürlich, der Mega8 läuft
überhaupt nicht. Aber davon gehe ich mal nicht aus.

von Birgit (Gast)


Lesenswert?

mein µp läuft einwandfrei.
hab noch keinen download gemacht, sondern nur im avr studio simuliert. 
möglicherweise funzt da die sim nicht ganz.
danke dir trotzdem!!

von Karl H. (kbuchegg)


Lesenswert?

Birgit wrote:
> mein µp läuft einwandfrei.
> hab noch keinen download gemacht, sondern nur im avr studio simuliert.

Sag das doch gleich.
AVR Studio hat mit den Timer Modi so seine liebe Not.

http://www.mikrocontroller.net/articles/AVR-Studio_Bugs


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.