Hallo zusammen,
ich habe Schwierigkeiten beim Einbinden einer Datei. Es handelt sich um
einen Ringpuffer der die Daten empfängt und einfach wieder ausgibt. Wenn
ich den Code in eine Datei packe, werden meine Daten wieder korrekt an
das Hyperterminal ausgegeben. Wenn ich aber jetzt die Dateien separat
abspeichere einfüge wird nur noch nonsense ausgegeben. Es wäre nett,
wenn mir jemand weiterhelfen könnte...VG, Klaus
Hallo Boris,
Danke für die schnelle Antwort. Ja, die seh ich und beim Kompilieren ist
auch alles in Ordnung. Ich bin langsam echt am verzweifeln...Gruß
Klaus schrieb:> und beim Kompilieren ist> auch alles in Ordnung.
../fifo.c:16: warning: implicit declaration of function 'usart0_init'
../fifo.c:21: warning: implicit declaration of function 'uart0_puts'
../fifo.c:26: warning: implicit declaration of function 'uart0_getc'
../fifo.c:29: warning: implicit declaration of function 'uart0_putc'
../fifo.c:29: error: 'c' undeclared (first use in this function)
../fifo.c:29: error: (Each undeclared identifier is reported only once
../fifo.c:29: error: for each function it appears in.)
Da ist nix in Ordnung. Zeig mal das echte Programm.
Oliver
Hallo Christopher,
jetzt steh ich grad etwas auf dem Schlauch. Ich muss also anstatt
uart.c, uart.h draus machen und dann in fifo.c mit #include "uart.h"
einfügen?! Ich hab mich mal an die lib von P. Fleury gehalten und der
hat das auch nicht so gemacht...Hmmmmm, kapier ich nicht.
>Ich muss also anstatt uart.c, uart.h draus machen
Nein.
Christopher schrieb ja:
>Headerfile schreiben und einbinden.
und nicht das Du eine Datei umbenennen sollst.
Denn dann hättest Du Code in einer H-Datei, was auch "falsch" ist.
Du musst eine besondere H-Datei, namens uart.h schreiben in der die
Funktionen deklariert sind und diese Datei musst Du in fifo.c mittels
include einfügen.
Klaus schrieb:> Sorry, hier das besagte> Programm...
Nun ja, auch da kommen die warnings
>warning: implicit declaration of function ...
Der Compiler übersetzt jedes .c-File einzeln. Und er weiß nicht, welche
Parameter eine Funktion erwartet, und welchen Returnwert sie liefert,
wenn er nur den deren Aufruf sieht. Aus Rücksicht auf alte
Gepflogenheiten ist das in C aber erlaubt. Es gibt aber zumindest eine
Warnung, daß da was fehlt.
Es fehlen die Deklarationen. Die kannst du direkt an den Anfang jedes
.c-Files schreiben, oder eben in eine headerdatei, die dann dort
inkludiert wird.
Klaus schrieb:> Ich hab mich mal an die lib von P. Fleury gehalten und der> hat das auch nicht so gemacht...Hmmmmm, kapier ich nicht.
Dann hast du doch ein prima Beispiel, das zeigt, wie es geht.
Oliver
Vielen Dank Oliver für deine Tipps.
Ich habs jetzt so hinbekommen, das ich meine Strings am Hyperterminal
sehe.
Nur, wenn ich alles in einer Datei stehen habe, so kommen zwischen den
empfangen Strings Nullen, weil die Übertragung viel länger dauert als
die Zeitspanne, in denen mein µC den FIFO abfrägt. Ok, das passt soweit.
Wenn ich jetzt allerdings meine UART Initialierung in eine eigenen Datei
uart.c, wie im Anhang dargestellt, schreibe, so kommen zwischen den
einzelnen String statt 0x00, 0x06, 0x01 oder 0x07 etc...Komisch, ich
kann mir das nicht erklären...Hab ich da was vergessen? Das ist langsam
wirklich zum Haare raufen!