File multi"sketch" o multiboard

volevo sapere a che problemi si va incotro scrivedo solo uno sketch che deve funzionare su tre o quattro arduino simili tipo mkr h7 (arduino ultima genrazione = molta memoria)
intendo 3 schetch ognuno funzionanti separati, ma uniti assieme
esempio mettere un pin a massa (es: pin 2-3-4-5) e in base a quale pin viene trovato fisicamente a massa nel set up si fa usare lo scketch corrispondente

Se il programma sta tutto nello spazio disponibile e le variabili che utilizzi sono ben isolate o, se globali, non saturano la memoria non c'è problema a far eseguire un set limitato d'istruzioni rispetto ad un altro sulla base di un input.
Certo è che se più parti del programma fanno la medesima cosa sarebbe meglio ottimizzare e adeguare la logica in modo che le parti comuni siano eseguite sempre e le sole differenze in base all'input selezionato

quindi se lo sketch è scritto bene, e la memoria è sufficiente dovrebbe funzionare !
giusto ?

Si!

mah forse mi sono "sbagliato" sto cercando di reasferire (unire) 2 codici arduino nano 328 e arduino nano rp2040 come cerco di caricare il codice di arduino nano 328 su nuovo nano la compilazione si blocca sulla riga della libreria #include <EEPROM.h>

se seleziono la scheda nano rp2040 la scritta da rossa passa a nero e poi da errore,

qui ho aggiunto la libreria eeprom nel semplice blink degli esempi e da errore

che si puo fare?

Arduino:1.8.15 (Windows 10), Scheda:"Arduino Nano RP2040 Connect"

BlinkWithoutDelay:30:10: fatal error: EEPROM.h: No such file or directory

#include <EEPROM.h>

      ^~~~~~~~~~

compilation terminated.

exit status 1

EEPROM.h: No such file or directory
Questo report potrebbe essere più ricco di informazioni abilitando l'opzione
"Mostra un output dettagliato durante la compilazione"
in "File -> Impostazioni"

Strano perché se vai a vedere sia nelle NOTE di rilascio che nel package della rp2040, la libreria EEPROM esiste ed è supportata.

Tieni però conto che la RP2040 NON ha una vera EEPROM e essa viene simulata nella Flash con la limitazione del numero di scritture della Flash (circa 10'000) e non quelle della vera EEPROM su AVR (circa 100'000) ... quindi, occhio, perché è molto più facile raggiungere il limite ... :roll_eyes:

Guglielmo

BU... sono un po perplesso se seleziono la scheda nano 328 nessun problema
e la libreria EEPROM c'e nel menu a tendina dell'ide sketch > #include libreria

se seleziono la scheda rp2040 la libreria EEPROM manca
nel menu a tendina dell'ide sketch > #include libreria

che si fa? :roll_eyes:

Scusa ma che "core" hai installato nell'IDE per RP2040? E che scheda RP2040 stai usando?

Guglielmo

ide di arduino l'ho cancellata e re-istallata ieri sera, ide per windows 1.8.15
la scheda e quella originale che appare sullo store new nano rp 2040 connect
ovviamente ho fatto l'aggiornamento dell'ide tramite gestore schede
la schedina purtroppo non mi e ancora arrivata
comunque nn capisco perche non "compila" se e presente
#include <EEPROM.h>

Semplicemente perché, se vai a vedere dentro al "package" Arduino relativo alla scheda Originale Nano RP2040 ...

... che è il primo dei due indicati, scopri che ... nelle librerie NON hanno incluso la libreria EEPROM.

Il secondo indicato è un "package" più generico, NON fatto per la Nano RP2040, ma fatto per la Raspberry Pico originale, laAdafruit ed altre schede basate su RP2040, include invece la libreria EEPROM.

Ora, SENZA ALCUNA GARANZIA DI FUNZIONAMENTO, io te l'allego, tu la inserisci tra le librerie del "package" originale Arduino (devi cercare la giusta cartella, mi raccomando) e provi che vada ... non è detto, ma tentar non nuoce:
EEPROM_RP2040.zip (5.9 KB)

Fammi sapere se funziona o meno ... :wink:

Guglielmo

P.S.: la giusta cartella dovrebbe chiamarsi all'incirca così: "packages/arduino/hardware /mbed_nano/2.1.0/libraries" ... prova a vedere.

ho provato a mettere la libreria tramite include libreria tramite file zip
la aggiunge in
C:\Users\5900\Documents\Arduino\libraries\ insieme adove sono molte altre librerie
la riga #include <EEPROM.h> e diventata da nera a "rossa"
ma alla compilazione da questo messaggio di errore

ATTENZIONE: la libreria EEPROM dichiara di funzionare sulle architetture rp2040 e potrebbe non essere compatibile con la tua scheda che utilizza l'architettura mbed_nano

C:\Users\5900\Documents\Arduino\libraries\EEPROM\EEPROM.cpp: In member function 'bool EEPROMClass::commit()':

C:\Users\5900\Documents\Arduino\libraries\EEPROM\EEPROM.cpp:120:5: error: 'rp2040' was not declared in this scope

 rp2040.idleOtherCore();

 ^~~~~~

C:\Users\5900\Documents\Arduino\libraries\EEPROM\EEPROM.cpp:120:5: note: suggested alternative: 'p24'

 rp2040.idleOtherCore();

 ^~~~~~

 p24

exit status 1

Errore durante la compilazione per la scheda Arduino Nano RP2040 Connect.

Questo report potrebbe essere più ricco di informazioni abilitando l'opzione
"Mostra un output dettagliato durante la compilazione"
in "File -> Impostazioni"

Purtroppo come sospettavo ... Arduino ha usato una sua architettura MBED diversa dalla standard RP2040.

Nulla, cancellala pure perché NON è compatibile e ... mi spiace, ma, salvo che in un qualche aggiornamento non rilascino al corretta libreria, al momento NON puoi usare la EEPROM con la Nano RP2040.

Se ti serve DEVI usare una scheda esterna con una EEPROM o simile e gestirla con una libreria adatta alla memoria esterna scelta.

Guglielmo

... la cosa è anche documentata su GitHub .. l'attuale release è descritta QUI ... guarda le librerie supportate :wink:

Mah ... :roll_eyes:

Guglielmo

P.S.: ... QUI però hai un indicazione di come, FORSE, poter aggirare la cosa ... tutta da capire e da provare

ok grazie per la tua pazienza mi leggero tutto con calma, e sopratutto aspetto di avere l' hardware tra le mani prima di provare "qualcosa"

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