Problem bei Datei einbinden AVR Studio

Gast #2128259
Lesenswert?

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
Angehängte Dateien:
Gast #2128392
Lesenswert?

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
Gast #2128532
Lesenswert?

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.
Gast #2128538
Lesenswert?

>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.
Gast #2128687
Lesenswert?

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
Gast #2128791
Lesenswert?

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!
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