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

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.