Forum: Mikrocontroller und Digitale Elektronik MJoy Source Code in AVR Studio ?


von Stefan Seegel (Gast)


Lesenswert?

Hallo,

ich wollte mir mal einen MJoy aufbauen
http://www.mindaugas.com/projects/MJoy/Article.php

Da ich einige Kleinigkeiten dran ändern will - alle Potis weg, ich
brauch nur 8 Richtungstaster (2 Steuerknüppel) und 2 Feuertaster -
wollte ich den asm-Source in mein AVR Studio laden und eine Hex-Datei
erzeugen. Allerdings wimmelt es da nur so von Fehlern und Warnungen.

Z.B.
Register r28 already defined by the .DEF directive
(und noch viele andere Register)
error: Operand(s) out of range in 'ldi r21,0x8005'
und viele mehr.

Leider kenne ich mich mit AVR Studio / Assembler überhaupt nicht aus,
da ich alles mit WinAVR mache. Ich kenne mich aber durchaus mit den
Controllern ansich recht gut aus.
Kann mir da vielleicht jemand "Starthilfe" geben ?

Gruß
Stefan

von A. D. (ad1)


Lesenswert?

Die Warnings wie "Register r28 already defined by the .DEF directive"
können ignoriert werden. Der error tritt AFAIK erst mit dem Assembler
Version 2 auf (kann man unter den Optionen einstellen). Du kannst auch
in der entsprechenden Zeile den rechten Operanden auf 8 bit kürzen,
also
"ldi r21,(0x8005 & 0xFF)".

von Stefan Seegel (Gast)


Lesenswert?

Hallo,

in den Optionen konnte ich eine derartige Einstellung leider nicht
finden. Immerhin hab ich bereits einige Redefinition-Errors
rausbekommen, z.B. UCR. Scheint wohl inzwischen in dieser inc Datei
schon drin zu sein.
Aber nun hab ich noch:

Joystick.asm(468): error: call k: Unsupported instruction on ATmega8

Und das ganze zig mal. Sieht so aus als ob der Assembler das Wörtchen
"call" nicht (mehr) versteht... Was kann ich tun ?

Stefan

von A. D. (ad1)


Lesenswert?

Irgendwas ist bei Dir anders. Ich hab eben noch mal zur Kontrolle das
Original "mjoy_v1.1.zip" heruntergeladen, die drei Redefinitionen
auskommentiert, die Zeile 1426,
ldi  bitcount,CRC16poly
ersetzt durch
ldi  bitcount,CRC16poly&0xFF
und kompiliert. Hat funktioniert.
AVRStudio Version 4.12, build 460.

von Stefan Seegel (Gast)


Lesenswert?

ok,

inzwischen hab ich auch die Einstellung gefunden für assembler 1.

Ich kann den Code nun kompilieren (nennt man das so ?).
Ich hab aber noch warnings, u.a.

Joystick.asm(1332) : warning : 'CALL' not supported on this device

Kann man darüber hinwegsehen ? Klingt für mein Gefühl nicht gut...

Stefan

P.S. habe übrigens auch das AVRStudio 4.12 / 460

von A. D. (ad1)


Lesenswert?

Häng doch mal Dein Codeschnipsel an. Wo sind denn da CALLs?

von Michael W. (mictronics) Benutzerseite


Lesenswert?

Ändere alle "call"'s in "rcall"'s.

/Michael

von Stefan Seegel (Gast)


Lesenswert?

z.B. hier

InitJoystickAxis:

    call  BackupUpperRegisters

    ldi r16, 0xFF
    sts  ADCChanStarted,r16  ; reset last ADC  channel number

    ldi r16, XAxisChannel  ;
    call ReadADC10
    ldi  ZH, high(XAxisRAM)
    ldi  ZL,  low(XAxisRAM)
    ldi  YH, high(XAxisEE)
    ldi  YL,  low(XAxisEE)
    call Init10SymAxis

sind schon mal einige drin...
ich versuch das mal mit dem rcall...

Stefan

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.