Return mit uint32_t will nicht funktionieren

Gast #284843
Lesenswert?
• ▲
▼
Hi,
ich hab nochmal eine Frage, also ich habe hier eine Funktion gemacht
die
ein uint32_t zurückgeben soll.
1
uint32_t getentry(unsigned short entry, unsigned char *buf){
2
.
3
.
4
.
5
.
6
filesize = *((uint32_t *)&minibuf[0]); //<---filesize hier noch
7
korrekt
8

9
return(filesize);
10
}
11

12
//Wenn ich das ganze nun als Funktion aufrufe :
13
uint32_t z;
14
z = getentry(a,&filename[0]); 
15

16
//dann bekomme ich zwar etwas zurück, allerdings total andere Zahlen..

So ich hoffe das mit dem Highlighting klappt... :)
Ram hab ich sicherlich noch genug übrig(mega32) und ich brauche im
Moment davon nur 512 byte als buffer und einige andere uint32_t.

Nik
#284844
Lesenswert?
• ▲
▼
Mit dem gezeigten Code kann man noch keine Aussage
treffen. Poste mal etwas mehr.

Ideal waere:
  Ein vollstaendiges, compilierbares Program, das
  besagten Fehler zeigt und so kurz als moeglich ist.

Es ist naemlich moeglich das Dein Problem in Wirklichkeit
ganz woanders zu suchen ist und Du hier nur die Auswirkungen
des Fehlers siehst.
Gast #284846
Lesenswert?
• ▲
▼
@Karl

Kein Problem, hab ich mal angehängt :)
Ich hab nur den Ausschnitt gepostet, da der Rest eigentlich nichts zur
Sache beiträgt, mein Problem verhält sich etwa so:(pseudocode)
1
uint32_t showvar()
2
{
3
uint32_t variable = 5000;
4

5
uart_print(variable); //hier richtig ausgegeben
6

7
return(variable);
8
}
9

10
main()
11
{
12
uint32_t z;
13
z = showvar()
14

15
uart_print(z); // hier falsch ausgegeben
16
}
@Jörg

Der Wert wird benutz und ist auch in einem Moment 128, dann vergleiche
ich den Rückgabewert ausserhalb der Funktion mit 128 nach jedem
funktionsaufruf, aber da bekomme ich dann immer false :(
Angehängte Dateien:
Gast #284847
Lesenswert?
• ▲
▼
Hallo Nik,

tritt das Problem bei der Funktion getentry aus der Datei fat.c auf?

Darin gibst du zwar den Wert der Variable filesize über den UART aus,
der Rückgabewert kommt aber aus der Variable clusterbegin.
Gast #284848
Lesenswert?
• ▲
▼
Argh hoppla,da hab ich vergessen alles von filesize auf clustersize zu
ändern. Nun hab ich alles auf clustersize geändert, natürlich daselbe
Ergebniss wie vorher, als alles 'filesize' war :(
Gast #284849
Lesenswert?
• ▲
▼
Immer liegts an solch etwas kleinem, hab folgendes in der fat.h
vergessen: extern uint32_t getentry(unsigned short entry, unsigned char
*buf);

Nun klappts einwandfrei. Was ich damit am Ende erreichen will sind
einige standard C funktionen wie fopen, fread ...Ich hab auch schon
eine
Idee wie man nahezu unbegrenzt(4bytes ram/datei notwendig) viele
Dateien gleichzeitig geöffnet haben kann :)
fopen gibt den Cluster bei dem die Datei anfängt zurück und schon gehts
rund...

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