Switch Case kann nur Case 1?

Hallo,

habe gerade eine kleines Problem mit einer Switch Case Anweisung, welches mir nicht einleuchtet...

Folgende Struktur soll mit Werten gefüllt werden.

struct CURVE_DATA {
  uint8_t Typ;
  uint8_t NO_OF_CURVES;
  uint8_t NO_OF_POINTS_PER_CURVE;
  uint8_t CURVE_DATA[4][2];
  uint8_t Len;
  void load(uint8_t iTyp, uint8_t iNoCurves, uint8_t iNoPoints, uint8_t *iData) {
    Typ = iTyp;
    NO_OF_CURVES = iNoCurves;
    NO_OF_POINTS_PER_CURVE = iNoPoints;
    memcpy(CURVE_DATA, iData, sizeof iData);
  }
}DataArray[15];

Dazu habe ich eine Funktion, die im Setup aufgerufen wird:

void setupMachineType()
{
    uint8_t NO_OF_CURVES = 0;
    uint8_t NO_OF_POINTS_PER_CURVE = 0;
    
    DEBUG_PRINTLN_VALUE_HEX("MType als Hex", MType);   
    switch (MType) {
   
        case 1:                                      // v_twin_270_cam_hallsignal_begin_stroke2
            DEBUG_PRINTLN_VALUE("Case", 1);
            NO_OF_CURVES = 1;
            NO_OF_POINTS_PER_CURVE = 9;
            uint8_t typ1_DATA[ NO_OF_CURVES * NO_OF_POINTS_PER_CURVE ][ 2 ] = {
            {14, 6 },
            {20, 20 },
            {25, 27 },
            {30, 30 },
            {38, 33 },
            {55, 35 },
            {76, 36 },
            {83, 37 },
            {90, 39 }
            };
            DataArray[MType].load(MType, NO_OF_CURVES, NO_OF_POINTS_PER_CURVE, *typ1_DATA);
          break;
        case 2:                                      // v_twin_270_crank_hallsignal_mid_stroke1
            DEBUG_PRINTLN_VALUE("Case", 2);
            NO_OF_CURVES = 1;
            NO_OF_POINTS_PER_CURVE = 9;
            uint8_t typ2_DATA[ NO_OF_CURVES * NO_OF_POINTS_PER_CURVE ][ 2 ] = {
            {14, 6 },
            {20, 20 },
            {25, 27 },
            {30, 30 },
            {38, 33 },
            {55, 35 },
            {76, 36 },
            {83, 37 },
            {90, 39 }
            };
            DataArray[MType].load(MType, NO_OF_CURVES, NO_OF_POINTS_PER_CURVE, *typ2_DATA);
          break;   

Es gibt noch weitere Fälle, aber das wiederholt sich mit immer anderen Werten.

Die Variable MType ist ein uint8_t

Ich hoffe, ihr seht, was mir entgeht..

VG
Matze

ich sehe nur, dass dein case 1 und case 2 die werte vermutlich mit gleichen Werten befüllt.

Du musst schon ein minimales beispiel geben das für uns auch kompiliert und auch genau beschreiben was dein Problem genau ist.

Du hast in der struct ein Element
uint8_t CURVE_DATA[4][2];
und überschreibst das (8 Byte) mit etwas größerem.

Da kann passieren was will.

Was du eigentlich willst, ist mir übrigens nicht klar.
Zweidimensionale Arrays sind übrigens selten sinnvoll.