Forum: Compiler & IDEs PWM erhöhen funktioniert nicht


von Poco (Gast)


Angehängte Dateien:

Lesenswert?

Hallo,

ich möchte eine PWM erzeugen und zwar möchte ich bei der berechnung der 
Leistung vergleichen ob die neue Leistung höher ist als die alte und 
Falls ja sollte die PWM um 1 schritt erhöht werden. Nun wird aber die 
PWM um 3 schritte erhöht und dann um 3 reduziert.Und das ständig wegen 
der While schleife. Ich nehme an da die PWM funktioniert, dass es an dem 
PWM code liegt. Ich komme aber nicht auf die Lösung. Ich wäre dankbar 
für eure Hilfe.

von Poco (Gast)


Lesenswert?

void Init_Timer_0(void)
{


TCCR0  = (1 << WGM00)|(1 << WGM01)|(1 << CS00)|(1 << COM01); //Fast 
PWM-Modus, Teiler auf 1, //Toggel des Pins B3
OCR0   = 0;
}


int main(void)
{

  Init_Timer_0();


      while(1)
        {


          P_zelle = U_zelle*I_bat; // Die P_zeller wird anhand anderer 
anhänge aufgerufen, die restliche programm teile habe ich nicht mit 
eingeführt da es ein bisschen zu komplex wäre

          if(P_zelle > P_zelle_alt)
            {

              OCR0++;
            }
          else if (P_zelle < P_zelle_alt)
            {
                 OCR0--;
            }


        P_zelle_alt = P_zelle;



}

von Karl H. (kbuchegg)


Lesenswert?

Poco schrieb:

> Leistung vergleichen ob die neue Leistung höher ist als die alte und
> Falls ja sollte die PWM um 1 schritt erhöht werden. Nun wird aber die
> PWM um 3 schritte erhöht und dann um 3 reduziert.Und das ständig wegen
> der While schleife. Ich nehme an da die PWM funktioniert, dass es an dem
> PWM code liegt. Ich komme aber nicht auf die Lösung.

Dein Timer muss von 0 bis 255 zählen, bis er einen PWM Zyklus durch hat. 
Dafür braucht er Zeit. Wenn dein Code in der Hauptschleife in dieser 
Zeit 3 Messungen macht und daher zum Schluss kommt, dass OCR jeweils um 
1 zu erhöhen ist, dann startet der nächste PWM Zyklus (an dem sich die 
Veränderung am PWM Pin das erste mal extern bemerkbar macht) mit einem 
um 3 erhöhten Wert.

Du misst einfach zu schnell. Die PWM kann nicht so schnell reagieren wie 
du misst und als Folge der Messung den PWM Wert jedesmal erhöhst.

von Gas (Gast)


Lesenswert?

Also müsste ich die frequenz des Zählers ändern oder die frequenz der 
durchlaufs der schleife?

von *kopfkratz* (Gast)


Lesenswert?

Schon mal ein Flussdiagramm dafür gezeichnet?
Dann wird Dir klar was mein Vorredner meinte.

BR

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.