if-Anweisung vermeiden



  • buell schrieb:

    Ich habe es nun folgend gelöst, finde ich eleganter.

    Dein Code ignoriert jetzt komplett die Defines und macht etwas anderes -> das kann so nicht funktionieren!



  • vergiss es - der Typ glänzt ständig mit besonders "lustigen" Kommentaren.
    Selten noch was sinnvolles von ihm gelesen.

    Naja, er deutet aber auf ein Problem hin.

    Wenn man ein Bit setzt, so muss es auch ggf. wieder löschen.



  • fsdfsdfdsfd schrieb:

    vergiss es - der Typ glänzt ständig mit besonders "lustigen" Kommentaren.
    Selten noch was sinnvolles von ihm gelesen.

    Zum Glück gibt es auf der Welt noch so mutige, tapfere Männer, die zu feige sind ihre posts mit Klarnamen zu versehen. Shame on you.



  • Bitte ein Bit schrieb:

    ]Naja, er deutet aber auf ein Problem hin.

    Wenn man ein Bit setzt, so muss es auch ggf. wieder löschen.

    Danke für die Unterstützung. Meine Kommentare mögen nicht immer die Besten sein, aber einen Grund haben sie nach über 40 Jahren Programmiererfahrung schon.

    EDIT:
    Hab ich jetzt etwas daneben gelegen - es sind nur ca. 35 Jahre.



  • Die Funktion heißt doch Enable_led_x, also warum sollte man da ein Bit löschen wollen (dafür gibt es dann wahrscheinlich Disable_led_x oder so ähnlich)?

    Aber schade, daß buell sich hier nicht mehr meldet (denn, wie ich schon schrieb, kann sein zuletzt geposteter Code gar nicht richtig funktionieren).



  • Th69 schrieb:

    [...] (denn, wie ich schon schrieb, kann sein zuletzt geposteter Code gar nicht richtig funktionieren).

    Erklär bitte mal, warum.

    Ich seh es nicht. 😞



  • Sorry, jetzt verstehe ich seinen Code.
    Ich war noch davon ausgegangen, daß er 1 oder 2 als Parameter übergibt (wie in seinem Original-Code).
    Aber jetzt soll wohl der Aufruf so aussehen:

    Enable_Read_Epc_x(led1);
    

    Ich dachte er geht davon aus, daß wenn er z.B. 1 oder 2 als Parameter übergibt, dann einfach das passende Define genommen wird.



  • Puh...

    War schon überzeugt, dass ich komplett keine Ahnung habe und besser Gärtner werde... 😉



  • Die Funktion heißt doch Enable_led_x, also warum sollte man da ein Bit löschen wollen (dafür gibt es dann wahrscheinlich Disable_led_x oder so ähnlich)?

    Naja, wir befinden uns hier im Mikrocontroller Bereich und setzen das Timer Register. Und ein falsches Bit führt da manchmal gerne zu undefiniertem Verhalten oder Neustart.

    Wenn nun die erste Led eingeschaltet ist und ich aktiviere die zweite Led, so ist zumindestens für einige Takte der Timer auf "Compare output channel 1" und "Compare output channel 2" programmiert. Und ich frage mich ob sich das verträgt.

    Da hilft nur eins: Ein Blick ins die Prozessordokumentation.



  • Th69 schrieb:

    buell schrieb:

    Ich habe es nun folgend gelöst, finde ich eleganter.

    Dein Code ignoriert jetzt komplett die Defines und macht etwas anderes -> das kann so nicht funktionieren!

    Warum funktioniert das so nicht?
    Ich gebe nun einfach led1 ein, bei der Funktion und es ersetzt mir die Variable ledx mit led1, was dem define entspricht.
    Oder was meinst du genau?



  • Ja, ich hatte deinen Code falsch interpretiert, s. meinen letzten Beitrag.
    Schön ist dein Code trotzdem nicht (du solltest die Defines ersetzen durch Konstanten oder Enums).



  • Th69 schrieb:

    Ja, ich hatte deinen Code falsch interpretiert, s. meinen letzten Beitrag.
    Schön ist dein Code trotzdem nicht (du solltest die Defines ersetzen durch Konstanten oder Enums).

    Das mag vllt stimmen, aber die ganzen Bibliotheken von ST sind auch so aufgebaut und der Vorteil der von mir verwendeten Variante ist, dass ich sprechende Namen verwende anstatt TIM_XXXX_YYYY.

    Ich finde das so einfach eleganter.

    Vielen Dank aber euch allen trotzdem für die ganzen Inputs hier.

    Und damit derjenige auch zufrieden ist, der mir eine Frage stellte:
    Ich setze mit dem Befehl in der obigen Funktion die entsprechenden Bits im Register CCER des TIMER1 mittels einer oder-Maskierung mit dem Wert, der hinter der Definition TIM_CCER_CC2E steckt.
    Das war nun lediglich ein Satz :p



  • EOP schrieb:

    Bitte ein Bit schrieb:

    ]Naja, er deutet aber auf ein Problem hin.

    Wenn man ein Bit setzt, so muss es auch ggf. wieder löschen.

    Danke für die Unterstützung. Meine Kommentare mögen nicht immer die Besten sein, aber einen Grund haben sie nach über 40 Jahren Programmiererfahrung schon.

    EDIT:
    Hab ich jetzt etwas daneben gelegen - es sind nur ca. 35 Jahre.

    Ich bin stets über jegliche Art von Inputs froh darum.
    Die Antwort von mir findest du oben 😉



  • War ja nur so eine Frage.


Anmelden zum Antworten