PWM-Frequenzwert vom PIC18 berechnen lassen

OP #3826658
Lesenswert?
• ▲
▼
Hallo,

Ich habe folgendes Problem:
Laut dem Datenblatt des PIC18F4520 lässt sich die PWM Periode so 
berechnen:
PWMPeriod = [(PR2)+1]•4•TOSC• (TMR2 Prescale Value)

Ich habe dann die Formel auf PRx= umgeformt, jedoch bekomme ich nun bei 
egal welchem Wert ich dieser Funktion übergebe immer eine PWM Frequenz 
von 490Hz.
Wenn ich den Wert allerdings selbst errechne und fix der Funktion 
OpenPWM1(); übergebe, bekomme ich das gewünschte Signal.
Meine Vermutung ist, dass die Rechnung aufgrund der Wertebereiche der 
verschiedenen Variablentypen nicht richtig funktioniert. Kann mir jemand 
diese Vermutung bestätigen und mir eine Lösung dazu vorschlagen? Danke!

Hier der Code:
1
#include <pic18f4520.h>
2
#include <plib.h>
3
#include <xc.h>
4
#include <pwm.h>
5

6
#pragma config OSC = INTIO67
7
#pragma config WDT = OFF
8
#pragma config LVP = OFF
9

10
#define DUTY_CYCLE  127
11
#define FOSC        8000000
12

13
unsigned char GetPRxValue(int frequency);
14
void Init();
15

16

17
void main(void)
18
{
19

20
    Init();
21

22
    while(1)
23
    {
24
        
25
    }
26
}
27

28
void Init()
29
{
30
    OSCCON=0x70;
31
    ADCON1=0x0F;
32

33
    TRISCbits.RC2 = 0;
34

35
    OpenTimer2(T0_PS_1_16);
36
    
37
    SetDCPWM1(DUTY_CYCLE);
38
    OpenPWM1(GetPRxValue(500));
39
}
40

41
unsigned char GetPRxValue(int frequency)
42
{
43
    unsigned char prescaler = 16;
44

45
    return (unsigned char)((1/frequency)/((1/FOSC)*prescaler*4))-1;
46
}

Antwort schreiben

Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt. Bitte hier nur auf die ursprüngliche Frage antworten, für neue Fragen einen neuen Beitrag erstellen.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.