PWM erhöhen funktioniert nicht

Gast #2014038
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.
Angehängte Dateien:
Gast #2014040
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;



}
#2014049
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.

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.