- MultiPlus Wechselrichter Insel und Nulleinspeisung Conrad         
Ergebnis 1 bis 3 von 3

Thema: Auswertung

  1. #1
    Erfahrener Benutzer Roboter Genie Avatar von oderlachs
    Registriert seit
    17.05.2010
    Ort
    Oderberg
    Alter
    74
    Beiträge
    1.175
    Blog-Einträge
    1

    Auswertung

    Anzeige

    E-Bike
    Ich muss 4 analoge Werte auswerten, die nicht einen genauen Wert haben (5V werden über einen Spannungteiler aufgeteilt in 1 Voltschritte). Ich habe da noch nicht allzuviel Erfahrung.
    gehen meine Überlegungen ??
    Code:
    /* Analoge Auswertung
      
      aw = analog.Read (analogPin)
      
        if aw  < 1 
      {
        mache dies... ;
      
      }
      
      else  if aw  < 2 
      {
        mache dies... ;
      }
      
        else if aw  < 3
      {
        mache dies... ;
      }
      
        else if aw  < 4
      {
        mache dies... ;
      }
      
       else {
       ...alles ok ;
       }
    wäre das so syntaxmässig möglich ????


    Gruss Gerhard
    Arduinos, STK-500(AVR), EasyPIC-40, PICKIT 3 & MPLABX-IDE , Linux Mint

  2. #2
    Erfahrener Benutzer Begeisterter Techniker Avatar von Torrentula
    Registriert seit
    10.10.2009
    Ort
    Procyon A
    Beiträge
    355
    Ja das ist so möglich
    MfG Torrentula

  3. #3
    Erfahrener Benutzer Fleißiges Mitglied
    Registriert seit
    09.12.2010
    Ort
    Nähe Wien
    Alter
    34
    Beiträge
    108
    Ich gehe mal davon aus der der "Alles OK" Fall der häufigste ist der eintreten wird.
    Daher würde ich zur optimierung der Rechenzeit den "Alles OK" Fall gleich an oberste stelle der IF-ELSE Abfrage stellen.

    Also eher so:
    Code:
    /* Analoge Auswertung 
         aw = analog.Read (analogPin)        
    if aw  > 4    
    { 
        alles ok;      
    } 
         else  if aw  >3    
    {     
        mache dies... ;   
    }        
    else if aw  >2 
      {     
        mache dies... ; 
      } 
           else if aw  >1 
      {     
        mache dies... ; 
      }       
    else 
    {
        //also kleiner als 1
        mach was anderes;
    }
    Warum das ganze jetzt anders herum?
    In so "einfachen" Abfragen fällt das vielleicht noch nicht so stark ins Gewicht, es schadet aber troztdem nicht, gerade in der µC Programmierung, zumindest Grundlagen der Rechenzeitoptimierung einzubringen.
    Der Ablauf so einer Verzweigung sollte einfach der Warscheinlichkeit der eintretenden Fälle nach sortiert sein, da dann der komplette folgende "Abfrage-Block" ignoriert wird, wenn der Fall schon eingetreten ist.

    Einfaches Beispiel:
    Wir haben einen unsigned-Intager i, welcher theoretisch die Zahlenweite von 0 bis 250 (haben wir uns so limitiert) annehmen kann. Wir füttern unseren Intager mit den Temperaturwerten unseres Wohnraums (normalerweise also so zwischen 20 und 30 Grad Celsius, im Sommer auch mal mehr, im Winter auch mal weniger). Nehmen wir jetzt also an, jede if-Abfrage braucht 1ms (so lang brauchen die nicht, ist mir schon klar, aber nur als Beispiel jetzt) zur Überprüfung und Auswertung.
    Beginnen wir mit unserer Abfrage jetzt bei if (i == 250) und laufen schrittweise nach unten bis 0, dann haben wir also 200 Schritte unnötig gemacht, also 200 ms Rechenzeit sinnlos verschwendet. Beginnen wir aber bei if(i==0), dann machen wir im Durchschnitt vermutlich so 20-25 Abfragen vor dem Ergebnis, also 20-25ms.

    Wenn du also bei deiner Abfrage gleich von Beginn weg das warscheinlichste eintretende Ereignis (also alles funktioniert nach Plan) abfragst, wird keine Rechenzeit verschwendet bevor das Programm wie gewünscht abläuft. Die Rechenzeit wird erst dann aufgewendet, wenn du sie wirklich brauchst weil sich halt irgendwo ein Fehler eingeschlichen hat.

    Hoffe das war jetzt so verständlich formuliert.

Ähnliche Themen

  1. PIR auswertung
    Von avus17 im Forum Sensoren / Sensorik
    Antworten: 5
    Letzter Beitrag: 29.08.2011, 14:06
  2. PT100 auswertung
    Von .:markus:. im Forum Elektronik
    Antworten: 7
    Letzter Beitrag: 04.11.2010, 21:25
  3. Distanzmessung und Auswertung
    Von trialhome im Forum Elektronik
    Antworten: 10
    Letzter Beitrag: 29.10.2007, 15:15
  4. Hilfe bei ADC Auswertung
    Von CorsabMatrix im Forum PIC Controller
    Antworten: 1
    Letzter Beitrag: 09.09.2007, 21:11
  5. VB Com Port Auswertung!
    Von Ringo im Forum PC-, Pocket PC, Tablet PC, Smartphone oder Notebook
    Antworten: 3
    Letzter Beitrag: 11.08.2005, 13:40

Berechtigungen

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

12V Akku bauen