mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik OCR2 übernimmt Wert nicht!


Autor: Toellner (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo zusammen,

Ich programmiere gerade eine PWM und muss feststellen dass das Schreiben 
in OCR2 nicht richtig funktioniert. Mein Timer2 macht in einem Durchlauf 
den PWM HIGH Pegel und wird dann so eingestellt, dass die nächsten 8 
Durchläufe das Signal LOW ist. Dann geht es wieder von vorne los. Das 
Problem ist dass das OCR2 nicht funktioniert wie lange der HIGH Pegel im 
ersten Durchlauf ist soll im OCR2 eingestellt werden ABER der HIGH Pegel 
ist immer so lange wie der Zähler selber: 255 (also maximal). Während 
der Pausenzeit ist das OCR2 auch 255 deshalb mein Verdacht, dass das OCR 
den neuen Wert 77 irgendwie nicht annimmt... WARUM???
ISR(TIMER2_OVF_vect)
{
  if(pwmPeriodeCounter == 0)
  {
    TCCR2  |= (1<<COM20);        // Polung der PWM: INvertierend für const. Low Pegel
    OCR2  =  255;            // Für dauerhaft Low Pegel (-->Pause bis 20ms)
    pwmPeriodeCounter += 1;        
  }
  

  if((pwmPeriodeCounter > 0) && (pwmPeriodeCounter < 9))
  {
    pwmPeriodeCounter += 1;
  }


  if(pwmPeriodeCounter == 9)
  {
    OCR2  =  77;                  // Übernahme der gewünschten Signallänge 0,7ms ... 2,3ms  
    TCCR2  &= ~(1<<COM20);        // Polung der PWM: NICHT - invertierend für Signalerzeugung      
    pwmPeriodeCounter = 0;        // Von vorne beginnen ...
  }
  

}

Autor: spess53 (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hi

Controller? Simulation/ICE?

MfG Spess

Autor: Toellner (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hi!

Ich messe direkt mit dem Oszi, Controller ist der ATMEGA16 !

Autor: Stefan Ernst (sternst)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Dein Problem dürfte das Zusammenspiel von OCR-Setzen und 
Output-Konfiguration sein. Beim PWM-Modus wird der neue OCR-Wert ja erst 
beim nächsten Überlauf übernommen, bei dem wird dann aber auch schon 
wieder die Output-Konfiguration zurück geändert.

Autor: Toellner (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hm das versteh nicht, dann werden die Änderungen jeweils erst beim 
nächsten Interrupt übernommen, funktionieren sollte es eigentlich 
trotzdem!? Ich  hab schon an der Reihenfolge geändert, aber das Resultat 
bleibt immer dasselbe, er übernimmt für die HIGHPhase nicht das 
OCR2......

Autor: Stefan Ernst (sternst)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Toellner wrote:
> Hm das versteh nicht, dann werden die Änderungen jeweils erst beim
> nächsten Interrupt übernommen, funktionieren sollte es eigentlich
> trotzdem!?

Nein, die Änderungen laufen nicht synchron. TCCR2 wird sofort geändert, 
der neue OCR-Wert wird aber erst beim nächsten Überlauf übernommen.

Ich würde die Änderung der Output-Konfiguration eh ganz weglassen, und 
den  High-Puls über einen Low-Puls mit der inversen Länge machen, also:
OCR = 255 - 77;

Autor: Toellner (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Danke Stefan,

Danke Dir funktioniert es jetzt einwandfrei und ich kann zufrieden von 
der uni heim :)

Die Idee das ganze invertierend zu machen und einfach 255-xx einzugeben 
ist auch viel eleganter!

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
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.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.