Raspberry Pi Pico disconnects after uploading code

Hello:

I'm developing a device meant to diagnose serial communication. It's supposed to send a known frame, read it back via serial1 and do the comparison. I need to use a I2C 20x4 liquid cristal display to show results. I made a simple test sketch, using Serial1, Serial2 and the display, uploaded it to the Pico and it worked just fine. However, when I uploaded a more advanced sketch, including a test routine, everything went south: The device does nothing, LCD shows nothing, and Windows complaints that it does not recognize the USB device.

The following sketch works fine:

#include <Arduino.h>
#include <LiquidCrystal_I2C.h>
LiquidCrystal_I2C lcd(0x27,20,4);  // Define la direccion del LCD a 0x27 para una pantalla de 20 caracteres y 4 lineas

#ifndef LED_BUILTIN
#define LED_BUILTIN 13
#endif

#define P_VELOCIDAD   15
#define P_MODO        28
#define P_FUNCION     27
#define P_DURACION    26
#define P_PRUEBA      22
#define OUT01         16
#define RTS1          2
#define CTS1          3
#define RTS2          6
#define CTS2          7
#define LED_V1        8
#define LED_V2        9
#define LED_M1        10
#define LED_M2        11
#define LED_F         12
#define LED_D1        13
#define LED_D2        14
#define LED_TX1       18
#define LED_RX1       19
#define LED_TX2       20
#define LED_RX2       21

volatile bool   seq1[10] = {1,0,0,0,0,0,0,0,0,0};
volatile bool   seq2[10] = {1,1,1,1,1,0,0,0,0,0};
volatile bool   seq3[10] = {1,0,1,0,1,0,1,0,1,0};
volatile bool   seq4[10] = {1,1,1,0,0,0,0,0,0,0};

volatile bool   flag_test = false;
volatile int    seq_ctr = 0;

volatile int    tick_ctr = 0;
volatile bool   flag_1_s = false, flag_3_s = false;
volatile int    i = 0;
char            line[64];


unsigned long previousMillis = 0;  // will store last time LED was updated
const long interval = 50;  // interval at which to blink (milliseconds)


/////////////////////////////////////////////////
///// Manejador de interupcion pin P_PRUEBA /////
/////////////////////////////////////////////////

void PRUEBA_ISR()
{
  if(flag_test == false)
    flag_test = true;
  else if(flag_test == true)
    flag_test = false;
}

void setup() 
{
  // initialize digital pin LED_BUILTIN as an output.
  pinMode(LED_BUILTIN, OUTPUT);
  pinMode(P_VELOCIDAD,INPUT);
  pinMode(P_MODO,INPUT);
  pinMode(P_FUNCION,INPUT);
  pinMode(P_DURACION,INPUT);
  pinMode(P_PRUEBA,INPUT);
  pinMode(RTS1, OUTPUT);
  pinMode(CTS1,INPUT);  
  pinMode(RTS2, OUTPUT);
  pinMode(CTS2,INPUT);
  pinMode(LED_V1,OUTPUT);
  pinMode(LED_V2,OUTPUT);
  pinMode(LED_M1,OUTPUT);
  pinMode(LED_M2,OUTPUT);
  pinMode(LED_F,INPUT);   // LEDS función apagados al principio (MODO = 0)
  pinMode(LED_D1,OUTPUT);
  pinMode(LED_D2,INPUT);  // LEDS 120 y 180 [s] apagados al principio
  pinMode(LED_TX1,OUTPUT);
  pinMode(LED_RX1,OUTPUT);
  pinMode(LED_TX2,OUTPUT);
  pinMode(LED_RX2,OUTPUT);
 
  pinMode(LED_BUILTIN, OUTPUT);
  digitalWrite(LED_BUILTIN, LOW);
  flag_test = false;

  lcd.init();                      // initialize the lcd
  lcd.backlight();

  // Configurar interrupciones de pulsación 
  attachInterrupt(digitalPinToInterrupt(P_PRUEBA), PRUEBA_ISR, FALLING);

  Serial.begin(9600);
  Serial1.begin(1200);
  Serial2.begin(1200);

  digitalWrite(LED_F,false);
  digitalWrite(LED_D1,false);
  digitalWrite(RTS1, true);
  digitalWrite(RTS2, true);
}

void loop() 
{
  unsigned long currentMillis = millis();

  if (currentMillis - previousMillis >= interval) 
  {
    // save the last time you blinked the LED
    previousMillis = currentMillis;

    if(!flag_test)
      digitalWrite(LED_BUILTIN,seq1[seq_ctr]);
    else
      digitalWrite(LED_BUILTIN,seq3[seq_ctr]);

    seq_ctr++;

    if(seq_ctr>10)
    {
      flag_1_s = true;
      seq_ctr = 0;
    }
  }


  //lcd.setCursor(col, row);
  lcd.setCursor(0,0);
  lcd.print("TEST");

  lcd.setCursor(0,1);
  lcd.print("RPI Pico");

  lcd.setCursor(0,2);
  
  if(flag_test == true)
    sprintf(line,"flag_test = true    ");
  else if(flag_test == false)
    sprintf(line,"flag_test = false   ");
  ////////////////01234567890123456789
  lcd.print(line);


  lcd.setCursor(0,3);
  lcd.print("Counter: ");

  lcd.setCursor(10,3);
  lcd.print("   ");
  lcd.setCursor(10,3);
  lcd.print(i,DEC);

  if(flag_1_s == true)
  {
    sprintf(line, "i = %02d", i);
    Serial.println(line);

    digitalWrite(LED_TX1, true);
    digitalWrite(LED_TX2, true);
    Serial1.println(line);
    Serial2.println(line);
    digitalWrite(LED_TX1, false);
    digitalWrite(LED_TX2, false);

    i++;

    if(i==30)
      i = 0;

    flag_1_s = false;    
  }
}

I have the code which breaks stuff, but I'll put it in another post, so it doesn't appear as if i'm spamming the forum.

This is driving me crazy, as i don't understand why does it fail...

Best regards,
Fenhasan

So this is the non-working code:

#include <Arduino.h>
#include <LiquidCrystal_I2C.h>
LiquidCrystal_I2C lcd(0x27,20,4);  // Define la direccion del LCD a 0x27 para una pantalla de 20 caracteres y 4 lineas


//#include <mbed.h>

#define P_VELOCIDAD   15
#define P_MODO        28
#define P_FUNCION     27
#define P_DURACION    26
#define P_PRUEBA      22
#define OUT01         16
#define RTS1          2
#define CTS1          3
#define RTS2          6
#define CTS2          7
#define LED_V1        8
#define LED_V2        9
#define LED_M1        10
#define LED_M2        11
#define LED_F         12
#define LED_D1        13
#define LED_D2        14
#define LED_TX1       18
#define LED_RX1       19
#define LED_TX2       20
#define LED_RX2       21

#define FRAME_SIZE    30  


String inputString = "";      // a String to hold incoming data
bool stringComplete = false;  // whether the string is complete

String inputString1 = "";      // a String to hold incoming data
bool stringComplete1 = false;  // whether the string is complete


