Hallo Leute, ich bin gerade an einem Projekt, bei dem es nun als nächstes darum gehen soll, dem AVR ( atmega32) UART "beizubringen". Ich habe mich bisher noch nicht so ganz entscheiden können, ob ich die UART-Routinen lieber in einem Header-File oder in einem c-File unterbringen soll... Kann mir jemand KURZE Tipps geben , was wohl sinnvoller wäre ? Danke schon mal...
Immer in beiden. In der H-Datei die Deklarationen von öffentlich zu machenden Funktionen und Variablen, dazu Makros für öffentliche Werte. In der C-Datei die Definition von Funktionen und Variablen.
@Giuseppe Eigentlich sollte klar sein, was in einem *.c und einem *.h stehen sollte. Ansonsten würde ich Dir anraten ein gutes C-Buch zu lesen. Aber vielleicht kannst Du ja mal darlegen, an welchen du Punkten Probleme hast?
@uC Writer Wenn mir von Anfang an 100%ig klar gewesen wäre in welche Datei Was reingehört, hätte ich hier die Frage nicht gepostet. Mit C-Büchern ist es so, daß ich mir Bücher kaufen kann so viele wie ich will. Es wird immer irgendjemand sagen: " Deine Bücher taugen nix! Kauf dir XYZ!" Unglücklicherweise darf man die Bücher erst durchlesen, NACHDEM man Sie gekauft hat. Nicht selten habe ich dabei festgestellt, daß das, was ich gesucht habe da nicht drin steht. Also nächstes Buch kaufen... Nix für ungut. Danke trotzdem für Deine Antwort! @Hmm Danke für die Antwort. Genau das wollte ich wissen.
>Unglücklicherweise darf man die Bücher erst durchlesen, NACHDEM man >Sie gekauft hat. In jeder größeren Stadt gibt es Büchereien, in denen man gratis lesen darf. Zur Programmiersprache C gibt es außerdem dutzende Tutorials und sogar frei downloadbare Bücher im Netz.
Um es vielleicht etwas klarer zu machen. In die h-Datei kommt nur die Deklaration (also der Name der Funktion und welche Parameter sie nimmt bzw. zurückgibt):
1 | // uart.h
|
2 | |
3 | void uart_putc(char c); |
4 | char uart_getc(void); |
In die c-Datei kommt die Definition (der Code, den die Funktion ausführt). Außerdem sollte man in der c-Datei die dazugehörige h-Datei einbinden:
1 | // uart.c
|
2 | |
3 | #include "uart.h" |
4 | |
5 | void uart_putc(char c) |
6 | {
|
7 | // Code zum Zeichen ausgeben
|
8 | }
|
9 | |
10 | char uart_getc(void) |
11 | {
|
12 | // Code zum Zeichen lesen
|
13 | }
|
Im Hauptprogramm bindet man nur h-Datei und kann dann die Funktionen aufrufen ein:
1 | // main.c
|
2 | |
3 | #include "uart.h" |
4 | |
5 | int main(void) |
6 | {
|
7 | // [...]
|
8 | uart_getc(); |
9 | // [...]
|
10 | }
|
@Giuseppe Naja die Frage war so grundlegend, dass man den Eindruck haben könnte, dass Du noch Lernbedarf hast. Daher der Wink mit dem C-Buch. Und da Hmm es kurz erklärt... Ich hatte nicht die Absicht, den Oberleherer mit Zeigefinger zu machen.
Giuseppe B. schrieb: > @uC Writer > Wenn mir von Anfang an 100%ig klar gewesen wäre in welche Datei Was > reingehört, hätte ich hier die Frage nicht gepostet. Mit C-Büchern ist > es so, daß ich mir Bücher kaufen kann so viele wie ich will. Es wird > immer irgendjemand sagen: " Deine Bücher taugen nix! Kauf dir XYZ!" > Unglücklicherweise darf man die Bücher erst durchlesen, NACHDEM man Sie > gekauft hat. Nicht selten habe ich dabei festgestellt, daß das, was ich > gesucht habe da nicht drin steht. Also nächstes Buch kaufen... Wer sagt denn sowas? Für C ist der K&R eigentlich das empfohlene Standardwerk.
Ok. Dann beruhigen wir uns mal wieder :) der Reihe nach... @Büchereibenutzer 1.) Soll ich Dir das glauben, daß Du wegen jedem Sch*** in die Bücherei rennst um mal kurz was nachzulesen ? 2.) Die Sache mit den frei downloadbaren C-Büchern interessiert mich. Kannst Du hier mal ´n Link oder so posten ? Ich habe wohl EIN C-Buch. Das ist aber erstens für blutige Anfänger, zweitens NICHT auf avr-gcc ausgelegt. Da könnte man sich schon mal was neues her tun... :) @xfr Eine deutlichere Antwort hätte ich mir kaum wünschen können. @simon zu K&R... ist noch gar nicht so lange her, da hat mir hier in diesem Forum einer "auf die Finger geklopft"... ein von mir selbst erfundener Code-Schnipsel hat nicht funktioniert, da kam der Kommentar " Das ist K&R-Style, ein Wunder, daß der Compiler das überhaupt noch schluckt". ( Sinngemäss wiedergegeben) Daraus hatte ich den Schluss gezogen, daß K&R nicht mehr zeitgemäß sei... Nun bin ich bzgl. K&R ein wenig irritiert...
Nun, es gibt die erste AUsgabe im K&R-Style. Und dann gibt es die zweite Ausgabe für ANSI-C. Steht auch auf dem Buch drauf.
>1.) Soll ich Dir das glauben, daß Du wegen jedem Sch*** in die Bücherei >rennst um mal kurz was nachzulesen ? Was willst du eigentlich? Zuerst beklagst du dich, dass du Bücher erst kaufen musst, wenn du sie lesen willst. Jetzt beklagst du dich, dass du (welche Zumutung!) zuerst in die städtische Bücherei gehen musst, um Bücher GRATIS zu lesen. Du erwartest also, dass man dir wertvolles Wissen quasi auf dem Silbertablett, natürlich gratis und ohne jegliche Anstrengung deinerseits in bequemen Häppchen serviert. Der Bibliothekar soll sich also um eine Audienz bei dir zu Hause bemühen, damit er das Privileg genießen darf, dir gratis und möglichst bequem Bücher jeder Art vorzutragen. Dir ist nicht zu helfen. >2.) Die Sache mit den frei downloadbaren C-Büchern interessiert mich. >Kannst Du hier mal ´n Link oder so posten ? Nö. Jetzt nicht mehr. Such selber.
Giuseppe B. schrieb: > Das ist aber erstens für blutige Anfänger, Wenn du die Bedeutung von .c und .h Files noch nicht kennst dann darfst du dich beruhigt einen blutigen Anfänger nennen. Giuseppe B. schrieb: > zweitens NICHT auf avr-gcc ausgelegt Ein C Buch ist erst mal unabhängig vom Compiler. Ansi-C ist durchaus noch passend. Giuseppe B. schrieb: > 1.) Soll ich Dir das glauben, daß Du wegen jedem Sch*** in die Bücherei > rennst um mal kurz was nachzulesen ? Die meisten hier besitzen mehr als ein Buch in ihrem Regal. Auch im Zeitalter von Facebook und co sind Bücher entgegen mancher Meinung NICHT uncool. Und wenn man die grundlegenden Dinge verstanden hat dann kann man mal schnell im Internet danach suchen Giuseppe B. schrieb: > 2.) Die Sache mit den frei downloadbaren C-Büchern interessiert mich. > Kannst Du hier mal ´n Link oder so posten ? Eine google Suche nach "online buch c" liefert unter anderem http://openbook.galileocomputing.de/c_von_a_bis_z/ Viel Spass beim lernen.
@ Büchereibenutzer Nein ! So war´s nicht gemneint! Klar könnte man sich ´n Buch aus der Bilbliothek auch ausleihen. Bei uns darf man´s dann auch einen ganzen Monat behalten. Aber besser wäre doch ein Buch, das man für immer behalten darf, oder ? Ich BIN bereit zu lernen! Und ich BIN auch bereit mir dafür entsprechendes Lehrmaterial zu KAUFEN ! Ich meinte nur eben in meinem obigen Post, daß es wohl nicht sinnvoll wäre, wegen jedem Problem bei Programmieren alles liegen zu lassen, in die Bibliothek zu fahren ( ca. 15 km) ... ach vergessen wir das... Ich glaube, wir beide verstehen uns nicht richtig. Vermutlich liegt´s an den Formulierungen. Sorry, wenn ich Dich durch meine ungenauen Formulierungen unnötig provoziert hab! @Udo Schmitt Danke für den Link.
Oh man, Guiseppe kommt hier am laufenden Band mit C Tivialfragen rüber. Und in jedem Thread sagt man ihm wieder, er möge doch auch mal in ein C-Buch gucken. Aber er nimmt es nicht ernst. Und es finden sich ja immer wieder Leute hier, die ihm scheinbar gerne das Lesen abnehmen...
Ok, Ok! Ich kauf mir jetzt n Buch und lass euch mit Anfängerfragen in Ruhe! Aber bitte seid nicht mehr böse mit mir! Darf ich dann wieder fragen, wenn´s um Fortgeschrittenen-Fragen geht ?
Ist letztlich egal, wenns kein anderer verstehen muß und dein Compiler mit dir einer Meinung ist. Wie es normalerweise gemacht wird, wurde oben beschrieben.
@Giuseppe Ich denke, es geht nicht um Anfänger- und Fortgeschrittenenfragen. Anfängerfragen sind prinzipiell in Ordnung. Nur hast Du ein kapitales Eigentor erzielt mit "deinem C Buch für blutige Anfänger". Und mal Hand auf Herz. Die Frage hättest Du in Sekundenschnelle durch Recherche im Internet selbst beantworten können.
Ich habe mir in der Zwischenzeit noch mal den ganzen Thread durchgelesen. Gegen Ende waren ja mehrere der Meinung, dass ich ( sinngemäss) mich mehr selbst kümmern sollte als hier irgendwelche Fragen zu stellen, welche eigentlich klar sein sollten. Ok, es stimmt. Ich habe definitiv zu wenige Bücher zuHause, in denen C ausführlich beschrieben wird. Dass ich aber zu Faul zum Lesen bin, stimmt so dann auch nicht. Ich Lese Tutrorials über Tutorials, Threads über Threads, und eben Meinungen über Meinungen... und Jeder sagt was anderes. Am Schluß verstehe ich dann garnichts mehr. Vielleicht lese ich sogar eher zu viel als zu wenig. Aber es ist eben - wie ihr sicherlich auch wisst - nicht so einfach geduldig ein Buch oder ein Online-Tutorial oder so was ähnliches von vorn nach hinten durchzulesen, wenn man gerade an etwas dran ist und einfach schnell weiter kommen möchte. Wie dem auch sei... Für heute wäre ich dann frustriert genug... p.s. wenn ich hier reinschreibe : " ich kauf mir ein Buch..." , dann KAUF ich mir ein Buch.
"Aber,aber... Wer wird denn gleich in die Luft gehen? Greife lieber zu(r) ----" -einem Buch ---(nicht hauen, Rotkäppchen läuft ja schon!); :) Hmm (Gast) und später xfr (Gast) haben doch deine Frage hinlänglich beantwortet; Fnk., in *.c definiert, werden, wenn auch andere Programmteile davon Gebrauch machen,in *.h - files deklariert, um sie dann einfach zu"includen"; man kann ansonsten, wenn dem nicht so ist, diese als _inline, oder Inline oder auch static deklarieren; Mehr kann Dir ein Buch auchnicht sagen(dazu);
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.