Forum: Mikrocontroller und Digitale Elektronik ATMega2560 und Ports H,J,K,L in AVR Studio


von Lars W. (particle)


Lesenswert?

Hallo Zusammen,

ich beginne mich gerade in den ATMega2560 mit dem myAVR Board MK3 
einzuarbeiten. Sowie ich die Aufbau verstanden habe, sind die 8 LEDs mit 
dem PORT L verschaltet.

Als IDE nehme ich AVR Studio 4 .
Hier habe ich als "Device und Debug Plattform" AVR Simulator -> 
ATmega2560 gewählt.

Mein erster kleiner Test, war einen Binärzähler auf den LEDs an PORT L 
auszugeben.

Das Problem ist, dass ich beim kompilieren des beigefügten Codes diese 
Fehlermeldung bekomme:
1
error: Operand 1 out of range: 0x10a

Die Ports H-L sind in der IDE auch mit der Adresse na(0x10A) aufgeführt 
und ausgegraut. Nehme ich andere Ports (A-G) funktioniert das Programm 
wie es soll.

Muss man die Ports H-L erst aktivieren?

Code:
1
.include "m2560def.inc" 
2
.org 0x0000 
3
4
.def tmp = r16 
5
6
main:      ldi   tmp, 0xFF 
7
         out DDRL, tmp 
8
         ldi tmp, 0x00
9
10
mainloop:   inc tmp 
11
         out PORTL,tmp 
12
         rjmp mainloop

von Marius W. (mw1987)


Lesenswert?

Ich meine, dass du auf die oberen Ports mit STS bzw. LDS zugreifen 
musst.

Für in und out liegen die Register nicht im passenden Speicherbereich.

MfG
Marius

von Lars W. (particle)


Lesenswert?

Hallo Marius,

danke für den Tipp. Mit LDS und SDS hat das "Programm" sofort 
funktioniert.

Woran "sieht" man, dass die Ports H-L anders angesprochen werden müssen?
Ich habe hier nur das Datenblatt des ATmega 2560 und damit alleine wäre 
ich nicht darauf gekommen.

Viele Grüße und Danke,
Lars

von spess53 (Gast)


Lesenswert?

Hi

>Woran "sieht" man, dass die Ports H-L anders angesprochen werden müssen?
>Ich habe hier nur das Datenblatt des ATmega 2560 und damit alleine wäre
>ich nicht darauf gekommen.

Im Datenblatt gibt es einen Punkt 'Register Summary'. Die Register mit 
den zwei Adressen lassen sich mit 'in/out' ansprechen. Der Rest nur mit 
'lds/sts'.

MfG Spess

von Lars W. (particle)


Lesenswert?

Hallo Spess,

Klasse!
Wie immer sind die nützlichsten Infos immer hinten im Buch :-))

Grüße,
Lars

von Marius W. (mw1987)


Lesenswert?

Den Hinweis findest du im Datenblatt im Abschnitt 33 (Register Summary). 
Dort gibt es auch eine Fußnote, wo das mit LDS und STS steht (Note 4).

>When using the I/O specific commands IN and OUT, the I/O addresses $00 -
>$3F must be used. When addressing I/O registers
>as data space using LD and ST instructions, $20 must be added to these
>addresses. The ATmega640/1280/1281/2560/2561 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 $60 - $1FF in SRAM,
>only the ST/STS/STD and LD/LDS/LDD instructions can be used.

MfG
Marius

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.