Also ich hab mal den Algorithmus nachgebaut (zumindest versucht).

Eigentlich müsste er so laufen, nur ich erhalte als Positionen immer 0 / 0.

Code:
#define Iterations 5
#define LCD_Width 128
#define LCD_Height 64

// Calibration values; set with defaults
ui16_t r0_x = 101;
ui16_t r1_x = 867;
ui16_t r2_x = 848;
ui16_t r3_x = 102;
ui16_t r0_y = 145;
ui16_t r1_y = 150;
ui16_t r2_y = 802;
ui16_t r3_y = 759;



void TPAD_GetPosPrecise(ui8_t *xp, ui8_t *yp)
{
  ui8_t cycle;
  ui16_t x_raw;
  ui16_t y_raw;
  ui32_t main_det;
  double W = 0; // iteration parameter
  double LV_x = 0;  // solving vector X
  double LV_y = 0;  // solving vector Y
  double D_x  = 0;  // det. x
  double D_y  = 0;  // det. y
  double factor_x = 0;
  double factor_y = 0;

  TPAD_GetPos(&xraw, &yraw);

  // calculate constant values for iteration:

  // (r1_x - r0_x) = D20 (Excel cell D20)
  // (r1_y - r0_y) = E20
  // (r3_x - r0_x) = D21
  // (r3_y - r0_y) = E21
  // D = D20 * E21 - E20 * D21
  
  main_det = ((r1_x - r0_x) * (r3_y - r0_y)) - ((r1_y - r0_y) * (r3_y - r0_y));

  // (r - r0) = (x_raw - r0_x) = D23
  // (r - r0) = (y_raw - r0_y) = E23
  // (r0-r1)-(r3-r2) = (r0_x - r1_x) - (r3_x - r2_x) = D24
  // (r0-r1)-(r3-r2) = (r0_y - r1_y) - (r3_y - r2_y) = E24

  // Iteration:
  for (cycle = 0 ; cycle < Iterations ; cycle++)
  {
    LV_x = (x_raw - r0_x) - (W * ((r0_x - r1_x) - (r3_x - r2_x))); // = D31
    LV_y = (y_raw - r0_y) - (W * ((r0_y - r1_y) - (r3_y - r2_y))); // = E31

    D_x = (LV_x * (r3_y - r0_y)) - (LV_y * (r3_x - r0_x)); // = D33
    D_y = (LV_y * (r1_x - r0_x)) - (LV_x * (r1_y - r0_y)); // = E34

    factor_x = D_x / main_det; // = D36
    factor_y = D_y / main_det; // = E37
    W = factor_x * factor_y;
  }

  *xp = (factor_x * (LCD_Width - 1));
  *yp = (factor_y * (LCD_Height - 1));
}
Werd den Fehler natürlich weiter verfolgen.