Forum: Mikrocontroller und Digitale Elektronik 8051 Hardware PWM


von Johan (Gast)


Lesenswert?

Hi,

ich versuche seit ein paar Tagen einen Motor mit verschiedenen 
Spannungen anzusteuern. Ich verwende einen MC von Atmel (AT89C5130). Ich 
hab mir das Datasheet genau angeschaut und glaube verstanden zu haben 
wie pwm funktioniert, doch leider will es nicht. Ich habe den PCA 
aktivert, dann eins der Module und das Modul auf PWM gestellt und dann 
mit verschiedenen werten in den CCAP0 Registern gespielt, aber es will 
nicht.
Habe ich irgendwas übersehen muss ich noch etwas aktivieren? Oder hab 
ichs einfach nur versaut und nicht verstanden wie es wirklich 
Funktioniert.
1
  //Init
2
  //Interrupts
3
  EA=1;
4
  //PCA
5
  EC=1;
6
  CMOD=0x00;
7
  CR=1;
8
  CCF0=1;
9
  CH=255;
10
  //PCA MODULE 0
11
  CCAPM0=0x42;   
12
  CCAP0H=0xFA;
13
  CCAP0L=0xFA;

mfg Johan

von Matthias (Gast)


Lesenswert?

Initialisierung:
1
  // PCA counter in Mode 1 - Takt XTAL / 12
2
  CMOD = 0x01;  // CPS0= 0, CPS1=0, ECF = 1
3
  // Reset PCA Zählregister
4
  CL = 0x00;
5
  CH = 0x00;
6
  // PCA counter 0 in Autoreloading 8-bit PWM Mode setzen
7
  // f=3600Hz bei 11.059200MHz
8
  // ECOM0 = 1, PWM0 = 1. (P1.3)
9
  CCAPM0 = 0x42;
10
  // PCA counter compare register (Dutty) löschen
11
  CCAP0L = 0x00;
12
  CCAP0H = 0x00;
13
  CR = 1;  // PCA Timer starten

Dann brauchst Du nur noch durch CCAP0H den Dutty zu setzen.
z.B CCAP0H = 0x80; ergibt 50% PWM

Den PCA-Interrupt brauchst Du für PWM Erzeugung nicht, EC=0;

von Johan (Gast)


Lesenswert?

Dank dir

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.