Header Datei für Konfiguration erstellen

Gast #4148886
Lesenswert?

Guten Abend,

ich habe eine Frage und im Netz keine Antwort so richtig gefunden.
Ich möchte gerne die Konfiguration meines Controllers in eine .h Datei 
auslagern, damit ich mein C-File gut und schnell portieren kann, wenn es 
nötig werden sollte. Aber ich habe im Netz nicht gefunden, was mir 
weitergeholfen hat. Wahrscheinlich suche ich mit den falschen 
Schlagwörtern.

Hat jemand einen Tipp wo ich schauen kann?

Danke im Voraus.
Gast #4148897
Lesenswert?

Ich suche nach einer Erklärung wie man so eine .h Datei richtig 
ertstellt, in der die Konfig enthalten ist.

Peter II schrieb:
> Schreibt doch einfach deine Konfig rein und
> inkludiere die Datei.

Das habe ich gemacht, bekomme aber ein Fehler beim compelieren. Mein 
include ist an erster Stelle.
Gast #4148898
Lesenswert?

Eugen.S schrieb:
> Peter II schrieb:
>> Schreibt doch einfach deine Konfig rein und
>> inkludiere die Datei.
>
> Das habe ich gemacht, bekomme aber ein Fehler beim compelieren. Mein
> include ist an erster Stelle.

dann zeig doch mal was du gemacht hast, und welche Fehlermeldung kommt.
Gast #4148916
Lesenswert?

Was du unter Konfiguration versteht ist etwas merkwüdig.

> #define F_CPU 8000000UL
sollte man direkt im Projekt/Makefile einstellen.

> PORTB = (1<<PB7);
das ist kein Konfiguration.

da kann man z.b.
1
#define LED_PORT PORTB
2
#define LED_PIN PB7

und in der C Datei schreibt man dann.

LED_POR = (1<<LED_PIN):

dann würde das sinn machen.
Gast #4148928
Lesenswert?

Peter II schrieb:
> Was du unter Konfiguration versteht ist etwas merkwüdig.

Und was ist da genau merkwürdig? Ich versuche mal zu erklären was das 
Ziel ist. Ich will den Code der C Dateil von dem Cotroller Typ zu 
entkoppeln. Ggf ist der Ansatz auch falsch aber das war jetzt eine Idee 
wie ich es machen könnte.
>
>> #define F_CPU 8000000UL
> sollte man direkt im Projekt/Makefile einstellen.
Ist diese Angabe nicht Controller abhängig? Sie trifft sicher auf viele 
Controllermodele zu aber kann sich ja auch mal ändern oder?
>
>> PORTB = (1<<PB7);
> das ist kein Konfiguration.
>
> da kann man z.b.
> #define LED_PORT PORTB
> #define LED_PIN PB7
Diese wollte ich in der C Datei ganz am Anfang machen und nicht in der H 
Datei.
>
> und in der C Datei schreibt man dann.
>
> LED_POR = (1<<LED_PIN):
>
> dann würde das sinn machen.

Das ist mir soweit klar.
Gast #4148939
Lesenswert?

Eugen.S schrieb:
> Die Fehlermeldung ist, dass derartige Datei nicht exestiert aber wenn
> ich den include schreibe dann bittet Atmel Studio mir die Datei an.
>
> Das ist der Name: AT90USB162.h

dann hast du sie im falschen Verzeichnis oder die include paths sind 
nicht passend.

> Ist diese Angabe nicht Controller abhängig? Sie trifft sicher auf viele
> Controllermodele zu aber kann sich ja auch mal ändern oder?
ja, aber warum sollte man den Quellcode ändert nur weil man einen 
anderen Quarz hat.

Außerdem besteht die Gefahr, das man die include irgendwo vergisst und 
schon gibt es Probleme.

> #define LED_PORT PORTB
> #define LED_PIN PB7
Diese wollte ich in der C Datei ganz am Anfang machen und nicht in der H
Datei.
>
das ist doch aber die Konfiguration, also die Anpassung an die konkrete 
Hardware.

> PORTB = (1<<PB7);
das ist nur eine Initialisierung und keine Konfiguration.

Außerdem bekommt du schon ein Problem mit der Reihenfolge. PORTB ist 
noch nicht bekannt, weil du
1
#include <avr/io.h>
danach eingebunden hast.
Gast #4148954
Lesenswert?

Eugen.S schrieb:
>>
>> da kann man z.b.
>> #define LED_PORT PORTB
>> #define LED_PIN PB7
> Diese wollte ich in der C Datei ganz am Anfang machen und nicht in der H
> Datei.

...das heißt wenn du zu einer anderen Hardware wechselst und deine LED 
an einem anderen Port liegt dass du wieder in deiner .c rumwerkeln 
musst. Eben genau was du nicht wolltest. Für genau so etwas ist aber der 
Header da. Für Definitionen.

In einem guten C-Buch(!) sollten auch header und preprocessor vorkommen. 
Das kann ich weiterempfehlen ;)

Zu deinem Problem wäre es übrigens überaus hilfreich den kompletten 
Quelltext und die Fehlermeldung im Wortlaut zu haben, alles andere ist 
Rätselraten.

Gruß Möwe
Gast #4149140
Lesenswert?

Eugen.S schrieb:
> Ich will den Code der C Dateil von dem Cotroller Typ zu
> entkoppeln.

Ich bin da relativ weit gekommen. Ich habe jeweils eine Headerdatei 
main.c. Da werden alle uc-abhängigen Konfigurationen aufgerufen. mit 
_zucMain.h geht es dann uc-übergreifend weiter.
Angehängte Dateien:

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren