Forum: Mikrocontroller und Digitale Elektronik Problem bei Datei einbinden AVR Studio


von Klaus (Gast)


Angehängte Dateien:

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

von Boris (Gast)


Lesenswert?

Du siehst die zwei Dateien aber schon in "source files" und beim 
Kompilieren ist auch alles in Ordnung?

von Klaus (Gast)


Lesenswert?

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ß

von Klaus (Gast)


Lesenswert?

Hat keiner ne Idee?

von Oliver (Gast)


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

von Klaus (Gast)


Angehängte Dateien:

Lesenswert?

Hallo Oliver,
vielen Dank für die Antwort. Ich Idiot! Sorry, hier das besagte 
Programm...Ich komm einfach nicht drauf, warum das nicht klappt.

von Christopher G. (cbg)


Lesenswert?

Und woher soll fifo.c wissen, wie die Funktionen heissen? Headerfile 
schreiben und einbinden.

von Klaus (Gast)


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.

von Guru (Gast)


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.

von Oliver (Gast)


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

von Klaus (Gast)


Angehängte Dateien:

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!

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.