Oberhalb vom SREG (0x3F bzw. 0x5F) gehen die IO-Reg befehle wohl nicht, die mußt du "normal" anquatschen, denk' ich.
also z.B.
ldi R16, 0x00
STS DDRF, R16
Mußt aber in der Include schauen, wie DDRF definiert ist.
Hi,
ich bin gerade dabei, ein Programm für einen ATMega128 mit AVRStudio 4 zu schreiben.
Nun möchte ich eigentlich alle Ports benutzen, und da triff auch mein Problem auf: er sagt mir bei 4 Zeilen:
error: Operand 1 out of range: 0x61 (bzw. 2,3,4 mit 0x62,0x63,0x64)
. Hier der Code:
ldi R16, 0x00 ; PORTF (Ausgabe)
out DDRF, R16 <---------
ldi R16, 0xFF
out PORTF, R16 <---------
ldi R16, 0xFF ; PORTG (Ausgabe)
out DDRG, R16 <---------
ldi R16, 0x00
out PORTG, R16 <---------
Ich verstehe nur nicht, woran das liegt; das cseg für diesen Bereich fängt bei 0x0030 an, das dseg bei 0x100.
Könnt Ihr mir vielleicht sagen, wo der Fehler liegt???
MfG, Ozzy
Oberhalb vom SREG (0x3F bzw. 0x5F) gehen die IO-Reg befehle wohl nicht, die mußt du "normal" anquatschen, denk' ich.
also z.B.
ldi R16, 0x00
STS DDRF, R16
Mußt aber in der Include schauen, wie DDRF definiert ist.
mfg robert
Wer glaubt zu wissen, muß wissen, er glaubt.
Hm, aber bei den anderen Ports gehts doch...
Es geht auch, wenn ich statt DDRF DDRB schreibe. Also vielleicht ein Problem mit den Ports an sich???
Schau: Der AVR hat ein paar Maschinenbefehle, die direkt auf IO-Register zugreifen. Die Nummer/Adresse dieses IO-Registers ist in den Befehl eincodiert.
https://www.roboternetz.de/wissen/in..._Mega32#Aufbau
Und es ist eben so, daß für das IOREG im Befehl nur 6 Bit da sind, es geht also nur von 0-3F
In dem Bereich ist das DDRB drinnen, NICHT aber DDRF
(Gucken Datenblatt-Register summary)
Also mußt du Befehle nehmen, die den gesamten Adressraum abdecken können. z.B. LDS und STS
mfg robert
Wer glaubt zu wissen, muß wissen, er glaubt.
Ok, danke, jetzt habe ich es verstanden! Hatte bisher nur ATMega16, da ging das noch alles so schön; daran hatte ich natürlich nicht gedacht...
Jaja, das war mal. Jetzt hast du ja einen richtigen DampferZitat von Ozzy
mfg robert
Wer glaubt zu wissen, muß wissen, er glaubt.
Ich hoffe für Ozzy, dass es kein Dampfer ist! ;o)=richtigen Dampfer
Tja, deshalb bleibe ich gerne bei den kleineren Rennbooten, der Zugriff geht schneller ... *einbildung* ... aber nur unwesentlich!
Viele Grüße,
Florian
Ich würde auch lieber bei den Alten bleiben... Vor allem, da man ja nicht so einfach ein Proggi für den 16er auf dem 128 laufen lassen kann.
Wenn ich doch nur diese blöden Fehler finden würde...
Lesezeichen