ATMega 128

Gast #354048
Lesenswert?

Ich versuche momentan eine Testsoftware auf einem uC in Assembler zu
schreiben.
Mein Problem ist das ich die Ports F ung G ansprechen und verändern
will, und das aber nicht hinbekomme.
Kennt sich jemand mit den Ports gut aus??
Ich habs mit verschiedenen Befehlen versucht (sbi, sbr, ldi, lds sts,
andi, ori), aber ich bekomme immer entweder den Fehler "Error:Operand
out of range" oder "Error:Invalid Register)
Wär super wenn mir da jemand helfen könnte...
Gast #354049
Lesenswert?

Schau dir mal im Datenblatt die Verwendung der Ports an,lies (und
versteh!) das Tutorial hier auf der Seite.

IN und OUT sind die Befehle um auf die special-function register zu
zugreifen.Auf welche genau und wie... Tutorial
nachvollziehen,DATENBLATT angucken
Gast #354054
Lesenswert?

> IN und OUT sind die Befehle um auf die special-function register
> zu zugreifen.

Nur die unteren 64. Darüber muß man mit lds/sts arbeiten. Das gilt
unter anderem auch für PORTF und PORTG. Im Datenblatt steht aber auch
deren Adresse.
Gast #354058
Lesenswert?

@Jens:

'Spahren' kann man es sich auch,alles mit probieren rausbekommen zu
wollen.Sich erstmal die Grundlagen anzuschauen bevor man wild drauflos
probiert hat noch keinem geschadet.

Gerade zu dem Thema gibt es eine Menge Threads hier,obwohl alles prima
im Tutorial erklärt wurde.Schade um die Zeit,wenn man immer wieder die
selben Sachen erklären muss.
Gast #354062
Lesenswert?

Zur Erklärung:
Der Mega128 hat (wie die meisten der 'großen' Megas) einen Extended
I/O-Space. Der normale I/O-Space der AVRs endet bei der Adresse 0x5F
(I/O-Register-Adresse 0x3F). Die dicken Dinger haben aber so viele
Peripherie-Komponenten, dass dieser Adressbereich für die ganzen
I/O-Register nicht mehr ausreicht und so ein Teil des (sonst als
General Purpose SRAM verfügbaren) SRAM dazugenommen wird. Da die
Befehle in und out aber die I/O-Register mit ihrer Register-Adresse
(anstatt mit der absoluten Adresse) ansprechen und nur 6 Bit Platz für
die Adresse haben, ist halt bei 0x3F (also absolut: 0x5F) Schluss und
man muss die I/O-Register im Extended I/O-Space (ab absoluter Adresse
0x60) wie normale SRAM-Variablen mit sts und lds ansprechen. Deshalb
haben diese I/O-Register auch keine Register-Adresse mehr, sondern es
wird nur noch die absolute Adresse angegeben (siehe Register Summary im
Datenblatt).

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren