Problema scrittura su SD card

Buongiorno,

la SD è saldata sulla board, ho usato un lettore della 3M.
Qua sotto ti allego le foto della mia board.

MCU img1

MCU img2

MCU img3

Per quanto riguarda le schematiche, rimando al link di un mio post di mesi fa, in cui si vedono bene.

Comunque tengo a ribadire che la cosa strana è che con altri software funziona, e soprattutto che nel software in questione funziona solo una volta. Addirittura qualche giorno fa sono riuscito a farlo funzionare correttamente in tutte le sue parti, poi non so cosa ho modificato per farlo smettere di funzionare, ho provato a cercare e cercare a nottate intere, ho provato anche a sostituire la MCU (ne ho 5) e ho cambiato scheda SD (ho provato con una 8GB e una 2GB formattate più volte in FAT16 e FAT32), ho provato a riscrivere quelle parti di codice che sembravano essere colpevoli del "malfunzionamento" ma niente da fare.

Ho scritto questo codice:

#include <Wire.h>
#include <hd44780.h>
#include <hd44780ioClass/hd44780_I2Cexp.h>
#include <SPI.h>
#include <SD.h>

#define LCD_COLS 16
#define LCD_ROWS 2
hd44780_I2Cexp LCD_display;

const uint8_t CS = 8;
const uint8_t cardDetectPin = 26;
const uint8_t writeProtectPin = 27;

File myFile;
const char EVENTS_PATH[] = "/EVENTS/EVENTS.txt";

void setup() {
  pinMode(cardDetectPin, INPUT);
  pinMode(writeProtectPin, INPUT);

  int status = LCD_display.begin(LCD_COLS, LCD_ROWS);
  if(status)
    hd44780::fatalError(status);
  const uint16_t startDisplayDelay = 500;
  delay(startDisplayDelay);

  const uint8_t SDdelay = 250;
  bool SDOK = false;

  while(!SDOK){
    if(digitalRead(cardDetectPin) == LOW){
      if(digitalRead(writeProtectPin) == LOW){
        if(SD.begin(CS)){
          SDOK = true;
        }else{
          LCD_display.setCursor(0, 0);
          LCD_display.print("SD NOT BEGINNED");
          while(!SD.begin(CS));
          LCD_display.setCursor(0, 0);
          LCD_display.print("               ");
          delay(SDdelay);
        }
      }else{
        LCD_display.setCursor(0, 0);
        LCD_display.print("SD PROTECTED");
        while(digitalRead(writeProtectPin) == HIGH);
        LCD_display.setCursor(0, 0);
        LCD_display.print("            ");
        delay(SDdelay);
      }
    }else{
      LCD_display.setCursor(0, 0);
      LCD_display.print("SD NOT PRESENT");
      while(digitalRead(cardDetectPin) == HIGH);
      LCD_display.setCursor(0, 0);
      LCD_display.print("              ");
      delay(SDdelay);
    }
  }

  myFile = SD.open(EVENTS_PATH, FILE_WRITE);
  myFile.write("prova scrittura su SD\r\n");
  myFile.close();

  LCD_display.clear();
  LCD_display.setCursor(0, 0);
  LCD_display.print("OP. RIUSCITA!");
}

void loop() {

}

Questo funziona perfettamente, quindi per certo il problema non è hardware.

Spero in qualche miracolosa soluzione.
Grazie per ora!