mikrocontroller.net

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


Autor: Moe001 (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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?

Autor: Jörg Wunsch (dl8dtl) (Moderator) Benutzerseite
Datum:

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

Autor: Moe001 (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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...

Autor: Jörg Wunsch (dl8dtl) (Moderator) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht 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?

Autor: Moe001 (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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...

Autor: Jörg Wunsch (dl8dtl) (Moderator) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Herbert (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Moe001 (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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...

Autor: Jörg Wunsch (dl8dtl) (Moderator) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Peter Dannegger (peda)
Datum:

Bewertung
0 lesenswert
nicht 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

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
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.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.