Arduino Giga r1 con Giga Display di core M4

Buongiorno a tutti ,
ho sviluppato un'applicazione funzionante su ArduinoGiga con GigaDisplay,
per questioni di tempo ciclo avrei la necessità di utilizzare i 2 core di Arduino Giga in maniera separata.
Ho sviluppato lo sketch M4 in cui vorrei far girare tutta la gestione del Display e lo sketch M7 in cui faccio girare il resto del programma .
per la comunicazione tra M4 e M7 utilizzo le librerie RPC

Dunque non riesco a capire perchè lo sketch M4 non funziona .
il codice si blocca nel momento in cui inizializzo il display
non eseguo il l'inizializzazione del display il codice viene eseguito tutto entro nel loop ed eseguo il codice.
perchè non mi funziona il display ?

di seguito allego il codice che ho utilizzato.

#include "Arduino.h"
#include <RPC.h>
#include "Arduino_H7_Video.h"
#include "lvgl.h"
#include "Arduino_GigaDisplayTouch.h"
//#include <SPI.h>
//#include <DigitalOut.h>
//Arduino Giga R1 Access Point UDP

//librerie Gestione USB



Arduino_H7_Video Display(800, 480, GigaDisplayShield);
Arduino_GigaDisplayTouch TouchDetector;

//Dimensoni Pulsanti 50 in meno rispetto alle dimensioni della griglia
int X_Pulsanti = 196;
int Y_Pulsanti = 170;

void setup() {
  // put your setup code here, to run once:
  Serial.begin(115200);
  RPC.begin(); // boot M4
  RPC.println("M4 Avviato");
  Display.begin();
  TouchDetector.begin();
  setupDisplay();
 InizializzaVariabili();

}


void setupDisplay(){
  RPC.println("SetupDisplayIN");
  //Display & Grid Setup
  lv_obj_t* screen = lv_obj_create(lv_scr_act());
  lv_obj_set_size(screen, Display.width(), Display.height());
  //Dimensoni Pulsanti 
  //int X_Pulsanti = 320;
  //int Y_Pulsanti = 170;


  static lv_coord_t col_dsc[] = {246 , 246,246, LV_GRID_TEMPLATE_LAST };
  static lv_coord_t row_dsc[] = { 215, 215, 215, 215,215,215, LV_GRID_TEMPLATE_LAST };

  lv_obj_t* grid = lv_obj_create(lv_scr_act());
  lv_obj_set_grid_dsc_array(grid, col_dsc, row_dsc);
  lv_obj_set_size(grid, Display.width(), Display.height());

  //top left
  lv_obj_t* obj;
  obj = lv_obj_create(grid);
  lv_obj_set_grid_cell(obj, LV_GRID_ALIGN_STRETCH, 0, 1,  //column
                       LV_GRID_ALIGN_STRETCH, 0, 1);      //row
     lv_obj_t * label; //label
     
  lv_obj_t * btn1 = lv_btn_create(obj);
  lv_obj_set_size(btn1, X_Pulsanti,Y_Pulsanti);
  lv_obj_center(btn1);
  lv_obj_add_event_cb(btn1, btn1_event_cb, LV_EVENT_CLICKED, NULL);

  label = lv_label_create(btn1);
  lv_label_set_text(label, "Configurazione Pista");
  lv_obj_center(label);


  //bottom left
  obj = lv_obj_create(grid);
  lv_obj_set_grid_cell(obj, LV_GRID_ALIGN_STRETCH, 0, 1,  //column
                       LV_GRID_ALIGN_STRETCH, 1, 1);      //row
  lv_obj_t * btn2 = lv_btn_create(obj);
  lv_obj_set_size(btn2, X_Pulsanti,Y_Pulsanti);
  lv_obj_center(btn2);
  lv_obj_add_event_cb(btn2, btn2_event_cb, LV_EVENT_CLICKED, NULL);

  label = lv_label_create(btn2);
  lv_label_set_text(label, "Sel DX/SX");
  lv_obj_center(label);

  //top right
  obj = lv_obj_create(grid);
  lv_obj_set_grid_cell(obj, LV_GRID_ALIGN_STRETCH, 1, 1,  //column
                       LV_GRID_ALIGN_STRETCH, 0, 1);      //row
    lv_obj_t * btn3 = lv_btn_create(obj);
  lv_obj_set_size(btn3, X_Pulsanti,Y_Pulsanti);
  lv_obj_center(btn3);
  lv_obj_add_event_cb(btn3, btn3_event_cb, LV_EVENT_CLICKED, NULL);

  label = lv_label_create(btn3);
  lv_label_set_text(label, "Dispositivi Connessi");
  lv_obj_center(label);


  //bottom right
  obj = lv_obj_create(grid);
  lv_obj_set_grid_cell(obj, LV_GRID_ALIGN_STRETCH, 1, 1,  //column
                       LV_GRID_ALIGN_STRETCH, 1, 1);      //row
   lv_obj_t * btn4 = lv_btn_create(obj);
  lv_obj_set_size(btn4, X_Pulsanti,Y_Pulsanti);
  lv_obj_center(btn4);
  lv_obj_add_event_cb(btn4, btn4_event_cb, LV_EVENT_CLICKED, NULL);

  label = lv_label_create(btn4);
  lv_label_set_text(label, "Misura");
  lv_obj_center(label);
  //Pulsante usb
  obj = lv_obj_create(grid);
  lv_obj_set_grid_cell(obj, LV_GRID_ALIGN_STRETCH, 2,1,  //column
                       LV_GRID_ALIGN_STRETCH, 0, 1);      //row
   lv_obj_t * btn5 = lv_btn_create(obj);
  lv_obj_set_size(btn5, X_Pulsanti,Y_Pulsanti);
  lv_obj_center(btn5);
  lv_obj_add_event_cb(btn5, btn5_event_cb, LV_EVENT_CLICKED, NULL);

  label = lv_label_create(btn5);
  lv_label_set_text(label, "USB");
  lv_obj_center(label);
  
  //Pulsante Vuoto
  obj = lv_obj_create(grid);
  lv_obj_set_grid_cell(obj, LV_GRID_ALIGN_STRETCH, 2,1,  //column
                       LV_GRID_ALIGN_STRETCH, 1, 1);      //row
   lv_obj_t * btn6 = lv_btn_create(obj);
  lv_obj_set_size(btn6, X_Pulsanti,Y_Pulsanti);
  lv_obj_center(btn6);
  lv_obj_add_event_cb(btn6, btn6_event_cb, LV_EVENT_CLICKED, NULL);

  label = lv_label_create(btn6);
  lv_label_set_text(label, "Vuoto");
  lv_obj_center(label);

  paginaAttiva = paginaHome;
RPC.println("SetupDisplayOUT");
}





void loop() {
  // put your main code here, to run repeatedly:
lv_timer_handler();

RPC.println(millis());
delay(1000);


}

Buongiorno, per i prodotti qui poco utilizzati, come è Arduino Giga R1, se vuoi ricevere risposte in tempi brevi e da gente che ha la giusta esperienza con il prodotto, devi utilizzare la sezione DEDICATA al prodotto scrivendo esclusivamente in lingua Inglese.

Grazie,

Guglielmo

Ah, comunque esiste una GUIDA all'uso dei due core della Giga ... :roll_eyes:

Guglielmo

Buongiorno Guglielmo ,
ho sviluppato il progetto seguendo proprio la guida ..
Grazie per la risposta

Bene, comunque, ricorda, che qui nella sezione Italiana, si conosce abbastanza poco la GIGA (ed, al momento, poco anche le nuove UNO R4), quindi, per domande tecniche, che magari richedono una riposta rapida, molto meglio porle nelle sezioni dedicate alle singole schede :wink:

Guglielmo

mah non si capisce cosa carichi su m7 o m4 :face_with_spiral_eyes:
non si capisce nemmeno le chiamate rpc
non puoi scendere sotto il secondo per ogni chiamata rpc
(forsemax 800 millisecondi)
l'ide e ingannevole seleziona sempre il core giusto dove spedisci lo schetch
es se e selezionato m4 e devi caricare su m4 riseleziona m7 e poi riseleziona di nuovo m4 e carichi su m4
altra cosa importante e fare attenzione a i conflitti "hardware"
es se usi SPI su tutti e due i core preparati al micro bloccato con led rosso lampeggiante
prova a levare le righe rpc.printxx se funziona sono quelle da sistemare

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