Forum: Compiler & IDEs ASM Datei in C-Projekt einbinden


von Moe001 (Gast)


Lesenswert?

Hallo,
ich habe eine Asm datei mit diversen funktionen und die soll in mein
c-projekt mit eingebunden werden so das ich die funktionen dort drin
ganz normal benutzen kann. Nur alle versuche sind fehl geschlagen..
Als compiler benutze ich WinAVR 20060125, µC ist ein normaler avr
mega161.

Kann mir jemand helfen?

von Jörg W. (dl8dtl) (Moderator) Benutzerseite


Lesenswert?

Beschreibe ,,alle versuche sind fehl geschlagen'' genauer:
was hast du probiert, und was ging damit nicht.

von Moe001 (Gast)


Lesenswert?

naja, ich hab im makefile das asm source file hinzugefügt ich nenne es
mal test.S also im makefile: ASRC = test.S

beim compiliern kommen dann sehr viele fehler, unter anderem:
"Error: number must be less than 32"
bei der Anweisung: cbi  SPCR,SPE

und ich hab herausgefunden das er die Registernamen vom mega161 nicht
kennt, abwohl ich mit der anweisung "#include <avr/io.h>" diese doch
hinzugefügt haben müsste...
wenn ich dazu noch eine ander .h datei includen will kommt solche
Fehler wie:

C:/WinAVR/avr/include/ctype.h:72: Error: unknown opcode `extern'


weiss nich was ich machen soll...

von Jörg W. (dl8dtl) (Moderator) Benutzerseite


Lesenswert?

> "Error: number must be less than 32"
> bei der Anweisung: cbi  SPCR,SPE

Dann ließ dir bitte den Abschnitt über <avr/sfr_defs.h> im avr-libc
Manual durch.  Dort stehen die Optionen beschrieben, die du dafür
hast, z. B.

cbi _SFR_IO_ADDR(SPCR), SPE

> wenn ich dazu noch eine ander .h datei includen

Das ist für Assemblerdateien nicht gestattet, effektiv wird nur
<avr/io.h> unterstützt.  Was soll der Rest auch, die beschreiben
doch C-Interfaces?

von Moe001 (Gast)


Lesenswert?

ööhm sorry, aber was du erzählst ist schwachsinn...
in der io.h sind die portname für den aktuellen benutzen µC included
somit auch SPCR = 0x0D und SPE = 6....
ersetze ich die namen mit dem wert, kommt der Fehler nicht mehr, obwohl
das ja nicht sein dürfte da alles mit eingebunden wurde...also erzähl du
mir nich ich soll irgendwas durchlesen!

Und das mit der ander .h datei einbinden ist auch nicht richtig, bei
anderen projekten gehts und wieso auch nicht, man bindet genauso
#defines ein wie es die io.h datei auch macht...

von Jörg W. (dl8dtl) (Moderator) Benutzerseite


Lesenswert?

> ööhm sorry, aber was du erzählst ist schwachsinn...

Auf dieser Basis brauch ich mit dir nicht mehr weiterzudiskutieren.

Sag mal, wer von uns beiden hatte hier eigentlich das Problem und
wollte gern von anderen Leuten Hilfe haben?  Du oder ich?

Ich kann mir auch selbst helfen, danke.

von Herbert (Gast)


Lesenswert?

Jörg hat recht, ich habe ebenfalls ehemals alten ARV-assembler Code für
einen neuen Prozessore von AVR mit C gemischt.

@Moe001 schau Dir das Manual durch oder lass es bleiben die Leute mit
'Schwachsinn' zu beleidigen :-((.

gruss herbert

von Moe001 (Gast)


Lesenswert?

Sorry, aber ich war wütend, weil Jörg so herablassend gemeint hab ich
hab keine ahnung und solls mir was durchlesen, obwohl es damit garnix
zu tun hat. Ich hab auch schön öfter asm files eingebunden und es hat
funktioniert, nur jetzt nicht mehr, muss mit der neuen Winavr version
zusammenhängen...
ausserdem hab ich niemanden persönlich beleidigt, meinte ja nich das er
schwachsinnig ist, sondern nur seine aussage zu meinem problem...na gut
jetzt könnte jemand sagen, schwachsinnig ist der, der schwachsinniges
tut....aber dann wär ichs wohl auch, also sorry...

von Jörg W. (dl8dtl) (Moderator) Benutzerseite


Lesenswert?

> obwohl es damit garnix
> zu tun hat.

Wenn du meinst...

Ich denke sehr wohl, dass es genau damit was zu tun hat, und
wenn du dir die entsprechende Doku durchlesen würdest, wüsstest
du auch, welche Optionen du alle so hast.

Im Übrigen, wenn du dir die entsprechende ioXXX.h mal ansiehst,
wird du feststellen, dass die Definitionen für die IO-Register
eben keineswegs so einfach sind, wie von dir behauptet.

von Peter D. (peda)


Lesenswert?

Schwachsinn ist schon ein starker Hammer, ich nehme lieber "Quatsch mit
Soße", meint zwar das gleiche, klingt aber nicht so persönlich :-)


Allerdings auch nur, wenn ich mir meiner Sache 101%-ig sicher bin.


Peter

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.