Gast
#1751232
Unten steht ein kleiner Programmausschnitt, der aus dem AVR-Studio stammt. Der Ausschnitt gehört zu ATiny24-Programm. Das Programm läuft im Simulator einwandfrei, der erste Abschnitt setzt ein Ausgangsbit auf 0 , der zweite Abschnitt setzt ein Ausgangsbit auf 1. Der reale Chip ATTiny24V funktioniert nicht. Zwar wird das Bit im ersten Abschnitt auf Null gesetzt, das Bit aus dem zweiten Abschnitt wird aber nicht auf 1 gesetzt. Mit dem Dragon wird das Programm bis Zeile +00000148: Schritt für Schritt einwandfrei ausgeführt. Führt der Dragon die Zeile +00000148: mit dem Befehl ST X,R24 aus , geht das Programm nicht (wie zu erwarten) zur Zeile +00000149: weiter, sondern "verzweigt" in eine anderen Programmteil Der Befehl selbst wird korrekt ausgeführt. Frage: Mache ich etwas falsch? Warum "verzweigt" der Controller? 330: PORTB &= ~(1 << pinswitch) ; +00000142: E3A8 LDI R26,0x38 Load immediate +00000143: E0B0 LDI R27,0x00 Load immediate +00000144: E3E8 LDI R30,0x38 Load immediate +00000145: E0F0 LDI R31,0x00 Load immediate +00000146: 8180 LDD R24,Z+0 Load indirect with displacement +00000147: 7F8E ANDI R24,0xFE Logical AND with immediate +00000148: 938C ST X,R24 Store indirect 331: PORTA |= (1 << pinSpannungOK) ; +00000149: E3AB LDI R26,0x3B Load immediate +0000014A: E0B0 LDI R27,0x00 Load immediate +0000014B: E3EB LDI R30,0x3B Load immediate +0000014C: E0F0 LDI R31,0x00 Load immediate +0000014D: 8180 LDD R24,Z+0 Load indirect with displacement +0000014E: 6880 ORI R24,0x80 Logical OR with immediate +0000014F: 938C ST X,R24 Store indirect
