Forum: Mikrocontroller und Digitale Elektronik Was ist besser uart.c oder uart.h ?


von Giuseppe B. (brungi)


Lesenswert?

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

von Hmm (Gast)


Lesenswert?

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.

von uC W. (ucwriter)


Lesenswert?

@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?

von Giuseppe B. (brungi)


Lesenswert?

@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.

von Büchereibenutzer (Gast)


Lesenswert?

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

von xfr (Gast)


Lesenswert?

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
}

von uC W. (ucwriter)


Lesenswert?

@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.

von Simon K. (simon) Benutzerseite


Lesenswert?

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.

von Giuseppe B. (brungi)


Lesenswert?

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

von DirkB (Gast)


Lesenswert?

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.

von Büchereibenutzer (Gast)


Lesenswert?

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

von Udo S. (urschmitt)


Lesenswert?

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.

von Giuseppe B. (brungi)


Lesenswert?

@ 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.

von Klaus (Gast)


Lesenswert?

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

von Giuseppe B. (brungi)


Lesenswert?

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 ?

von Abdul K. (ehydra) Benutzerseite


Lesenswert?

Ist letztlich egal, wenns kein anderer verstehen muß und dein Compiler 
mit dir einer Meinung ist.
Wie es normalerweise gemacht wird, wurde oben beschrieben.

von uC W. (ucwriter)


Lesenswert?

@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.

von Giuseppe B. (brungi)


Lesenswert?

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.

von will_auch_mal (Gast)


Lesenswert?

"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
Noch kein Account? Hier anmelden.