Gast
#2207154
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?