-         

Ergebnis 1 bis 8 von 8

Thema: Was strengt einen Controller an?

  1. #1
    Erfahrener Benutzer Roboter Genie Avatar von Willa
    Registriert seit
    26.10.2006
    Ort
    Bremen
    Alter
    37
    Beiträge
    1.269

    Was strengt einen Controller an?

    Anzeige

    Hallo!
    Sorry für den Titel, mir fällt keine kurze, passende Beschreibung meiner Frage ein.... Ist ja auch schon spät und Ostern und so.....

    Ich würde gerne folgendes wissen:

    Angenommen in einem ATmega steht folgender PseudoCode

    Code:
    if A = 1 then
      Y=sin(x)^10*PI*cos(y)^e*.....*.....*....
    end if
    ist es dem Controller dann absolut egal was zwischen if und endif steht solange A <> 1 ? Wenn A also <> 1 wird dann durch diese lange Kalkulation keine Rechenzeit verbraucht?
    Ich würde das gerne wissen weil ich in der Hauptschleife eine Taste per Inkey() abfrage und danach dann viele Select Case Fälle kommen. Diese ganze Abfrage soll aber möglichst keine Rechenzeit verbrauchen, da der ATmega32 nebenbei einen Stepper im 1/16 Mikroschritt antreibt und ein dementsprechend schnelles Clocksignal erzeugt bzw. ziemlich ausgelastet ist.

    Vielen Dank für eure Antworten,
    viele Grüße,
    William

  2. #2
    Erfahrener Benutzer Robotik Einstein Avatar von Dirk
    Registriert seit
    30.04.2004
    Ort
    NRW
    Beiträge
    3.791
    Ja, wenn A <> 1 ist, wird die lange Formel übersprungen (nicht ausgeführt).

    Gruß Dirk

  3. #3
    Erfahrener Benutzer Roboter Genie Avatar von Willa
    Registriert seit
    26.10.2006
    Ort
    Bremen
    Alter
    37
    Beiträge
    1.269
    Danke, das ist ja prima
    Gibt es eigentlich einen Unterschied ob man fragt
    if A = true then ...
    und
    if A <> false then ...

    Beim ersten Fall muss der µC ja gucken ob A genau "true" ist, beim zweiten Fall muss er ja "nur" gucken ob A irgendetwas anderes als "false" ist.
    Sorry für die evtl. leicht bescheuert anmutenden Fragen, aber ich bin programmiertechnisch relativ ahnungsbefreit...

    Viele Grüße,
    William

  4. #4
    Erfahrener Benutzer Robotik Einstein
    Registriert seit
    06.02.2005
    Ort
    Hamburg
    Alter
    31
    Beiträge
    4.255
    Das kommt ganz drauf an, was A für ein Datentyp ist. Am schnellsten testet sich theoretisch (Assembler), ob ein Register gleich oder ungleich Null ist. Aber was dein Compiler draus macht, muss du im Listfile nachschauen.
    [Der Unterschied dürfte aber nur wenige Takte ausmachen].

  5. #5
    Erfahrener Benutzer Robotik Einstein Avatar von Jaecko
    Registriert seit
    16.10.2006
    Ort
    Lkr. Rottal/Inn
    Alter
    35
    Beiträge
    1.987
    in C soll man statt "a == TRUE" auch mal eher "a != FALSE" verwenden; FALSE ist immer 0, TRUE aber manchmal 1, manchmal -1, 0xFF,... irgendwas ungleich 0 eben.
    #ifndef MfG
    #define MfG

  6. #6
    Moderator Robotik Visionär Avatar von radbruch
    Registriert seit
    27.12.2006
    Ort
    Stuttgart
    Alter
    54
    Beiträge
    5.782
    Blog-Einträge
    8
    Noch eine Ergänzung weils grad gut passt: Bei mehrfachen Verknüpfungen wird sofort abgebrochen wenn das Ergebniss nicht mehr true werden kann:

    if (a*wurzel(x)-sin(y) < b) && (a!=0)

    Der Unsinn wird immer ausgerechnet, aber

    if (a!=0) && (a*wurzel(x)-sin(y) < b)

    berechnet nix wenn a==0 :)

    Irgendwo habe ich das mal aufgeschnappt:

    false=(1==0);
    true=!false;

    Wie der Kompiler das speichert ist nicht festgelegt.

    Gruß

    mic

    Atmel’s products are not intended, authorized, or warranted for use
    as components in applications intended to support or sustain life!

  7. #7
    Erfahrener Benutzer Roboter-Spezialist
    Registriert seit
    30.01.2005
    Ort
    Tokyo
    Alter
    59
    Beiträge
    242
    Es gibt aber auch Compiler, die rechnen erst gnadenlos alles aus, was in der If Bedingung steht. (VB macht das z.B. so). Was Bascom daraus macht, weiß ich nicht.
    Wenn man also sicher gehen will: IFs verschachteln und außen die Bedingung abfragen, die am einfachsten und deren Erfüllung am unwahrscheinlichsten ist.

    Gruß
    pctoaster
    Gruß
    pctoaster

  8. #8
    Erfahrener Benutzer Roboter Genie Avatar von Willa
    Registriert seit
    26.10.2006
    Ort
    Bremen
    Alter
    37
    Beiträge
    1.269
    Super, da ist ja jetzt einiges an Tipps zusammengekommen. Vielen Dank!
    William

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •