Adam P. schrieb:
> Simon schrieb:
>> ich habe das Problem, dass ich in mehreren Geräten jeweils einen
>> Lagesensor unterschiedlich orientiert (nur in 90° Schritten) habe, die
>> Software aber am Besten einheitlich sein sollte.
>
> Falls es sich um die gleiche Schaltung handelt, dann hast du bestimmt
> HW-Rev. Pins am µC vorgesehen (oder ähnliches)?
> Daraus könnte die Firmware erkennen ob sie eine Korrektur vornehmen
> muss.
>
> Sonst wirst du die Geräte wohl Softwaretechnisch kalibrieren müssen,
> also das die Firmware für jedes Baord weiß, ob sie nen Offset zurechnen
> soll.
> Da reicht ja schon eine "bool" Info im Flash/eerpom ob eine Korrektur
> vorgenommen werden muss.
>
> Hoffe ich habe dich da jetzt richtig verstanden.
Ja, das hast du. Vielen Dank.
Das Programm weiß auch wie die Korrekturfaktoren sind.
Ich suche jetzt nur eine elegante Software-Struktur um diese Korrektur
vorzunehmen.
Beispielsweise so:
1 | int16_t lage[3] = {0};
|
2 | static const uint8_t koord_index = { 1, 0, 2};
|
3 | // x y z
|
4 | static const uint8_t koord_sign = {-1, 1, -1};
|
5 | MMA865x_out_xyz(lage);
|
6 | for (uint8_t i = 0; i < 3; i++)
|
7 | {
|
8 | lage[koord_index[i] = lage[koord_index[i] * koord_sign[i];
|
9 | }
|
Problem ist hierbei bezieht sich koord_sign auf die "echten" Koordinaten
oder auf die relativen.
Ich könnte mir aber auch ein
vorstellen.