volatile bool flag_out = false;
volatile bool flag_tx = false;
volatile int seq_ctr = 0, switch_ctr = 0, test_ctr = 0; 
int max_counter = 500;
volatile bool flag_speed = false;
volatile bool flag_mode = false;
volatile bool flag_function = false;
volatile bool flag_duration = false;
volatile bool flag_test = false;
volatile bool seq1[10] = {1,0,0,0,0,0,0,0,0,0};
volatile bool seq2[10] = {1,1,1,1,1,0,0,0,0,0};
volatile bool seq3[10] = {1,0,1,0,1,0,1,0,1,0};
volatile bool seq4[10] = {1,1,1,0,0,0,0,0,0,0};
volatile bool flag_seq = false, flag_100ms = false;
volatile bool CTS1_STATUS = false, CTS2_STATUS = false; 
volatile int VELOCIDAD = 0, MODO = 0, FUNCION = 0, DURACION = 0;
volatile int lcd_delay = 1000; 
volatile bool flag_test_running = false;
volatile int i = 0, j = 0, timeout = 0, n = 50;
char test_string[25] = "Prueba de comunicaciones";
String TestString = "Prueba de comunicaciones";
char tx_buffer[64], rx_buffer[64], test_buffer[64];
char data = 0;
volatile int buffer_ctr = 0, diff_ctr = 0;
volatile bool flag_diff = false;
volatile int msg_ctr = 0;
volatile int tx_ctr = 0, rx_ctr = 0, ptt_ctr = 0, aux_ctr = 0;
volatile int frame_tx_ctr = 0, frame_rx_ctr = 0, frame_number = 0;
volatile int good_frame_ctr = 0, bad_byte_ctr = 0;
char line[64];
int d = 100;
volatile bool flag_tx_frame = false, flag_rx_frame = false;
volatile bool flag_aux_ctr = false;
volatile bool flag_cts1_fail = false, flag_cts2_fail = false;
volatile bool flag_rx1_fail = false, flag_rx2_fail = false;    
volatile bool flag_rx1_end = false;
volatile bool flag_remote_tx_ready = false;
volatile int  ctr_10_seg = 0;
volatile bool flag_10_seg = false;
volatile bool flag_test_break = false;
volatile int test_break_ctr = 0;
volatile bool flag_debug = true;
volatile bool flag_buffer1_ready = false;
volatile int  rx_buffer_ctr = 0;
volatile bool flag_frame_tx_ready = false;
volatile bool flag_test_interrupted = false;
volatile bool flag_test_finished = false;
volatile bool flag_frame_rx_ready = false;

volatile char num[10], aux[64];
volatile int  n_frame = 0;
volatile int  buffer_compare_ctr = 0;

unsigned long previousMillis = 0;  // will store last time LED was updated
const long    interval = 100;  // interval at which to blink (milliseconds)


/////////////////////////////////////////////////
///// Manejador de interupcion pin P_PRUEBA /////
/////////////////////////////////////////////////

void PRUEBA_ISR()
{
  if(flag_test == false)
    flag_test = true;

  test_break_ctr = 0;
  flag_test_break = false;
}


/////////////////////////////////////////////
///// Manejador de interupcion pin CTS1 /////
/////////////////////////////////////////////

void CTS1_ISR()
{
  if(digitalRead(CTS1) == false)
    CTS1_STATUS = true;
  else
    CTS1_STATUS = false;
}



void setup() 
{
  // initialize digital pin LED_BUILTIN as an output.
  pinMode(LED_BUILTIN, OUTPUT);

  pinMode(P_PRUEBA,INPUT);
  pinMode(RTS1, OUTPUT);
  pinMode(CTS1,INPUT);  
  pinMode(LED_TX1,OUTPUT);
  pinMode(LED_RX1,OUTPUT);
  attachInterrupt(digitalPinToInterrupt(P_PRUEBA), PRUEBA_ISR, FALLING);
  attachInterrupt(digitalPinToInterrupt(CTS1), CTS1_ISR, CHANGE);


  // put your setup code here, to run once:
  // initialize serial communications at 9600 bps:
  Serial.begin(9600);
  Serial1.begin(1200);

  digitalWrite(RTS1, true);
}

void loop() 
{
  unsigned long currentMillis = millis();

  if (currentMillis - previousMillis >= interval) 
  {
    // save the last time you blinked the LED
    previousMillis = currentMillis;

    if(!flag_test)
      digitalWrite(LED_BUILTIN,seq1[seq_ctr]);
    else
      digitalWrite(LED_BUILTIN,seq3[seq_ctr]);

    seq_ctr++;

    if(seq_ctr>10)
      seq_ctr = 0;


    if(digitalRead(P_PRUEBA)==false)
    {
      test_break_ctr++;
    }

    if(test_break_ctr>=20)
    {
      flag_test_break = true;
      test_break_ctr = 0; 
    }

    frame_rx_ctr++;
    
    if(frame_rx_ctr == 30)
    {
      flag_frame_rx_ready = true;
      frame_rx_ctr = 0;
    }       

    ctr_10_seg++;

    if(ctr_10_seg == 100)
    {
      ctr_10_seg = 0;
    }
  }  

  /////////////////////////////////
  ///// Dispositivo en espera /////
  /////////////////////////////////

  if(flag_test == false)
  {    
    lcd.setCursor(0,0);
    lcd.print("Dispositivo listo   ");
             //0123456789abcdef0123  Referencia del ancho del display LCD
    lcd.setCursor(0,1);
    lcd.print("                    ");

    lcd.setCursor(0,2);
    lcd.print("                    ");

    lcd.setCursor(0,3);
    lcd.print("                    ");   
  }


  ////////////////////////////////////
  ///// SE DA INICIO A LA PRUEBA /////
  ////////////////////////////////////

  if(flag_test == true)
  {
    if((flag_test_running == false) && (flag_cts1_fail == false) && (flag_frame_tx_ready == false) && (flag_test_interrupted == false))
    {
      flag_test_running = true;
      flag_frame_tx_ready = false;
      flag_frame_rx_ready = false;
      buffer_compare_ctr = 0;

      Serial.print("\nPrueba en proceso");

      digitalWrite(RTS1,false);
      timeout = 0;

      if(flag_debug == true)
        Serial.print("\nEsperando CTS1"); 

      while((CTS1_STATUS==false)&&(timeout<20))
      {
        delay(100);
        timeout++;
      }

      if((flag_test_running==true) && (CTS1_STATUS==true))
      {
        if(flag_debug == true)
          Serial.print("\nCTS1 recibido");
        
        flag_cts1_fail = false;
      }
        
      else
      {
        if(flag_debug == true)
          Serial.print("\nCTS1 no recibido");
        
        flag_cts1_fail = true;
      }
      
      i = 1;
      
      if(flag_debug == true)
        Serial.print("\nInicio envio de tramas");

      for(j=0; j<64; j++)
        rx_buffer[i] = 0;

      //////////////////////////////////////////////
      ///// Limpiar buffer de recepción serial /////
      //////////////////////////////////////////////

      while(Serial1.available()>0) 
      {
        Serial1.read();
      }

      flag_buffer1_ready = false;
      frame_rx_ctr = 0;
    }


    /////////////////////////////
    ///// ENVIAR LAS TRAMAS /////
    /////////////////////////////

    if((flag_test_running == true) && (flag_cts1_fail == false) && (flag_frame_tx_ready == false) && (flag_test_interrupted == false))
    {
      sprintf(tx_buffer,"%s %04d\n",test_string,i);
      Serial1.print(tx_buffer);

      if(flag_debug == true)
      {
        sprintf(line,"\nTrama %04d enviada",i);
        Serial.print(line);
      }

      if(i==1)
      {
        while(Serial1.available()==0)
          delay(10);

        delay(500);
      }

      i++;
    
      delay(100);
      frame_rx_ctr = 0;

      if(i>n)
      {
        flag_frame_tx_ready = true;
        
        if(flag_debug == true)
          Serial.print("\nTodas las tramas fueron enviadas");

        //delay(100); // SOLO PARA PRUEBA
        digitalWrite(RTS1,true);  
      }

      if(flag_test_break == true)
      {
        flag_test_break = false;
        flag_test_interrupted = true;        
        
        if(flag_debug == true)
          Serial.print("\nPrueba interrumpida");

        digitalWrite(RTS1,true);  
      }      

    }


    //////////////////////////////////////////
    ///// Terminar la prueba normalmente /////
    //////////////////////////////////////////

    if((flag_test_running == true) && (flag_frame_tx_ready == true) && (flag_frame_rx_ready == true))
    {
      if(flag_debug == true)
        Serial.print("\nEstamos listos, todo OK");
      
      flag_test_running = false;
      flag_test_finished = true;
    }    


    ///////////////////////////////////////////////
    ///// Terminar la prueba por falla de PTT /////
    ///////////////////////////////////////////////

    if((flag_test_running==true) && (flag_cts1_fail==true))
    {
      if(flag_debug == true)
        Serial.print("\nCTS1 no fue recibido");
      
      flag_test_running = false;
      flag_test_finished = true;
    }


    ///////////////////////////////////////////////
    ///// Terminar la prueba por interrupción /////
    ///////////////////////////////////////////////

    if((flag_test_running==true) && (flag_test_interrupted==true))
    {
      if(flag_debug == true)
        Serial.print("\nPrueba interrumpida");
      
      flag_test_running = false;
      flag_test_finished = true;
    }


    ////////////////////////////////
    ///// Término de la prueba /////
    ////////////////////////////////

    if((flag_test_running == false) && (flag_frame_rx_ready == true))
    {
      ////////////////////////////////////////
      ///// Prueba efectuada normalmente /////
      ////////////////////////////////////////

      if(flag_frame_tx_ready==true)
      {
        if(flag_debug == true)
          Serial.print("\nPrueba ejecutada OK");

        flag_frame_tx_ready = false;
      }

      /////////////////////////////////////////////
      ///// Prueba fallida por no recibir PTT /////
      /////////////////////////////////////////////

      if(flag_cts1_fail == true)
      {
        if(flag_debug == true)
          Serial.print("\nPrueba fallida por PTT");

        flag_cts1_fail = false;
      }

      ///////////////////////////////
      ///// Prueba interrumpida /////
      ///////////////////////////////

      if(flag_test_interrupted==true)
      {
        if(flag_debug == true)
          Serial.print("\nPrueba interrumpida");

        flag_test_interrupted = false;        
      }


      if(flag_debug == true)
        Serial.print("\nPulse Prueba para salir");

      while(digitalRead(P_PRUEBA)==true)
      {
        delay(10);        
      }

      delay(500);

      if(flag_debug == true)
        Serial.print("\nDispositivo listo");

      flag_test_finished = false;
      flag_test = false;
    }
  }


    //////////////////////////////////////////
  ///// Recibir buffer serial puerto 1 /////
  //////////////////////////////////////////

  while(Serial1.available()&&(flag_buffer1_ready == false))
  {    
    char inChar1 = (char)Serial1.read();    // get the new byte:
    
    rx_buffer[rx_buffer_ctr] = inChar1;     // add it to the inputString:
    rx_buffer_ctr++;

    // if the incoming character is a newline, set a flag so the main loop can do something about it:
    if (inChar1 == '\n')
    {
      flag_buffer1_ready = true;
      rx_buffer_ctr = 0;
    }    
  }


  /////////////////////////////////////////////////
  ///// Procesar buffer de recepción serial 1 /////
  /////////////////////////////////////////////////

  if(flag_buffer1_ready == true)
  {
    // Limpiar num
    for(j=0;j<10;j++)
      num[j] = 0;

    // Limpiar aux
    for(j=0;j<64;j++)
      aux[j] = 0;

    // Extraer "Prueba de comunicaciones" desde rx_buffer
    for(j=0;j<25;j++)
      aux[j] = rx_buffer[j];

    sprintf(line, "\nrx_buffer:%s", rx_buffer);
    Serial.print(line);

    diff_ctr = 0;

    for(j=0;j<24;j++)
    {
      if(aux[j] != test_string[j])
        diff_ctr++;
    }

    // Extraer indice del buffer de recepción
    for(j=0;j<4;j++)
      num[j] = rx_buffer[25+j];
    
    n_frame = atoi((const char*)num);

    if(diff_ctr==0)
    {
      sprintf(line, "\nTrama %d recibida\n", n_frame);
      Serial.print(line);
      buffer_compare_ctr++;     
    }
    else
    {
      sprintf(line, "\nError en la recepción");
      Serial.print(line);        
    }

    if(buffer_compare_ctr == n)
      Serial.print("\nTodas las tramas fueron recibidas exitosamente");

    frame_rx_ctr = 0; // Reiniciar contador de fin de recepción serial

    for(j=0;j<64;j++)
      rx_buffer[j] = 0;

    flag_buffer1_ready = false;
  }
}

I'm hoping someone can point me in the right direction, as I can't figure out which part is causing the crash.

Best regards,
Fenhasan

Please be careful how you use code tags. Your text after the code also ended up in code tags.

What you had

text
```
```cpp
code
```
```
text

I've fixed it for you. The first and last ``` should not have been there.

I would venture a guess that your compile warning level is set to NONE, rather than ALL.

The warnings regarding the code on line 474 should be a red flag, I would think.

arduino-cli compile -b rp2040:rp2040:rpipico --warnings all --output-dir ~/tmp --no-color (in directory: /home/me/Documents/sketchbook/Pico/test)
WARNING: library LiquidCrystal_I2C claims to run on avr architecture(s) and may be incompatible with your current board which runs on rp2040 architecture(s).
/home/me/Documents/sketchbook/Pico/test/test.ino: In function 'void loop()':
/home/me/Documents/sketchbook/Pico/test/test.ino:474:19: warning: '%s' directive writing up to 63 bytes into a region of size 53 [-Wformat-overflow=]
  474 |     sprintf(line, "\nrx_buffer:%s", rx_buffer);
      |                   ^~~~~~~~~~~~~~~~  ~~~~~~~~~
/home/me/Documents/sketchbook/Pico/test/test.ino:474:12: note: 'sprintf' output between 12 and 75 bytes into a destination of size 64
  474 |     sprintf(line, "\nrx_buffer:%s", rx_buffer);
      |     ~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
In file included from /home/me/Documents/sketchbook/libraries/LiquidCrystal_I2C/LiquidCrystal_I2C.cpp:3:
/home/me/Documents/sketchbook/libraries/LiquidCrystal_I2C/LiquidCrystal_I2C.cpp: In member function 'virtual size_t LiquidCrystal_I2C::write(uint8_t)':
/home/me/Documents/sketchbook/libraries/LiquidCrystal_I2C/LiquidCrystal_I2C.h:53:12: warning: 'B00000001' is deprecated: use 0b00000001 instead [-Wdeprecated-declarations]
   53 | #define Rs B00000001  // Register select bit
      |            ^~~~~~~~~
/home/me/Documents/sketchbook/libraries/LiquidCrystal_I2C/LiquidCrystal_I2C.cpp:11:21: note: in expansion of macro 'Rs'
   11 |         send(value, Rs);
      |                     ^~
In file included from /home/me/.arduino15/packages/rp2040/hardware/rp2040/4.3.1/cores/rp2040/api/../../../ArduinoCore-API/api/ArduinoAPI.h:26,
                 from /home/me/.arduino15/packages/rp2040/hardware/rp2040/4.3.1/cores/rp2040/api/ArduinoAPI.h:2,
                 from /home/me/.arduino15/packages/rp2040/hardware/rp2040/4.3.1/cores/rp2040/Arduino.h:28,
                 from /home/me/.arduino15/packages/rp2040/hardware/rp2040/4.3.1/libraries/Wire/src/Wire.h:26,
                 from /home/me/Documents/sketchbook/libraries/LiquidCrystal_I2C/LiquidCrystal_I2C.h:7:
/home/me/.arduino15/packages/rp2040/hardware/rp2040/4.3.1/cores/rp2040/api/../../../ArduinoCore-API/api/Binary.h:53:3: note: declared here
   53 |   B00000001 DEPRECATED(0b00000001) = 1,
      |   ^~~~~~~~~
/home/me/Documents/sketchbook/libraries/LiquidCrystal_I2C/LiquidCrystal_I2C.cpp: In member function 'void LiquidCrystal_I2C::pulseEnable(uint8_t)':
/home/me/Documents/sketchbook/libraries/LiquidCrystal_I2C/LiquidCrystal_I2C.h:51:12: warning: 'B00000100' is deprecated: use 0b00000100 instead [-Wdeprecated-declarations]
   51 | #define En B00000100  // Enable bit
      |            ^~~~~~~~~
/home/me/Documents/sketchbook/libraries/LiquidCrystal_I2C/LiquidCrystal_I2C.cpp:274:31: note: in expansion of macro 'En'
  274 |         expanderWrite(_data | En);      // En high
      |                               ^~
/home/me/.arduino15/packages/rp2040/hardware/rp2040/4.3.1/cores/rp2040/api/../../../ArduinoCore-API/api/Binary.h:73:3: note: declared here
   73 |   B00000100 DEPRECATED(0b00000100) = 4,
      |   ^~~~~~~~~
/home/me/Documents/sketchbook/libraries/LiquidCrystal_I2C/LiquidCrystal_I2C.h:51:12: warning: 'B00000100' is deprecated: use 0b00000100 instead [-Wdeprecated-declarations]
   51 | #define En B00000100  // Enable bit
      |            ^~~~~~~~~
/home/me/Documents/sketchbook/libraries/LiquidCrystal_I2C/LiquidCrystal_I2C.cpp:277:32: note: in expansion of macro 'En'
  277 |         expanderWrite(_data & ~En);     // En low
      |                                ^~
/home/me/.arduino15/packages/rp2040/hardware/rp2040/4.3.1/cores/rp2040/api/../../../ArduinoCore-API/api/Binary.h:73:3: note: declared here
   73 |   B00000100 DEPRECATED(0b00000100) = 4,
      |   ^~~~~~~~~
Sketch uses 68748 bytes (3%) of program storage space. Maximum is 2093056 bytes.
Global variables use 11308 bytes (4%) of dynamic memory, leaving 250836 bytes for local variables. Maximum is 262144 bytes.
Compilation finished successfully.

Thanks for fixing my post, I tried to preview it but couldn't figure it out...

Thanks for checking my code... I don't recall telling the compiler not to show warnings, maybe I did it by mistake... Regarding the Pico freezing, it may have happened because of the out of bound arrays?

You probably didn't. By default the IDE shows minimal compiler messages. You have to configure it to show more which is often useful when debugging.

Hello:

I tried compiling the second code (non-working), but this time enabling all warnings in the Arduino IDE. It didn't show me the

warning: '%s' directive writing up to 63 bytes into a region of size 53 [-Wformat-overflow=]
  474 |     sprintf(line, "\nrx_buffer:%s", rx_buffer);

All I could do was set Compiler warnings to All. Is there any other setting required to see this kind of warnings?

Best regards,
Fenhasan

No, that's all there is,

Hi @fenhasan.

The reason @van_der_decken sees the helpful "'%s' directive writing up to 63 bytes into a region of size 53" warning in their compilation output, while you do not is because @van_der_decken is compiling the sketch using the 3rd party "Raspberry Pi Pico/RP2040" boards platform from Earle F. Philhower, III, while you you are using the "Arduino Mbed OS RP2040 Boards" platform.

The relevant difference is that the Raspberry Pi Pico/RP2040 uses version 14.2.0 of the GCC compiler, while the Arduino Mbed OS RP2040 Boards platform uses version 7.2.1 of GCC. It seems that the ability for GCC to detect this problem was added sometime after the release of GCC 7.2.1 (7.2.1 does have the format-overflow warning, but apparently it is less capable than in 14.2.0).

Thanks for the help. Just switched cores, and compiled using Raspberry Pi Pico/RP2040/RP2350. This was the result:

FQBN: rp2040:rp2040:rpipico
Using board 'rpipico' from platform in folder: C:\Users\fenha\AppData\Local\Arduino15\packages\rp2040\hardware\rp2040\4.5.1
Using core 'rp2040' from platform in folder: C:\Users\fenha\AppData\Local\Arduino15\packages\rp2040\hardware\rp2040\4.5.1

Detecting libraries used...
C:\Users\fenha\AppData\Local\Arduino15\packages\rp2040\tools\pqt-gcc\4.0.1-8ec9d6f/bin/arm-none-eabi-g++ -I C:\Users\fenha\AppData\Local\arduino\sketches\7E077C93E1D27B1284CB18040B6E15DB/core -c -Werror=return-type -Wno-psabi -DUSBD_PID=0x000a -DUSBD_VID=0x2e8a -DUSBD_MAX_POWER_MA=250 -DUSB_MANUFACTURER="Raspberry Pi" -DUSB_PRODUCT="Pico" -DLWIP_IPV6=0 -DLWIP_IPV4=1 -DLWIP_IGMP=1 -DLWIP_CHECKSUM_CTRL_PER_NETIF=1 -DFILE_COPY_CONSTRUCTOR_SELECT=FILE_COPY_CONSTRUCTOR_PUBLIC -DUSE_UTF8_LONG_NAMES=1 -DDISABLE_FS_H_WARNING=1 -DARDUINO_VARIANT="rpipico" -DPICO_FLASH_SIZE_BYTES=2097152 @C:\Users\fenha\AppData\Local\Arduino15\packages\rp2040\hardware\rp2040\4.5.1/lib/rp2040/platform_def.txt -march=armv6-m -mcpu=cortex-m0plus -mthumb -ffunction-sections -fdata-sections -fno-exceptions -iprefixC:\Users\fenha\AppData\Local\Arduino15\packages\rp2040\hardware\rp2040\4.5.1/ @C:\Users\fenha\AppData\Local\Arduino15\packages\rp2040\hardware\rp2040\4.5.1/lib/rp2040/platform_inc.txt @C:\Users\fenha\AppData\Local\Arduino15\packages\rp2040\hardware\rp2040\4.5.1/lib/core_inc.txt -IC:\Users\fenha\AppData\Local\Arduino15\packages\rp2040\hardware\rp2040\4.5.1/include -fno-rtti -std=gnu++17 -g -pipe -w -x c++ -E -CC -DF_CPU=200000000L -DARDUINO=10607 -DARDUINO_RASPBERRY_PI_PICO -DBOARD_NAME="RASPBERRY_PI_PICO" -DARDUINO_ARCH_RP2040 -Os -DWIFICC=CYW43_COUNTRY_WORLDWIDE -IC:\Users\fenha\AppData\Local\Arduino15\packages\rp2040\hardware\rp2040\4.5.1\cores\rp2040 -IC:\Users\fenha\AppData\Local\Arduino15\packages\rp2040\hardware\rp2040\4.5.1\variants\rpipico C:\Users\fenha\AppData\Local\arduino\sketches\7E077C93E1D27B1284CB18040B6E15DB\sketch\Prueba_Serial_02_simple.ino.cpp -o nul
Alternatives for LiquidCrystal_I2C.h: [LiquidCrystal I2C@1.1.2]
ResolveLibrary(LiquidCrystal_I2C.h)
  -> candidates: [LiquidCrystal I2C@1.1.2]
