AVR Simulator bleibt beim setzen von OCRx stehen

OP #3134976
Lesenswert?

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

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