Forum: Mikrocontroller und Digitale Elektronik Übergeben von Werten aus einer Funktion


von Tom (Gast)


Lesenswert?

Hallo miteinander. Ich habe folgendes Problem Ich habe eine Funktion wo 
einen Wert übergibt in einer funktion. Diese übergibt den Wert mit 
"data". Dafür hat es pointer wo den wert übergeben. Jedoch erhalte ich 
den Wert im Main nicht. Kann mir jemand helfen. Ich habe das gefühl ich 
stelle die Variabel data falsch dar. Die funktion Read_information 
funtioniert und bringt mir auch einen Wert.


Code im Haeder
1
uint8_t Test(uint8_t device, uint8_t address, uint8_t *data);

Code im C file von dem Haeder
1
uint8_t Test(uint8_t device, uint8_t address, uint8_t *data)
2
{
3
  //Wert auslesen
4
  *data=Read_information(1);
5
}

Code im Main wo die Variabel "Red" komischerweise 0 beträgt
1
Test(0x70,0x50,Red);

: Verschoben durch Moderator
von Ma S. (turbotorsten)


Lesenswert?

Hallo Tom,

Tom schrieb:
> Code im C file von dem Haederu
>int8_t Test(uint8_t device, uint8_t address, uint8_t *data)
> {
>   //Wert auslesen
>   *data=Read_information(1);
> }

die Funktion hat den Rückgabetyp uint8_t du gibst aber nichts zurück...
das is das erste.

Tom schrieb:
> Code im Main wo die Variabel "Red" komischerweise 0 beträgt
>Test(0x70,0x50,Red);

Nun noch die Adresse der Variable übergeben und der Zeiger schreibt dir 
dann auch den WErt an die Adresse.


1
Test(0x70,0x50,&Red);

von NurEinGast (Gast)


Lesenswert?

Der Compiler gibt keine Warnings aus ?

Ich rate mal
vielleicht steht bei Dir irgendwo

uint8_t  Red;

Dann müsstest Du Test(0x70,0x50,&Red);   aufrufen, damit der Funktion 
auch einen Pointer auf "Red" übergeben wird.

von Tom (Gast)


Lesenswert?

Aber ja nicht im Main. Dort benötigt es dies ja nicht mehr.

von NurEinGast (Gast)


Lesenswert?

> Aber ja nicht im Main. Dort benötigt es dies ja nicht mehr.

Sprich mal in verständlichen Sätzen. Vielleicht sogar mit Beispielen.

von Tom (Gast)


Lesenswert?

Stimmt danke. Mit dem funktionierts.
1
Test(0x70,0x50,&Red);

von Udo S. (urschmitt)


Lesenswert?

Tom schrieb:
> Stimmt danke. Mit dem funktionierts.
> Test(0x70,0x50,&Red);

Weisst du auch warum es funktioniert?

Und warum definierst du die Funktion:
uint8_t Test

hast aber in der Funktion kein return() und prüfst auch beim Aufruf 
nichts ab?

Eigentlich hätten dich die Warnings erschlagen müssen.

von Tom (Gast)


Lesenswert?

Da ich nicht den ganzen Programmcode kopiert habe (wegen verwirrung) 
sondern nur dort wo das Problem liegt und sein kann. Ja im nachhinein 
ist es mir klar wio es dies braucht. Danke nochmals

von Andreas S. (Firma: Schweigstill IT) (schweigstill) Benutzerseite


Lesenswert?

Und wieso ignorierst Du die Compilerwarnungen?

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.