C:\Users\fenha\AppData\Local\Arduino15\packages\rp2040\tools\pqt-gcc\4.0.1-8ec9d6f/bin/arm-none-eabi-g++ -I C:\Users\fenha\AppData\Local\arduino\sketches\7E077C93E1D27B1284CB18040B6E15DB/core -c -Werror=return-type -Wno-psabi -DUSBD_PID=0x000a -DUSBD_VID=0x2e8a -DUSBD_MAX_POWER_MA=250 -DUSB_MANUFACTURER="Raspberry Pi" -DUSB_PRODUCT="Pico" -DLWIP_IPV6=0 -DLWIP_IPV4=1 -DLWIP_IGMP=1 -DLWIP_CHECKSUM_CTRL_PER_NETIF=1 -DFILE_COPY_CONSTRUCTOR_SELECT=FILE_COPY_CONSTRUCTOR_PUBLIC -DUSE_UTF8_LONG_NAMES=1 -DDISABLE_FS_H_WARNING=1 -DARDUINO_VARIANT="rpipico" -DPICO_FLASH_SIZE_BYTES=2097152 @C:\Users\fenha\AppData\Local\Arduino15\packages\rp2040\hardware\rp2040\4.5.1/lib/rp2040/platform_def.txt -march=armv6-m -mcpu=cortex-m0plus -mthumb -ffunction-sections -fdata-sections -fno-exceptions -iprefixC:\Users\fenha\AppData\Local\Arduino15\packages\rp2040\hardware\rp2040\4.5.1/ @C:\Users\fenha\AppData\Local\Arduino15\packages\rp2040\hardware\rp2040\4.5.1/lib/rp2040/platform_inc.txt @C:\Users\fenha\AppData\Local\Arduino15\packages\rp2040\hardware\rp2040\4.5.1/lib/core_inc.txt -IC:\Users\fenha\AppData\Local\Arduino15\packages\rp2040\hardware\rp2040\4.5.1/include -fno-rtti -std=gnu++17 -g -pipe -w -x c++ -E -CC -DF_CPU=200000000L -DARDUINO=10607 -DARDUINO_RASPBERRY_PI_PICO -DBOARD_NAME="RASPBERRY_PI_PICO" -DARDUINO_ARCH_RP2040 -Os -DWIFICC=CYW43_COUNTRY_WORLDWIDE -IC:\Users\fenha\AppData\Local\Arduino15\packages\rp2040\hardware\rp2040\4.5.1\cores\rp2040 -IC:\Users\fenha\AppData\Local\Arduino15\packages\rp2040\hardware\rp2040\4.5.1\variants\rpipico -Id:\Users\fenha\Desktop\Trabajo\ESP32\Proyectos\libraries\LiquidCrystal_I2C C:\Users\fenha\AppData\Local\arduino\sketches\7E077C93E1D27B1284CB18040B6E15DB\sketch\Prueba_Serial_02_simple.ino.cpp -o nul
Alternatives for Wire.h: [Wire@1.0]
ResolveLibrary(Wire.h)
  -> candidates: [Wire@1.0]
