Assembler Funktion Aufrufen!

Gast #40767
Lesenswert?

Hi

Ich möchte eine Delay Routine (Assembler) in mein C-Programm einfügen!

Ich habe das Beispiel auf der mikrocontroller Seite studiert, probierte
dieses zu kompilieren, doch es funktionierte nicht, ich bekam eine
Menge Fehler! So als ob es die Assembler Befehle nicht verstehen
würde!

Ich arbeite mit WINAVR und habe folgende Files (siehe Anhang)
gemacht...

Ich habe auch die beiden Include Dateien <macros.inc>, <ctoasm.inc> ins
c:\avrgcc\avr\include\ Verzeichnis kopiert!

Was mache ich falsch????
Angehängte Dateien:
Gast #40769
Lesenswert?

Aha, gibt es schon Unterprogramm für ein Delay, ist ja super, kann man
die einfach einbinden? Versuche ich morgen gerade....

Es würde mich aber doch noch wunder  nehmen, wieso ich bei mir kein
Assembler-Code einfügen kann! Ich habe genau das Tutorial auf der HP
gemacht....
Gast #40773
Lesenswert?

Es funktioniert, aber nur wenn ich die Include Dateien (avr-io.h,
macros.inc usw.) in mein Projekt-Ordner kopiere!

Das müsste doch nicht sein?
Muss ich da mein Makefile anpassen? wenn ja wie?
Gast #40776
Lesenswert?

Irgendwie funktioniert es immer noch nicht! ich möchte genau das
Beispiel auf dieser Homepage kompilieren!

es gibt mir aber diesen Fehler:


-------- begin --------
avr-gcc --version
avr-gcc (GCC) 3.3 20030421 (prerelease)
Copyright (C) 2002 Free Software Foundation, Inc.
This is free software; see the source for copying conditions.  There is
NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR
PURPOSE.

avr-gcc -c -mmcu=at90s8515 -I. -g -Os -funsigned-char
-funsigned-bitfields -fpack-struct -fshort-enums -Wall
-Wstrict-prototypes -Wa,-ahlms=test.lst test.c -o test.o
test.c: In function `main':
test.c:12: warning: control reaches end of non-void function
test.c:12:2: warning: no newline at end of file
avr-gcc -c -mmcu=at90s8515 -I. -x assembler-with-cpp
-Wa,-ahlms=spi.lst,-gstabs  spi.S -o spi.o
In file included from io-avr.h:42,
                 from macros.inc:18,
                 from spi.S:10:
io8515.h:36:4: #error "Include <avr/io.h> instead of this file."
make: *** [spi.o] Error 1

> Process Exit Code: 2


Fehlt mir die Headerdatei <avr/io.h> oder was heisst das genau? Ich
finde diese Datei gar nicht!

Vielen Dank!
Gast #40777
Lesenswert?

Steht doch da: die Datei io8515.h beschwert sich darüber, daß Du
versuchst, sie direkt zu #includen.  Du sollst stattdessen
#include <avr/io.h> schreiben (und die Auswahl der tatsächlichen
Datei der -mmcu= Option überlassen, die hast Du aber korrekt).

Ist das wirklich so schwer verständlich geschrieben?  Hmm.
Gast #40781
Lesenswert?

@Peter Fleury: Hey vielen Dank, es funktiooniert super! Danke für die
Hilfe! Wo kann man diese Tricks nachlesen? Ich komme noch nicht so ganz
klar mit der offiziellen Beschreibung! Hast du es von dieser
Dokumentation?

IZOARDS
Gast #40782
Lesenswert?

[Das Posting sollte gestern raus, aber die Verbindung hier war tot,
sorry.]

Lies doch bitter erstmal, was da drüber steht:

[Diese Seite wird nicht mehr aktalisiert! Die offizielle Dokumentation
zu AVR-GCC befindet sich auf
http://savannah.nongnu.org/download/avr-libc/doc/avr-libc-user-manual/
(28.12.2002)]

Wer das einbindet, steht doch auch da:

In file included from io-avr.h:42,
                 from macros.inc:18,
                 from spi.S:10:

Du bindest also macros.inc ein (ist keine offizielle Datei), die
wiederum binden io-avr.h ein (warum auch immer und was auch immer das
sein soll, offiziell gibt es nur <avr/io.h>).

Nun, Beispiele sollte man wohl nur benutzen, nachdem man sie
verstanden hat.
Gast #40783
Lesenswert?

Jetzt habe ich noch eine Frage:

Ich möchte mir eine Include Datei erstellen, welche verschiedene
Assembler-Unterprogramme beinhaltet. Wie kann ich diese machen, damit
ich vom Hauptprogramm nur noch die versch. Unterprogramme aufrufen
kann?


In der Include Datei gibt es jedoch auch Unterprogramme, die auf andere
Unterprogramme in der gleichen Include Datei zugreifen!

Gibt es da eine Lösung?

Ich wäre sehr froh, für Tips und Lösungsvorschläge...
Gast #40784
Lesenswert?

Habs gerafft...



In einem Assembler Programm benötige ich den .db Befehl! (ich
speicherte einen Text im flash und las ihn dann mit dem Befehl lpm
Zeichenweise aus)

Wenn ich dieses Programm jetzt aber Kompilieren möchte, gibt mir der
Kompiler den Fehler:

display.S:62: Error: unknown pseudo-op: `.db'


Kennt der Kompiler diesen Befehl nicht?
Gast #40786
Lesenswert?

Hey Danke..

Der Compiler gibt aber immer noch eine Fehlermeldung und zwar

display.S:137: Error: bad expression
display.S:137: Warning: rest of line ignored; first ignored character
is `R'


Muss ich den String auch anders angeben?
Angehängte Dateien:

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