AVR Simulator bleibt beim setzen von OCRx stehen

OP #3134976
Hallo liebe Gemeinde!

Ich habe das Problem, dass der AVR SImulator bei der Timerbehandlung 
unter bestimmten Bedingungen einfach nicht weitermacht.

Folgender Code (Auszug) funktioniert:
1
OCR2 = PINC;
2
if (OCR2 > 0)
3
  { TCCR2 = 0x69;
4
  }
5
else
6
  { TCCR2 = 0x29;
7
  }
Wenn ich nun während der Simulator läuft PINC ändere, ändert sich auch 
OCR2 und meine PWM AUsgabe wird an OC2 prima simuliert.

Nun will ich OCR2 per Tasten an INT0 und INT1 ändern können.
Dazu
1
MCUCR &= 0xF0; //Bit 0 und 2 löschen;
2
MCUCR |= 0x0A; //Bit 1 und 3 setzen - negative Flanke an den Interrupts
Die Interruptroutinen (auch wenn für das Problem nicht wirklich 
wichtig):
1
ISR( INT0_vect )      // Heizung höherstellen
2
{
3
  if (heizstufe <= 19) heizstufe += 1;
4
}
5

6
ISR( INT1_vect )      // Heizung runterstellen
7
{
8
  if (heizstufe >= 1 ) heizstufe -=1;
9
}

nun der Programmteil, in dem Einfluß auf den Timer zwecks PWM Ausgabe 
genommen werden soll.
1
  while (1)
2
  {
3
    // HeizungsPWM stellen
4
    
5
    if (heizstufe >= 1)
6
    {
7
      TCCR2 = 0x69;
8
      OCR2 = (int)255 / 20 * heizstufe;
9
    }
10
    if (heizstufe = 0)
11
    {
12
      TCCR2 = 0x29;
13
      OCR2 = 0;
14
    }
15
  }
wenn ich für die heizstufe 0 vorgebe, läft der Simulator bis zur Zeile 
OCR2=0, der Timer läuft einmal durch und der Prozessor läuft.
bei einem höheren Wert komme ich bis zur Zeile OCR2 = (int..... und dort 
bleibt alles stehen.
Das passiert auch wenn ich statt dem Cast einen hex, oder dez Wert 
übergebe. Wenn ich das Ganze an das STK500 sende, kann ich auch nicht 
feststellen, ob der Timer richtig tut. Habe eine LED auf OC2 (PWM 
Ausgang) gelegt und zwei Taster auf INT0/INT1.
Nun müsste nach spätestens 20 Tastendrücken auf INT1 die LED mal 
ausgehen.
Tut sie aber nicht und ich kann nicht unterscheiden,ob da nun die 
Interruptbehandlung faul ist, oder eben der Timer im Prozessor 
genausowenig läuft, wie im Simulator, bzw. der Proz ebenso steht.

Jemand eine Idee?

Ach ich vergaß: Ist AVR Studio 4 (6 will bei mir nicht recht) und der 
Proz ist ein ATMega32

Gruß Thomas

Antwort schreiben

Eine eigene Frage? Dieser Thread ist über 13 Jahre alt. Stell sie in einem eigenen Thread – dort lesen mehr Leute mit, und sie wird öfter und schneller beantwortet.

Neuen Thread starten

Eine Lösung, Ergänzung oder Rückmeldung zu diesem Thread? Dann antworte hier.

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.