Ich programmiere (zum ersten Mal) einen ATmega 48, mein Problem ist das bei dem Befehl
[highlight=red:4abd322277]OUT EICRA, Zwischenspeicher[/highlight:4abd322277]
Den Fehler "boot.asm(44): error: Operand 1 out of range: 0x69" bekomme.
Muss man da irgendwas mit [highlight=red:4abd322277]STS[/highlight:4abd322277] machen?
Hallo,
das ist korrekt. EICRA muss "memory mapped" (LDS, STS) angesprochen werden wie alle SFRs, die sich in der Liste am Ende des Datenblattes oberhalb der dicken horizontalen Linie befinden.
Fußnote aus dem ATmega48-Datenblatt zu den SFRs: When using the I/O specific commands IN and OUT, the I/O addresses 0x00 - 0x3F must be used. When addressing I/O
Registers as data space using LD and ST instructions, 0x20 must be added to these addresses. The ATmega48/88/168 is a
complex microcontroller with more peripheral units than can be supported within the 64 location reserved in Opcode for the
IN and OUT instructions. For the Extended I/O space from 0x60 - 0xFF in SRAM, only the ST/STS/STD and LD/LDS/LDD
instructions can be used.
Gruß
Fred
Editiert: Tippfehler beseitigt; Datenblattzitat hinzugefügt..
Only entropy comes easy. - Anton Checkhov
Lesezeichen