PWM programmieren im AN2131

Gast #2172146
Lesenswert?

Hallo ich bin hier auf das tolle forum gestossen, ich glaube ich werde 
hier hilfe finden :)

Es geht um eine PWM. WIe programmiert man eine PWM mit einen µC.
Mir geht durch den Kopf, eine for-Schleife zu machen und in ihr 
folgendes:

for(int i=0;i<10;i++)
{
OEB=0xFF;
}
OEB=0x00;

Dh. der positive ausgang bleibt länger eingeschalten und somit hat man 
eine PWM.
Aber ich habe gehört es geht anders auch, weil hier verändere ich ja 
auch meine Periodendauer bei dieser methode, ich will aber das die 
Periodendauer 30µs beträgt. zB.: 20µs EIN und 10µs AUS.
Hat wer eine Idee?

Danke im Vorhinein :D MFG Alex
Gast #2172165
Lesenswert?

Ja genau in SOftware, im KeilµVision in C.    Mein Vorschlag 
funktioniert ja auch aber ich will die periodendauer nicht verändern 
sondern sie soll gleich bleiben und nur EIN und AUSSCHALTZEIT sollten 
sich ändern.
Gruß Alex
#2172171
Lesenswert?

Alex Schauer schrieb:
> Ja genau in SOftware, im KeilµVision in C.    Mein Vorschlag
> funktioniert ja auch aber ich will die periodendauer nicht verändern
> sondern sie soll gleich bleiben und nur EIN und AUSSCHALTZEIT sollten
> sich ändern.

Endlosschleife:
1
int pwm_wert;
2
do {
3
 for(int i=0;i<30;i++) {
4
    if (i>pwm_wert) 
5
      PORT_ANSCHALTEN()
6
    else 
7
      PORT_ABSCHALTEN();
8
  }
9
} while (1)

Periodendauer ist dann immer "30", über "pwm_wert" kannst du die 
Einschaltdauer einstellen.

Statt "int" ggfs. 8-Bit-Variable nehmen ("uint8_t" bzw "unsigend char")
Gast #2172267
Lesenswert?

Danke für die schnelle Antwort. Aber ich verstehe das nicht , esagen wir 
mal das pwm_wert =10 ist. Das heisst dann das der Ausgang 0 ist weil ja 
i nicht größer als 10 ist. So sagen wir das die schleife jetzt bei 11 
angelangt ist, dann schaltet alles durch. Und danach bleibt ja immer 
alles durchgeschaltet weil ja das ''i'' dann immer grödßer bleibt, dh. 
es kommt ja dann nicht mehr zum einschalten oder? MFG

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