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

Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt. Bitte hier nur auf die ursprüngliche Frage antworten, für neue Fragen einen neuen Beitrag erstellen.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.