C:\Users\fenha\AppData\Local\Arduino15\packages\rp2040\tools\pqt-gcc\4.0.1-8ec9d6f/bin/arm-none-eabi-g++ -I C:\Users\fenha\AppData\Local\arduino\sketches\7E077C93E1D27B1284CB18040B6E15DB/core -c -Werror=return-type -Wno-psabi -DUSBD_PID=0x000a -DUSBD_VID=0x2e8a -DUSBD_MAX_POWER_MA=250 -DUSB_MANUFACTURER="Raspberry Pi" -DUSB_PRODUCT="Pico" -DLWIP_IPV6=0 -DLWIP_IPV4=1 -DLWIP_IGMP=1 -DLWIP_CHECKSUM_CTRL_PER_NETIF=1 -DFILE_COPY_CONSTRUCTOR_SELECT=FILE_COPY_CONSTRUCTOR_PUBLIC -DUSE_UTF8_LONG_NAMES=1 -DDISABLE_FS_H_WARNING=1 -DARDUINO_VARIANT="rpipico" -DPICO_FLASH_SIZE_BYTES=2097152 @C:\Users\fenha\AppData\Local\Arduino15\packages\rp2040\hardware\rp2040\4.5.1/lib/rp2040/platform_def.txt -march=armv6-m -mcpu=cortex-m0plus -mthumb -ffunction-sections -fdata-sections -fno-exceptions -iprefixC:\Users\fenha\AppData\Local\Arduino15\packages\rp2040\hardware\rp2040\4.5.1/ @C:\Users\fenha\AppData\Local\Arduino15\packages\rp2040\hardware\rp2040\4.5.1/lib/rp2040/platform_inc.txt @C:\Users\fenha\AppData\Local\Arduino15\packages\rp2040\hardware\rp2040\4.5.1/lib/core_inc.txt -IC:\Users\fenha\AppData\Local\Arduino15\packages\rp2040\hardware\rp2040\4.5.1/include -fno-rtti -std=gnu++17 -g -pipe -w -x c++ -E -CC -DF_CPU=200000000L -DARDUINO=10607 -DARDUINO_RASPBERRY_PI_PICO -DBOARD_NAME="RASPBERRY_PI_PICO" -DARDUINO_ARCH_RP2040 -Os -DWIFICC=CYW43_COUNTRY_WORLDWIDE -IC:\Users\fenha\AppData\Local\Arduino15\packages\rp2040\hardware\rp2040\4.5.1\cores\rp2040 -IC:\Users\fenha\AppData\Local\Arduino15\packages\rp2040\hardware\rp2040\4.5.1\variants\rpipico -Id:\Users\fenha\Desktop\Trabajo\ESP32\Proyectos\libraries\LiquidCrystal_I2C -IC:\Users\fenha\AppData\Local\Arduino15\packages\rp2040\hardware\rp2040\4.5.1\libraries\Wire\src C:\Users\fenha\AppData\Local\arduino\sketches\7E077C93E1D27B1284CB18040B6E15DB\sketch\Prueba_Serial_02_simple.ino.cpp -o nul
Using cached library dependencies for file: d:\Users\fenha\Desktop\Trabajo\ESP32\Proyectos\libraries\LiquidCrystal_I2C\LiquidCrystal_I2C.cpp
Using cached library dependencies for file: C:\Users\fenha\AppData\Local\Arduino15\packages\rp2040\hardware\rp2040\4.5.1\libraries\Wire\src\Wire.cpp
WARNING: library LiquidCrystal I2C claims to run on avr architecture(s) and may be incompatible with your current board which runs on rp2040 architecture(s).
Generating function prototypes...
C:\Users\fenha\AppData\Local\Arduino15\packages\rp2040\tools\pqt-gcc\4.0.1-8ec9d6f/bin/arm-none-eabi-g++ -I C:\Users\fenha\AppData\Local\arduino\sketches\7E077C93E1D27B1284CB18040B6E15DB/core -c -Werror=return-type -Wno-psabi -DUSBD_PID=0x000a -DUSBD_VID=0x2e8a -DUSBD_MAX_POWER_MA=250 -DUSB_MANUFACTURER="Raspberry Pi" -DUSB_PRODUCT="Pico" -DLWIP_IPV6=0 -DLWIP_IPV4=1 -DLWIP_IGMP=1 -DLWIP_CHECKSUM_CTRL_PER_NETIF=1 -DFILE_COPY_CONSTRUCTOR_SELECT=FILE_COPY_CONSTRUCTOR_PUBLIC -DUSE_UTF8_LONG_NAMES=1 -DDISABLE_FS_H_WARNING=1 -DARDUINO_VARIANT="rpipico" -DPICO_FLASH_SIZE_BYTES=2097152 @C:\Users\fenha\AppData\Local\Arduino15\packages\rp2040\hardware\rp2040\4.5.1/lib/rp2040/platform_def.txt -march=armv6-m -mcpu=cortex-m0plus -mthumb -ffunction-sections -fdata-sections -fno-exceptions -iprefixC:\Users\fenha\AppData\Local\Arduino15\packages\rp2040\hardware\rp2040\4.5.1/ @C:\Users\fenha\AppData\Local\Arduino15\packages\rp2040\hardware\rp2040\4.5.1/lib/rp2040/platform_inc.txt @C:\Users\fenha\AppData\Local\Arduino15\packages\rp2040\hardware\rp2040\4.5.1/lib/core_inc.txt -IC:\Users\fenha\AppData\Local\Arduino15\packages\rp2040\hardware\rp2040\4.5.1/include -fno-rtti -std=gnu++17 -g -pipe -w -x c++ -E -CC -DF_CPU=200000000L -DARDUINO=10607 -DARDUINO_RASPBERRY_PI_PICO -DBOARD_NAME="RASPBERRY_PI_PICO" -DARDUINO_ARCH_RP2040 -Os -DWIFICC=CYW43_COUNTRY_WORLDWIDE -IC:\Users\fenha\AppData\Local\Arduino15\packages\rp2040\hardware\rp2040\4.5.1\cores\rp2040 -IC:\Users\fenha\AppData\Local\Arduino15\packages\rp2040\hardware\rp2040\4.5.1\variants\rpipico -Id:\Users\fenha\Desktop\Trabajo\ESP32\Proyectos\libraries\LiquidCrystal_I2C -IC:\Users\fenha\AppData\Local\Arduino15\packages\rp2040\hardware\rp2040\4.5.1\libraries\Wire\src C:\Users\fenha\AppData\Local\arduino\sketches\7E077C93E1D27B1284CB18040B6E15DB\sketch\Prueba_Serial_02_simple.ino.cpp -o C:\Users\fenha\AppData\Local\Temp\2931836929\sketch_merged.cpp
C:\Users\fenha\AppData\Local\Arduino15\packages\builtin\tools\ctags\5.8-arduino11/ctags -u --language-force=c++ -f - --c++-kinds=svpf --fields=KSTtzns --line-directives C:\Users\fenha\AppData\Local\Temp\2931836929\sketch_merged.cpp
Compiling sketch...
"C:\\Users\\fenha\\AppData\\Local\\Arduino15\\packages\\rp2040\\tools\\pqt-python3\\1.0.1-base-3a57aed-1/python3" -I "C:\\Users\\fenha\\AppData\\Local\\Arduino15\\packages\\rp2040\\hardware\\rp2040\\4.5.1/tools/signing.py" --mode header --publickey "D:\\Users\\fenha\\Desktop\\Trabajo\\RPi Pico\\Prueba_Serial_02_simple/public.key" --out "C:\\Users\\fenha\\AppData\\Local\\arduino\\sketches\\7E077C93E1D27B1284CB18040B6E15DB/core/Updater_Signing.h"
"C:\\Users\\fenha\\AppData\\Local\\Arduino15\\packages\\rp2040\\tools\\pqt-gcc\\4.0.1-8ec9d6f/bin/arm-none-eabi-g++" -I "C:\\Users\\fenha\\AppData\\Local\\arduino\\sketches\\7E077C93E1D27B1284CB18040B6E15DB/core" -c -Wall -Wextra -Werror=return-type -Wno-ignored-qualifiers -Wno-psabi -Wno-unused-parameter -Wno-missing-field-initializers -DUSBD_PID=0x000a -DUSBD_VID=0x2e8a -DUSBD_MAX_POWER_MA=250 "-DUSB_MANUFACTURER=\"Raspberry Pi\"" "-DUSB_PRODUCT=\"Pico\"" -DLWIP_IPV6=0 -DLWIP_IPV4=1 -DLWIP_IGMP=1 -DLWIP_CHECKSUM_CTRL_PER_NETIF=1 -DFILE_COPY_CONSTRUCTOR_SELECT=FILE_COPY_CONSTRUCTOR_PUBLIC -DUSE_UTF8_LONG_NAMES=1 -DDISABLE_FS_H_WARNING=1 "-DARDUINO_VARIANT=\"rpipico\"" -DPICO_FLASH_SIZE_BYTES=2097152 "@C:\\Users\\fenha\\AppData\\Local\\Arduino15\\packages\\rp2040\\hardware\\rp2040\\4.5.1/lib/rp2040/platform_def.txt" -march=armv6-m -mcpu=cortex-m0plus -mthumb -ffunction-sections -fdata-sections -fno-exceptions -MMD "-iprefixC:\\Users\\fenha\\AppData\\Local\\Arduino15\\packages\\rp2040\\hardware\\rp2040\\4.5.1/" "@C:\\Users\\fenha\\AppData\\Local\\Arduino15\\packages\\rp2040\\hardware\\rp2040\\4.5.1/lib/rp2040/platform_inc.txt" "@C:\\Users\\fenha\\AppData\\Local\\Arduino15\\packages\\rp2040\\hardware\\rp2040\\4.5.1/lib/core_inc.txt" "-IC:\\Users\\fenha\\AppData\\Local\\Arduino15\\packages\\rp2040\\hardware\\rp2040\\4.5.1/include" -fno-rtti -std=gnu++17 -g -pipe -DF_CPU=200000000L -DARDUINO=10607 -DARDUINO_RASPBERRY_PI_PICO "-DBOARD_NAME=\"RASPBERRY_PI_PICO\"" -DARDUINO_ARCH_RP2040 -Os -DWIFICC=CYW43_COUNTRY_WORLDWIDE "-IC:\\Users\\fenha\\AppData\\Local\\Arduino15\\packages\\rp2040\\hardware\\rp2040\\4.5.1\\cores\\rp2040" "-IC:\\Users\\fenha\\AppData\\Local\\Arduino15\\packages\\rp2040\\hardware\\rp2040\\4.5.1\\variants\\rpipico" "-Id:\\Users\\fenha\\Desktop\\Trabajo\\ESP32\\Proyectos\\libraries\\LiquidCrystal_I2C" "-IC:\\Users\\fenha\\AppData\\Local\\Arduino15\\packages\\rp2040\\hardware\\rp2040\\4.5.1\\libraries\\Wire\\src" "C:\\Users\\fenha\\AppData\\Local\\arduino\\sketches\\7E077C93E1D27B1284CB18040B6E15DB\\sketch\\Prueba_Serial_02_simple.ino.cpp" -o "C:\\Users\\fenha\\AppData\\Local\\arduino\\sketches\\7E077C93E1D27B1284CB18040B6E15DB\\sketch\\Prueba_Serial_02_simple.ino.cpp.o"
Compiling libraries...
Compiling library "LiquidCrystal I2C"
Using previously compiled file: C:\Users\fenha\AppData\Local\arduino\sketches\7E077C93E1D27B1284CB18040B6E15DB\libraries\LiquidCrystal_I2C\LiquidCrystal_I2C.cpp.o
Compiling library "Wire"
Using previously compiled file: C:\Users\fenha\AppData\Local\arduino\sketches\7E077C93E1D27B1284CB18040B6E15DB\libraries\Wire\Wire.cpp.o
Using previously compiled file: C:\Users\fenha\AppData\Local\arduino\sketches\7E077C93E1D27B1284CB18040B6E15DB\libraries\Wire\Wire.a
Compiling core...
Using precompiled core: C:\Users\fenha\AppData\Local\arduino\cores\4132987bff77c4149cdb1c071ce9d6e2\core.a
Linking everything together...
"C:\\Users\\fenha\\AppData\\Local\\Arduino15\\packages\\rp2040\\tools\\pqt-python3\\1.0.1-base-3a57aed-1/python3" -I "C:\\Users\\fenha\\AppData\\Local\\Arduino15\\packages\\rp2040\\hardware\\rp2040\\4.5.1/tools/simplesub.py" --input "C:\\Users\\fenha\\AppData\\Local\\Arduino15\\packages\\rp2040\\hardware\\rp2040\\4.5.1/lib/rp2040/memmap_default.ld" --out "C:\\Users\\fenha\\AppData\\Local\\arduino\\sketches\\7E077C93E1D27B1284CB18040B6E15DB/memmap_default.ld" --sub __FLASH_LENGTH__ 2093056 --sub __EEPROM_START__ 270528512 --sub __FS_START__ 270528512 --sub __FS_END__ 270528512 --sub __RAM_LENGTH__ 256k --sub __PSRAM_LENGTH__ 0
"C:\\Users\\fenha\\AppData\\Local\\Arduino15\\packages\\rp2040\\tools\\pqt-gcc\\4.0.1-8ec9d6f/bin/arm-none-eabi-gcc" -Werror=return-type -Wno-psabi -DUSBD_PID=0x000a -DUSBD_VID=0x2e8a -DUSBD_MAX_POWER_MA=250 "-DUSB_MANUFACTURER=\"Raspberry Pi\"" "-DUSB_PRODUCT=\"Pico\"" -DLWIP_IPV6=0 -DLWIP_IPV4=1 -DLWIP_IGMP=1 -DLWIP_CHECKSUM_CTRL_PER_NETIF=1 -DFILE_COPY_CONSTRUCTOR_SELECT=FILE_COPY_CONSTRUCTOR_PUBLIC -DUSE_UTF8_LONG_NAMES=1 -DDISABLE_FS_H_WARNING=1 "-DARDUINO_VARIANT=\"rpipico\"" -DPICO_FLASH_SIZE_BYTES=2097152 "@C:\\Users\\fenha\\AppData\\Local\\Arduino15\\packages\\rp2040\\hardware\\rp2040\\4.5.1/lib/rp2040/platform_def.txt" -march=armv6-m -mcpu=cortex-m0plus -mthumb -ffunction-sections -fdata-sections -fno-exceptions -Os -u _printf_float -u _scanf_float -c "C:\\Users\\fenha\\AppData\\Local\\Arduino15\\packages\\rp2040\\hardware\\rp2040\\4.5.1/boot2/rp2040/boot2_w25q080_2_padded_checksum.S" "-IC:\\Users\\fenha\\AppData\\Local\\Arduino15\\packages\\rp2040\\hardware\\rp2040\\4.5.1/pico-sdk/src/rp2040/hardware_regs/include/" "-IC:\\Users\\fenha\\AppData\\Local\\Arduino15\\packages\\rp2040\\hardware\\rp2040\\4.5.1/pico-sdk/src/common/pico_binary_info/include" -o "C:\\Users\\fenha\\AppData\\Local\\arduino\\sketches\\7E077C93E1D27B1284CB18040B6E15DB/boot2.o"
"C:\\Users\\fenha\\AppData\\Local\\Arduino15\\packages\\rp2040\\tools\\pqt-gcc\\4.0.1-8ec9d6f/bin/arm-none-eabi-g++" "-LC:\\Users\\fenha\\AppData\\Local\\arduino\\sketches\\7E077C93E1D27B1284CB18040B6E15DB" -Wall -Wextra -Werror=return-type -Wno-ignored-qualifiers -Wno-psabi -Wno-unused-parameter -Wno-missing-field-initializers -DUSBD_PID=0x000a -DUSBD_VID=0x2e8a -DUSBD_MAX_POWER_MA=250 "-DUSB_MANUFACTURER=\"Raspberry Pi\"" "-DUSB_PRODUCT=\"Pico\"" -DLWIP_IPV6=0 -DLWIP_IPV4=1 -DLWIP_IGMP=1 -DLWIP_CHECKSUM_CTRL_PER_NETIF=1 -DFILE_COPY_CONSTRUCTOR_SELECT=FILE_COPY_CONSTRUCTOR_PUBLIC -DUSE_UTF8_LONG_NAMES=1 -DDISABLE_FS_H_WARNING=1 "-DARDUINO_VARIANT=\"rpipico\"" -DPICO_FLASH_SIZE_BYTES=2097152 "@C:\\Users\\fenha\\AppData\\Local\\Arduino15\\packages\\rp2040\\hardware\\rp2040\\4.5.1/lib/rp2040/platform_def.txt" -march=armv6-m -mcpu=cortex-m0plus -mthumb -ffunction-sections -fdata-sections -fno-exceptions -Os -u _printf_float -u _scanf_float "@C:\\Users\\fenha\\AppData\\Local\\Arduino15\\packages\\rp2040\\hardware\\rp2040\\4.5.1/lib/rp2040/platform_wrap.txt" "@C:\\Users\\fenha\\AppData\\Local\\Arduino15\\packages\\rp2040\\hardware\\rp2040\\4.5.1/lib/core_wrap.txt" -Wl,--cref -Wl,--check-sections -Wl,--gc-sections -Wl,--unresolved-symbols=report-all -Wl,--warn-common -Wl,--undefined=runtime_init_install_ram_vector_table -Wl,--undefined=__pre_init_runtime_init_clocks -Wl,--undefined=__pre_init_runtime_init_bootrom_reset -Wl,--undefined=__pre_init_runtime_init_early_resets -Wl,--undefined=__pre_init_runtime_init_usb_power_down -Wl,--undefined=__pre_init_runtime_init_clocks -Wl,--undefined=__pre_init_runtime_init_post_clock_resets -Wl,--undefined=__pre_init_runtime_init_spin_locks_reset -Wl,--undefined=__pre_init_runtime_init_boot_locks_reset -Wl,--undefined=__pre_init_runtime_init_bootrom_locking_enable -Wl,--undefined=__pre_init_runtime_init_mutex -Wl,--undefined=__pre_init_runtime_init_default_alarm_pool -Wl,--undefined=__pre_init_first_per_core_initializer -Wl,--undefined=__pre_init_runtime_init_per_core_bootrom_reset -Wl,--undefined=__pre_init_runtime_init_per_core_h3_irq_registers -Wl,--undefined=__pre_init_runtime_init_per_core_irq_priorities "-Wl,--script=C:\\Users\\fenha\\AppData\\Local\\arduino\\sketches\\7E077C93E1D27B1284CB18040B6E15DB/memmap_default.ld" "-Wl,-Map,C:\\Users\\fenha\\AppData\\Local\\arduino\\sketches\\7E077C93E1D27B1284CB18040B6E15DB/Prueba_Serial_02_simple.ino.map" -o "C:\\Users\\fenha\\AppData\\Local\\arduino\\sketches\\7E077C93E1D27B1284CB18040B6E15DB/Prueba_Serial_02_simple.ino.elf" -Wl,--no-warn-rwx-segments -Wl,--start-group "C:\\Users\\fenha\\AppData\\Local\\arduino\\sketches\\7E077C93E1D27B1284CB18040B6E15DB\\sketch\\Prueba_Serial_02_simple.ino.cpp.o" "C:\\Users\\fenha\\AppData\\Local\\arduino\\sketches\\7E077C93E1D27B1284CB18040B6E15DB\\libraries\\LiquidCrystal_I2C\\LiquidCrystal_I2C.cpp.o" "C:\\Users\\fenha\\AppData\\Local\\arduino\\sketches\\7E077C93E1D27B1284CB18040B6E15DB\\libraries\\Wire\\Wire.a" "C:\\Users\\fenha\\AppData\\Local\\arduino\\sketches\\7E077C93E1D27B1284CB18040B6E15DB/..\\..\\cores\\4132987bff77c4149cdb1c071ce9d6e2\\core.a" "C:\\Users\\fenha\\AppData\\Local\\arduino\\sketches\\7E077C93E1D27B1284CB18040B6E15DB/boot2.o" "C:\\Users\\fenha\\AppData\\Local\\Arduino15\\packages\\rp2040\\hardware\\rp2040\\4.5.1/lib/rp2040/ota.o" "C:\\Users\\fenha\\AppData\\Local\\Arduino15\\packages\\rp2040\\hardware\\rp2040\\4.5.1/lib/rp2040/libpico.a" "C:\\Users\\fenha\\AppData\\Local\\Arduino15\\packages\\rp2040\\hardware\\rp2040\\4.5.1/lib/rp2040/libipv4.a" "C:\\Users\\fenha\\AppData\\Local\\Arduino15\\packages\\rp2040\\hardware\\rp2040\\4.5.1/lib/rp2040/libbearssl.a" -lm -lc -lstdc++ -lc -Wl,--end-group
"C:\\Users\\fenha\\AppData\\Local\\Arduino15\\packages\\rp2040\\tools\\pqt-gcc\\4.0.1-8ec9d6f/bin//arm-none-eabi-objcopy" -Obinary "C:\\Users\\fenha\\AppData\\Local\\arduino\\sketches\\7E077C93E1D27B1284CB18040B6E15DB/Prueba_Serial_02_simple.ino.elf" "C:\\Users\\fenha\\AppData\\Local\\arduino\\sketches\\7E077C93E1D27B1284CB18040B6E15DB/Prueba_Serial_02_simple.ino.bin"
"C:\\Users\\fenha\\AppData\\Local\\Arduino15\\packages\\rp2040\\tools\\pqt-python3\\1.0.1-base-3a57aed-1/python3" -I "C:\\Users\\fenha\\AppData\\Local\\Arduino15\\packages\\rp2040\\hardware\\rp2040\\4.5.1/tools/signing.py" --mode sign --privatekey "D:\\Users\\fenha\\Desktop\\Trabajo\\RPi Pico\\Prueba_Serial_02_simple/private.key" --bin "C:\\Users\\fenha\\AppData\\Local\\arduino\\sketches\\7E077C93E1D27B1284CB18040B6E15DB/Prueba_Serial_02_simple.ino.bin" --out "C:\\Users\\fenha\\AppData\\Local\\arduino\\sketches\\7E077C93E1D27B1284CB18040B6E15DB/Prueba_Serial_02_simple.ino.bin.signed"
"C:\\Users\\fenha\\AppData\\Local\\Arduino15\\packages\\rp2040\\tools\\pqt-picotool\\4.0.1-8ec9d6f/picotool" uf2 convert "C:\\Users\\fenha\\AppData\\Local\\arduino\\sketches\\7E077C93E1D27B1284CB18040B6E15DB/Prueba_Serial_02_simple.ino.elf" "C:\\Users\\fenha\\AppData\\Local\\arduino\\sketches\\7E077C93E1D27B1284CB18040B6E15DB/Prueba_Serial_02_simple.ino.uf2" --family rp2040

