Reset (?) multipli dopo avvio su un Arduino Uno senza bootloader

Ciao a tutti!
Come da titolo, scrivo perchè ho un problema all'avvio di un Arduino senza bootloader (programmato tramite un altra scheda con ArduinoISP sopra).
Vi do un pò di background prima perchè altrimenti mi rispondete "perchè stai facendo tutto sto casino?" :smiley:

Sto realizzando una sorta di centralina multimediale in macchina che gestisce le luci interne (di cortesia sui piedi), una striscia led RGB (tamarrata) e un display con delle info della macchina che altrimenti non avrei di serie lette direttamente dal CANBUS.
L'hardware è "semplice", un arduino UNO o MEGA (sarei più orientato sul MEGA per vari motivi ma al momento sto testando tutto su una scheda UNO), un display touch screen Nextion, un CANBUS shield v2 della SeedStudio e una scheda relay allo stato solido 4ch. Il problema nasce dalla necessità di mantenere il sistema scollegato dalla batteria quando le chiavi sono disinserite per evitare di scaricare la batteria ma allo stesso avviare almeno Arduino e inizializzare il CANBUS entro circa 80ms dall'accensione perchè quel lasso di tempo passa la prima informazione a me utile sul bus (poi posso eventualmente inizializzare il display e tutto il resto dopo) e devo catturarla per forza perchè poi ripassa dopo un tempo molto lungo.

Per cui in meno di 80ms devo:

  • Accendere la scheda (prendo il segnale dal filo che va a livello alto quando la chiave è inserita e faccio scattare un relay per "abilitare" la 12V e alimentare arduino)
  • Inizializzare il CANBUS
  • Portare a livello alto 2 piedini che comandano 2 canali della scheda relay per collegare fisicamente il bus della macchina al mio sistema (lo voglio mantenere isolato quando non è in funzione)

Ora... in condizioni normali questo è impossibile per colpa del bootloader quindi ho cercato su internet dei modi per avviare istantaneamente arduino e l'unico che potrebbe fare al caso mio secondo me è quello di programmarlo senza bootloader. Ho seguito i tutorial (è una cosa nuova per me) e sono anche riuscito a programmarlo ma al momento dell'avvio, assisto a quelli che sembrerebbero dei reset in sequenza o qualche sorta di routine che arduino esegue e lo fa resettare. Ho provato a cercare una soluzione ma non ne vengo a capo, qualcuno sa di cosa si tratta?
Allego 2 immagini prese dall'oscilloscopio. Nella prima abbiamo il circuito completo montato, la traccia gialla è l'alimentazione e le altre 2 tracce sono i 2 piedini da alzare dopo l'inizializzazione del CANBUS.
Nella seconda invece è un test che ho fatto eliminando tutto pensando fosse un problema del mio codice e ho programmato la scheda con questo:

void setup() {
  pinMode(5, OUTPUT);
  digitalWrite(5, HIGH);
}

void loop() {

}

La traccia blu scura è l'alimentazione e la celeste è il piedino 5 e come vedete ho lo stesso problema....

Sono aperto a ogni tipo di consiglio, sia su come risolvere con un Arduino UNO/MEGA sia se dite di cambiare scheda con una più performante (basta che sia 5V perchè tutto il sistema è a 5V).

Grazie in anticipo e scusate il pippone ma senza spiegazione approfondita poteva sembrare una domanda scema.

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