8051 Hardware PWM

Gast #1063444
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
Gast #1063597
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;

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren