www.mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik Headerstruktur


Autor: Der Matze (naeschd)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hi,

bin ein Neuling in Sachen C und habe ein Problem. Habe auch schon 
ausführlich gegoogelt. Aber bin nicht fündig geworden. Also bitte nicht 
steinigen auch wenn die Frage wahrscheinlich absolut easy für nen 
versierten Programmer ist :-)

Ich habe eine Maindatei (Main.c)
#define F_CPU 8000000UL        //CPU-Speed

#include <avr/io.h>
#include <stdint.h>
#include <util/delay.h>

#include "initialisation.h"    //Mein aufzurufendes Headerfile

int main (void) {         //Hauptprogramm
init_pwm();            //Funktion, welche in der initialisieren.c deklariert wird
return 0;
}
In der initialisation.h führe ich das Prototyping der Funktion durch:
#ifndef _INITIALISATION_H
#define _INITILAISATION_H

void init_pwm(void);
#endif
In der initialisation.c steht:
void init_pwm(void){
  DDRD |= (1 << PD0);
}
Es wird der Fehler ausgegeben, dass DDRD und PD0 unbekannte Befehle 
sind. Typ ist definiert und die IO-Datei für den Typ steht auch in der 
Ressourcenliste links vom AVR-Studio...

Ich denke es liegt daran, dass ich die Struktur falsch angelegt habe. 
Ich möchte es so machen, dass in der .h das Prototyping steht und in der 
.c dann die Deklarierung der Funktion... Könnt ihr mir da helfen wo da 
welches Include reinmuss.

Danke für eure Hilfe!
Matze

Autor: holger (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
>In der initialisation.c steht:

Na dann mach dort auch ein:
#include <avr/io.h>

Autor: Marvin (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Füg mal
#include "initialisation.h"    //Mein aufzurufendes Headerfile
in der "initialisation.c" ein.

Autor: Der Matze (naeschd)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ok das mit dem #include <avr/io.h> hat funktioniert. Aber warum? Die ist 
doch schon in dem Hauptprogramm eingefügt... Oder wirkt sich das Include 
nicht auf nen anderes Include aus?

Ist das mit dem #include "initialisation.h" in der initialisation.c denn 
noch nötig?

Autor: Μαtthias W. (matthias) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Der Matze schrieb:
> Ok das mit dem #include <avr/io.h> hat funktioniert. Aber warum? Die ist
> doch schon in dem Hauptprogramm eingefügt... Oder wirkt sich das Include
> nicht auf nen anderes Include aus?

Das wirkt sich natürlich nur auf die C-Datei aus in der die 
include-Anweisung steht.

> Ist das mit dem #include "initialisation.h" in der initialisation.c denn
> noch nötig?

Nicht zwingend nötig aber hilfreich da der Compiler dann auf 
unterschiedliche Arguntlisten/Rückgabetypen der Implementierung und 
Deklaration prüfen kann.

Generell sollte es dir helfen wenn du dir klar machst das jede C-Datei 
für sich selbst übersetzt wird und nichts über andere C-Dateien "weiß". 
Das einzige was deine main.c von anderen unterscheidet ist das die dort 
vorhandene main-Funktion als Einsprungpunkt nach einem 
Reset/Programmstart verwendet wird.

Matthias

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.