Anfängerproblem mit ATtiny412 und avra

OP #7615013
Lesenswert?

Hallo,

ich hab in den letzten Tagen ein wenig mit Assembler auf älteren AVRs gespielt und gefunden, dass mir das ziemlich gut gefällt. Dabei kam avra zum Einsatz, sodass ich mich da schon ein wenig dran gewöhnt habe.

Nun wollte ich damit auch den ATtiny412 (tinyAVR series-1) bedienen, und das scheitert direkt nach dem Start. Während ein

1
.include "tn412def.inc"
2
    nop

sich noch gut assemblieren lässt, scheitert bereits ein

1
.include "tn412def.inc"
2
   ldi r16, 0xFF
3
   out PORTA_DIR, r16

mit einem „Error : I/O out of range (0 <= P <= 63)“. Möglicherweise hat es mit der Warnung im ersten Pass zu tun: „Warning : No .DEVICE definition found. Cannot make useful address range check !“, aber die besagte Definition (.device ATtiny412) musste ich in der tn412def.inc auskommentieren, weil avra ansonsten direkt mit Hinweis auf ein unbekanntes Device namens „ATtiny412“ ausgestiegen ist.

Die verwendete tn412def.inc stammt aus http://packs.download.atmel.com/Atmel.ATtiny_DFP.2.0.368.atpack

Meine Frage wäre: gibt es eine Möglichkeit, avra und den μC zusammenzubringen? Wenn nein, gibt es eine andere Möglichkeit außer dem Assembler von der avr-gcc, diesen μC mit Assembler zu bedienen?

#7615051
Lesenswert?

... wirklich viel zu lernen

Ist zwar mehr, als es auf den ersten Blick scheint, aber weniger als beim zweiten Blick.

Jetzt hier bei '..PORT..': Datenblatt '16.3.2.3 Virtual Ports', schneller und kürzer, und erlaubt sbi bzw. cbi.

Und für die Bequemlichkeit gäbe es Makros, zumindest auf dem avrasm2 (avra kenne ich nicht):

1
.macro  put
2
.if @0 < $40
3
    out     @0,@1
4
.else
5
    sts     @0,@1
6
.endif
7
.endmacro
8
;----------------------
9

10
.macro  get
11
.if @1 < $40
12
    in      @0,@1
13
.else
14
    lds     @0,@1
15
.endif
16
.endmacro
17

18
  put PORTA_DIR, r16
19
  put VPORTA_DIR, r16
20
  get r16, PORTA_IN
21
  get r16, VPORTA_IN
OP #7615056
Lesenswert?

Danke auch dafür.

S. L. schrieb:

avra kenne ich nicht

Den habe ich nicht zuletzt deswegen gewählt, weil er sich weitgehend am avrasm2 orientiert, sodass ich die die Doku dafür mitnutzen kann. Auch dein Beispiel mit den Makros lässt sich damit direkt assemblieren – wenngleich ich es noch nicht ganz verstehe. Ich arbeite aber daran :)

Edit, Nachtrag: https://github.com/Ro5bert/avra ← dieser ist’s

(Firma: 1984now) #7615256
Lesenswert?

Jack V. schrieb:

Vielen Dank, sts statt out hat’s getan – ich hab da noch wirklich viel zu lernen.

avrasm2 würde ich gerne nutzen, allerdings gibt’s den für mein System leider nicht.

Läuft problemlos unter wine.

Ist nur etwas verwirrend, dass innerhalb von wine nicht das normale Filesystem sichtbar ist, das muss man beim Verfassen von Build-Skripten natürlich entsprechend berücksichtigen.

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