Hallo, ich habe eine Frage zum program counter. Wo befindet sich dieses Register? Liegt es auch im SRAM, wie z.b. das Statusregister? Ich spreche übrigens vom Atmega32. Vielen Dank! Gruß Christian
@ Christian R. (christian_r) >ich habe eine Frage zum program counter. >Wo befindet sich dieses Register? in der CPU. >Liegt es auch im SRAM, wie z.b. das Statusregister? Das kommt auf den Prozessor an. Wenn du den AVR meinst, dann nein. Die Steuerregister liegen im IO-Bereich. Siehe SFR im Artikel Speicher. Schau mal im Datenblatt unter SPL, und SPH nach. MfG Falk
Beim AVR kommt man gar nicht* an den Programmcounter (d.h. der liegt in keinem Adressbereich). hth, Jörg *) -(R)CALL legt aber die aktuelle Position auf den Stack, falls es um die geht - ICALL/IJMP springt an die adresse im Z-Pointer, so kann man den Programcounter manipulieren
Der Programmcounter ist garnicht zugreifbar beim AVR. Das ist auch niemals nötig. Der Assembler/Compiler startet einfach an Adresse 0x0000 und zählt dann die Befehle mit. Er weiß also jederzeit genau, wo er sich befindet und kann damit z.B. Sprünge berechnen. Befehle können sich auch nicht vertauschen, sie bleiben immer an der zugewiesenen Adresse stehen. Ein Programm muß also nirgends den Programmcounter auslesen. Peter
Gast
#1434335
Hi
>Der Programmcounter ist garnicht zugreifbar beim AVR.
Macht jeder jmp-Befehl.
MfG Spess
@peda: War der Tipp nicht sogar von dir, dass man (r)call benutzen kann, um "wilde" Interrupts zu ermitteln, so à la:
1 | |
2 | |
3 | |
4 | |
5 | |
6 | |
7 | |
8 | |
Aber insgesamt gibt's nicht viele Gründe, beim AVR den Programcounter zu lesen. hth, Jörg
Antwort schreiben
Bitte melde dich an, um einen Beitrag zu schreiben.