Dateien (Bibliotheken) mehrfach nutzen

Gast #2386046
Lesenswert?

Als Beispiel:

at45db.c :
Datei für den Zugriff auf den AT45 Flash Speicher.
hier befindet sich eine funktion die Daten aus dem Flash liest und
ausgeben soll.

send_flash_to_uart();




main.c:
Das Programm selbst. hier greife ich auf die Funktion in der at45db.c
zu.


Was mache ich das wenn ich nun ein neues Project beginne und möchte 
meine
alte at45db.c wieder nutzen, diesmal jedoch nicht per uart ausgeben 
sondern
per LCD.

Dann benötige ich quasi in der at45db.c wieder eine weitere funktion die 
diesmal aber per LCD ausgibt.


gibt es nicht einen weg, bei der ich die at45db.c ganz allgemein halten 
kann? so das diese ansich immer und immer wieder verwenbar ist?
#2386174
Lesenswert?

Ich kenne deine at45db.c nicht. Aber wenn diese auf die UART zugreift, 
dann ist das "falsch" programmiert.
In der Main kannst du Daten vom Flash holen und diese dann über UART 
abschicken oder am LCD anzeigen. Die at45db.c hat sich nur um das Flash 
zu kümmern, sonst nix.

Ach ja: zeig mal den kompletten Code...
Gast #2386319
Lesenswert?

Genau da liegt mein Problem.

ja sicher könnte ich nun eine Globale variable (z.B. buffer)
dafuer nutzen das die funktion die daten in diesen buffer ablegt
der dann auch von anderen funktionen genutzt werden kann.

Nur der At45DB Flash Speicher hat je Page alleine 256 (264) Bytes und 
wenn die dafuer bei einem ATmega8 einen Buffer im SRAM anlegen soll ist 
der mit einem schlag voll.

Das mit den Funktionspointern klingt schonmal gut.
#2387098
Lesenswert?

Michi schrieb:
> Genau da liegt mein Problem.
>
> ja sicher könnte ich nun eine Globale variable (z.B. buffer)
> dafuer nutzen das die funktion die daten in diesen buffer ablegt
> der dann auch von anderen funktionen genutzt werden kann.
>
> Nur der At45DB Flash Speicher hat je Page alleine 256 (264) Bytes und
> wenn die dafuer bei einem ATmega8 einen Buffer im SRAM anlegen soll ist
> der mit einem schlag voll.
>
> Das mit den Funktionspointern klingt schonmal gut.

Ich verstehe dein Problem dennoch nicht. Ob der Buffer global ist oder 
nicht belegt ja nicht weniger Speicher. Also wirst du deine Funktion 
"send_flash_to_uart();" anders gemacht haben. Vielleicht liest du ja 
byteweise. Dann gibst du halt den Flashinhalt byteweise zurück.

Wo der Vorteil von Funktionspointern liegen soll erschließt sich mir 
nicht.

Um dir wirklich helfen zu können müsste man den kompletten Code sehen.

Ich nutze auch den AT45DB und es geht wirklich, dass die at45db.c sich 
nur um das Flash kümmert.

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