Forum: Mikrocontroller und Digitale Elektronik Anfängerproblem mit ATtiny412 und avra


von Jack V. (jackv)


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?

von S. L. (sldt)


Lesenswert?

sts statt out.

Zu dem 'definition not found' kann ich nichts sagen.

AVR macro assembler: avrasm2

PS:
alternativ: out VPORTA_DIR, r16
  Datenblatt lesen

: Bearbeitet durch User
von Jack V. (jackv)


Lesenswert?

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.

von S. L. (sldt)


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

von Jack V. (jackv)


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

: Bearbeitet durch User
von Ob S. (Firma: 1984now) (observer)


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.

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.