PIC16LF1527 PWM Abschaltung funktioniert nicht immer

OP #3138653
Lesenswert?

Hallo Zusammen,

habe folgendes Problem: Ich dimme eine LED-Endstufe über CCP10. Das 
funktionert auch alles recht gut, nur wenn ich den PWM abschalte 
passiert es ab und an (~ 5-10%) dass der Ausgang auf high bleibt und die 
Endstufe statt abzuschalten maximalen Strom liefert.
Mit folgender Routine schalte ich den PWM zu bzw. ab:
1
void pwm_aus (void)
2
{
3
    CCP10CONbits.CCP10M3 = 0; //disable PWM
4
    CCP10CONbits.CCP10M2 = 0;
5
  return;
6
}
7
void pwm_an (void)
8
{
9
    CCP10CONbits.CCP10M3 = 1; //enable PWM
10
    CCP10CONbits.CCP10M2 = 1;
11
  return;
12
}
lt. Datenblatt ist das die richtige Methode.
Es gäbe natürlich die Möglichkeit den Pin beim Auschalten in der Methode 
als Ausgang zu definieren und auf 0 zu setzen (und in der anderen 
Methode zurückzusetzen), was aber keine schöne Lösung ist.
Hab auch schon eine Hardwarlösung für diese Problem, aber vielleicht 
mache ich ja auch etwas falsch.

Recht herzlichen Dank!
OP #3138709
Lesenswert?

Seite 192 links unten Note 2 (allerdings muss "relinquish" nicht 
zwangsläufig bedeuten, dass der Pin immer explizit auf 0 gesetzt wird)

und Seite 197:

>  bit 3-0 CCPxM<3:0>: CCPx Mode Select bits

>  0000 = Capture/Compare/PWM off (resets CCPx module)

daraus würde ich ein explizites Abschalten des PWM-Blocks ableiten
Gast #3138726
Lesenswert?

>lt. Datenblatt ist das die richtige Methode.
Das glaube ich schon deswegen gar überhaupt niemals nicht,
weil es  Übergangs-Zwischenwerte  ergibt.
Dazu braucht man das Datenblatt noch nichtmal aufzurufen.
Gruss
OP #3138765
Lesenswert?

Nachtrag:
Auch zuerst CCPR10L und dann CCP10CON auf 0x00 zu setzen
(duty-cycle auf 0% und abschalten)funktioniert nicht immer.

Habe die Lösung von be stucki umgesetzt und dann funktioniert es auch.

Aber warum sich der PWM-Block nicht zuverlässig abschalten lässt bleibt 
mir weiterhin ein Rätsel.
Gast #3139607
Lesenswert?

,... schrieb:
> Gerhard M. schrieb:
>> Habe die Lösung von be stucki umgesetzt und dann funktioniert es auch.
>>
>> Aber warum sich der PWM-Block nicht zuverlässig abschalten lässt bleibt
>> mir weiterhin ein Rätsel.
>
> Poste doch deinen ganzen Quellcode, vielleicht hängts an einer anderen
> Stelle

Ist wohl nicht mehr wichtig.

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