Forum: Mikrocontroller und Digitale Elektronik AVR Pin-Konfiguration externer Code/Headerfiles


von Moritz A. (moritz_a)


Lesenswert?

Hi,

ich habe gerade ein kleines Problem, ein paar Libraries sinnvoll in mein 
Projekt einzubinden, bei welchem ich zwei verschiedene Atmels und 
dementsprechend auch verschiedene Pinkonfigurationen verwende.

Erste Idee war (vereinfacht):
./master/main.c
./slave/main.c
./lib/…

In lib/ landen dann zB pfleurys LCD-Library und NRF24L01 Tutorial, 
eventuell mit leichten Anpassungen, erreichbar über -I../lib/ Allerdings 
bin ich dann darüber gestolpert, dass die in den Librarys fest per 
#define gesetzen Ports natürlich direkt in den .o landen, und ich keine 
Möglichkeit habe diese aus meiner main.c irgendwie passend zu setzen. 
Kann ja auch gar nicht funktionieren, da die Libraries (mit dem 
WinAVR-Makefile) standalone kompiliert werden und nur am Ende passend 
gelinkt.

Und nun stehe ich etwas auf dem Schlauch, wie ich dies am besten löse, 
ich will in den Libraries eigentlich nicht mit Variablen arbeiten, 
sondern schon "von extern" das ganze beim kompilieren beeinflussen.

Ich hoffe, es ist halbwegs klar geworden was ich erreichen will. Gibt es 
irgendeinen Weg, das halbwegs elegant zu bewerkstelligen?

Danke
Moritz

von FelixW (Gast)


Lesenswert?

Hallo Moritz,

erstelle einen extra Header mit allen nötigen Einstellungen in deinem 
Projektordner, configlib.h oder so

In deinen Bibliotheken bindest du die Datei ein mit #include 
"configlib.h"

Eventuell musst du dann im Makefile noch einstellen, dass auch in deinem 
Projektordner nach Headern gesucht wird.
Irgendwas mit INCLUDES = -I".". Kenne mich mit makefiles leider nicht 
aus :/


Grüße Felix

von Moritz A. (moritz_a)


Lesenswert?

Super Idee Felix, so tut es wunderbar. Hätte ich auch selber drauf 
kommen können. Danke :D

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.