www.mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik Effektivwert optimieren


Autor: Fabian Hof (Firma: keine) (eimer)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hi Leute,

hab da ein Problem mit meinem Effektivwert.

Ich möchte aus drei unterschiedlichen Quellen die Effektivwerte im 
MSP430 ausrechnen, d.h. ich hab 3 ADC Werte.

Jetzt habe ich erstmal einen der 3 Realisiert: Er nimmt mit einem Timer 
8192 Samples zum Quadrat Summiert diese teilt durch 8192 und zieht die 
Wurzel. So sollte der diskrete Effektivwert ja aussehen.

nun zu meinem Problem:

ich hab ein 12 Bit-Wert, dieser wird Quadriert, damit habe ich 24 Bit. 
Das ganze mal 8192 macht 37 Bit und von 37 Bit ne wurzel ziehen ist ja 
schon Ordentlich, und dauert auch ziemlich lange. Zu lang sogar um genau 
zu sein.
~3s Pro 8192.

Jetzt hab ich es mal mit Shiften von 37 auf 32 Bit versucht, also aus 
64Bit eine 32Bit Variable gemacht.
1) Brachte es nicht die gewünschte Geschwindigkeitsverbesserung
2) kommt jetzt ein total falscher Wert raus.

kann ich mir irgendwie nicht erklären.

Bleiben 3 Fragen:

1) Ist Shiften hier Sinnvoll um schneller zu werden?
2) Wie kann ich genau den Fehler herausfinden denn ich dabei mache?
3) Gibt es noch andere Möglichkeiten die Berechnung zu beschleunigen?

[c]#pragma vector=ADC12_VECTOR
__interrupt void ADC12ISR (void)
{
  if(i<8192){
    temp=ADC12MEM0;
    temp1=temp;
    temp1*=temp1;                           // Quadrat
    sum=sum+temp1;                          //Summe
    j++;
  }else{
    temp2=sum>>5;
    RMS=sqrt(sum/j);
    INV=RMS*732.421875E-6;
    //printf("RMS ist: %f",RMS);
    sum=0;
    i=0;
    j=0;
  }
   ADC12CTL0 &= ~ENC;                         // Enable conversions
}[{c]

Autor: Fabian Hof (Firma: keine) (eimer)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Keiner eine Idee?

Autor: Fabio S. (codehamster)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
ev. hilft dir das hier weiter...

MFG Fabio

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.