Forum: Mikrocontroller und Digitale Elektronik AT90USB1287 Timer2 FastPWM


von Christian B. (chbalnuweit)


Lesenswert?

Hallo,

ich habe den besagten AT90USB1287 und möchte mit dem Timer2 ein 
PWM-Signal erzeugen (FastPWM mit Phase Correct)
Ich verstehe nicht so recht wie ich nun einen variablen Dutycycle 
erzeugen kann. Ich kann über OCR2A nur die Grundfrequenz ändern, wobei 
der Dutycycle immer 50% beträgt.
1
int main(void)
2
{
3
 // OC2A auf Ausgang setzen
4
  DDRB |= (1<<PB4);  
5
6
 // Mit den COM2An bin ich mir nicht sicher was ich brauche
7
  TCCR2A = (1<<COM2A0) | (0<<COM2A1) | (1<<WGM20) | (0<<WGM21);
8
 
9
//Prescaler 1024, WGM2n für Mode 5 konfiguriert
10
  TCCR2B = (1<<WGM22) | (1<<CS22) | (1<<CS21) | (1<<CS20);
11
12
  OCR2A = 0x80; //128
13
14
    while(1)
15
    {
16
    }
17
18
}

Wie erhalte ich jetzt einen variablen Dutycycle, bei gleichbleibender 
Grundfrequenz?
Die Beispiele im AVR-Tutorial helfen mir nicht wirklich weil es die 
Parameter wie z.B. ICRn gar nicht gibt.

Ist das mit diesem Timer überhaupt möglich?

Viele Grüße und vielen Dank im voraus

Christian
von Julian B. (julinho)


Lesenswert?

Guck mal tabelle 15-3!!
Du hast COM2A1 auf null gesetzt, dadurch toggelt der Timer und du hast 
immer 50% DUTY:
von spess53 (Gast)


Lesenswert?

Hi

>Ist das mit diesem Timer überhaupt möglich?

Ja. Nur wird das, was du willst mit OC2B gemacht. Mit OCR2A legst du die 
Frquenz und auch die mögliche Auflösung deiner PWM fest. Mit OCR2B wird 
der Tastgrad an OC2B bestimmt. Wenn du OC2A benutzen willst dann nimm 
eine PWM mit festen Top.

Wozu brauchst du 'Phase Correct'? Mit 'Fast PWM' hast du die doppelte 
Frequenz.

MfG Spess
von Christian B. (chbalnuweit)


Lesenswert?

Danke für die Antworten.

Phase Correct brauche ich eigentlich nicht. Das war nur der einzige 
Modus bei dem überhaupt was aufm Oszilloskop ankam.

OC2B zu verwenden ist kein Problem.

Wo finde ich diese Informationen die du mir jetzt gegeben hast im 
Datenblatt? Ich dachte ich kann entweder OC2A oder OC2B nutzen. Das ich 
beide kombinieren muss lese ich da nirgends.

Ich werds mal ausprobieren und mich wieder melden!

Vielen Dank!
von spess53 (Gast)


Lesenswert?

Hi

>Wo finde ich diese Informationen die du mir jetzt gegeben hast im
>Datenblatt?

Wo sonst? Für jeden Timer gibt es ein Kapitel 'Modes of Operation'. Da 
ist alles erläutert.

>Ich dachte ich kann entweder OC2A oder OC2B nutzen. Das ich
>beide kombinieren muss lese ich da nirgends.

Wenn du einen PWM-Mode wählst, bei dem OCR2A den Zählbereich des Timers 
bestimmt, dan bleibt für den Tastgrad eben nur noch OCR2B übrig.

MfG Spess
von Christian B. (chbalnuweit)


Lesenswert?

Das Kapitel Modes of Operations habe ich mehrmals durchgelesen, aber die 
Infos sind dabei echt nicht deutlich geworden...
Jetzt funktioniert es wie es soll! Viele Dank!
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.