myGully.com Boerse.SH - BOERSE.AM - BOERSE.IO - BOERSE.IM Boerse.BZ .TO Nachfolger
Zurück   myGully.com > Computer & Technik > Programmierung
Seite neu laden

[C167] PWM generieren

Willkommen

myGully

Links

Forum

 
Antwort
Themen-Optionen Ansicht
Ungelesen 03.01.12, 11:21   #1
Boggie
Newbie
 
Registriert seit: Nov 2009
Beiträge: 83
Bedankt: 548
Boggie ist noch neu hier! | 0 Respekt Punkte
Standard [C167] PWM generieren

Hoi,
ich bin gerade dabei für die Schule PWM-Signal zu generieren.
Soweit funktioniert das auch, allerdings kann ich während der Ausführung nicht die Pulsweite festlegen. Am Ausgang liegt anschließend immer ein H-Pegel an.
Nächste Frage, wieso erhalte ich eine Grundfrequenz von 100Hz, wenn PP0 3125 ist? (erster Link Beispiel Seite 32)

PHP-Code:
#include <reg167.h>
#include <stdio.h>

sbit S1 P5^0;
sbit S2 P5^1;

void InitPWM0()
{
    
DP7 0x01;        //AUSGANG (PWM0)
    
P7 0x0;

    
PP0 3125;        //100Hz?
    
PEN0 1;        //AUSGABE
    
PM0 0;                      //PWM MODE
    
PW0 0.5 PP0;                 //50 PROZENT AKTIV
    
PTR0 1;        //STARTEN
    
IEN 1;
}

void ControlPWM0(int _PERCENT)
{
    
PW0 = ((100-_PERCENT)/100) * PP0;
}

void main()
{    
    
InitPWM0();
    
ControlPWM0(90);
    while(
1);

Bis jetzt hab ich zum Thema nur zwei Seiten gefunden, die mehr oder weniger hilfreich sind.
[ Link nur für registrierte Mitglieder sichtbar. Bitte einloggen oder neu registrieren ]

[ Link nur für registrierte Mitglieder sichtbar. Bitte einloggen oder neu registrieren ]

Ich bin was Microcontroller angeht, vorallem PWM totaler Anfänger, also bitte bei den Antworten berücksichtigen
Boggie ist offline   Mit Zitat antworten
Ungelesen 04.01.12, 14:22   #2
flotti
Mitglied
 
Registriert seit: Mar 2009
Beiträge: 315
Bedankt: 21
flotti ist noch neu hier! | 0 Respekt Punkte
Standard

Nächste Frage, wieso erhalte ich eine Grundfrequenz von 100Hz, wenn PP0 3125 ist? (erster Link Beispiel Seite 32)

weil dein pwm ausgang erstmal mit 312500 Hz arbeitet, 312500 / 3125 = 100

warum er nach dem wechsel auf h geht kann ich dir nicht sagen, versuch doch mal neu zu inititialsieren

PHP-Code:
#include <reg167.h> 
#include <stdio.h> 

sbit S1 P5^0
sbit S2 P5^1

void InitPWM0(int percent

    
DP7 0x01;        //AUSGANG (PWM0) 
    
P7 0x0

    
PP0 3125;        //100Hz? 
    
PEN0 1;        //AUSGABE 
    
PM0 0;                      //PWM MODE 
    
PW0 = ((100-percent)/100) * PP0;           
    
PTR0 1;        //STARTEN 
    
IEN 1



void main() 
{
 while(
1){
     
int i 1;   
     
InitPWM0(50); 
     while(
i++);
     
InitPWM0(90); 
 }

flotti ist offline   Mit Zitat antworten
Ungelesen 04.01.12, 21:01   #3
Boggie
Newbie
 
Registriert seit: Nov 2009
Beiträge: 83
Bedankt: 548
Boggie ist noch neu hier! | 0 Respekt Punkte
Standard

Danke, die 100Hz sind jetzt klar.
Meinen Fehler hab ich vorhin gefunden:

PW0 = ((100.0-percent)/100.0) * PP0;

Hatte .0 vergessen, deshalb war es anschließend immer 1*Grundfrequnz, da es als Integer behandelt wurde statt float
Boggie ist offline   Mit Zitat antworten
Antwort


Forumregeln
Du kannst keine neue Themen eröffnen
Du kannst keine Antworten verfassen
Du kannst keine Anhänge posten
Du kannst nicht deine Beiträge editieren

BB code is An
Smileys sind An.
[IMG] Code ist An.
HTML-Code ist Aus.

Gehe zu


Alle Zeitangaben in WEZ +1. Es ist jetzt 06:54 Uhr.


Sitemap

().