Capsense Algorithmus mit fraction Byte

Gast #2207154
Lesenswert?

Hallo.
Ich arbeite mich gerade durch den Capsense Source Code (PSOC3) durch.
Wenn sich der Wert am Sensor ändert,z.b. durch Temperaturschwankung,
soll eine Referenz(SensorBaseline[]) diese folgen.Eigentlich ganz simple
aber trotzdem verstehe ich den Algorithmus nicht:

UpdateSensorBaseline()
{
    uint32 calc;
    uint16 RawData;

   //new sample
   RawData = input;

   /* Make full Baseline 23 bits */
   calc = (uint32) SensorBaseline[sensor] << 8u;
   calc |= (uint32) SensorBaselineLow[sensor];

   /* Add Raw Data to Baseline */
   calc += RawData;

   /* Sub the high Baseline */
   calc -= SensorBaseline[sensor];

   /* Put Baseline and BaselineLow */
   SensorBaseline[sensor] = ((uint16) (calc >> 8u));
   SensorBaselineLow[sensor] = ((uint8) calc);
}
//global deklariert:
uint16 SensorBaseline[max_SENSOR];
//used to store fraction byte of baseline value
uint8 SensorBaselineLow[max_SENSOR];

Warum bildet man nicht einfach die Differenz des Sensorwertes und
der Referenz: RawData - SensorBaseline=Diff. Und addiert Diff anschl.
zur Referenz: Diff+SensorBaseline=SensorBaseline.
Mich verwundert auch der Kommentar:
//used to store fraction byte of baseline value
uint8 SensorBaselineLow[max_SENSOR];
Was soll hier ein fraction Byte bedeuten?
#2207807
Lesenswert?

Christian schrieb:
> Ahh,jetzt machts Sinn. Dankeschön.
> Aber wie komm ich auf : y_n * 256 - y_n = 255?

nicht 255

  y_n * 255

ist ersetzt worden durch

  y_n * 256 - y_n

> Und warum gibt es dort ein fraction Byte: SensorBaselineLow?

Damit man zwar in ganzen Zahlen rechnen kann aber trotzdem sowas wie 
"Kommastellen" hat.

Du kannst ja auch anstelle von in Euro in Cent rechnen.

Anstelle von  3 Euro 80 + 5 Euro 75

     3.80
     5.75
   ------
     9.55

rechnest du einfach

     380
     575
    ----
     955

das heisst dein Ergebnis ist 9 Euro. und die 55 sind das 
'Kleingedruckte', die Nachkommastellen.
Hier halt nicht dezimal, sondern in Form von 8 Bit

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren