Brown-out detection a frequenza 16Mhz

Buongiorno ragazzi, ho aperto questo topic perchè c'è una questione che non mi torna a riguardo del settaggio di default di Arduino UNO R3 a riguardo dei BOD fuses. Mi spiego meglio.

La configurazione di default visibile nel file boards.txt (IDE 1.8.13) prevede un settaggio per l'extended fuses pari a 0xFD che corrisponde al binario 0b11111101, che indica una BOD di 2,7v

Fin qui tutto bene, è il settaggio di default da sempre per la board UNO R3.

Tuttavia, addentrandomi del data-sheet del microcontrollore ATmega 328p, noto il seguente grafico, indicante un'operatività "not safe" già sotto i 4,5v se lavoriamo a 16Mhz che è la frequenza dell'oscillatore al quarzo previsto nella scheda

Potrebbe forse essere questa la causa degli "strani comportamenti" della UNO R3 in ambienti elettromagneticamente rumorosi, il quale, anzichè resettarsi si comporta "male", scaturendo quindi in effetti randomici sul programma in esecuzione?

... perché dovrebbe resettarsi per rumore elettromagnetico? Un disturbo elettromagnetico, su una MCU, può provocare di tutto tra cui anche il reset oppure l'interpretazione di un bit che è ad uno come fosse a zero con coseguente esecuzione di un'istruzione errata e perdita di controllo del programma.

Guglielmo

P.S.: ... secondo me, Il BOD su Arduino UNO, può anche essere eliminato ... difficile che il regolatore lineare vada sotto i 5V se non in caso di grossi sovraccarichi, ma in tal caso comunque il tutto si spegne e basta.

ah ... diverso è il caso di schedine che montano un piccolo alimentatore switching (magari di dubbia affidabilità) o sono proprio alimentate con delle battere (es. LiPo) ... in quel caso il BOD può essere utile per rilevare il calo della tensione sotto limiti che non garantiscono più il corretto funzionamento della MCU.

Comunque, se vuoi, basta che riprogrammi i FUSE e metti il valore del BOD a quello che preferisci, ma difficilmente qiuesto ti risolverà i problemi di distubi elettromagnetici.

Il problema è un'altro che abbiamo più e più volte detto ... voler usare Arduino per scopi per cui NON è nato ... vedi punto 15.5 del REGOLAMENTO :wink:

Guglielmo

Tranquillo Guglielmo, il regolamento lo conosciamo bene :wink:

Ti do ragione al 100% su tutto il discorso delle certificazioni e burocrazia varia: non voglio addentrarmi tu tale argomento in quanto (oltre ad essere palesemente OT) è già stato trattato in svariati topic. Rimarrei piuttosto sul piano tecnico.

Alla fine della fiera il cuore di Arduino UNO R3 è un ATmega328p, i cui "scopi" vanno ben oltre all'ambito prototipale/hobbistico.
All'interno del micro il reset è gestito da un circuito dedicato ed appositamente studiato

Tra l'altro, la causa del reset è visibile nel registro MCUSR del micro, a patto che non venga alterato dal bootloader, se presente. (ma anche qui eviterei di addentrarmi per non andare OT)

Riassumendo:
La mia intenzione non è quella di risolvere disturbi elettromagnetici.
Semplicemente non mi torna il settaggio di default secondo le considerazioni fatte nel mio primo messaggio. La mia conseguente ipotesi (ma rimane un ipotesi), in merito al settagio di default, riguarda l'eventualità che che un disturbo elettromagnetico possa alterare l'alimentazione che arriva sul Vcc del micro e quindi scaturire in comportamenti random e poco chiari senza che intervenga il BOD reset.

Se, come hai capito, la scheda è nata SOLO per studio e prove sul tavolo del laboratorio, il discorso non ha molto senso e, ripeto, l'uso del BOD nenache è interessante.

Se si parla di un prodotto industriale, basato su ATmega328P, concordo che, con la MCU a 16MHz, portare il BOD a 4.3V è corretto ... ed è comunque cosa che banalmente puoi fare tu.

Guglielmo

E' una cosa che può fare chiunque, gli unici requisiti sono avere a disposizione un ISP per fare il burn del bootloader.
Per chi non si è mai cimentato e si imbatte in questo topic, suggerisco di leggere qui

Personalmente (Arduino UNO R3) mi sono trovato molto bene col bootloader MiniCore, che è basato su Optiboot ed aggiunge direttamente all'IDE la scelta sulla configurazione del BOD

image

Si, il mio "che banalmente puoi fare tu" sottintendeva proprio che è cosa che chiunque, all'occorrenza, può fare ... ma, salvo casi specifici, non ne vedo tutta questa necessità.

Piuttosto, se sei convito della utilità della cosa, apri una bella issue su github di Arduino e segnalala, chiedendo che in futuro sia modificata :slight_smile:

Guglielmo