Forum: Mikrocontroller und Digitale Elektronik Triviales Problem mit return in XC8 Microchip C -


von Martin M. (ats3788)


Lesenswert?

Hallo
Also wenn ich EinTest() aufrufe sollte doch --- 0 ---
zurückkommen, verpasse ich da was in C,
oder ist das ein Problem von MPLAB 3.15
von Microchip.

uint8_t EinTest(void)
{
 return   (0);
}

 while (1) {

      uint8_t dummy2 = EinTest();
        if (dummy2){
            NOP();
            NOP();
        }
        }

von Witkatz :. (wit)


Lesenswert?

Martin M. schrieb:
> oder ist das ein Problem von MPLAB 3.15

Und was ist das Problem? Ich habe deinen Codeschnipsel in Simulation 
getestet, und die Funktion liefert 0 zurück. Was liefert sie bei dir 
zurück?

von Philipp K. (philipp_k59)


Lesenswert?

if (dummy2!=0) oder if (dummy2==0)

Allgemein geht das ja nicht weil uint8_t=0 nicht immer automatisch auf 
Boolsches False gecastet wird. (Andere Ummgebungen, MPLAB kenn ich 
nicht)

Bei uninitialisierter Variable dummy2 könnte if(dummy2) als NULL-Check 
durchgehen.

von Martin M. (ats3788)


Lesenswert?

Also
das tritt wohl nur auf wenn über Interrupt Timer aufgerufen werden !

von Peter II (Gast)


Lesenswert?

Martin M. schrieb:
> das tritt wohl nur auf wenn über Interrupt Timer aufgerufen werden !

volatile Problem?

von Martin M. (ats3788)


Lesenswert?

Danke Philipp K.

Nur so sieht der Orginal Code aus, wo ich bemerkte
das da was nicht stimmt.
Ich habe das vorige Beispiel genommen, weil sonst
gepostet wird das was mit meinen TRIS Ports nicht stimmt

if( get_key_press( KEY1 ))  {
    IO_RE1_Toggle();

    bKey1 = true;
        }

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.