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
Du siehst die zwei Dateien aber schon in "source files" und beim Kompilieren ist auch alles in Ordnung?
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 Oliver, vielen Dank für die Antwort. Ich Idiot! Sorry, hier das besagte Programm...Ich komm einfach nicht drauf, warum das nicht klappt.
Und woher soll fifo.c wissen, wie die Funktionen heissen? Headerfile schreiben und einbinden.
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!
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.