Using library LiquidCrystal I2C at version 1.1.2 in folder: D:\Users\fenha\Desktop\Trabajo\ESP32\Proyectos\libraries\LiquidCrystal_I2C 
Using library Wire at version 1.0 in folder: C:\Users\fenha\AppData\Local\Arduino15\packages\rp2040\hardware\rp2040\4.5.1\libraries\Wire 
"C:\\Users\\fenha\\AppData\\Local\\Arduino15\\packages\\rp2040\\tools\\pqt-gcc\\4.0.1-8ec9d6f/bin/arm-none-eabi-size" -A "C:\\Users\\fenha\\AppData\\Local\\arduino\\sketches\\7E077C93E1D27B1284CB18040B6E15DB/Prueba_Serial_02_simple.ino.elf"
Sketch uses 69372 bytes (3%) of program storage space. Maximum is 2093056 bytes.
Global variables use 11284 bytes (4%) of dynamic memory, leaving 250860 bytes for local variables. Maximum is 262144 bytes.
"C:\Users\fenha\AppData\Local\Arduino15\packages\rp2040\tools\pqt-python3\1.0.1-base-3a57aed-1/python3" -I "C:\Users\fenha\AppData\Local\Arduino15\packages\rp2040\hardware\rp2040\4.5.1/tools/uf2conv.py" --serial "UF2_Board" --family RP2040 --deploy "C:\Users\fenha\AppData\Local\arduino\sketches\7E077C93E1D27B1284CB18040B6E15DB/Prueba_Serial_02_simple.ino.uf2"
Converting to uf2, output size: 172544, start address: 0x2000
Scanning for RP2040 devices
Flashing G: (RPI-RP2)
Wrote 172544 bytes to G:/NEW.UF2

I fixed the warning by increasing the size of line from 64 to 128 bytes. It compiles just fine, and it loads into the Pico. But it still refuses to work, in fact Windows shows the dreaded "USB device not recognized". This thing is driving me crazy!

Best regards,
Fenhasan

This topic was automatically closed 180 days after the last reply. New replies are no longer allowed.